openCV (五) 边缘检测 学习回顾记录

阅读: 评论:0

openCV (五) 边缘检测 学习回顾记录

openCV (五) 边缘检测 学习回顾记录

文章目录

  • 一、Canny 边缘检测
    • (1)高斯滤波器
    • (2)梯度和方向
    • (3)非极大值抑制(Non-Maximum Suppression)
      • (i)线性插值法
      • (ii)简化方法
    • (4)双阈值检测(Double-Threshold)
  • 二、代码示例

一、Canny 边缘检测

canny 边缘检测五个流程:
- 使用高斯滤波器,用以平滑图像,滤除噪声。
- 计算每个像素点的梯度强度和方向。
- 应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测中带来的杂散响应。
- 应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。
- 通过抑制孤立的弱边缘最终完成边缘检测。

(1)高斯滤波器

(2)梯度和方向

用的是上一节中的Sobel算子。


(3)非极大值抑制(Non-Maximum Suppression)

非极大值抑制(NMS):找到局部极大值,并抑制领域内的其他值。
应用方向:边缘检测,人脸检测,目标检测(DPM,YOLO,SSD,Faster R-CNN)等领域。
以目标检测为例,同一目标位置上会出现很多的候选框,并且每个候选框有一个置信度得分(confidence score),我们根据
最大的置信度分数确定最终的候选框。

(i)线性插值法

(ii)简化方法

(4)双阈值检测(Double-Threshold)

在实际的应用中,我们可以根据实际情况来调节 最大阈值 和 最小阈值,以期望获得最终的目的。
如果最小阈值过小,会导致噪音也被选中,导致结果驳杂。
如果最大阈值过大,会导致实际的边界被丢弃,影响效果。

二、代码示例

img_canny = cv2.Canny(img,threshold1=minval,threshold2=maxval)
minval 对应于双阈值检测中的最小阈值;
maxval 对应着双阈值检测中的最大阈值;
import cv2img = cv2.imread('lena1.jpg',cv2.IMREAD_GRAYSCALE)
img_c = cv2.Canny(img,threshold1=30,threshold2=150)cv2.imshow('img',img_c)
cv2.waitKey(0)
cv2.destroyWindow()

本文发布于:2024-01-30 18:22:46,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170661016821941.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:边缘   openCV
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23