opencv——Canny边缘检测

1、Canny边缘检测流程

a、使用高斯滤波器,以平滑图像,滤除噪声。
b、计算图像中每个像素点的梯度强度和方向。
c、应用非极大值抑制,以消除边缘检测带来的杂散效应。
d、应用双阈值检测来确定真实的和潜在的边缘。
e、通过抑制孤立的弱边缘最终完成边缘检测。

2、高斯滤波器

a、高斯核模板

b、高斯滤波计算

3、梯度和方向

上面公式中右边的表示水平方向和竖直方向的sobel模板,G表示像素点梯度,表示像素点方向,其中表示像素点水平方向和竖直方向的梯度值。

4、非极大值(NMS)抑制

a、线性插值法

假设像素点c的梯度方向为下图的蓝色直线,则该直线与像素的邻近像素点有两个交点dTmp1和dTmp2,但由于该两个点为亚像素点(实际不存在的像素点),因为需要利用线性插值法来进行插值。

如上图所示,假设的梯度幅值为的梯度幅值为,则dTmp1为,其中

NMS抑制:像素点c如果比dTmp1和dTmp2都大就保留该像素点,否则就会被抑制掉。

b、简便方法

上面所述中,像素点的梯度方向的交点与哪个方向的邻近像素点最近,就计算哪个方向的梯度幅值。

5、双阈值检测

上面所述的连有边界是指如果与已确定的边界相连就保留,否则就舍弃。

ps:阈值设定较小则可以显示更加细致的边界信息,但过小则容易产生噪声。

6、Canny代码效果

import cv2
img=cv2.imread("car.jpg",cv2.GRAYSCALE)
v1=cv2.Canny(img,120,250)
v2=cv2.Canny(img,50,100)
res=cv2.hstack((v1,v2))
cv2.imshow("res",res)
cv2.waitKey()
cv2.destroyAllWindows()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一瞬にして失う

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值