原理
Canny边缘检测也称为“最优检测”(optimal detector),它的开发主要有以下3个目标:
- 低错误率:只检测真实存在的边缘
- 良好的定位:检测出来的边缘与真实的边缘之间的距离要达到最小
- 最小的反馈:每个边缘只有一个检测结果
步骤
Canny边缘检测算子主要包括以下4个步骤:
- 过滤噪音:使用滤波对噪音进行过滤,可以使用归一化滤波、高斯滤波、中值滤波等;
- 使用类似于Sobel的一阶求导的方法,计算图片中颜色值的斜率及方向;
- 对计算出的颜色值的斜率进行非最大值抑制处理;
- 迟滞(hysteresis):用双阈值算法检测和连接图像的边缘。
下面一一介绍:
高斯平滑滤波
高斯平滑函数如下:
H ( x , y ) = e − a 2 + b 2 2 σ 2 G ( x , y ) = f ( x , y ) ⋅ H ( x , y ) H(x,y)=e^{-\frac{a^2+b^2}{2\sigma ^2}} \\ G(x,y)=f(x,y) \cdot H(x,y) H(x,y)=e−2σ2a2+b2G(x,y)=f(x,y)⋅H(x,y)
通过上面的计算可以得到一个 k × k k \times k k×k的高斯核,比如当 f ( x , y ) = 1 2 π σ 2 , σ 2 = 1 f(x,y)=\frac{1}{2 \pi \sigma^2}, \sigma^2=1 f(x,y)=2πσ21,σ2=1时,高斯核如下:
H = [ 1 2 π e − 1 1 2 π e − 0.5 1 2 π e − 1 1 2 π e − 0.5 1 2 π 1 2 π e − 0.5 1 2 π e − 1 1 2 π e − 0.5