1.Canny边缘检测原理
引用文章:
Tips:
Canny边缘检测算法 :
step1:用高斯滤波器平滑图象;
step2:用一阶偏导的有限差分来计算梯度的幅值和方向(可选用Sobel算子等);
step3:对梯度幅值进行非极大值抑制( 比较当前点的梯度强度和正负梯度方向点的梯度强度 );
step4:用双阈值算法检测和连接边缘(比较的也是像素梯度值)。
优点:
相比普通的梯度算法大大抑制了噪声引起的伪边缘,而且是边缘细化,易于后续处理。对于对比度较低的图像,通过调节参数,Canny算法也能有很好的效果。
2. Canny边缘检测算法的改进
Tips:
1.高斯模糊可能吧图像中的边缘模糊掉,因此可以设置一个模糊阀值,仅仅让和中心像素灰度的差值小于这个阀值的像素参与计算。这样和中心像素相差过大的像素被认为是带有有效的信息,而不是噪声,不会参与平滑计算,从而保留了这些有用的高频信号,那么边缘信号自然也在保留的范围。
2. 在最初的Canny算法中是使用的最小的2x2领域来计算梯度幅值的。这种方法对噪声很敏感,比较容易检测到伪边缘或漏掉真是边缘。实际上3x3的Sobel梯度算子是一种比较好的选择。
3. 传统Canny算法的双阀值是全局固定的,因此双阀值大小的选取对最终的结果影响很大,也有一些经验,比如选择低阀值是高阀值的0.4或0.5。然而这毕竟是一种经验选择,阀值的确定仍然很难决定一个最优值。而且一个图像的不同局部区域可能需要各不相同的阀值来精确地找到真实边缘,因此全局阀值就不太合适了。
4. 传统算法仍然可能产生一条宽度大于1的边缘,达不到满意的高精度单点响应。也就是需要继续细化边缘。