Canny边缘检测

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Canny边缘检测相关的知识,希望对你有一定的参考价值。

参考技术A Canny边缘检测是一种使用多种边缘检测算法检测边缘的方法。由John F.Canny于1986年提出,并在论文中有详尽的描述。

1)去噪。噪声会影响边缘检测的准确度。通常采用高斯滤波去除图像中的噪声。滤波器的核越大,边缘信息对噪声的敏感度就越低。不过,核越大,边缘检测的定位错误也会随之增加。通常一个5 X 5的核能满足大多数情况。

2)计算梯度的幅度与方向。梯度的方向与边缘的方向是垂直的,通常就取近似值为·水平、垂直、对角线等八个不同的方向。

3)非极大值抑制,即适当地让边缘变瘦。在获得了梯度的幅度和方向后,遍历图像中的像素点,去除所有非边缘的点。具体实现上,判断当前像素点是否是周围像素点中具有相同梯度方向的最大值,如果是,则保留该点;如果不是则抑制(归零)。

4)确定边缘。用双阈值算法确定最终的边缘信息。完成之前三步骤后,图像的强边缘已经在当前获取的边缘图像内。但一些虚边缘可能也在边缘图像内,这些虚边缘可能是真实的图像产生的,也可能是由于噪声产生的(必须将其剔除)。

        设置两个阈值,其中一个为高阈值maxVal,另一个为低阈值minVal。根据当前边缘像素的梯度值与这两个阈值之间的关系,判断边缘的属性。如果当前边缘像素的梯度值不小于maxVal,则将当前边缘像素标记为强边缘;如果介于maxVal与minVal之间,则标记为弱边缘(先保留);如果小于minVal,则抑制当前边缘像素。之后再判断虚边缘是否与强边缘有连接,有连接,则处理为边缘;无连接则抑制。

OpenCV提供了cv2.Canny()来实现边缘检测:

dst : 为计算得到的边缘图像

image: 为8位输入图像

threshold1: 表示处理过程中的的第一个阈值

threshold2: 表示处理过程中的的第二个阈值

apertureSize: 表示Sobel算子的孔径大小。

L2gradient: 为计算图像梯度幅度的标识。其默认值是False。如果为True,则使用更精确的L2范数进行计算,否则使用L1范数。

例如:

sobel边缘检测优缺点与canny算子的优缺点?

一、sobel边缘检测:

1、sobel边缘检测优点:输出图像(数组)的元素通常具有更大的绝对数值。

2、sobel边缘检测缺点:由于边缘是位置的标志,对灰度的变化不敏感。

二、canny算子:

1、canny算子优点:法能够尽可能多地标识出图像中的实际边缘;标识出的边缘要与实际图像中的实际边缘尽可能接近。

2、canny算子缺点:图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识为边缘。

扩展资料:

Sobel边缘检测的核心在于像素矩阵的卷积,卷积对于数字图像处理非常重要,很多图像处理算法都是做卷积来实现的。

卷积运算的本质就是对制定的图像区域的像素值进行加权求和的过程,其计算过程为图像区域中的每个像素值分别与卷积模板的每个元素对应相乘,将卷积的结果作求和运算,运算到的和就是卷积运算的结果。

参考资料来源:

百度百科-sobel

百度百科-Canny算子

参考技术A

边缘提取其实也是一种滤波,不同的算子有不同的提取效果。比较常用的方法有三种,Sobel算子,Laplacian算子,Canny算子。

Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,sobel算子对边缘定位不是很准确,图像的边缘不止一个像素;当对精度要求不是很高时,是一种较为常用的边缘检测方法。    

Canny方法不容易受噪声干扰,能够检测到真正的弱边缘。优点在于,使用两种不同的阈值分别检测强边缘和弱边缘,并且当弱边缘和强边缘相连时,才将弱边缘包含在输出图像中。

Laplacian算子法对噪声比较敏感,所以很少用该算子检测边缘,而是用来判断边缘像素视为与图像的明区还是暗区。拉普拉斯高斯算子是一种二阶导数算子,将在边缘处产生一个陡峭的零交叉;

Laplacian算子是各向同性的,能对任何走向的界线和线条进行锐化,无方向性。这是拉普拉斯算子区别于其他算法的最大优点。

扩展资料:

边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。 

这些包括(i)深度上的不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。 边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。

图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。有许多方法用于边缘检测,它们的绝大部分可以划分为两类:

基于查找一类和基于零穿越的一类。基于查找的方法通过寻找图像一阶导数中的最大和最小值来检测边界,通常是将边界定位在梯度最大的方向。基于零穿越的方法通过寻找图像二阶导数零穿越来寻找边界,通常是Laplacian过零点或者非线性差分表示的过零点。

参考资料来源:百度百科-边缘检测

以上是关于Canny边缘检测的主要内容,如果未能解决你的问题,请参考以下文章

Canny边缘检测

sobel边缘检测优缺点与canny算子的优缺点?

sobel边缘检测优缺点与canny算子的优缺点?

OpenCV入门指南第三篇Canny边缘检测

一些关于Canny边缘检测算法的改进

18.Canny边缘检测