Laplacian边缘检测和Sobel边缘检测都是通过卷积运算来计算边缘,它们的算法比较简单,因此结果可能会损失过多的边缘信息或有很多的噪声。Canny边缘检测的算法更复杂,它包含下列5个步骤。
(1)使用高斯滤波去除图像噪声。
(2)使用Sobel核进行滤波,计算梯度。
(3)在边缘使用非最大值抑制。
(4)对检测出的边缘使用双阈值以去除假阳性。
(5)分析边缘之间的连接性,保留真正的边缘,消除不明显的边缘。
cv2.Canny()函数用于实现Canny边缘检测,其基本格式如下。
dst=cv2.Canny(src,threshold1,threshold2[,apertureSize[,L2gradient]])
参数说明如下。
dst表示边缘检测结果图像。
src为原图像。
threshold1为第1阈值。
threshold2为第2阈值。
apertureSize为计算梯度时使用的Sobel核大小。
L2gradient为标志。