FPGA实现Sobel算法进行边沿检测

FPGA技术江湖 2023-04-10 08:23

一. 简介


本例将在上例的基础上,添加一个简单的图像处理算法---边缘检测(Sobel算法)。串口助手发送图片过来之后,结果边缘检测算法处理之后再输出到VGA进行显示。


边沿检测算法主要是针对灰度图进行处理的,所以模块内部还需要添加个RGB565转灰度的功能。边缘检测算法有很多种,例如Sobel、Canny、Prewitt等等,各有其优缺点。本次选择Sobel进行学习,主要是因为其相对而言比较简单,FPGA易于实现。


二. Sobel算法


Sobel主要是利用图像两个方向的梯度来与阈值进行对比,大于阈值的点,被认为是边缘点。算法步骤大体如下


  • 求x,y方向的梯度dx,dy

  • 求出近似梯度G = dx2 + dy2开根号,也可以近似为 G = |dx| + |dy|,方便FPGA处理

  • 与阈值进行对比,大于阈值则为边缘,将该像素赋值为255,否则为0

可以看出算法的核心是如何计算图像两个方向的梯度。


(一). 梯度计算


梯度计算主要是用到了两个3x3大小的卷积核(如下图)。上图负责x方向,下图负责y方向。




卷积核在图像上进行移动,每次都会覆盖3x3大小的图像区域。卷积核与图像上对于位置上的元素相乘然后求和(矩阵的内积),就得到该点的梯度值(3x3中心位置的像素点)。


这样又会引入两个问题


1. 计算过程需要使用三行图像数据,如何进行存储

2. 图像边缘位置的像素如何进行处理


(二).  如何缓存三行数据

实际上,只需要存储两行数据即可,第三行为当前输入的那行。具体的实现方式有两种,一种是调用现成IP,另外一种就是自己实现啦。目是要学习Sobel算法,偷个懒直接调用IP也是可以的。在Quartus中可以调用Shift Register IP实现,Vivado中也有,名字忘记了。


IP工作原理如下,该图是缓存了4行数据。第一行输入一个数据,第一行就会输出一个数据,然后第一行输出的数据又会作为第二行的输入,第二行也会输出一个数据,作为第三行的输入,以此类推。一个数据输入,那么将会得到每一行的一个数据,共四个数据。




IP创建

1. 选择Shift Register





2. 选择输入数据的位宽,缓存行数,每行的数据个数和时钟使能信号。通过框图可以看出输入的位宽为8bit,缓存的行数为两行(第三行为当前输入,不需要缓存),每一行的个数为480,刚好为图像的列数。





这样缓存三行的问题就得到了解决。


(三). 边缘像素如何处理

如果按照算法流程来的话,处理完成后,图像就会变小一圈,尺寸就变了,这是我们不希望得到了。一般采用的方法为先将图片扩大一圈,扩大一圈对应的像素值可以为0,或者255,也可以图像最外圈的保持一致,这样结果算法处理后,图像大小就和输入的大小保持一致了。但是这样在FPGA中处理不是很方便,考虑到图片边缘一般不会包含重要的信息,同样也是本次将采取的方便,外部输入一个像素,Sobel算法就会输出一个像素,这样边缘像素是否是边缘点,就是一个随机的了,跟初始化的值和上一帧图像有关,这样就大大简化了问题。



三. 算法实现

(1).  图片转灰


这里采用最简单的方法,对图像的三个通道取平均值的方法进行转换。这里采取了两个周期来处理,最终得到灰度值

//计算rgb三个值always@(posedge clk or negedge rst)begin  if(rst == 1'b0)  begin    reg_R <= 'd0;    reg_G  <= 'd0;    reg_B <= 'd0;  end  else  if(data_en == 1'b1)  begin    reg_R <= {data_in[15:11],3'b0};    reg_G <= {data_in[10:5],2'b0};    reg_B <= {data_in[4:0],3'b0};  end  else  begin    reg_R <= reg_R;    reg_G  <= reg_G;     reg_B <= reg_B;  endend
//计算regR regB  regG之和取平均always@(posedge clk or negedge rst)begin  if(rst == 1'b0)    reg_RGB <= 'd0;  else    reg_RGB <= (reg_R + reg_G + reg_B)/3;  //取平均值end

(二). Sobel算法实现


本次实现的Sobel算法一共需要花费两个时钟周期完成,


第一个时钟周期主要完成Sobel核与图像的卷积操作将负数和正数分开计算

always@(posedge clk or negedge rst)begin  if(rst == 1'b0)    begin      Sobel_px <= 'd0;      Sobel_nx <= 'd0;    end  else if(data_en==1'b1)    begin      Sobel_nx <= martix_11 + martix_21 + martix_21 + martix_31;      Sobel_px <= martix_13 + martix_23 + martix_23 + martix_33;    end  else    begin    Sobel_nx <= 'd0;    Sobel_px <= 'd0;    endend


第二个时钟周期主要完成负数和正数的比较,求得梯度的绝对值,并求和比较输出结果

assign Sobel_data = (Sobel_x + Sobel_y > Sobel_thresh) ? 8'd0 : 8'd255;always@(posedge clk)begin    Sobel_x <= (Sobel_px > Sobel_nx) ? (Sobel_px - Sobel_nx) : (Sobel_nx - Sobel_px);    Sobel_y <= (Sobel_py > Sobel_ny) ? (Sobel_py - Sobel_ny) : (Sobel_ny - Sobel_py);end

最终实现效果如图,搞错了图像宽度为640,不是480,所以最右边出现重复,尴尬


回复 FPGA之旅设计99例之第二十二例 获取完整工程 ,Sobel模块放在了sdram_read模块下面。



END


往期精选 

 
 

【免费】FPGA工程师招聘平台

简谈FPGA设计中系统运行频率计算方法与组合逻辑的层级

SANXIN-B01开发板verilog教程V3电子版

学员笔记连载 | FPGA Zynq 千兆以太网回环

求职面试 | FPGA或IC面试题最新汇总篇

FPGA项目开发:204B实战应用-LMK04821代码详解(二)

项目合作 | 承接FPGA项目公告

资料汇总|FPGA软件安装包、书籍、源码、技术文档…(2023.01.02更新)

FPGA就业班,2023.04.15开班,系统性学习FPGA,高薪就业,线上线下同步!


FPGA技术江湖广发江湖帖

无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。


FPGA技术江湖微信交流群

加群主微信,备注姓名+公司/学校+岗位/专业进群


FPGA技术江湖QQ交流群

备注姓名+公司/学校+岗位/专业进群


FPGA技术江湖 任何技术的学习就好比一个江湖,对于每一位侠客都需要不断的历练,从初入江湖的小白到归隐山林的隐世高人,需要不断的自我感悟自己修炼,让我们一起仗剑闯FPGA乃至更大的江湖。
评论
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球中空长航时无人机产值达到9009百万美元,2024-2030年期间年复合增长率CAGR为8.0%。 环洋市场咨询机构出版了的【全球中空长航时无人机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球中空长航时无人机总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,同时分析中空长航时无人机市场主要驱动因素、阻碍因素、市场机遇、挑战、新产品发布等。报告从中空长航时
    GIRtina 2025-01-09 10:35 102浏览
  • 职场是人生的重要战场,既是谋生之地,也是实现个人价值的平台。然而,有些思维方式却会悄无声息地拖住你的后腿,让你原地踏步甚至退步。今天,我们就来聊聊职场中最忌讳的五种思维方式,看看自己有没有中招。1. 固步自封的思维在职场中,最可怕的事情莫过于自满于现状,拒绝学习和改变。世界在不断变化,行业的趋势、技术的革新都在要求我们与时俱进。如果你总觉得自己的方法最优,或者害怕尝试新事物,那就很容易被淘汰。与其等待机会找上门,不如主动出击,保持学习和探索的心态。加入优思学院,可以帮助你快速提升自己,与行业前沿
    优思学院 2025-01-09 15:48 108浏览
  • 在智能网联汽车中,各种通信技术如2G/3G/4G/5G、GNSS(全球导航卫星系统)、V2X(车联网通信)等在行业内被广泛使用。这些技术让汽车能够实现紧急呼叫、在线娱乐、导航等多种功能。EMC测试就是为了确保在复杂电磁环境下,汽车的通信系统仍然可以正常工作,保护驾乘者的安全。参考《QCT-基于LTE-V2X直连通信的车载信息交互系统技术要求及试验方法-1》标准10.5电磁兼容试验方法,下面将会从整车功能层面为大家解读V2X整车电磁兼容试验的过程。测试过程揭秘1. 设备准备为了进行电磁兼容试验,技
    北汇信息 2025-01-09 11:24 109浏览
  • 车机导航有看没有懂?智能汽车语系在地化不可轻忽!随着智能汽车市场全球化的蓬勃发展,近年来不同国家地区的「Automotive Localization」(汽车在地化)布局成为兵家必争之地,同时也是车厂在各国当地市场非常关键的营销利器。汽车在地化过程中举足轻重的「汽车语系在地化」,则是透过智能汽车产品文字与服务内容的设计订制,以对应不同国家地区用户的使用习惯偏好,除了让当地车主更能清楚理解车辆功能,也能进一步提高品牌满意度。客户问题与难处某车厂客户预计在台湾市场推出新一代车款,却由于车机导航开发人
    百佳泰测试实验室 2025-01-09 17:47 43浏览
  • 1月9日,在2025国际消费电子展览会(CES)期间,广和通发布集智能语音交互及翻译、4G/5G全球漫游、随身热点、智能娱乐、充电续航等功能于一体的AI Buddy(AI陪伴)产品及解决方案,创新AI智能终端新品类。AI Buddy是一款信用卡尺寸的掌中轻薄智能设备,为用户带来实时翻译、个性化AI语音交互助手、AI影像识别、多模型账户服务、漫游资费服务、快速入网注册等高品质体验。为丰富用户视觉、听觉的智能化体验,AI Buddy通过蓝牙、Wi-Fi可配套OWS耳机、智能眼镜、智能音箱、智能手环遥
    物吾悟小通 2025-01-09 18:21 48浏览
  • 一个真正的质量工程师(QE)必须将一件产品设计的“意图”与系统的可制造性、可服务性以及资源在现实中实现设计和产品的能力结合起来。所以,可以说,这确实是一种工程学科。我们常开玩笑说,质量工程师是工程领域里的「侦探」、「警察」或「律师」,守护神是"墨菲”,信奉的哲学就是「墨菲定律」。(注:墨菲定律是一种启发性原则,常被表述为:任何可能出错的事情最终都会出错。)做质量工程师的,有时会不受欢迎,也会被忽视,甚至可能遭遇主动或被动的阻碍,而一旦出了问题,责任往往就落在质量工程师的头上。虽然质量工程师并不负
    优思学院 2025-01-09 11:48 116浏览
  • 在过去十年中,自动驾驶和高级驾驶辅助系统(AD/ADAS)软件与硬件的快速发展对多传感器数据采集的设计需求提出了更高的要求。然而,目前仍缺乏能够高质量集成多传感器数据采集的解决方案。康谋ADTF正是应运而生,它提供了一个广受认可和广泛引用的软件框架,包含模块化的标准化应用程序和工具,旨在为ADAS功能的开发提供一站式体验。一、ADTF的关键之处!无论是奥迪、大众、宝马还是梅赛德斯-奔驰:他们都依赖我们不断发展的ADTF来开发智能驾驶辅助解决方案,直至实现自动驾驶的目标。从新功能的最初构思到批量生
    康谋 2025-01-09 10:04 101浏览
  • 在当前人工智能(AI)与物联网(IoT)的快速发展趋势下,各行各业的数字转型与自动化进程正以惊人的速度持续进行。如今企业在设计与营运技术系统时所面临的挑战不仅是技术本身,更包含硬件设施、第三方软件及配件等复杂的外部因素。然而这些系统往往讲究更精密的设计与高稳定性,哪怕是任何一个小小的问题,都可能对整体业务运作造成严重影响。 POS应用环境与客户需求以本次分享的客户个案为例,该客户是一家全球领先的信息技术服务与数字解决方案提供商,遭遇到一个由他们所开发的POS机(Point of Sal
    百佳泰测试实验室 2025-01-09 17:35 120浏览
  • HDMI 2.2 规格将至,开启视听新境界2025年1月6日,HDMI Forum, Inc. 宣布即将发布HDMI规范2.2版本。新HDMI规范为规模庞大的 HDMI 生态系统带来更多选择,为创建、分发和体验理想的终端用户效果提供更先进的解决方案。新技术为电视、电影和游戏工作室等内容制作商在当前和未来提供更高质量的选择,同时实现多种分发平台。96Gbps的更高带宽和新一代 HDMI 固定比率速率传输(Fixed Rate Link)技术为各种设备应用提供更优质的音频和视频。终端用户显示器能以最
    百佳泰测试实验室 2025-01-09 17:33 128浏览
  • Snyk 是一家为开发人员提供安全平台的公司,致力于协助他们构建安全的应用程序,并为安全团队提供应对数字世界挑战的工具。以下为 Snyk 如何通过 CircleCI 实现其“交付”使命的案例分析。一、Snyk 的挑战随着客户对安全工具需求的不断增长,Snyk 的开发团队面临多重挑战:加速交付的需求:Snyk 的核心目标是为开发者提供更快、更可靠的安全解决方案,但他们的现有 CI/CD 工具(TravisCI)运行缓慢,无法满足快速开发和部署的要求。扩展能力不足:随着团队规模和代码库的不断扩大,S
    艾体宝IT 2025-01-10 15:52 64浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦