边缘检测算法——Canny和LoG边缘检测算法

首先回顾一下边缘检测的一般步骤:

边缘检测算法一般包含如下四个步骤:

  1.滤波(去噪)

  2.增强(一般是通过计算梯度幅值)

  3.检测(在图像中有许多点的梯度幅值会比较大,而这些点并不都是边缘,所以应该用某种方法来确定边缘点,比如最简单的边缘检测判据:梯度幅值阈值)

  4.定位(有的应用场合要求确定边缘位置,可以在子像素水平上来估计,指出边缘的位置和方向)

 

边缘检测方法比较常用的有基于各种算子的方法,有基于一阶导数的各种算子(Roberts、Sobel、Prewitt等),还有基于二阶导数的拉普拉斯算子等。

其中一阶导数一般找梯度极大值。

二阶导数找过零点(需要忽略无意义的过零点(即均匀零区))。

本文主要概述一下边缘检测中比较有代表性的的Canny和LoG算法。

其中Canny基于一阶导数,而LoG算法基于二阶导数。

 

Canny边缘检测器

Canny边缘检测的算法步骤:

  1.用高斯滤波器平滑图像(不同尺度的Canny检测子由高斯的不同标准差来表示)

  2.用一阶偏导有限差分计算梯度幅值和方向(梯度方向为边缘法向)

  3.对梯度幅值进行非极大值抑制(Non-Maxima Suppression, NMS)

  4.用双阈值算法检测和连接边缘

  其中非极大值抑制细化了幅值图像中的屋脊带,只保留幅值局部变化最大的点。

  双阈值算法:用两个阈值得到两个阈值图像,然后把高阈值的图像中的边缘连接成轮廓,连接时到达轮廓的端点时,在低阈值图像上找可以连接的边缘。不断收集,直到所有的间隙连接起来为止。

 

LoG边缘检测算法

LoG边缘检测算法步骤:

  1.平滑:高斯滤波器

  2.增强:Laplacian算子计算二阶导

  3.检测:二阶导零交叉点并对应于一阶导数的较大峰值

  4.定位:线性内插

根据卷积的求导法则,先卷积后求导和先求导后卷积是相等的,所以可以把第1、2步合并为一步,先对高斯滤波器做拉普拉斯变换,得到墨西哥草帽算子,然后再用这个算子与图像做卷积。

这个算子还有一个有效的近似:使用两个具有明显不同的标准差的高斯平滑掩模的差(DoG, difference of Gaussians)。

原文地址:https://www.cnblogs.com/mengdd/p/2732179.html