Canny边缘检测

2021-10-25  本文已影响0人  Tsukinousag
cv2.Canny()

主要包括四个部分

1.应用高斯滤波去除图像噪声

滤波的目的是平滑一些纹理较弱的非边缘区域,以便得到更准确的边缘

2. 计算梯度

梯度方向总是与边缘方向是垂直的,计算梯度时会得到梯度的幅度和角度(代表梯度的方向),如(2,90)代表梯度的幅度为2,角度为90°

3. 非极大抑制

在获得了梯度的幅度和方向后,遍历图像中的像素点,去除所有非边缘的点,得到水平方向和垂直方向的最大值

4. 应用双阈值确定边缘

完成上述步骤以后,图像内的强边缘已经在当前获取的边缘图像内,但是一些虚边缘可能也在边缘图像内。这些虚边缘可能是真实图像产生的,也有可能是噪声产生的。对于后者,必须剔除

若>=maxval,判定为强边缘
若>minval&&<maxval,判定为虚边缘
若<=minval判定为弱边缘

对于虚边缘需要进一步处理,一半通过判断虚边缘与强边缘是否连接,来确定虚边缘到底属于哪种情况


Canny函数及使用

使用不同点的阈值threshold1和threshold2

import cv2

img=cv2.imread('D:/hjb.jpg',cv2.IMREAD_GRAYSCALE)

cv2.imshow('img',img)

r1=cv2.Canny(img,128,200)
r2=cv2.Canny(img,32,128)

cv2.imshow('r1',r1)
cv2.imshow('r2',r2)

cv2.waitKey(0)
cv2.destroyWindow()

上一篇下一篇

猜你喜欢

热点阅读