一篇被引用18000余次的学术论文
彭真明  |  2014-03-16  |  科学网  |  379次阅读

一篇被引用18000余次的学术论文

—— Canny边缘检测算法

John Canny1986)发表的一篇关于图像边缘检测的论文:“Canny J. A computational approach to edge detection [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1986 (6): 679-698.”。迄今为止,已被引用18000余次,而且每年还在以千次以上的引用次数攀升。以下图2和图3分别于201310月、20143月检索截图对比。

图1 John Canny in his office at University of California, Berkeley (2013)

图2  2013年10Google Scholar 检索截图

图3  2014年3Google Scholar 检索截图

Canny 边缘检测算法是被业界公认的性能最为优良的边缘检测算法。严格来说,它不是一个简单算子(如RobertsPrewittSobel等)或锐化模板。Canny 是在梯度算子基础上,引入了一种能获得抗噪性能好、定位精度高的单像素边缘的计算策略。

Canny把边缘检测问题转化为检测单位函数极大值问题。在高斯噪声假设中,一个典型的边缘代表一个阶跃的强度变化。根据这个模型,一个好的边缘检测算子应满足以下3个指标:

(1) 低失误概率;(2) 高位置精度;(3) 对每个边缘有唯一的响应。

Canny 边缘检测算法的主要计算步骤包括个方面:

(1)    首先引入高斯滤波器,对原始图像进行平滑滤波,以提高算法的抗噪性。

(2)    计算图像梯度强度和方向。计算梯度可以利用先前的RobertsPrewittSobel等算子。其中,方向信息是为了下一步计算需要。

(3)    利用第(2)步梯度方向划分进行梯度强度的非极大抑制,获取单像素边缘点。

(4)    双(或滞后)阈值进行边缘的二值化。

目前,Canny提出的以上边缘计算策略已经成为图像边缘检测的精髓,且已融入到各种经典检测算子和一些新的边缘检测方法之中。

有不少学者发表论文,认为RobertsPrewittSobel等梯度算子不能获取单像素边缘,并进行必要的计算结果对比展示。实际上,以上简单的梯度算子与图像进行卷积滤波,仅仅是对图像的一个锐化过程,得到的仅是原始图像的梯度图,而不是最终的边缘结果,当然不会是单像素边缘。

然而,我们发现Matlab图像处理工具中的各种经典算子,最后得到的处理结果就都是单像素边缘、而且效果与Canny算法的差异不大。这是因为Matlab工具中的各种经典边缘算子,计算过程中引入了非极大抑制(即边缘细化)、双阈值边缘二值化等Canny算法策略。因此,可以获得与Canny算法效果相当的边缘结果。自己编程计算时,一般与算子(模板)进行卷积计算后,进行简单阈值分割,看起来处理效果总是不理想。

参考阅读

[1] http://www.csee.wvu.edu/~xinl/library/papers/comp/canny1986.pdf

[2] John Canny's Home Page

[3] http://en.wikipedia.org/wiki/John_Canny 




文章原载于作者的科学网文章,所述内容属作者个人观点,不代表本平台立场。
本文经过系统重新排版,阅读原内容可点击 阅读原文