Canny算法是一种经典的图像边缘检测算法,由计算机科学家John
F.Canny于1986年提出。它是目前理论上相对最完善的一种边缘检测算法,广泛应用于图像处理领域。Canny算法的主要优点在于其能够有效地减少假阳性边缘,同时尽可能地保留真实的边缘信息。
Canny边缘检测算法主要包括以下几个步骤:
1.高斯滤波:为了降低图像噪声,首先对图像进行高斯滤波。高斯滤波器是一个具有x和y两个维度的高斯函数,其标准差一般取相同值。
2.像素梯度计算:通过计算图像在x和y方向上的梯度,找出可能存在边缘的位置。常用的梯度算子包括Sobel、Prewitt等。在此步骤中,还可以计算梯度的方向。
3.非极大值抑制:对像素梯度进行抑制,消除边缘检测带来的杂散响应,将边缘“瘦身”。具体方法是将当前像素梯度强度与沿正负梯度方向上的相邻像素的梯度强度进行比较,保留最大的梯度强度。
4.滞后阈值处理:设定一个高阈值和一个低阈值,对梯度强度进行处理。梯度强度低于低阈值的像素点被抑制;高于高阈值的像素点被定义为强边缘;处于高低阈值之间的定义为弱边缘,需要进一步处理。
5.孤立弱边缘抑制:对于弱边缘像素,通过查看其与强边缘像素的连接情况来判断是否保留。如果弱边缘像素的邻域内有一个强边缘像素,则保留该弱边缘像素;否则,抑制该弱边缘像素。
Canny算法相较于其他边缘检测算子(如Sobel、Prewitt)具有更好的性能,能够有效地减少假阳性边缘,同时尽可能地保留真实的边缘信息。因此,在实际应用中,Canny算法被广泛用于图像分割、目标检测等领域。