基于改进Canny算子的图像弱边缘检测算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期: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]
等。
尤其在基于机器视觉的工件
检测与识别中,
因目标工件含有较多弱边缘,而传统的边缘检测算法只适合于强边缘检测与提取,
所以目前图像弱边缘检测已经成为机器视觉领域一个急需解决的难题之一。
目前,图像边缘检测算法主要包括基于小波变换的边缘检测算法[5]、基于形态学的边缘检测算法[6]
、基于机器学习的边缘检测
算法
[7~9]以及基于Canny 算子的边缘检测算法[10]
等。
基于小波变换的边缘检测算法对图像进行不同尺度的小波变换,当尺度小时,边缘细节信息较丰富,定位精度高,但抗扰能力
差;而尺度大时,
其定位精度低,抗扰能力好,故其将各尺度边缘图像的结果融合,
在一定程度上兼顾了定位精度和抗扰能力,但算法复杂度较高。
基于形态学的边缘检测算法是利用结构元素在图像
中不断移动来分析处理图像,
通过选择不同的结构元素进行开闭等运算来提取不同的图像特征。
这种算法比较容易实现,且能够
有效地去除椒盐噪声,
但其对边缘的定位精度不好。
基于机器学习的边缘检测算法在近年来已成为一个新的研究方向。
特别是利用深度学习自动提取图像的深层次特征,取得了较好的边缘效果。
其缺点是需要大量样本的训练学习,计算复杂度较高。
基于Canny 算子的边缘检测算法,因其具有检测精度高且快速
性的优点,
得到了广泛的应用,但仍然不能胜任图像弱边缘的检测。
为此,
学者提出了许多改进Canny 边缘检测算法。
比如,运用各项异性滤波器对原始图像进行去噪[11]
,能在滤除噪声的同时有
一定的边缘保持能力;通过对图像作离散余弦变换(DCT )后,
对DCT 系数进行非线性收缩来达到去噪效果[12]
;采用双边滤波对图
像进行去噪,在去噪的同时对边缘也有一定边缘保持能力[13]。
针
对双阈值难以自适应确定这一问题,
文献[14]提出一种基于自适应Otsu 和最大熵法的改进Canny 算法;文献[
15]利用图像的平均方差与平均灰度值间的比例自适应确定高低阈值;文献[
16]首先根据梯度直方图信息将对应的像素分为三类;然后基于改进的Ot-su 算法定义评价函数,并按照该评价函数自动获取Canny 算子的高低阈值。
总之,在目前的基于Canny 图像弱边缘检测中,主要存在以下两个问题:a )图像高斯滤波环节在平滑掉噪声的同时也滤掉了有
用的弱边缘信息,
虽然一些改进算法中采用了一些边缘保持技术,但弱边缘的保持和增强方法仍然有改进余地;b )高低双阈值处理
中,
都是整幅图像采用统一的双阈值,没有考虑图像的局部梯度分布特征,因缺乏局部自适应性,很容易造成弱边缘信息的丢失。
为
克服以上问题,
本文提出了一种基于改进Canny 的弱边缘检测算法。
首先用提出的改进梯度倒数加权滤波方法对图像进行噪声滤除的同时保持和增强图像边缘;然后增加了梯度计算模板,以提高
边缘的定位精度;最后,
对非极大值抑制后的梯度图像进行分块,根据各个子块的直方图形状对子块进行分类并自适应确定各子块的高低阈值,对高低阈值连接进行改进,使之能够连接梯度较小但
连续性好的弱边缘点,
由此完成图像弱边缘的精确检测,并通过对比实验验证了提出算法的有效性。
1改进Canny 的弱边缘检测算法
为了在保持Canny 算子优点的同时,提高其弱边缘检测能力,本文提出的改进Canny 弱边缘检测算法的整体流程如图1所示。
由图可见,改进部分主要体现在四个方面:a )图像滤波部分采用改进的梯度倒数加权滤波法;b )梯度计算采用了4方向Sobel 算子;c )采用了分块自适应双阈值确定策略;d )改进高低阈值连接,使之能够连接边缘连续性较好的弱边缘点。
下面具体介绍。
1.1改进的梯度倒数加权滤波
梯度倒数平滑法能在降低噪声的同时,较好地保留边缘。
与双边滤波等算法相比,其算法复杂度低,实时性好。
其基本思想
是:在W ˑW 滤波窗口内,
利用中心像素点与各相邻像素点之间像素值差的绝对值(或梯度幅值)作为W ˑW 滤波模板的对应权值。
这样可使与当前中心像素点的像素值相差较大的邻近像素点获得
较小权值,而与中心像素点像素值接近的邻近像素点获得较大的权值。
很显然,
如果当前窗口中心点是灰度变化较大的边缘点,以上加权滤波会起到边缘保持的作用;反之,如果当前中心点是灰度
变化很小的平滑背景点,
则对背景起到平滑作用。
传统梯度倒数滤波算法的具体实现如下:
设当前中心点(x ,y )的灰度值为f (x ,y ),则在其5ˑ5邻域内,
其相邻各点的梯度倒数为
g (x ,y ,k ,m )=
1
f (x +k ,y +m )-f (x ,y )
(1)
其中:k ,
m =-2,2;k 、m 不同时为0。
假设滤波器模板的权重系数矩阵W 如下:
·
163·第37卷增刊李庆忠,等:基于改进Canny 算子的图像弱边缘检测算法
W (x ,y )=w (x -2,y -2)w (x -2,y -1)…
w (x -2,y +1)w (x -2,y +2)w (x -1,y -2)w (x -1,y -1)…w (x -1,y +1)w (x -1,y +2)w (x ,y -2)w (x ,y -1)…w (x ,y +1)w (x ,y +2)w (x +1,y -2)w (x +1,y -1)…w (x +1,y +1)w (x +1,y +2)w (x +2,y -2)
w (x +2,y -1)
…
w (x +2,y +1)
w (x +2,y +2
)(2)
其中:令中心点权值w (x ,
y )=0.5而其邻近24个点权值之和为0.5,即
w (x +k ,y +m )=
g (x ,y ,k ,m )2∑
2
k =-2∑2
m =-2
g (x ,
y ,k ,m )(3)
其中:k ,
m =-2,2;k 、m 不同时为0。
可见,传统梯度倒数算法在保持边缘的同时,也保持了孤立斑点噪声。
因为中心点像素所占权值较大,当中心点为孤立斑点噪
声时,
很难被滤除。
针对该问题,本文对其进行了改进。
通过对含孤立斑点噪声图像的观察,发现孤立斑点噪声的面积大小一般小于等于四个像素,且都紧靠在一起。
本文提出的改进算法步骤如下:
a )当前点5ˑ5窗口内计算各点相对中心点的灰度差绝对值。
b )观察与中心像素点灰度值相近的像素个数n ;若n >4,说明不存在孤立斑点,则按常规梯度倒数法进行滤波计算;若n ≤4,说
明有可能存在孤立斑点,
转步骤c )进一步区分。
c )若n ≤2,则说明中心像素肯定是孤立斑点,其滤波输出值为
窗口内其余像素点的灰度平均值,由此直接滤除孤立斑点;若n =
3,且这三个点在一个方向上,说明中心像素点是边缘点的可能性
较大,而是孤立斑点的可能性较小,故其滤波输出值按传统梯度倒
数法计算;若三个点不在一个方向上,则中心点是孤立斑点,其滤
波输出值为窗口内其余像素点的灰度平均值;若n =4,
且这四个点在一个方向上,说明中心像素点是边缘点而不是孤立斑点,其滤波输出值按传统梯度倒数法计算;若四个点不在一个方向上,则中心
点是孤立斑点,
其滤波输出值为窗口内其余像素点的灰度平均值。
其中5ˑ5窗口内可能边缘点的四个方向如图2所示。
图3是对存在斑点噪声图像进行滤波处理的结果对比,其中图3(a )加入了密度为0.02的孤立斑点噪声。
由图可知,本文提出的滤波算法可以在保证快速性的同时,既能滤除孤立斑点噪声,又能保留更多的图像边缘细节;而传统的梯度倒数滤波算法不能去除斑点噪声。
1.2梯度计算
传统Canny 算子在计算图像梯度时采用了梯度算子,即对每个
像素点的上下左右四个邻域的灰度值加权后求平均,
该算法仅仅考虑了垂直方向和水平方向的相邻像素的差值,
而没有考虑到其他方向,
易丢失边缘梯度信息。
针对以上缺点,本文在Sobel 算子的基础上增加模板数量,
在一定程度上可以解决传统的算法在计算方向时的局限性。
但考虑到算法的效率问题,
则仅增加了45ʎ和135ʎ两个方向的模板,并在四个方向的梯度模板基础上进行梯度的
合成,
边缘检测模板如图4所示。
图4(a )为4方向的边缘检测算子,图4(b )为目标像素点的8邻域,即将4个梯度模板分别与图像进行卷积运算,则四个方向的
梯度幅值G 0、
G 45、G 90、G 135分别为G 0=(P 31+2P 32+P 33)-(P 11+2P 12+P 13)G 45=(P 23+2P 33+P 32)-(P 12+2P 11+P 21)G 90=(P 13+2P 23+P 33)-(P 11+2P 21+P 31)G 135=(P 12+2P 13+P 23)-(P 21+2P 31+P 32
)
(4)
目标点的梯度和梯度方向可以用式(5)求得:
G =
G 2
0+G 2
45+G 2
90+G 2
1槡35(5)θ=arctan (
G 90
G 0
)(6)
1.3基于梯度直方图差分的子块双阈值确定
对于上述所求得的梯度图,对其进行非极大值抑制得到单像素边缘,再将非极大值抑制后的图像分成互不重叠的16ˑ16大小的子块。
对于各个梯度图像子块,根据其直方图的形状不同,自适
应确定其双阈值。
图5是三种类型图像子块直方图的典型形式,可见边缘块呈现较明显的单峰形式,其灰度范围相对较大;平滑块同样呈现比较
明显的单峰形式,
但峰值较低且灰度范围较小;而纹理块的直方图整体比较平缓,其灰度范围很大。
根据以上直方图特点,对不同类型的子块就可自适应确定其合适的阈值。
图像子块的分类方法如下:统计图像块高于128的像素点数目N ,若N 与图像块像素点总数目的比值高于25%,则判为纹理块;而对于非纹理块,再统计子块中梯度大于零的像素数目M ,若M 与图像块像素点总数目的比值高于10%则为边缘块,否则为平滑块。
子块类型确定后,再分别对三种子块类型进行双阈值确定,具体如下:
对于纹理块,由于其梯度直方图不呈单峰特性,又因为在视觉
检测中对纹理块的边缘不感兴趣,
故取梯度值的平均值作为高阈值,
0.5倍的高阈值为低阈值。
对于边缘块,设其大小为L w ˑL h ,其阈值T i 的自适应确定方法如下:
a )在梯度[T min ,T max ]内,确定梯度直方图最高峰值对应的梯度值T p 。
b )根据梯度的直方图,在梯度[T p ,T max ]内,计算每个梯度值三个邻域内的均值μi 。
c )如果μi -μi -1<0.5,
则当前梯度值T i 为最佳的阈值,并
将此阈值作为Canny 算子的低阈值,
1.5T i 作为高阈值。
对于平滑块,因为有可能还出现如图6所示的少量边缘的情况。
故本文采用继续分块判断的策略。
将平滑块再进行1/4分块,然后求取每个图像块像素值之和与其平均值之差diff ,当diff 小于规定阈值T 时,则判定该子块为平滑
块,
其阈值直接取255;否则,判为边缘子块,并按前述的边缘块处理方法来确定其高低阈值。
1.4基于区域生长法的改进双阈值连接
传统Canny 的边缘连接过程如下:
对于非极大值抑制后的图像:梯度值低于低阈值的丢弃;高于高阈值的保留;介于高阈值和低阈值之间的像素点,如果能通过边
缘连接,使之连接到一个高于高阈值的像素点,那么则保留,否则
丢弃。
可见,在以上边缘连接过程中,对于介于高低阈值之间的像素,当存在弱边缘且弱边缘点与强边缘点没有邻域连接时,就会出现弱边缘漏检问题。
图7显示了弱边缘的漏检示例。
图7(a )为Lena 图像非极大值抑制后截取的一个图像块,设低阈值为60,高阈值为120;图7(b )为高于低阈值的边缘像素点;图7
·
263·计算机应用研究
2020年
(c )为高于高阈值的边缘像素点;图7(d )为传统高低阈值连接的结
果图;图7(e )为传统双阈值连接后舍去的介于高低阈值之间边缘像素点。
可见,其中依然包含某些连接性较好的弱边缘,只是这些边缘
点没有与大于高阈值的像素点相邻接,
就导致了它们的漏检。
为克服此问题,本文对双阈值连接算法进行了改进,提出了基
于连接长度的弱边缘连接方法,具体步骤如下:a )以传统双阈值连接算法连接边缘;b )求取双阈值连接边缘图与低阈值分割图的差
异图;c )对差异图中的每个非零像素点f (x ,y ),在其为中心5ˑ5
邻域内根据区域生长法寻找与其相连的边缘点,并标记为1,其示意图如图8所示;d )判断当前点是否为连续性较好的弱边缘点。
若与之相连的1的个数大于等于4,则判断该中心点是弱边缘点并保留,否则判为噪声点将其去除。
2实验结果与分析
为验证提出算法的有效性,对大量图像进行边缘检测实验,并
与传统Canny 算子、文献[15,16]的算法进行了对比实验。
其中文献[15]的方法是利用图像的平均方差与平均灰度值间的比例自适
应地确定高低阈值;文献[16]的方法是将像素点分为三类,并改进
Otsu 评价函数,自动确定高低阈值。
图9是两幅典型图像的边缘检测结果对比。
从弱边缘的检测效果来看,本文算法比前三种算法都具明显优势,例如,从Lena 图
像可以看出,
前面的三种算法检测出的帽沿有明显的断裂,右侧横向的边框均未检测出,而本文的算法提取出的边缘更加完整,且能检测出图像中的弱边缘。
从工件图像的边缘检测结果,也可同样
看出,
前三种方法检测出的边缘出现许多断裂,而本文方法检测出的边缘更加完整,且连接性也更好。
此外,分别将Lena 图像和工件图像添加了密度为0.02的孤立
斑点噪声后,
可以发现本文算法可以很好地去除噪声,边缘检测边缘能力不受影响,而其余三种算法都无法去除噪声点。
为了客观、定量地进行性能对比,本文采用TPR (真正率:边缘
点检测的准确率)、
TNR (真负率:背景点检测的准确率)和ACC (边缘检测的整体精度)三个指标进行评判,
其定义如下:TPR =
TP
TP +FN (7)TNR =
TN
TN +FP (8)ACC =
TP +TN
TP +FN +TN +FP
(9)
其中:TP (真正类)表示实际为边缘点,也被检测为边缘点的点数
目;TN (真负类)表示实际为背景点,也被检测为背景点的数目;FP (假正类)表示实际为背景点,但检测成边缘点的点数目;FN (假负
类)表示实际为边缘点,
但检测为背景点的数目,即漏检的数目。
很显然,这三个指标越高越好。
选取30幅图像作为测试,求取各算法的上述三项指标,并将其作统计平均。
以上两幅图像四种检测算法的统计结果如表1所示。
由表可知,本文算法的三个性能指标都优于前三种算法,即具有较高的边缘点检测的准确率和精度。
其原因就是本文算法能够
检测出传统算法没有检测出的弱边缘,
使弱边缘漏检问题得到了较好的抑制。
表1边缘检测性能指标对比
算法TPR TNR ACC Canny operator 0.7770.9810.965文献[15]0.7370.9750.956文献[16]0.6540.9890.963本文算法
0.930
0.993
0.989
3结束语
本文提出了一种基于改进Canny 的弱边缘检测算法。
根据边
缘的连接性改进的梯度倒数加权滤波法对原始图像进行滤波处
理,即能保持边缘,又可以去除各种斑点噪声;采用4方向梯度模板,计算图像的梯度,有利于更多边缘信息的提取和保持;对非极大值抑制后的梯度图像进行分块,并根据各子块的类型,自适应确
定边缘连接的双阈值,
比传统Canny 整幅图像利用相同的双阈值更具有自适应性;此外对于平滑块进行二次分块,可以防止平滑块中含有的细小边缘被漏检。
提出的基于连接长度的弱边缘连接方法,可以较好地保留连接性较好的弱边缘。
实验结果表明,提出的
算法可以去除图像中的斑点噪声,能提取出传统
Canny 算子没法检测的弱边缘,具有较高的边缘检测率。
参考文献:
[1]Wilhelm T ,Wohler C.Boundary aware image segmentation with unsu-pervised mixture models [C ]//Proc of IEEE International Conference
on Image Processing.Piscataway ,
NJ :IEEE Press ,2017:3325-3329.[2]Soomro S ,Munir A ,Choi K N.Hybrid two-stage active contour me-thod with region and edge information for intensity inhomogeneous im-age segmentation [J ].PLoS One ,2018,13(1):1-20.[3]Yang Bing ,Zhang Xiaoyun ,Chen Li ,et al .Edge guided salient ob-ject detection [J ].Neurocomputing ,2017,221(1):60-71.[4]Zheng Haichao ,Mao Xia ,Chen Lijiang ,et al .Adaptive edge-based
mean shift for drastic change gray target tracking [J ].Optik ,2015,126(23):3859-3867.[5]Fu Zhihong ,Song Siyu ,Wang Xiujuan ,et al .Imaging the topology of
grounding grids based on wavelet edge detection [J ].IEEE Trans on
Magnetics ,
2018,55(4):1-8.[6]余小庆,陈仁文,唐杰,等.融合小波变换和新形态学的含噪图像
边缘检测[J ].计算机科学,
2018,45(S2):204-207.[7]Xie Saining ,Tu Zhuowen.Holistically-nested edge detection [J ].In-ternational Journal of Computer Vision ,2015,125(1-3):3-18.[8]Wang Yupei ,Zhao Xin ,Huang Kaiqi.Iterative residual network for
structured edge detection [C ]//Proc of the 25th IEEE International Conference on Image Processing .Piscataway ,NJ :IEEE Press ,2018:4183-4187.[9]Liu Yun ,Cheng Mingming ,Hu Xiaowei ,et al .Richer convolutional
features for edge detection [C ]//Proc of IEEE Conference on Computer Vision and Pattern Recognition.Piscataway ,NJ :IEEE Press ,2016:5872-5881.[10]Canny J.A Computational approach to edge detection [J ].IEEE
Trans on Pattern Analysis and Machine Intelligence ,1986,8(6):679-698.[11]张洁,檀结庆.基于各向异性扩散方程的Canny 边缘检测算法
[J ].计算机应用,2008,28(8):2049-2051.[12]Zhao Miaomiao ,Liu Hongxia ,Wan Yi.An improved Canny edge de-tection algorithm based on DCT [C ]//Proc of IEEE International Con-ference on Progress in Informatics &Computing.Piscataway ,
NJ :IEEE Press ,2016:234-237.[13]Routray S ,Ray A K ,Mishra C.Image denoising by preserving geo-metric components based on weighted bilateral filter and curvelet trans-form [J ].Optik ,2018,159(4):333-343.[14]张月圆,曾庆化,刘建业,等.基于Canny 的改进图像边缘检测
算法[J ].导航与控制,
2019,18(1):84-90.[15]于海川,穆平安.自适应Canny 算法在钢板缺陷边缘检测中的应
用[J ].软件导刊,
2018,17(4):175-177.[16]唐路路,张启灿,胡松.一种自适应阈值的Canny 边缘检测算法
[J ].光电工程,2011,38(5):127-132.
·
363·第37卷增刊李庆忠,等:基于改进Canny 算子的图像弱边缘检测算法。