OpenCV系列 | 边缘检测(Canny)

OpenCV 提供了许多边缘检测滤波函数,包括 Laplacian()、Sobel()、Scharr() 等。这些滤波函数都会将非边缘区域转为黑色,将边缘区域转为白色或其他饱和的颜色。但是这些函数都很容易将噪声错误地识别为边缘。

因此为了缓解将噪声错误地识别为边缘这个问题,可以在找到边缘之前对图像进行模糊处理。OpenCV 也提供了许多模糊滤波函数,包括 blur() (简单算数平均)、medianBlur()、GaussianBlur() 等。

而本文主要讲述的 Canny 边缘检测算法则是使用的高斯滤波器进行去噪,然后再计算梯度,在边缘上使用 NMS ,之后在检测到的边缘使用双阈值去除假阳性,最后还会分析所有的边缘及其之间的连接,以保证真正的边缘并消除不明显的边缘。

以一张青蛙图片为例,演示代码的运行过程:

在这里插入图片描述

frog_gray = cv2.imread('frog.png',cv2.IMREAD_GRAYSCALE)
median_intensity = np.median(frog_gray)
lower_threshold = int(max(0,(1.0-0.33)*median_intensity))
upper_threshold = int(min(255,(1.0+0.33)*median_intensity))
frog_Canny = cv2.Canny(frog_gray,lower_threshold,upper_threshold)
plt.imshow(frog_Canny,cmap='gray')
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值