09-canny边缘检测

Canny边缘检测
Canny边缘检测算子是一种多级检测算法,1986年由John F. Canny提出

1> 图像去噪
边缘检测容易受到噪声的印象,在进行边缘检测之前,通常使用高斯滤波去除噪声
2> 计算梯度值和梯度方向
对平滑后的图像,采用sobel算子计算梯度值和方向

 

3> 非极大值抑制
非最大值抑制能帮助保留局部最大梯度而抑制所有其他梯度值,也就是说,去除所有不是边界的点。逐个遍历图像中的像素点,判断当前像素点在相同梯度方向的梯度值是否是最大的,是最大的话保留,否则将灰度值设为0

4> 滞后阈值
通过非极大值抑制后,仍然有很多的可能边缘点,应用上阀值maxVal和下阀值minVal,位于下阀值之上的都可能作为边缘,这样就可能提高准确度

 

Canny函数及其使用
edges = cv2.Canny(image,threshold1,threshold2)
1> image:边界图像
2> threshold1:minVal阈值1
3> threshold2:maxVal阈值2

import cv2
import numpy as np

img = cv2.imread(r"image\canny.bmp",cv2.IMREAD_GRAYSCALE)

# Canny边缘检测
result = cv2.Canny(img,100,200)

cv2.imshow("original",img)
cv2.imshow("result",result)

cv2.waitKey(0)
cv2.destroyAllWindows()

Canny边界检测的实验结果:

 

posted @ 2021-09-16 21:58  马铃薯1  阅读(50)  评论(0编辑  收藏  举报