基于canny算子的改进边缘检测算法
- 格式:doc
- 大小:239.79 KB
- 文档页数:3
收稿日期:2019-06-03;修回日期:2019-08-08基金项目:国家自然科学基金资助项目(61132005);国家重点研发计划资助项目(2017YFC1405202);海洋公益性行业科研专项资助项目(201505002)作者简介:李庆忠(1963-),男,山东淄博人,教授,博导,博士,主要研究方向为图像处理、信号处理与模式识别;刘洋(1994-),男(通信作者),山东淄博人,硕士研究生,主要研究方向为智能信息处理与智能控制(1120132246@qq.com ).基于改进Canny 算子的图像弱边缘检测算法*李庆忠,刘洋(中国海洋大学工程学院,青岛266100)摘要:图像边缘在基于机器视觉的工件自动测量与识别中起着至关重要的作用,但传统的Canny 算子只能检测图像中的强边缘而出现弱边缘漏检问题。
为此提出了一种基于改进Canny 弱边缘检测算法。
该算法首先用提出的改进梯度倒数加权滤波方法对图像进行斑点噪声滤除的同时保持了图像边缘;其次用改进的Sobel 算子计算梯度幅值,以提高边缘的定位精度;对非极大值抑制后的梯度图像进行分块,根据各个子块的类型自适应确定各子块的高低阈值,并对平滑块进行再分块,以检查平滑块中是否含有细小的弱边缘。
最后,为了克服传统高低阈值连接中部分弱边缘的漏检问题,提出基于局部区域生长法的边缘连接算法,使之能够保留连接性较好的弱边缘点。
实验结果表明,该算法能够去除图像中的斑点噪声并能检测出图像中的弱边缘,为图像弱边缘的检测提供了一种可行方法。
关键词:Canny 算子;弱边缘检测;边缘保持滤波;机器视觉;工件测量0引言图像的边缘特征是图像目标最基本且重要的特征之一,在机器视觉检测与测量领域有着广泛的应用,如图像分割[1,2]、目标检测与测量[3]、目标识别与跟踪[4]等。
尤其在基于机器视觉的工件检测与识别中,因目标工件含有较多弱边缘,而传统的边缘检测算法只适合于强边缘检测与提取,所以目前图像弱边缘检测已经成为机器视觉领域一个急需解决的难题之一。
基于canny 算子的改进边缘检测算法
摘要:本文提出了一种基于Canny 算子的改进边缘检测算法。
该算法既具备传统Canny 算子信噪比高、定位精确的优点,又具备较强的去噪能力和较好的边缘检测效果。
实验表明,本文算法增强了Canny 算子在噪声干扰情况下的去噪效果,提高了边缘定位的精确度,能够得到更加完整的边缘轮廓。
关键词:Canny 算子,双边滤波,边缘检测
1 引言
边缘检测技术是数字图像处理中的一项重要技术,边缘检测的主要目的就是实现对目标图像的精确定位。
边缘是图像的基本特征,是图像分割的重要依据,也是纹理特征的重要信息源和形状特征分析的基础,边缘检测的效果将直接影响到图像理解和识别的性能[1]。
经典的边缘检测算子,如Robert 、Prewitt 、Log 等,简单、易于实现,但对噪声敏感、抗干扰性能差,边缘不够精细[2]。
相比这些算子,Canny 算子具有更好的信噪比和检测精度,在图像边缘检测领域中具有更加广泛的应用范围。
但是,实际图像中,存在着许多噪声,这时,若仍采用传统 Canny 算子进行边缘检测,会将一些噪声点误作边缘点检测,导致提取的边缘轮廓模糊、不精确,因此,我们需要对传统Canny 算子加以改进。
本文提出了一种基于Canny 算子而改进的边缘检测算法,该算法既可以较好地滤除噪声,又可以提高目标边缘的定位精度、抑制虚假边缘和去除冗余弱边缘,呈现出了一个更为清晰的天之信图像边缘检测结果,比传统Canny 算法具有更好的性能。
2 传统canny 边缘检测算法
Canny 提出了边缘检测性能优劣的3个判断准则[3]:
高信噪比准则:即输出信号的信噪比最大,以降低边缘点判断为非边缘点和非边缘点判为边缘点的概率。
信噪比越大,误检率越低。
高定位精度准则:好的定位性能,即检测出的边缘点要尽可能在实际边缘的中心
单边缘相应准则:即单一边缘只有惟一响应,并且对虚假边缘响应应得到最大抑制。
2.1 传统canny 算法边缘检测步骤
1)高斯滤波
用一维高斯函数对原始图像f(x, y)进行低通滤波、噪声滤除,该高斯函数为:
22221
(,)exp 22x y G x y πδδ⎡⎤+=-⎢⎥⎣⎦
δ为高斯滤波函数的标准差,控制着平滑程度:σ较小时,滤波器定位精度高,但信噪比低;σ较大时,滤波器情况正好相反。
我们要根据实际情况确定δ的大小。
2)计算梯度幅值和方向
传统的Canny 算法采用2×2邻域一阶偏导的有限差分来计算平滑后的图像的梯度幅值和方向:
22
(,)(,)(,)x y M x y G x y G x y =+
y x (,)arctan G x y G θ=(x,y )
(x,y )
(,)(,1)(,1)x G x y G x y G x y =+--,(,)(1,)(1,)y G x y G x y G x y =+--。
x (,)G x y 、(,)y G x y 分别为点(,)x y 处G (x,y )在x 方向和y 方向的一阶偏导。
3)非极大值抑制
将边缘的梯度方向按照水平、竖直、45°和 135°四个方向,用不同的邻近像素进行比较,确定局部极大值。
若某个像素的灰度值与梯度方向上前后两个像素的灰度值相比不是最大,该点即为非边缘点,删除;否则,即为待选边缘点,保留。
这个过程称为“非极大值抑制”。
4)双阈值法检测和连接边缘
用高、低阈值对经非极大值抑制的结果检测,得到高阈值边缘图像
h T 和低阈值边缘图像l T ,。
然后,以图像h T 为基础,用图像l T 来补充连接图像边缘。
2.2 传统Canny 算法的缺陷
Canny 算子因其优越的边缘检测性能得到了广泛应用,但实际中图像易受噪声污染,如光照、油渍等,这时,如果仍用传统Canny 算法,一方面不能有效滤除噪声,另一方面会出现伪边缘或边缘丢失。
传统Canny 算子用高斯函数对图像平滑滤波,有较强的抑制噪声能力;但会造成边缘丢失,对高频细节的保护效果不佳。
这是因为,Canny 算子在对图像高斯滤波时,边缘作为高频部分易被平滑掉,一些边缘就变成了缓变边缘,进行非极大值抑制的时候,缓变边缘就容易丢失,造成边缘检测结果存在较明显的模糊和边缘丢失问题,效果欠佳。
3 改进的canny 边缘检测算子
双边滤波,Bilateral filter ,既可以较好地滤除图像噪声,又可以保持较好的图像边缘信息,解决了高斯滤波的图像模糊和边缘丢失问题。
本文充分结合双边滤波和Canny 算子的优越性,提出一种新的Canny 边缘检测算法,该算法用滤波性能较好的双边滤波代替传统Canny 边缘检测中的高斯滤波,对含噪图像具有更好的边缘检测效果。
双边滤波是一种非线性的2D 信号滤波方法[4],是图像的空间临近度和像素相似度的一种折
衷处理[5],是通过像素的加权平均而定义的,利用强度的变化来保存图像边缘信息。
设BF 为双边
滤波的符号,由下式定义[6]:
1
[](||||)()d r P p q q q S P BF I G p q G I I I W δδε=--∑
(||||)()
d r p p q q S W G p q G I I δδε=--∑
参数d δ和r δ用于衡量图像I 的滤除量,d G δ是一个空间函数,用于减少远距离像素影响,r G δ是一个范围函数,用于减少灰度值不同于
p I 的像素q 的影响。
通常,双边滤波器的空间邻近函数d G δ和灰度相似函数r G δ都取为参数为欧氏空间距离的高斯函数,定义为:
21((),())[]2r r I p I q G e δδδ=
(,)
d p q和((),())
δ分别为图像两像素点的欧氏空间距离和像素的灰度差,dδ和rδ是基于高斯函
I p I q
数的标准差,决定着双边滤波器的滤波效果。
4 实验结果与结论
以 MATLAB (R2008a)为实验平台,选取经典Lena图像,分别采用传统 Canny 算法和本文改进的Canny算法进行边缘检测。
图1为加入了0.01高斯噪声的Lena图像边缘检测结果;图2为加入了0.01椒盐噪声的Lena图像边缘检测结果。
(a)加入高斯噪声(b)canny算法(c)本文算法
图1
(a)加入椒盐噪声(b)canny算法(c)本文算法
图2
从图1和图2可以看出:传统的Canny算法对噪声较敏感,容易将噪声点当作边缘点检测,检测出的边缘轮廓不清楚,精确度较低,提取的边缘信息过于冗杂,不能较好地显示图像的主要轮廓特征,不利于进一步的图像分析;本文算法对高斯噪声和椒盐噪声的去噪和边缘检测效果均优于传统的Canny算法,能够获得更好的边缘检测图像。
图(c)既去除了图(b)中的大部分虚假边缘,又避免了丢失很多真边缘,边缘轮廓明显、清晰,连续性较好,提高了Canny算法边缘检测的信噪比、改善了噪声干扰情况下边缘检测效果。
结论:
传统的Canny边缘检测算子并不能得到最优化的边缘检测结果,存在许多不足之处。
本文提出的改进Canny边缘检测算法能够较好地滤除图像噪声、抑制虚假边缘,保留了较完整和清晰的边缘轮廓,具有更好的边缘检测效果,简单实用,复杂度低,具备更好的推广应用价值。