原理
- Canny Edge detector 在1986年提出,此算法主要满足以下三个准则:
- Low error rate: 尽可能多地检测真实的边缘
- Good localization:检测出的边缘像素点和实际边缘像素点的距离尽可能的小
- Minimal response:图像中的任意边缘应该只被标记一次,同时图像噪声不应产生伪边缘
- 算法步骤
- 使用高斯滤波器进行滤波,如:
![](https://img-blog.csdnimg.cn/20190105160950830.png)
- 计算图像强度的梯度和方向,和Sobel算子类似:
a. 分别使用 x , y x,y x,y两个方向的卷积核进行处理:
![](https://img-blog.csdnimg.cn/201901051614179.png)
b. 计算梯度 G G G 和方向 θ \theta θ:
![](https://img-blog.csdnimg.cn/20190105161806239.png)
把 θ \theta θ 近似到四个方向,分别代表水平,垂直和两个对角线方向(0°,45°,90°,135°)
- 非极大值抑制
非极大值抑制是一种边缘稀疏技术,通常得出来的梯度边缘不止一个像素宽,而是多个像素宽。非最大值抑制能帮助保留局部最大梯度而抑制所有其他梯度值。这意味着只保留了梯度变化中最大的位置,其他都为0。算法如下: