图像分割 Canny边缘检测

学习DIP第48天 转载请标明本文出处: ,出于尊重文章作者的劳动,转载请标明出处!文章代码已托管,欢迎共同开发: https://github.com/Tony-Tan/DIPpro

开篇废话

废话开始,Canny大名鼎鼎,大家都称之为Canny算子,包括wiki上也是写的Canny detector,但是按照我的理解,我觉得叫做Canny算法比较合适,但如果叫做算子,那也应该叫做复合算子,因为Canny本身并不是一个线性模板(像Sobel那样)或者一个局部比较类的算法(像中值滤波那样的),Canny是一套完整的理论,并实现出了完整的算法。 Canny是目前已知的最好的边缘检测算法,是不是之一我不确定,但可以肯定的是,,它的应用非常广泛,基本用到边缘检测的,大家永远第一个想到它。Canny算法的复杂度比前面的检测加阈值的算法计算复杂度更高,空间复杂度也要高一些,但现在的计算设备,对于Canny基本可以实现实时,并且有人用GPU来实现,所以从86年Canny提出了这个算法到现在,在边缘检测方面,其地位还是比较稳固的。 Canny算法的另一个显著特征是它有完整的数学推导过程,能够证明这个算法能给出最好的边缘。后面我们将会简单的看一下数学过程。

算法原理

算法原理,Canny首先提出了三种基本条件,来定义一个边缘。来看原文【Canny1986】:

1) Good detection. There should be a low probability of failing to mark real edge points, and low probability of falsely marking nonedge points. Since both these probabilities are monotonically decreasing functions of the output signal-to-noise ratio, this criterion corresponds to maximizing signal-to-noise ratio. 2) Good localization. The points marked as edge points by the operator should be as close as possible to the center of the true edge. 3) Only one response to a single edge. This is implicitly captured in the first criterion since when there are two responses to the same edge, one of them must be considered false. However, the mathematical form of the first criterion did not capture the multiple response requirement and it had to be made explicit.

翻译一下:

这就是Canny的指导思想,并且根据这一思想进行建模。

数学原理

发表在VOL. PAMI-8, NO. 6, NOVEMBER 1986上的文章给出了明确的求解过程,包括建模上面的理论,并求解最优解,因为本人数学功底一般,后面的求解过程有兴趣的同学可以自行查看论文,这里只给出建模上面三个基本原理的过程,以一维下的情况给出。 首先我们设滤波器的单位冲击响应为:,定义边缘本身为,边缘中心位置为 边缘对滤波器的响应为:

(1)

噪声相应的均方根为:

(2)

其中是单位长度的均方噪声幅度 由上面两个式子,我们定义信噪比SNR:

(3)

这便是原理1的建模,使信噪比尽可能大,来满足原理1。 为了度量检测出的边缘与实际边缘的位置关系,我们使用均方根误差距离。对于检测滤波器我们一般认为滤波结果给出的局部最大值为检测到的边缘,所以如果没有噪声加入时响应结果的一阶导数在为对滤波器响应的局部最大值,也就是计算边界点。 设只是噪声对滤波器的响应,只是边缘对滤波器的响应,根据上面的设想,一定有处满足:

(4)

泰勒展开可以得出:

(5)

因为可以确定结合(4)(5)可以得出:

(6)

的均方值,并且给出其期望为:

(7)

将(7)和(6)结合,可以得到:

(8)

标准差的近似,位置由其倒数给出:

(9)而有的旅行是释放负面情绪,换个心情,轻装上阵。

图像分割 Canny边缘检测

相关文章:

你感兴趣的文章:

标签云: