Python-Opencv中边缘检测中Canny算法

本文介绍了Canny边缘检测算法在Python-Opencv中的应用,包括算法的发展历史、处理流程和具体步骤,如高斯平滑、梯度计算、非极大值抑制、双阈值检测以及抑制孤立边缘点。Canny算法因其良好的边缘检测性能和简单的实现,成为图像处理中的经典算法。
摘要由CSDN通过智能技术生成

Python-Opencv中边缘检测中Canny算法

边缘检测

边缘检测的目的是在保留原有图像属性的情况下,显著减少图像的数据规模。目前有多种算法可以进行边缘检测,虽然Canny算法年代久远,但可以说它是边缘检测的一种标准算法,而且仍在研究中广泛使用。

Canny算法
Canny算法是边缘检测中的一种算法,对边缘算法的理解,以下内容我觉得可以很好理解,以下内容转载于一篇博客,博客地址为 https://www.cnblogs.com/techyan1990/p/7291771.html

1.Canny边缘检测算法的发展历史

Canny边缘检测于1986年由JOHN CANNY首次在论文《A Computational Approach to Edge Detection》中提出,就此拉开了Canny边缘检测算法的序幕。

Canny边缘检测是从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术,目前已广泛应用于各种计算机视觉系统。Canny发现,在不同视觉系统上对边缘检测的要求较为类似,因此,可以实现一种具有广泛应用意义的边缘检测技术。边缘检测的一般标准包括:

  1. 以低的错误率检测边缘,也即意味着需要尽可能准确的捕获图像中尽可能多的边缘。

  2. 检测到的边缘应精确定位在真实边缘的中心。

  3. 图像中给定的边缘应只被标记一次,并且在可能的情况下,图像的噪声不应产生假的边缘。

为了满足这些要求,Canny使用了变分法。Canny检测器中的最优函数使用四个指数项的和来描述,它可以由高斯函数的一阶导数来近似。

在目前常用的边缘检测方法中,Canny边缘检测算法是具有严格定义的,可以提供良好可靠检测的方法之一。由于它具有满足边缘检测的三个标准和实现过程简单的优势,成为边缘检测最流行的算法之一。

2.Canny边缘检测算法的处理流程

Canny边缘检测算法可以分为以下5个步骤:

  1. 使用高斯滤波器,以平滑图像,滤除噪声。

  2. 计算图像中每个像素点的梯度强度和方向。

  3. 应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。

  4. 应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。

  5. 通过抑制孤立的弱边缘最终完成边缘检测。

下面详细介绍每一步的实现思路。

2.1 高斯平滑滤波

为了尽可能减少噪声对边缘检测结果的影响,所以必须滤除噪声以防止由噪声引起的错误检测。为了平滑图像,使用高斯滤波器与图像进行卷积,该步骤将平滑图像,以减少边缘检测器上明显的噪声影响。大小为(2k+1)x(2k+1)的高斯滤波器核的生成方程式由下式给出:
在这里插入图片描述
下面是一个sigma = 1.4,尺寸为3x3的高斯卷积核的例子(需要注意归一化):
在这里插入图片描述
若图像中一个3x3的窗口为A,要滤波的像素点为e,则经过高斯滤波之后,像素点e的亮度值为:
在这里插入图片描述
其中*为卷积符号,sum表示矩阵中所有

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值