https://blog.csdn.net/hjwang1/article/details/79943815
https://zhuanlan.zhihu.com/p/59640437
Canny算子
图像的边缘是指图像局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,即从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。
Canny是目前最优秀的边缘检测算法,其目标为找到一个最优的边缘,其最优边缘的定义为:
1、好的检测:算法能够尽可能的标出图像中的实际边缘
2、好的定位:标识出的边缘要与实际图像中的边缘尽可能接近
3、最小响应:图像中的边缘只能标记一次
具体步骤
一、高斯滤波
二、计算梯度图像与角度图像
Canny中的梯度检测算子是使用高斯滤波器计算得到的滤波器,距离中心点越近的像素点权重越大。
三、对梯度图像进行非极大值抑制
从上一步得到的梯度图像存在边缘粗宽、弱边缘干扰等众多问题,现在我们可以使用非极大值抑制来寻找像素点局部最大值,将非极大值所对应的灰度值置0,这样可以剔除一大部分非边缘的像素点。
四、双阈值处理和连接分析来检测并连接边缘
Matlab代码
function [ m, theta, sector, canny1, canny2, bin] = canny1step( src, lowTh)
%canny函数第一步,求出x,y方向的偏导,模板如