- Canny算法思想
Canny算子是John F.Canny 大佬在1986年在其发表的论文 《Canny J. A computational approach to edge detection [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1986 (6): 679-698.》提出来的
可以说,Canny 边缘检测算法是被业界公认的性能最为优良的边缘检测算法之一。Canny算法不是像Roberts、Prewitt、Sobel等这样简单梯度算子或锐化模板,它是在梯度算子基础上,引入了一种能获得抗噪性能好、定位精度高的单像素边缘的计算策略。
Canny把边缘检测问题转化为检测单位函数极大值问题。在高斯噪声假设中,一个典型的边缘代表一个阶跃的强度变化。根据这个模型,一个好的边缘检测算子应满足以下3个指标:
(1) 低失误概率;(2) 高位置精度;(3) 对每个边缘有唯一的响应。
换句话说边缘检测问题就是要做到: 抑制噪声,精确定位边缘
Canny 边缘检测算法的主要计算步骤包括四个方面:
(1) 利用高斯滤波器对原始图像进行平滑滤波,以提高算法的抗噪性。
(2) 用一阶有限差分近似代替偏导数,计算图像梯度强度和方向。计算梯度可以利用先前的Roberts、 Prewitt、Sobel等算子(文中用的是Prewitt 算子)。其中,方向信息是为了下一步计算需要。
(3) 利用第(2)步梯度方向划分(划分为四个方向 0\ -45\ 90 \45 )进行梯度强度的非极大抑制,获取单像素边缘点。
(4) 双(或滞后)阈值进行边缘的二值化。
目前,Canny提出的以上边缘计算策略已经成为图像边缘检测的精髓,且已融入到各种经典检测算子和一些新的边缘检测方法之中。
有不少学者发表论文,认为Robert