一种改进的Sobel自适应边缘检测的FPGA实现

2014-05-10 01:45宁赛男孙宏海
液晶与显示 2014年3期
关键词:亮度算子梯度

宁赛男,朱 明,孙宏海,徐 芳

(1.中国科学院 长春光学精密机械与物理研究所,吉林 长春 130033;2.中国科学院大学,北京 100049;3.中国科学院 航空光学成像与测量重点实验室,吉林 长春 130033)

1 引 言

边缘是图像基本特征之一,边缘检测是图像处理、图像分析、模式识别、计算机视觉以及人类视觉的基本步骤。经典的边缘检测是基于检测算子的方法,通过考察待测点在某个邻域内的灰度变化,然后利用一阶或二阶方向导数变化规律,根据一定的判断标准检测出边缘。常见的边缘检测算子有Roberts算子、Sobel算子、Prewitt算子、Laplace算子、LOG算子、Canny算子等[1]。近年来随着数学理论及人工智能的发展,涌现出许多新的边缘检测方法,如基于小波变换[2]和数学形态学的边缘检测[3]法、基于神经网络[4]和自适应阈值选取[5-6]的边缘检测法等。

本文分析了经典Sobel边缘检测算法的优缺点,针对其对噪声比较敏感而且需要人为指定阈值等缺点对算法进行改进,增加了梯度计算的模板,通过计算四方向梯度合成最终的梯度,然后再根据待检测像素点8邻域内的平均像素值和人眼的视觉特征自适应地生成动态阈值[7-8],从而在一幅图像的不同区域使用不同的阈值来检测边缘,这种方法检测出的边缘图像比固定阈值法检测的边缘更为接近人的主观视觉。对检测后的边缘图像进行形态学腐蚀处理,使得算法的抗噪性能更强。

改进的Sobel边缘检测算法较经典算法的时间复杂度增加,采用一般的顺序计算难以满足实时性的要求。随着FPGA技术的高速发展,使用FPGA搭建图像处理平台成为图像处理的发展趋势[9-11]。本文利用FPGA高速并行处理的特点,将改进算法嵌入到单片FPGA上,可以实现高帧频高分辨率图像的实时采集、检测边缘和显示。

2 经典Sobel边缘检测算法

Sobel算子是一阶导数算子,采用水平和竖直方向上相邻像素之差进行梯度幅度计算,再根据边界判断条件确定边缘。

设图像函数为f(x,y),则梯度定义为一个向量:

在图像中,计算方向梯度Gx和Gy往往使用小区域模板与图像卷积得到。图1(a)是目标像素点(x,y)的8邻域的3×3窗口,(b)和(c)分别是水平和垂直方向上的梯度算子。图像函数f(x,y)的水平和垂直梯度如公式(5)和(6)所示。

图1 Sobel算子Fig.1 Sobel operator

计算出Gx和Gy后,合成梯度g,设定一个合适的阈值T,如果g≥T即可确定目标像素点(x,y)是边缘点。

以上就是经典Sobel边缘检测算法的实现过程,经典算法先对图像进行加权平均,然后再做微分运算,对噪声具有一定的抑制能力,其对在水平和垂直方向的边缘检测性能优于其他方向的检测性能,而且定位精度也比较高,但是该算法也存在如下缺陷:

(1)仅采用水平和垂直方向上相邻像素之差进行梯度幅度计算,并未考虑其他方向上的相邻像素情况,易造成部分边缘信息丢失;

(2)算子的阈值参数需要人为设定,不具有自适应能力,阈值设置过高,会导致边缘间断,设置过低则容易产生伪边缘;

(3)算子先加权平均后差分,抑制噪声的能力不强,同时会丢失一些细节信息,使边缘有一定的模糊。

3 改进Sobel边缘检测算法

针对经典Sobel边缘检测算法各方面缺陷,本文从3个方面对算法进行改进:

(1)增加梯度计算模板;

(2)根据人眼视觉特性来自适应选取动态阈值;

(3)对检测后的边缘图像形态学腐蚀处理,增强算法抗噪性能。

3.1 梯度计算改进

改进算法在原有梯度计算方法上增加了对45°和135°方向上梯度的计算,图(1)中(d)和(e)分别是这两个方向上的梯度算子,45°和135°梯度为:

与经典Sobel算子类似,梯度幅值可以用向量[Gx,Gy,G45°,G135°]T的范数表示,为了计算简便常使用1范数或无穷范数,即:

由于在最终合成梯度时使用绝对值进行计算,所以改进算法相当于对8个方向上的梯度进行了检测。改进算法引入更多的梯度计算模板,边缘信息更全面。

3.2 基于人眼视觉特性的自适应阈值选取方法

人眼的主观视觉是由于物体反射的光线照射到人眼的视网膜上,视觉神经受到刺激而获得的。实验证明,主观亮度是与进入人眼的光强成对数关系,但主观亮度并不完全由物体本身的亮度所决定,它还与背景亮度有关。背景亮度I与在此背景下刚可分辨亮度差ΔI的关系如图2(a)所示。将ΔI与I的比值称为阈值亮度比TVI(Threshold Versus Intensity),可以看出,在高背景亮度和低背景亮度之间的一个相当宽的亮度范围内TVI满足韦伯律,即近似一个常数,约为0.02[12-13]。当背景亮度过高或过低时 TVI具有比较大的值,将背景亮度对可分辨亮度差的影响效应称之为亮度掩膜效应[14]。进一步研究表明,TVI的值还与环境亮度有关,图2(b)显示了不同环境亮度下ΔI/I不同的变化曲线。

图2 韦伯律示意图Fig.2 Sketch for Weber’s Law

针对边缘检测时设置固定阈值造成的边缘间断和伪边缘问题,本文在参考和分析人类视觉模型的基础上,提出了一个灰度图像边缘检测的阈值选择模型:

式中a为低暗区截止灰度,一般取45~81之间的灰度值,b为高亮区起始灰度,一般取180~210之间的灰度值,I为背景亮度灰度值,ΔI为所设定阈值,灰度级为256级。当I≤a或I≥b,可分辨亮度差ΔI近似为一条指数曲线,用指数函数拟合;当a<I<b,即为中间区,ΔI/I较为接近一个常数,为了使曲线更为平滑,这里用一条三次曲线进行拟合。根据经验和反复实验,确定点(0,12)、(255,15)、(50,5),(200,8),则拟合的曲线如图3所示,曲线函数为:

图3 自适应阈值曲线形状Fig.3 Shape of adaptive threshold curve

在实际检测边缘选择阈值时,可以根据具体情况在ΔI前面乘以一个系数ρ(ρ与梯度计算的方法和环境亮度有关,本文之后边缘检测中该系数设置为14),这样就可以在一幅图像的不同区域使用不同的阈值来检测边缘,使得最终的边缘图像更符合人眼主观视觉。

3.3 形态学简介

数学形态学的语言是集合论。形态学为大量的图像处理问题提供了一种一致的有力方法[13]。最基本的形态学运算有腐蚀、膨胀、开和闭。设X为图像,B为结构元素,把B平移i后得到Bi,若Bi包含于X(Bi中所有元素bj都有bj∈X,则Bj包含于X 记作Bi⊂X),则记住这个i点,所有满足条件的点的结合即为X被B腐蚀的结果,可以用公式(13)表示,腐蚀一般用于去掉图像中小于结构元素的部分,当结构元素足够大时可以将物体分开,腐蚀对图像有很好的去噪功能;若Bi击中X(Bi中存在点bj使得bj∈X,则Bi击中X 记作Bi↑X),记下点i,所有满足条件的点的集合为被膨胀的结果,可以用公式(14)表示,膨胀将于物体接触的所有背景点合并到该物体中,是边界向外扩张,膨胀对图像有强化作用,结构元素足够大可以把图像中两个相邻的物理连接起来;开闭操作时基于腐蚀膨胀基本算法演化而来,开操作就是先腐蚀后膨胀,闭操作就是先膨胀后腐蚀。

本文使用腐蚀操作对边缘检测后的图像进行去噪,消除小于结构元素的点,包括一些孤立点和伪边缘。

4 改进Sobel边缘检测的FPAG实现

改进的Sobel边缘检测从4个方向计算梯度,并根据邻域像素灰度均值自适应确定阈值,然后再对边缘图像进行腐蚀运算。实现改进的边缘检测算法的计算量是很庞大的,对一幅大小为N×N的图像检测边缘,时间复杂度为O(N2),对于低分辨率的图像实时检测比较容易,但是要实现高分辨率图像的实时边缘检测,一般的运算器顺序执行或通过软件都很难满足实时性的要求。FPGA的高速并行性有助于解决实时性的问题,而且Sobel边缘检测算法所涉及的运算结构相对规律,利用FPGA的硬件处理模式、流水线数据处理技术以及并行信息处理等优势,能够显著提高算法的处理速度。

本文将改进的Sobel算法移植在一片FPGA内实现,FPGA使用Xilinx推出的XC5VSX50T FPGA。图4是实现边缘检测的系统结构框图。

图4 系统结构框图Fig.4 Diagram of system

4.1 图像采集、显示

系统使用的图像传感器是基于Camera Link接口的高分辨率CMOS相机,相机分辨率设置为1k×1k,帧频50fps,像素位深度为8,像素时钟为80MHz;并且使用 MicroEnable IV图像采集卡实现图像的实时显示。

Camera Link数据传输的速度高,采用LVDS格式,抗造性能好。Camera Link信号包括3个部分:串行通信信号、相机控制信号及视频信号,其中视频信号是本系统中主要考虑的部分[15]。视频信号通过转换芯片DS90CR288A将四路LVDS信号转换为28bit CMOS/TTL数据和一路时钟信号。FPGA中的图像采集模块从这28bit信号中提取有效图像数据和视频信号(FVAL、LVAL、DVAL、SPARE),然后再进行图像的边缘检测。图像的显示是采集的相反过程,FPGA中的图像显示模块将边缘图像按照规定格式将信号输出,DS90CR287将接收的28bit信号和时钟信号转换为4路LVDS信号,最后经由图像采集卡对图像进行显示。

4.2 改进的Sobel边缘检测

图5是改进的Sobel边缘检测的硬件实现结构图,主要分为3个模块:窗口提取子模块、边缘提取子模块和时序调整子模块。

图5 改进Sobel边缘检测实现结构图Fig.5 Diagram of improved Sobel edge detection

窗口提取子模块主要由一片存储量为两行图像的DPRAM 构成,DPRAM 的模式为“Read First”读延时为一个时钟周期,根据图像列分辨率采用计数器生成DPRAM的地址信息addra,同时将A口输出赋给B口输入,addrb较addra延迟一个时钟,这样既可得到3行图像缓冲,然后对行数据进行时钟延迟,从而形成3×3的窗口数据z1~z9。

边缘提取子模块包括了四方向梯度卷积计算、梯度合成、阈值自适应选取和阈值比较。梯度卷积计算的运算方式仅有乘法和加法,考虑到Sobel算子的系数只为1或2,使用加法代替乘法比较方便。图6是FPGA内实现水平方向梯度计算的结构图,Compare and subtract操作对上一层相加结果进行比较后再相减,从而获得梯度的绝对值,利用FPGA的并行处理特性,使用多个加法器同时进行计算,可以加快算法运行速度。4个方向梯度并行计算,3个时钟后即可得到计算结果,这要比顺序计算快得多。

待测点处最终梯度按照公式(9)给出的方式实现。阈值自适应选取的实现过程为:将由公式(12)计算所得的所有数据存入ROM中,计算窗口数据的平均值,以该值作为寻址地址从ROM中读数据,该数据即为待测像素点边缘检测的阈值。将梯度与阈值进行比较,从而得到二进制的边缘图像。

图6 水平方向梯度计算结构图Fig.6 Diagram of calculation of horizontal grads

时序调整子模块对输入视频各个同步信号进行适当延迟,以保证在显示及其他操作时的时序正确性。同步信号延迟以3×3的窗口的中心元素为标准,进行一次行延时以及多次计算延时。时序调整所需要的时延比较大,使用触发器实现会消耗比较多的资源,解决方法是使用存储器(本文算法实现使用RAM)缓存数据然后根据所需延时大小控制RAM输出时序。

4.3 形态学处理

算法在硬件中实现过程中更易受到噪声的影响,形态学中的腐蚀处理是一种有效去除噪声的方式。本文算法对Sobel边缘检测后的图像进行腐蚀操作,从而降低噪声的影响。如图7(a)是图像X被结构元素B腐蚀的示意图,腐蚀的硬件实现结构包括3个模块:窗口提取子模块、腐蚀处理子模块、时序调整子模块。窗口提取子模块、时序调整子模块与Sobel实现中的原理相同,对边缘图像进行腐蚀时使用图7所示的结构元素,为了减少资源消耗,边缘检测模块生成二进制的边缘图像,腐蚀时对结构元素所在位置的窗口元素进行逻辑与操作,然后根据与操作结果调整图像数据(转化为256色灰度图像),可以使用语句“assign image_erosion=logic_and ?8’d0:8’d255”实现。

图7 腐蚀运算实现过程Fig.7 Process of erosion

4.4 结果和分析

在FPGA上实现经典Sobel边缘检测算法(阈值设置为50)和本文改进算法,使用图像采集卡采集不同光照条件下的边缘图像,相机输出视频分辨率为1k×1k,帧频50fps,表1是采集的图像边缘检测结果。改进算法优于经典Sobel边缘检测算法,从表中白色椭圆标注的区域可以看出,改进算法能够将比较暗的区域的边缘检测出来,随着光照条件的变化,本文算法提取的边缘的效果要明显好于经典算法,能够更灵活得适应自然环境的变化。

从表中的图看以看出,改进算法和经典算法的抗噪能力都有效,提取边缘时会出现一些伪边缘点,经过对改进算法提取的边缘经过腐蚀操作后,边缘更细,同时噪声点也较少。

在该系统下实现边缘检测可以不受相机分辨率和帧频的影响,在保证FPGA芯片正常工作条件下,可以实现更高分辨率和帧频的图像的实时采集、检测边缘和显示。而且本文提出的硬件结构相对灵活,改变梯度计算过程就可以实现其他的基于算子的边缘检测算法,如Roberts等。

表1 实验结果Tab.1 Experiment results

5 结 论

分析了经典Sobel算法的优缺点,从3个方面对算法进行了改进:增加梯度计算模板,边缘检测更完整;采用基于人眼模型的自适应阈值选取,边缘图像更符合人眼主观特性;对检测后的边缘图像进行腐蚀操作,降低噪声的影响。将改进的算法在FPGA上实现,利用FPGA硬件处理模式、流水线数据处理技术以及并行信息处理等优势,能够显著提高上算法执行速度,实验结果表明改进算法较传统算法检测的边缘更完整、灵活,且硬件实现灵活可以不受视频分辨率和帧频的限制,实现图像的实时采集、检测边缘和显示。

[1] 米曾真,谢志江,陈涛,等.重轨图像增强与边缘提取的关键技术[J].光学精密工程,2012,20(7):1645-1652.Mi Z Z,Xie Z J,Chen T,et al.Key technology of image enhancement and edge extraction for heavy rail[J].Optic and Precision Engineering,2012,20(7):1645-1652.(in Chinese)

[2] 张宇伟,王耀明,姜慧钧.一种结合Sobel算子与小波变换的图像边缘检测方法[J].计算机应用与软件,2007,24(4):133-134.Zhang Y W,Wang Y M,Jiang H J.Edge detection of image base on Sobel and wavelet transformation [J].Computer Applications and Software,2007,24(4):133-134.(in Chinese)

[3] 周宁宁,赵正旭,翁素文.图像的中介边缘检测方法[J].中国图形图像学报,2010,15(3):397-402.Zhou N N,Zhao Z X,Weng S W.Medium edge detection method in image[J].Journal of Image and Graphics,2010,15(3):397-402.(in Chinese)

[4] 姜黎,吴伟仁,张之敬,等.微小型结构件显微图像边缘的自动识别[J].光学精密工程,2013,21(1):224-232.Jiang L,Wu W R,Zhang Z J,et al.Automatic detection of micro image edge for micro accessories[J].Optic and Precision Engineering,2013,21(1):224-232.(in Chinese)

[5] 周箩鱼,张葆,杨杨.自适应阈值的超变分正则化图像盲复原[J].光学精密工程,2012,20(12):2755-2767.Zhou L Y,Zhang B,Yang Y.Image blind deblurring based on super total variation regularization with self adaptive threshold[J].Optic and Precision Engineering,2012,20(12):2755-2767.(in Chinese)

[6] 杨娴,李勃,丁文,等.基于局部自适应色差阈值的彩色图像边缘检测[J].电子与信息学报,2012,34(9):2058-2063.Yang L,Li B,Ding W,et al.Local adaptive perceptual color difference for color image edge detection[J].Journal of Electronics &Information Technology,2012,34(9):2058-2063.(in Chinese)

[7] 姚军财,石俊生,杨卫平,等.人眼对比度敏感特性及特性研究[J].光学技术,2009,35(3):334-337.Yao J C,Shi J S,Yang W P,et al.Research of contrast sensitivity characteristics and model of human vision system [J].Optical Technique,2009,35(3):334-337.(in Chinese)

[8] 康牧,许庆功,王宝树.一种 Roberts自适应边缘检测方法[J].西安交通大学学报,2008,42(10):1240-1244.Kang M,Xu Q G,Wang B S.A Roberts’adaptive edge detection method[J].Journal of Xi’an University,2008,42(10):1240-1244.(in Chinese)

[9] 张杰.基于FPGA的数字图像处理[D].武汉:武汉科技大学,2009.Zhang J.Digital image processing based on FPGA [D].Wuhan:Wuhan University of Science and Technology,2009.(in Chinese)

[10] 陈伦海,黄君凯,杨帆,等.基于FPGA的实时边缘检测系统[J].液晶与显示,2011,26(2):200-204.Chen L H,Huang J K,Yang Fan,et al.Real-time edge detection system based on FPGA [J].Chinese Journal of Liquid Crystals and Displays,2011,26(2):200-204.(in Chinese)

[11] 李轶博,李小兵,周娴.基于FPGA的快速中值滤波器设计与实现[J].液晶与显示,2010,25(2):292-236.Li Y B,Li X B,Zhou L.Design and realization of fast median filter based on FPGA [J].Chinese Journal of Liquid Crystals and Displays,2010,25(2):292-236.(in Chinese)

[12] 侯志强,韩崇昭,郑林,等.一种视觉模型的边缘检测阈值选择策略[J].光电工程,2004,31(2):59-62.Hou Z Q,Han C Z,Zheng L,et al.Threshold selection tactics for an edge detection based on vision model[J].Opto-Electronic Engineering,2004,31(2):59-62.(in Chinese)

[13] PRATTWK.Digital Image Processing [M].New York:John Wiley &Sons,1978.

[14] 林玉池,崔彦平,黄银国.复杂背景下边缘提取与目标识别方法研究[J].光学精密工程,2006,14(3):509-514.Lin Y C,Cui Y P,Huang Y G.Study on edge detection and target recognition in complex background[J].Optic and Precision Engineering,2006,14(3):509-514.(in Chinese)

[15] 孙科林,周伟超,吴钦章.高速实时光纤图像传输系统的实现[J].光学精密工程,2011,19(9):2228-2235.Sun K L,Zhou W C,Wu Q Z.Realization of high-speed real-time optical fiber image transmission system [J].Optic and Precision Engineering,2011,19(9):2228-2235.(in Chinese)

猜你喜欢
亮度算子梯度
与由分数阶Laplace算子生成的热半群相关的微分变换算子的有界性
一个带重启步的改进PRP型谱共轭梯度法
一个改进的WYL型三项共轭梯度法
远不止DCI色域,轻量级机身中更蕴含强悍的亮度表现 光峰(Appptronics)C800
拟微分算子在Hp(ω)上的有界性
Heisenberg群上与Schrödinger算子相关的Riesz变换在Hardy空间上的有界性
一种自适应Dai-Liao共轭梯度法
各向异性次Laplace算子和拟p-次Laplace算子的Picone恒等式及其应用
一个具梯度项的p-Laplace 方程弱解的存在性
亮度调色多面手