1、学习目标
在OpenCV中使用Canny边缘检测。
OpenCV为Canny边缘检测器提供了名为Canny的方法。
2、使用的函数方法
cv2.Canny()
3、程序
结果
与其他边缘检查比较结果
(1)
edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]])
image :输入图像
threshold1 :minVal
threshold2 :maxVal
apertureSize: 为卷积核大小
L2gradient : 参数设定求梯度大小的方程
边缘检测的原理:
(1)去除噪声
使用5x5d高斯滤波器去除图像中的噪声;
(2)计算图像梯度
对平滑后的图像使用sobel算子在水平与竖直方向上计算一阶导数,得到图像梯度(Gx和Gy)。根据梯度图找到边界梯度和方向,公式如下:
梯度方向一般与边界垂直,有四类:垂直、水平、两个对角线
(3)非最大抑制;
在每个像素处,检查像素是否是在其梯度方向上的领域中的局部最大值,以去除不可能构成边缘的像素
得到了二值图像的边界。
(5)滞后边缘跟踪;
两个阈值minVal,maxVal
梯度大于maxVal,保留
梯度小于minVal,舍弃
两者之间的值要判断是否与真正的边界相连,相连就保留,不相连舍弃。