一种基于Canny算子的多重边缘检测算法
- 格式:docx
- 大小:41.06 KB
- 文档页数:7
一种基于Canny算子的多重边缘检测算法
林雯
【摘 要】Canny operator was used as a basic operator to have the first
time edge detection of the image. After the top-hat transformation of the
original image, the second time edge detection was applied. On the base
of the top-hat transformation image, logarithm transformation was carried
out to start the third edge detection. After stacking up the three results of
edge detections and skeletonizing it, a clear and simple image of edge
detection was finally got. The experiment showed that the algorithm can
well realize the extraction of the edges, especially the weak edges.%选择Canny算子为基础算子,对图像进行第一次边缘检测,在对原图进行顶帽变换后进行二次边缘检测,然后在顶帽变换的基础上对图像进行对数变换进行第三次边缘检测,将三次边缘检测的结果叠加,最后进行骨骼化处理,得到清晰简约的边缘检测图.实验结果表明:该算法能较好地实现对边缘尤其是弱边缘的提取.
【期刊名称】《北华大学学报(自然科学版)》
【年(卷),期】2013(014)001
【总页数】4页(P103-106)
【关键词】边缘检测;Canny算子;顶帽变换;对数变换
【作 者】林雯
【作者单位】福建江夏学院信息技术科学学院,福建福州350108 【正文语种】中 文
【中图分类】TP391.41
目前,图像边缘检测常借助于空域微分算子.经典的基于一阶导数进行边缘检测的算子包括Sobel(索贝尔)、Prewitt(普瑞维特)、Roberts(罗伯特)、Canny(凯尼)算子,经典的基于二阶导数进行边缘检测的算子包括Laplacian(拉普拉斯)、Log(拉普拉斯-高斯)、Zero Crossings(零交叉)算子.经过对不同的边缘检测算子进行分析和比较,Canny算子最不容易受噪声的干扰,能够检测到真正的弱边缘,是相对最有效的边缘检测算子[1].但Canny算子对一些灰度差很小的弱边缘检测依然存在一定的局限性,在抑制噪声的同时容易丢失小目标细节[2].本文基于Canny算子,将原图、顶帽变换和对数变换后的图像边缘检测结果叠加并进行骨骼化处理,实现了对图像边缘尤其是弱边缘的提取.
1 基本原理
1.1 Canny算子
Canny边缘检测算子由Canny提出,是经典的基于一阶导数的边缘检测算子,通过对相邻点进行差分处理来增强图像亮度差,当信号没有变化时,一阶导数不会有响应,信号有变化时,一阶导数可以使变化增强.具体的检测步骤如下:
1)用高斯滤波器平滑图像,该滤波器带有标准偏差.
2)用一阶偏导的有限差分来计算图像的局部梯度和边缘方向.
3)对梯度幅值进行非极大值抑制.
梯度的方向可以被定义为4个区之一,各个区用不同的邻近像素用来进行比较,以决定局部极大值[3].梯度方向上其强度局部最大的点被定义为边缘像素.
4)用双阈值算法检测. 第3步中确定的边缘点会导致梯度幅度图像中出现脊,算法跟踪所有脊的顶部并将所有不在脊的顶部的像素设为0,以便在输出中给出一条细线.脊像素使用双阙值T1和T2进行处理,其中T1<T2.值大于T2的脊像素称为强边缘像素,T1和T2之间的称为弱边缘像素[3].
5)将8连接的弱像素集成到强像素,连接边缘.
1.2 形态学与顶帽变换
1.2.1 形态学
形态学诞生于1964年,是一门建立在数学基础上的用集合论方法定量描述几何结构的学科.形态学用于几何结构分析的基本思想是运用一定形状的结构元素对图像做出度量和提取,从而分析和识别图像[4-5].它起初是对二值图像提出的,而后扩展到灰度图像,其关注的是形状[6].
形态学的应用主要分解为结构元素的选择和形态学运算的设计两个问题.所有的形态学处理都基于填放结构元素的概念[7],要得到图像不同的特征和分析结果,就取决于不同的结构元素.
形态学的基本运算包括:
1)膨胀:在二值图像中“加长”或“变粗”的操作[3].可以填充图像中的小孔(相对于结构元素而言比较小的孔洞)及在图像边缘出现的小的凹陷部分[8].
2)腐蚀:“收缩”或“细化”二值图像中的对象[3].可以消除图像中小的成分.
3)开运算:先腐蚀后膨胀的过程,具有消除细小物体,在纤细处分离物体和平滑较大物体边界的作用[8].
4)闭运算:先膨胀后腐蚀的过程,具有填充物体内细小孔洞,连接临近物体和平滑边界的作用[8].
1.2.2 顶帽变换
顶帽变换是基于数学形态学的一种图像处理方式.从原图中减去开运算后的图像称为顶帽变换,也叫高帽变换[9].其中开运算可以用于补偿不均匀的背景亮度,对图像进行开运算可以产生对整个图像背景的合理估计,只要结构元素大到不能完全匹配图像提取中所需要的细节即可.对图像进行顶帽变换后,可以生成一幅具有合适且均匀背景的图像.
1.3 对数变换
对数变换是对图像进行动态范围处理的基本工具,它对每一个像素对应的灰度级进行对数函数处理g=clog(1+r),其中,c是一个常数,r为图像处理前的灰度级,g为处理后的灰度级.
对数变换实现了图像灰度扩展和压缩的功能.它能够对低灰度值的窄范围进行展宽,对高灰度值的宽范围进行压缩,让图像的灰度分布更加符合人的视觉特征.在对图像进行对数变换后进行边缘提取,由于亮度和对比度的改变,可以得到图像的极弱边缘,但却可能失去一些强边缘.
1.4 骨骼化
骨骼化是形态学中基于膨胀、腐蚀和查找表操作的组合算法,它将二值图像中的对象约简为一组细骨骼,也就是单像素宽线,这些细骨骼仍保留原始对象形状的重要信息.骨骼化能从图像中抽取出模式的特征信息,大量消除冗余数据[10],适用于对检测到的边缘线进行约减.
2 算法设计
若图像为有噪声图像,先对图像进行去噪预处理.
选择Canny算子对图像进行第一次边缘提取,此时图像中的一些弱边缘无法提取出来.
对图像进行顶帽变换,生成具有均匀背景的图像,其中关键性的问题是结构元素的选择,包括结构元素的大小和形状.对顶帽变换后的图像用Canny算子进行第二次边缘提取,得到更多的弱边缘. 对顶帽变换后的图像进行对数变换处理,图像灰度被扩展和压缩,用Canny算子进行第三次边缘提取,得到更多更细节的弱边缘,但部分强边缘由于图像亮度对比度的变化,反而丢失.因此,此次的变换和边缘检测以牺牲部分强边缘为代价,旨在得到更细节的弱边缘.
将三次边缘检测得到的边缘图像叠加,使三张图像互补,强弱边缘均得到很好的体现.但三次边缘检测时所检测出的边缘线条可能有微弱偏差,叠加后会造成部分边缘线合并、变粗.
将叠加后的图像进行骨骼化处理,得到最终清晰简约的单像素宽线边缘图像.
算法流程如图1所示.
该算法具体步骤如下:
Step 1.若图像为无噪声图直接执行 Step 2到Step 6,若图像为有噪声图,先对图像进行预处理,得到平滑的待检测图像.
Step 2.用Canny边缘检测器对待检测图像进行第一次边缘提取.
Step 3.对待检测图像进行顶帽变换后,用Canny边缘检测器进行第二次边缘提取.
Step 4.对顶帽变换后的图像进行对数变换后,用Canny边缘检测器进行第三次边缘提取.
Step 5.将三次边缘提取的结果图像叠加.
Step 6.对叠加后的图像进行骨骼化处理,得到最终清晰简约的边缘图像.
图1 基于Canny算子的多重边缘检测算法流程Fig.1 The flow of multiple
edge detection algorithm based on Canny operator
3 边缘检测实验
本次实验在matlab开发环境下,以Lean图像作为原始图进行边缘检测实验,对提出的基于Canny算子的多重边缘检测算法进行验证. 3.1 用 Sobel,Log 和 Canny边缘检测器进行边缘检测实验
先分别用 Sobel,Log和 Canny三种边缘检测器对待检测图像进行边缘检测,分别如图3~5所示,图2为原始图像.其中图5亦可作为基于Canny算子的多重边缘检测算法中的第一次边缘提取图.
3.2 基于Canny算子的多重边缘检测算法的边缘检测实验
用基于Canny算子的多重边缘检测算法对待检测图像进行边缘检测,实验过程如图5~11所示.本次实验原图进行顶帽变换时选用直径为30形状为圆盘的结构元素.
图2 Lena原始图Fig.2 Original image of Lean
图3 Sobel算子Fig.3 Sobel operator
图4 Log算子Fig.4 Log operator
图5 Canny算子Fig.5 Canny operator
图6 顶帽变换Fig.6 Top-hat transformation
图7 第二次边缘检测Fig.7 Second edge detection
图8 对数变换Fig.8 Logarithm transformation
图9 第三次边缘检测Fig.9 Third edge detection
图10 图像叠加Fig.10 Image overlay
图11 边缘检测结果Fig.11 The results of edge detection
4 结果与结论
实验结果表明:Canny算子进行边缘检测的结果优于Sobel和Log算子,边缘线更加清晰,亦包含更多的弱边缘.将原图进行顶帽变换后,图像背景变均匀,用Canny算子进行第二次边缘检测,得到了原始图中灰度差较小的弱边缘,如大帽檐的连接边缘和背景中一些细节边缘.对顶帽变换后的图像再进行对数变换,图像亮度和对比度都发生了改变,灰度被扩展和压缩,用Canny算子进行第三次边缘