一种改进型Canny图像边缘检测方法
2011-03-13张彬司璇金飞袁丛鑫
张彬,司璇,金飞,袁丛鑫
(中国传媒大学理学院,北京 100024)
1 引言
图像边缘对人的视觉具有重要意义。一般而言,当人们看一个有边缘的物体时,首先感觉到的便是边缘。灰度或结构等信息的突变处称为边缘。边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。图像边缘检测的目的就是要检测出符合边缘特性的边缘像素。边缘检测在计算机视觉、图像分割、特征提取和图像匹配等应用中起着重要的作用,是图像分析与识别的重要环节。基于一阶导数的边缘检测算子包括Roberts算子、Sobel算子、Prewitt算子等,它们通过选取合适的阈值提取边缘。拉普拉斯边缘检测算法是基于二阶导数的边缘检测算子,该算子对噪声敏感。Canny算子是另外一类边缘检测算子,它不是通过微分算子检测边缘,而是在满足一定约束条件下推导出的边缘检测最优化算子。
但是,在实际图像中,常常存在着椒盐噪声等各种噪声,这时,采用经典Canny算子进行边缘检测时,会将很大一部分噪声点作为边缘点提取出来,导致提取的边缘信息不清晰等问题,为此需要对Canny算子的检测步骤进行改进。因此,本文利用中值滤波对Canny算子进行改进,再次进行边缘检测。实验表明使用本算法得到的图像边缘特性清晰,噪声消除明显,并将这一方法与经典Canny边缘处理方法作了比较,再次说明了本方法是可行的和有效的。
2 Canny算法
Canny考察了以往的边缘检测算子和边缘检测应用,发现尽管这些应用出现在不同的领域,但都有一些共同的要求,他将其归纳为三条准则:
准则一:好的检测结果,就是对边缘的错误检测率要尽可能低,要检测出图像真实的边缘,同时要避免检测中出现虚假的边缘,即要求输出信噪比最大,这里的信噪比定义为:
其中h(x)是[-ω,ω]上的有限冲击响应滤波器,σ是高斯噪声的均方差。由信号检测理论知,输出信噪比越大,错误率越小。因此Canny准则的第一条就是要寻求滤波函数h(x),使信噪比尽量大。
准则二:好的边缘定位精度,也就是标记出的边缘位置要和图像上真正边缘的位置尽量接近,边缘定位精度定义如下:
其中x0是检测出的边缘位置,Loc值越大,表明定位越准。因此Canny准则的第二条就是要寻求滤波函数h(x)使Loc尽量大。
准则三:对同一边缘要有低的相应次数,也就是要求对一个边缘点最好只有一个响应。
滤波器对边缘相应的极大值之间的平均距离为:
其中h″(x)是h(x)的二阶导数,因此在2W宽度内,极大值的数目为:
在图像边缘检测中,抑制噪声和边缘精确定位是无法同时满足的,边缘检测算法通过平滑滤波去除图像噪声的同时,也增加了边缘定位的不确定性;反之,提高边缘检测算子对边缘的敏感性的同时,也提高了对噪声的敏感性。Canny算子试图在抗噪声干扰和精确定位之间寻求最佳折中方案。
用Canny算子检测图像边缘的步骤如下:
(1)用高斯滤波器平滑图像:
(2)计算滤波后图像梯度的幅值和方向:
传统算法采用2×2邻域内求有限差分均值的方法来计算平滑后的数据阵列。
梯度算子是一阶导数算子。对于图像函数f(x,y),它的梯度定义为一个向量:
该向量的幅度值和方向角分别表示为:
(3)对梯度幅值应用非极大值抑制。
(4)用双阈值算法检测和连接边缘。
Canny算子虽然是基于最优化思想推出的边缘检测算子,但实际效果并不一定最优,原因在于理论和实际有许多不一致的地方。该算子同样采用高斯函数对图像进行平滑处理,因此具有较强的抑制噪声能力;同样该算子也会将一些高频边缘平滑掉,造成边缘丢失。
3 改进的Canny算法
本文提出的改进的Canny算法采用中值滤波代替高斯平滑滤波。
中值滤波是一种非线性平滑滤波,在一定的条件下可以克服高斯滤波所带来的图像细节模糊问题,而且对图像扫描噪声非常有效。
中值滤波是由Tukey提出的一种用于噪声去除的非线性处理方法。中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围像素灰度值的差比较大的像素改取与周围的像素值接近的值,从而达到消除孤立噪声点的目的。
其思想是:在定义窗口范围内对作用样本X(1),X(2)…,X(N)取中值即:
其中,med[]表示窗口内所有数按从小到大的顺序排列后,取中间值方法是取某种结构的二维滑动模板,将模板内像素按照像素值的大小进行排序,生成单调上升(或下降)的二维数据序列。
二维中值滤波采用一个m×n的滑动窗口,其中m是滑动窗口行数,n是滑动窗口列数。从左到右,从上到下逐行移动,对滑动窗口内的像素点灰度值进行排序,选择排序像素级的中间值作为指定像素点的灰度值。
在这里,我们选择把当前中心像素点作为噪声点处理,在窗口中心点的领域内除去可能噪声点后取所剩下的信号点,并用它们排序后取中值点的灰度值代替当前中心点灰度值。具体操作步骤如下:
(1)将模板在图中漫游,并将模板中心与图中某个像素位置重合。
(2)读取模板下各对应像素的灰度值。
(3)将这些灰度值从小到大排成一列。
(4)找出这些值里排在中间的一个。
(5)将这个中间值赋给对应模板中心位置的像素。
中值滤波在衰减噪声的同时,保持了图像细节的清晰。
4 实验结果及分析
上图给出了用Canny算子和改进的Canny算子对加入噪声的图像做边缘检测的结果。从图(c)中可以看出,Canny算子虽然提取出了较完整的边缘,但也将噪声作为边缘的一部分,检测结果不能清晰地反映图像的边缘信息。图(d)中图像的噪声得到有效抑制,提取的边缘像素点更加完整,较好地保留了图像的边缘信息。
5 结论
图像边缘检测是图像处理和计算机视觉的一个重要研究方向。但当图像中存在噪声时,传统的Canny边缘检测算子会存在许多不足之处。从实验结果来看,本文提出的边缘检测算法能有效地抑制图像噪声对边缘检测的影响,能较好地保持图像边缘的细节信息,且提取的边缘完整连续,轮廓更加清晰,效果较好。
[1] 姚敏.数字图像处理[M].北京:机械工业出版社,2006:73-74,229-233.
[2] 王娜,李霞.一种新的改进Canny边缘检测算法[J].深圳大学学报(理工版),2005,22(2):149-153.
[3] 米林,马亚洲,等.一种基于Canny的边缘检测优化算法[J].计算机仿真,2010,4:252-255.
[4] 余洪山,王耀南.一种改进型Canny边缘检测算法[J].计算机工程与应用,2004,20:27 -29.
[5] 曲秀君.一种改进Canny算子[J].电脑学习,2010,3:91 -92
[6] 厉丹,钱建生,等.图像边缘检测技术的改进[J].计算机工程与应用,2010,46:164 -166.
[7] 周晓明,马秋禾,肖蓉.基于 Canny算子的改进的图像边缘检测方法[J].影像技术,2008,4:17-20.
[8] 黄剑玲,陈博政.一种基于Canny理论的边缘提取改进算法[J].重庆理工大学学报,自然科学版,2010,5:54 -58.
[9] LindaG.Shapiro,George C.Stockman.计算机视觉[M].赵清杰,钱芳,蔡利栋,译.北京:机械工业出版社,2005:63-66.
[10] RC Gonzalez,Richard E Woods.数字图像处理[M].阮秋琦,阮宇智,等,译.北京:电子工业出版社,2008.
[11] WilliamK.Pratt.数字图像处理[M].张引,李虹,等,译.北京:机械工业出版社,2010.
[12] 冯新宇,方伟林,等.基于中值滤波与Sobel、Canny算子的图像边缘检测研究[J].黑龙江水专学报,2009,3:101 -103.