Canny边缘检测
import cv2 img =cv2.imread("D:/WeChat.picture/lena.jpg",cv2.IMREAD_GRAYSCALE) img = cv2.medianBlur(img , 5) cv2.imshow("img" , img) cv2.waitKey(0) cv2.destroyAllWindows()
步骤
- 1 使用高斯滤波器,以平滑图像,滤除噪声
- 2 计算图像中每个像素点的梯度强度和方向
- 3 应用非极大值抑制(Non-maximum Supression),以消除边缘检测带来的杂散响应
- 4 应用双阈值(Double-Threshold)检测来确定真实和潜在的边缘
- 5 通过抑制孤立的弱边缘最终完成边缘检测
高斯滤波
首先,Canny边缘检测采用的是高斯滤波器(图像的平滑处理中已经有过介绍),这里采用的是归一化的高斯滤波器。
Sobel算子
接着,梯度和方向计算中,算子选用的是Sobel算子,方向是tan值。