OpenCV学习之路(十四) 图像的边缘检测

本文介绍了OpenCV中四种常用的边缘检测算法:Canny、Sobel、Laplacian和Scharr滤波器。Canny边缘检测算法因其低错误率、高定位性和最小响应而被广泛使用,包括高斯滤波、梯度计算、非极大值抑制和滞后阈值等步骤。Sobel算子用于近似图像梯度,Laplacian算子为二阶微分算子,Scharr滤波器则作为Sobel算子的一种增强。每个算法都提供了相应的函数原型和参数解释。
摘要由CSDN通过智能技术生成

目录

Canny 算子

Sobel 算子

Laplacian 算子

scharr 滤波器

简单示例代码:


 

Sobel 边缘检测

Laplace 边缘检测

Canny 边缘

 

图像边缘两侧的像素点灰度值发生明显的变化。因此可以通过图像灰度值的一阶导数或二阶导数来进行图像边缘的检测。

 

Canny 算子

Canny 边缘检测算法被普遍认为是最优的边缘检测算法。其旨在满足下面三个评价标准:

低错误率:检测出尽可能多实际存在的边缘,且尽可能地减少噪声产生的误差。

高定位性:检测出的边缘与图像中实际存在的边缘尽可能接近。

最小响应:每条边缘只检测一次,且可能存在的噪声不应标示为边缘。

Canny 边缘检测算法步骤:

1. 消除噪声。使用高斯滤波来去除噪声。如下图所示:

2. 计算梯度幅值和方向。可以采用 Sobel 滤波器来进行。如下图所示:

 

 

    

 

3. 非极大值抑制。排除非边缘像素,仅保留一些细线条(候选边缘)。

4. 滞后阈值。包括高阈值和低阈值。

     若某一像素位置的梯度幅值超过高阈值,该像素被保留为边缘像素。

     若某一像素位置的梯度幅值小于低阈值,该像素被排除。

      若某一像素位置的梯度幅值在两个阈值之间,该像素仅仅在连接到一个高于高阈值的像素时被保留。

通常高低阈值比在 2:1 到 3:1 之间。

Canny() 函数原型:

void Canny(InputArray image, OutputArray edges, double threshold1, double threshold2, int a
OpenCV是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉算法。其中,图像边缘检测OpenCV中的一个重要功能,用于检测图像中物体的边缘。 在OpenCV中,常用的图像边缘检测算法有以下几种: 1. Canny边缘检测算法:Canny算法是一种经典的边缘检测算法,它通过多阶段的处理来提取图像中的边缘。首先,对图像进行高斯滤波以降低噪声;然后,计算图像的梯度,并根据梯度的方向和幅值来确定边缘;最后,使用非极大值抑制和双阈值处理来提取最终的边缘。 2. Sobel算子:Sobel算子是一种基于梯度的边缘检测算子,它通过计算图像的一阶或二阶导数来检测边缘。Sobel算子可以分别计算图像在水平和垂直方向上的梯度,并将两个方向上的梯度合并得到最终的边缘。 3. Laplacian算子:Laplacian算子是一种基于二阶导数的边缘检测算子,它可以检测出图像中的高频变化区域,即边缘。Laplacian算子对图像进行二阶导数计算,并通过零交叉点来确定边缘。 使用OpenCV进行图像边缘检测的步骤如下: 1. 读取图像:使用OpenCV的函数读取图像文件。 2. 灰度化:将彩色图像转换为灰度图像,可以使用OpenCV的函数将图像转换为灰度模式。 3. 滤波处理:对灰度图像进行滤波处理,常用的滤波方法有高斯滤波。 4. 边缘检测:使用OpenCV提供的边缘检测函数,如Canny、Sobel或Laplacian等。 5. 显示结果:将检测到的边缘结果显示出来,可以使用OpenCV的函数将图像显示在窗口中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值