我是靠谱客的博主 虚拟烧鹅,最近开发中收集的这篇文章主要介绍OpenCV边缘检测原理边缘检测,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

边缘检测

边缘检测的目的是标识数字图像中亮度变化明显的点,图像属性中的显著变化通常反映了属性的重要事件和变化。这些包括:深度上的不连续,表面方向的不连续,物质属性变化和场景照明变化。边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。图像边缘检测大幅度的减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。一阶的有Roberts Cross算子,Sobel算子,而二阶的还有laplacion算子,在梯度方向的二阶导数过零点,而Canny算子属于非微分边缘检测算子。这四种算子比较如下所示:

算子

优缺点比较

Roberts

对具有陡峭的低噪声的图像处理效果比较好,但是边缘比较粗糙,边缘定位不准确

Sobel

对灰度渐变和噪声较多的图案处理效果比较好,边缘定位较准确

Laplacion

对图像中的阶跃性边缘点点位准确,对噪声敏感,丢失一部分边缘的方向信息,造成一些不连续的检测边缘

Canny

不容易受噪声影响,能够检测到真正的弱边缘。使用俩种不同的阈值分别检测强边缘和弱边缘,并且仅当弱边缘与强边缘相连时,才将弱边缘包含在输出图像中

1.Roberts算子

对于图像来说,是一个二维的离散型数集,通过推广二维连续型求函数偏导的方法,来求得图像的偏导数,即在(x,y)处的最大变化率,也就是这里的梯度:

梯度是一个矢量,则(x,y)处的梯度表示为:

其大小及方向为:

图像的垂直和水平梯度模板为:

对角线方向的梯度及模板:

2.Sobel算子

在中心系数上使用一个权值2,Sobel模板能够较好的抑制(平滑)噪声。

计算公式及模板如下:

注意:在进行Sobel算子处理之后,还需要调用convertScaleAbs() 函数计算绝对值,并将图像转换为8位图像进行显示。原因是sobel算子求导的话,白到黑是正数,但是黑到白就是负数了,所有的负数都会被截断为0,所以要取绝对值 

3.Laplacion算子

Laplacian算子是n维欧几里德空间中的一个二阶微分算子,常用于图像增强领域和边缘提取。它通过灰度差分计算邻域内的像素,基本流程是:判断图像中心像素灰度值与它周围其他像素的灰度值,如果中心像素的灰度更高,则提升中心像素的灰度;反之降低中心像素的灰度,从而实现图像锐化操作。在算法实现过程中,Laplacian算子通过对邻域中心像素的四方向或八方向求梯度,再将梯度相加起来判断中心像素灰度与邻域内其他像素灰度的关系,最后通过梯度运算的结果对像素灰度进行调整。

 Laplace算子是一种各向同性算子,二阶微分算子,具有旋转不变性。在只关心边缘的位置而不考虑其周围的象素灰度差值时比较合适。Laplace算子对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。存在噪声情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波。所以,通常的分割算法都是把Laplacian算子和平滑算子结合起来生成一个新的模板。

1阶导数为:

2阶导数为:

这里需要的是关于x的二阶导数,故将上式中的变量减去1后,得到:

通过拉普拉斯模板求二阶导数,其定义如下:

将该方程表示为离散形式:

Laplanion算子四邻域模板为:

Laplanion算子八邻域模板为:

4.Canny算子

1)非最大信号抑制:

1,将其梯度方向近似为以下值中的一个,包括0,45,90,135,180,225,270和315,即表示上下左右和45度方向。

2,比较该像素点和其梯度正负方向的像素点的梯度强度,如果该像素点梯度强度最大则保留,否则抑制(删除,即置为零)。

在每一点上,邻域的中心像素M[x,y]与沿着梯度方向的俩个像素相比。如果M[x,y]的梯度值不比沿梯度线的俩个相邻像素梯度值大,则令M[x,y]=0

2)高低阈值输出二值图像:

T1,T2,为阈值,凡是高于T2的都保留,凡是小于T1都丢弃,从高于T2的像素出发,凡是大于T1而且相互连接的,都保留。最终得到一个输出二值图像。推荐的高低阈值比值为T2:T1=3:1/2:1其中T2为高阈值,T1为低阈值

最后

以上就是虚拟烧鹅为你收集整理的OpenCV边缘检测原理边缘检测的全部内容,希望文章能够帮你解决OpenCV边缘检测原理边缘检测所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部