发布时间:2024-02-05 08:30
1)、使用高斯滤波器,以平滑图像,滤除噪声。
2)、计算图像中每个像素点的梯度强度和方向。
3)、应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。
4)、应用双阈值(Double-Threshold)检测来确定真实的潜在的边缘。
5)、通过抑制孤立的弱边缘最终完成检测。
还是进行归一化处理
用sobel算子来计算梯度分量
可以采用线性插值法:设g1的梯度幅值M(g1),g2的梯度幅值M(g2),则dtmp1可以得到:
M(dtmp1)=w*M(g2)+(1-w)*M(g1)
其中w=distance(dtmp1,g2)/distance(g1,g2)
import cv2
import numpy as np
def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
img=cv2.imread('C:ppy.jpg',cv2.IMREAD_GRAYSCALE)
v1=cv2.Canny(img,180,270)
v2=cv2.Canny(img,50,100)
res=np.hstack((v1,v2))
cv_show("res",res)
结果如图所示:
我们会发现阈值的范围不同还是有很大区别的。