基于FPGA的自适应阈值边缘检测的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA的自适应阈值边缘检测的实现
李余钱;苏光大
【摘要】In digital image processing , edge detection is one of the most important stages .The Sobel edge detection operator is most widely used edge detection algorithm because of its advantages , such as simple calculation ,and it extracts the edge clearly .It is very suitable for hardware implementation .But its ability to restrain noises is weak .It cannot adapt
for many applications because the Sobel operator used a fixed value set beforehand as the binarization threshold .Based on the median filter and the all parallel sorting method , the system proposed in the paper can quickly extract the edge of an image .The method has successfully implemen-ted on FPGA.%在数字图像处理中,边缘检测是重要的步骤之一。
基
于Sobel算子的边缘检测是经典的边缘检测算法之一,因其计算简单,同时提取
边缘清晰,容易在硬件上实现。
但是,其对噪声变化抑制能力较弱。
同时,该算子使用的是预先设定的固定阈值,导致该算子的适应能力不强。
该文利用中值滤波的算法,并与全并行比较快速排序算法相结合,可以快速确定像素点周围的局部边缘阈值。
最后,将此数值作为图像二值化的阈值。
此算法已经在FPGA平台上实现。
【期刊名称】《仪表技术与传感器》
【年(卷),期】2016(000)004
【总页数】3页(P57-59)
【关键词】边缘检测;自适应阈值;中值滤波;邻域处理器;全并行比较排序
【作者】李余钱;苏光大
【作者单位】清华大学电子工程系,北京 100084;清华大学电子工程系,北京100084
【正文语种】中文
【中图分类】TP391
随着信息化技术的不断发展,数字图像处理应用范围越来越广,而边缘检测作为图像处理中的关键技术之一,也受到了重视。
其检测边缘的质量直接决定了后期高层次图像处理的效果,如特征提取、目标匹配、图像测量和目标识别的效果。
目前图像边缘检测有很多经典算子,比如Sobel算子、Canny算子、Prewitt算子等。
这些算子均为局部窗口梯度算子,实现简单,但抗干扰能力弱[1]。
Sobel边缘检测算子是传统的图像边缘检测常用的算子,因为其算法简单,同时提取边缘清晰,对于噪声平滑效果较好,容易在硬件上实现[2]。
本文提出了基于FPGA的中值滤波算法确定自适应阈值来实现Sobel边缘检测的方法。
首先,利用Sobel算子梯度。
其次,利用全比较排序思想,快速确定3×3窗口中的中值,最后利用以上计算结果进行比较,从而得出图像边缘。
经过实际测试,在FPGA上不仅实现了该算法,而且耗时极少,非常适合实时图像处理。
1.1 Sobel边缘检测
Sobel算子[3]是进行图像边缘检测算法的核心,算子包括水平方向与垂直方向,大小为3×3模板,如图1所示。
在计算时,用3×3的邻域窗口的像素与Sobel 算子的两个模板分别进行卷积运算,分别求出中心像素点的水平梯度dx和垂直梯度dy,再求出该像素点梯度的模,并与预先设定的阈值相比较,根据比较结果进行二值化,完成图像边缘像素的提取。
Sobel 边缘检测采用邻域像素点来计算梯度,能降低算法对噪声的响应,有着一定的抗噪能力。
1.2 中值滤波
中值滤波算法[4]是选择一个具有奇数像素点的窗口X,把图像在这个窗口上的像素进行扫描。
将此窗口上的像素进行扫描,按照灰度值大小进行排列,最后用排列的中间值作为窗口中心的灰度值。
设{xij,(i,j)∈X2}表示图像各点的灰度值,则滤波窗口的二维中值滤波可以定义为yij =Med{xij} =Med{x(i+s)(j+s)(s,t)∈B,(i,j)∈X2}
本文中采用的窗口是3×3的采集窗口。
1.3 自适应阈值 Sobel 边缘检测
将3×3窗口中的像素点按照灰度值排序后,选取中间值作为Sobel边缘检测的阈值。
通过这种方式,就可以不用人为预先设定二值化的阈值,从而可以更好地应用到不同图像的边缘提取中,而且还可以抑制噪声。
2.1 邻域处理器
邻域图像处理器[5-6]是一种由邻域图像存储体提供邻域图像数据,以FPGA为图像处理核心的并行处理机。
其本质是邻域数据的并行处理。
邻域图像处理器系统框图如图2所示。
邻域图像处理器既可以处理摄像机的视频图像,也可以处理计算机中的静态图像。
该处理器有视频采集、邻域存储器、邻域处理器、共享内存、DSP以及PCI口组成。
其中,邻域存储器是用来储存和形成图像邻域,由4片SRAM构成,每片位宽是64位,一次可以存取8个字节,4片SRAM并行排列,一个时钟周期最多可以吞吐32个字节。
邻域处理器的核心是一片EP2C70F896C8型FPGA,FPGA 通过独立的控制信号线、数据线和地址线与4片SRAM芯片相连,一次可以读取256位宽的数据。
共享内存,即数据交换部分,由2片2 MB容量的同步SRAM
组成,每片位宽是32位。
DSP处理器是一片TMS320C6413 DSP处理器,可以
对FPGA处理后的数据进一步加工处理。
PCI接口子系统,负责将处理结果传输到计算机中存储、显示或者进一步处理。
PCI总线采用PCI9054作为接口芯片,该
芯片封装了主机端PCI协议,转换为较为简单的本地总线。
2.2 自适应阈值Sobel算法运算并行架构
本研究把512×512大小的图像作为为研究对象,在处理过程中,需要将该图像划分成16个512行32列的图像块。
图像二值化的运算操作就是按照块的先后次序,对每块图像从上到下一次进行处理。
每一次访问存储体读出一行邻域后,通过流水队列形成n×32的邻域。
本图像在进行二值化时,n取3。
为了更好地发挥系统的处理优势,提高处理速度,需要额外增加2列数据,构成
32个3×3的邻域,使之达到最大的并行计算能力。
运算结构框图如图3所示。
2.3 阈值的快速计算
在适应阈值的计算中,采用了中值滤波方法。
在求解时,可以根据全并行比较排序算法进行快速排序,及时找到阈值。
全并行比较排序算法[7]是基于序列中任意两
个数并行比较实现的,算法的核心思路是以“空间换时间”为基础。
该算法具体步骤为:
首先,对于一组数据,先进行两两之间的比较,每两个数比较都会得到一个比较结果。
可以根据两个数的数值的大小,定义输出排序结果1或者0。
其次,对这些结果进行累加计算,即可得到该数在序列中的排序值。
由于所有数字的两两之间的比较都在硬件内同时进行,只需要一个时钟的时间即可得到比较的结果,再加上比较结果的累加和的计算时间,几个时钟周期,就可以实现数字序列的排序。
为了更好地说明算法流程,结合具体实例做一个简单说明。
假设有一个数组{2,8,5,5,6,7},设定A0=2,A1=8,A2=5,A3=5,
A4=6,A5=7。
如果对其求解排序。
第一步,要进行数据间的两两比较。
考虑到数组中有相同数据,并且后续还要进行和加计算。
数据相同的排序按照原数据的顺序优先进行排序,即谁在谁前谁优先。
要实现这种原则下的排序,比较器的类型要发生变化。
比如Am和其他数比较时,即Am与An比较时,如果m>n,则选用“≥”比较器,比较结果是Z=1,否则
Z=0;如m<n,则选用“>”比较器,比较结果是Z=1,否则Z=0。
这样,就可以避免两数字相同的排序问题。
各数字两两比较后,对与同一个数相比较的所有值的结果相加,即可得到对应的顺序,具体结果如表1。
对于自适应阈值的Sobel算法,使用的是3×3的窗口,该窗口内总共是9个像素点,根据灰度值进行排序。
具体流程如图4所示。
在第一个时钟周期,对于这9个数据排序,分别进行两两比较;在第二个时钟周
期将比较结果进行累加;在第三个时钟周期,把输入值赋给其对应的排序空间;在第四个时钟周期,选取中间值,将该值作为阈值与3×3窗口中的中心点像素的灰
度值进行比较,从而得到最终的结果。
其他窗口的计算流程也如上所示,最终可以得到一幅图像的二值化结果。
本文在NIPC-3邻域图像处理器上实现了自适应边缘检测,采用的FPGA芯片是EP2C896C8型FPGA,结果如图5和图6所示。
其中图片大小为512×512的灰
度图像,FPGA工作频率为60 MHz。
同时,为了验证计算时间,在FPGA内部设置计数器,借助Quartus Ⅱ的SignalTap工具,观察计数器的信号变化,就可以得出FPGA运行时间。
经过实际测试,处理一幅512×512大小的图像,平均需要0.14 ms,可以满足实时性需要。
本文根据Sobel算子在边缘检测时的存在的问题,结合中值滤波的思想,在NIPC-3上成功实现了自适应阈值的图像的边缘检测,效果较好。
经过测试,处理一幅512×512大小的灰度图像,只需要0.14 ms。
之所以耗时较少,首先是因为采用了邻域存储体结构[3],每次可以读取32个像素,至少要比普通串行操作快32倍。
其次是全并行比较排序可以实现对数据的快速排序处理,排序运算只需要几个时钟的时间,且运算时间不随数据量的变化而变化,可以达到实时性排序的目的。
该系统完全满足实时性的需要,可以用于视频图像的预处理,实用价值很大。
【相关文献】
[1] 祁佳,刘紫燕,冯亮.实时图像自适应阈值边缘检测FPGA实现[J].仪表技术与传感器,2014(9):81-83.
[2] 王雪娇,陈攀.基于FPGA的自适应阈值边缘提取的Canny算法的实现[J].电子世界,2014(11):105-106.
[3] 杨勇,范胜利,张芸蕾,等.一种基于FPGA非均匀光照图像分割方法[J].太原科技大学学
报,2014.35(6):419-423.
[4] 王莉,苏光大.基于FPGA的实时中值滤波器硬件实现[J].电子技术应用,2011,37(4):58-60.
[5] 刘炯鑫.NIPC-3邻域图像并行处理机的软件设计[D].北京:清华大学,2007.
[6] 苏光大.邻域图像处理中的新型邻域功能流水线结构[J].电子学报,2000,27(2):1-4.
[7] 师廷伟,金长江.基于FPGA的并行全比较排序算法[J].数字技术与应用,2013(10):126-127.。