|||
一篇被引用18000余次的学术论文
—— Canny边缘检测算法
John Canny(1986)发表的一篇关于图像边缘检测的论文:“Canny J. A computational approach to edge detection [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1986 (6): 679-698.”。迄今为止,已被引用18000余次,而且每年还在以千次以上的引用次数攀升。以下图2和图3分别于2013年10月、2014年3月检索截图对比。
图1 John Canny in his office at University of California, Berkeley (2013)
图2 2013年10月Google Scholar 检索截图
图3 2014年3月Google Scholar 检索截图
Canny 边缘检测算法是被业界公认的性能最为优良的边缘检测算法。严格来说,它不是一个简单算子(如Roberts、Prewitt、Sobel等)或锐化模板。Canny 是在梯度算子基础上,引入了一种能获得抗噪性能好、定位精度高的单像素边缘的计算策略。
Canny把边缘检测问题转化为检测单位函数极大值问题。在高斯噪声假设中,一个典型的边缘代表一个阶跃的强度变化。根据这个模型,一个好的边缘检测算子应满足以下3个指标:
(1) 低失误概率;(2) 高位置精度;(3) 对每个边缘有唯一的响应。
Canny 边缘检测算法的主要计算步骤包括四个方面:
(1) 首先引入高斯滤波器,对原始图像进行平滑滤波,以提高算法的抗噪性。
(2) 计算图像梯度强度和方向。计算梯度可以利用先前的Roberts、Prewitt、Sobel等算子。其中,方向信息是为了下一步计算需要。
(3) 利用第(2)步梯度方向划分进行梯度强度的非极大抑制,获取单像素边缘点。
(4) 双(或滞后)阈值进行边缘的二值化。
目前,Canny提出的以上边缘计算策略已经成为图像边缘检测的精髓,且已融入到各种经典检测算子和一些新的边缘检测方法之中。
有不少学者发表论文,认为Roberts、Prewitt、Sobel等梯度算子不能获取单像素边缘,并进行必要的计算结果对比展示。实际上,以上简单的梯度算子与图像进行卷积滤波,仅仅是对图像的一个锐化过程,得到的仅是原始图像的梯度图,而不是最终的边缘结果,当然不会是单像素边缘。
然而,我们发现Matlab图像处理工具中的各种经典算子,最后得到的处理结果就都是单像素边缘、而且效果与Canny算法的差异不大。这是因为Matlab工具中的各种经典边缘算子,计算过程中引入了非极大抑制(即边缘细化)、双阈值边缘二值化等Canny算法策略。因此,可以获得与Canny算法效果相当的边缘结果。自己编程计算时,一般与算子(模板)进行卷积计算后,进行简单阈值分割,看起来处理效果总是不理想。
参考阅读:
[1] http://www.csee.wvu.edu/~xinl/library/papers/comp/canny1986.pdf
[3] http://en.wikipedia.org/wiki/John_Canny
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 15:16
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社