用到的函数:cv2.Canny()
canny边缘检测的步骤:
1.噪声去除
边缘检测很容易受到噪声的影响,所以第一步是先用例如5x5的高斯滤波器去除噪声。
2.计算图像梯度
对平滑后的图像使用Sobel算子计算水平方向和竖直方向的一阶导数(Gx和Gy),用这两幅梯度图找到边界的梯度和方向(opencv参考书P91)
梯度的方向一般总是和边界垂直,一般梯度方向归结为四类:垂直、水平、+45°、负45°
3.非极大值抑制
在获得了梯度的方向和大小后,应该对图像做一个扫描,扫描的目的是:去除那些非边界上的点。
对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向中的点中最大的。
具体的解释,参考:https://blog.youkuaiyun.com/qq_18234121/article/details/82758721
4.滞后阈值
设置两个阈值,minVal和maxVal,当图像的梯度值高于maxVal被认为是真的边界,低于minVal的边界被抛弃。而介于两者之间的话,就要看这个点是否与某个被确定为真的边界的点相连。如果是那就认为他也是边界点,否则会被抛弃。
A 高