OpenCV——Canny边缘检测

目录

简介

实现步骤

代码

原图

效果图


简介

Canny边缘检测是一种使用多级边缘检测算法检测边缘的方法。

实现步骤

step1:去噪。噪声会影响边缘检测的准确性,因此首先要将噪声过滤掉。

方法:图像边缘容易受到噪声的干扰,因此为了避免检测到错误的边缘信息,通常需要使用滤波去噪,平滑一些纹理弱的非边缘区域,从而得到更准确的边缘,通常使用高斯噪声。

step2:计算梯度的幅度与方向。

方法:梯度的方向与边缘总是垂直的,通常就近取值为水平(左右)、垂直(上下)、对角线(右上,左上,左下,右下)等8个不同方向。因此在计算梯度时会得到梯度的幅度和角度(代表梯度的方向)。

step3:非极大值抑制,即适当地让边缘“变瘦”。

方法:逐一遍历像素点,判断当前像素点是否是周围像素点中具有相同梯度方向的最大值,并根据判断结果决定是否抑制该点。如果该点是正/负梯度方向上的局部最大值,则保留该点。如果不是,则抑制该点(归零)。

step4:确定边缘。使用双阈值算法确定最终的边缘信息。

方法:完成上述步骤后,图像内的强边缘已经在当前获取的边缘图像内,但是一些虚边缘可能也在边缘图像内,这些虚边缘可能是真实图像产生的,也可能是由于噪声所产生的。对于后者,必须将其剔除。

设置两个阈值,其中一个为MaxVal,另外一个为低阈值minVal,根据梯度幅度,与两个阈值之间的关系,判断边缘的属性,具体步骤为:

(1)如果当前的边缘像素的梯度值大于或等于maxVal,则将当前边缘像素标记为强边缘;

(2)如果当前边缘像素的梯度值介于maxVal与minVal之间,则将当前边缘像素标记为虚边缘(需要保留);

(3)如果当前边缘像素的梯度值小于或等于minVal,则抑制当前边缘像素。

经过上述过程,获得虚边缘,此时通过判断虚边缘与强边缘是否连接,如果与强边缘连接,则将该边缘处理为边缘,如果与强边缘无连接,则该边缘为弱连接,将其抑制。

代码

import cv2

test = cv2.imread('test.jpg',cv2.IMREAD_GRAYSCALE)
r = cv2.Canny(test,128,200)
cv2.imshow('test',r)
cv2.waitKey(0)

原图

效果图

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Canny边缘检测算法是一种经典的图像处理算法,被广泛应用于计算机视觉领域。该算法的流程可以分为以下几个步骤: 1. 高斯滤波器:首先,对输入图像应用高斯滤波器进行去噪处理。这一步的目的是减少图像中的噪声对边缘检测结果的影响。通过调整滤波器的参数,可以控制平滑程度。 2. 计算梯度:在经过高斯滤波器处理后的图像上计算梯度信息。梯度表示图像中每个像素点的亮度变化情况。通过计算梯度的幅值和方向,我们可以得到图像中的边缘信息。 3. 非最大抑制:接下来,在梯度图像上进行非最大抑制处理。这一步的目的是将梯度图像中非边缘像素置为0,只保留边缘的细线条。非最大抑制的原理是在每个像素点的梯度方向上,比较该像素点与相邻像素点的梯度幅值,只保留梯度幅值最大的像素点作为边缘点。 4. 阈值处理:经过非最大抑制后,我们得到了一个二值图像,其中边缘点被设置为白色,非边缘点为黑色。然而,这个结果可能还存在一些假阳性(即被错误地标记为边缘的非边缘点)。为了去除这些假阳性,Canny边缘检测算法采用了双阈值处理。较大的阈值用于检测图像中明显的边缘,而较小的阈值用于将这些断续的边缘连接起来。通过调整这两个阈值,我们可以控制边缘检测的灵敏度和准确性。 5. 边缘连接:最后一步是进行边缘的连接。在前面的步骤中,我们得到了一些断断续续的边缘线段。为了得到连续的边缘,Canny边缘检测算法会分析所有的边缘及其之间的连接关系,将它们连接起来形成完整的边缘线段。 综上所述,Canny边缘检测算法通过高斯滤波器去噪、计算梯度、非最大抑制、阈值处理和边缘连接这几个步骤来实现对图像中边缘的检测。通过调节算法中的参数,我们可以控制边缘检测的准确性和灵敏度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

獜洛橙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值