文章目录
1.Canny检测背后的原理
【1】高斯平滑:去除噪声
由于边缘检测很容易受到噪声影响,所以第一步是使用5x5 的高斯滤波器去除噪声。
【2】sobel梯度计算:求梯度大小和方向
对平滑后的图像使用Sobel 算子计算水平方向和竖直方向的一阶导数(图像梯度)(Gx 和Gy)。根据得到的这两幅梯度图(Gx 和Gy)找到边界的梯度和方向,公式如下:
【3】非极大值抑制:
在获得梯度的方向和大小之后,应该对整幅图像做一个扫描,去除那些非边界上的点。对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的。
【4】滞后阈值:
max梯度以上的确定为边界。min梯度以下的不算边界。max和min梯度之间的,和max以上梯度的像素相连的才算边界。
2.代码和结果展示
- cv2.Canny()
- cv2.createTrackbar()
- cv2.getTrackbarPos()
参数解释:
edges = cv2.Canny(test, min,