数字图像处理5--边缘检测探究(内容较多,持续更新)

来源:互联网 发布:通道网络花店 编辑:程序博客网 时间:2024/05/25 13:33

有些论文和著作中将边缘检测分类为低层次特征提取,也就不需要任何形状信息(空间关系的信息)就可以从图像中自动提取的过程。阈值处理就是作为点运算的一种低层次特征提取方式。

关于边缘检测的一些理解及扩展:

数字图像的边缘检测是图像分割,目标区域识别,区域形状提取等图像分析领域十分重要的基础,是图像识别中提取图像特征的一个重要方法。物体的边缘以图像局部特征不连续的形式出现,也就是指图像局部亮度变化最显著的部分,例如:灰度值的突变,颜色的突变和纹理结构的突变等,同时物体的边缘也是不同区域的分界处。图像边缘有方向和幅度两个特性,通常沿边缘走向的像素灰度变化平缓,垂直于边缘走向的像素灰度变化剧烈,更具灰度变化的特点,可以分为阶跃型,房顶型和凸缘型,这些变化对应图像中不同的景物。

        边缘检测的实质是采用某种算法来提取出图像中对象与背景间的交界线边缘指的是图像中在且仅在某个方向上灰度急剧变化、而在另一个与其正交的方向灰度变化平缓的像素一,。边缘特征可以更好的保持图像的结构信息,同时很多角点提取算法也是基于边缘轮廓特征的。图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。经典的边缘检测方法,是通过对原始图像中像素的某小邻域构造边缘检测算子来达到检测边缘这一目的的。

        边缘指的是图像中在且仅在某个方向上灰度急剧变化、而在另一个与其正交的方向灰度变化平缓的像素一,。边缘特征可以更好的保持图像的结构信息,同时很多角点提取算法也是基于边缘轮廓特征的。

        由于边缘是图像上灰度变化最剧烈的地方,传统的边缘检测就是利用了这个特点,对图像的各个像素点进行微分或求二阶微分来确定边缘像素点。一阶微分图像的峰值处对应着图像的边缘点,二阶微分图像的过零点对应着图像的边缘点。根据数字图像的特点,处理图像过程中常采用差分代替微分计算,对于图像的简单一阶导数运算,由于具有固定的方向性,只能检测特定方向的边缘,所以不具有普遍性。

       为了克服一阶导数的缺点,可以计算图像的梯度。图像梯度最重要的性质是:梯度的方向在图像灰度最大变化率上,它恰好可以反映出图像边缘上的灰度变化。


边缘检测的分类:

有许多用于边缘检测的方法, 他们大致可分为两类:基于搜索和基于零交叉。
基于搜索的边缘检测方法首先计算边缘强度, 通常用一阶导数表示, 例如梯度模,然后,用计算估计边缘的局部方向, 通常采用梯度的方向,并利用此方向找到局部梯度模的最大值。
基于零交叉的方法找到由图像得到的二阶导数的零交叉点来定位边缘。 通常用拉普拉斯算子或非线性微分方程的零交叉点。
滤波做为边缘检测的预处理通常是必要的,通常采用高斯滤波已发表的边缘检测方法应用计算边界强度的度量,这与平滑滤波有本质的不同。 正如许多边缘检测方法依赖于图像梯度的计算,他们用不同种类的滤波器来估计x-方向和y-方向的梯度。

一起了解图像梯度算子:

  (一)梯度算子可分为3类:
  1、使用差分近似图像函数导数的算子。有些是具有旋转不变性的(如:Laplacian算子),因此只需要一个卷积掩模来计算。其它近似一阶导数的算子使用几个掩模。
  2、基于图像函数二阶导数零点的算子(如:Marr—Hild reth或Canny边缘检测算子。
  3、试图将图像函数与边缘的参数模型相匹配的箅子
  (二)第一类梯度算子
  拉普拉斯(Laplace)算子通常使用3×3的掩模,有时也使用强调中心象素或其邻接性的拉普拉斯算子(这种近似不再具有旋转不变性)。
  拉普拉斯算子的缺点:它对图像中的某些边缘产生双重响应。
  图像锐化的目的是图像的边缘更陡峭、清晰。锐化的输出图像f是根据下式从输入图像g得到的:f(i,j)=g(i,j)-c s(i,j),其中c是反映锐化程度的正系数,s(i,j)是图像函数锐化程度的度量,用梯度箅子来计算,Laplacian箅子常被用于这一目的。
  (三)第二类梯度算子--二阶导数过零点算子
  根据图象边缘处的一阶微分(梯度)应该是极值点的事实,图象边缘处的二阶微分应为零,确定过零点的位置要比确定极值点容易得多也比较精确。右侧是Lena的过零点检测结果。
  为抑制噪声,可先作平滑滤波然后再作二次微分,通常采用高斯函数作平滑滤波,故有高斯-拉普拉斯LoG(Laplacian of Gaussian)算子。
    噪声点对边缘检测有较大的影响,效果更好的边缘检测器是高斯-拉普拉斯(LoG)算子。它把高斯平滑滤波器和拉普拉斯锐化滤波器结合起来,先平滑掉噪声,再进行边缘检测,所以效果更好。
  过零点检测:在实现时一般用两个不同参数的高斯函数的差DoG(Difference ofGaussians)对图象作卷积来近似,这样检测来的边缘点称为f(x,y)的过零点(Zero—crossing)。与前面的微分算子出仅采用很小的邻域来检测边缘不同,过零点(Zero-crossing)的检测所依赖的范闱与参数。有关,但边缘位置与0的选择无关,若只关心全局性的边缘可以选取比较大的邻域(如0=4时,邻域接近40个象素宽)来获取明显的边缘。过零点检测更可靠,不易受噪声影响,但.缺点是对形状作了过分的平滑,例如会丢失欠明显的角点;还有产生环行边缘的倾向。
  产生环行边缘的原因是:图象的边缘多出现于亮度呈现突起或凹陷的位置上,其附近边缘法向线条上一阶微分会出现两个极值点,也就是会出现两个过零点。其整体结果是边缘呈现环行状态。
  (四)Canny边缘提取(或边缘检测Edge Detection)
  在如下的三个标准意义下,Canny边缘检测算子对受闩噪声影响的阶跃型边缘是最优的:
  1)检测标准--不丢失重要的边缘,不应有虚假的边缘;
  2)定位标准--实际边缘与检测到的边缘位置之间的偏差最小;
  3)单响应标准--将多个响应降低为单个边缘响应。
       关于canny算子,我们在后面的分类中详细介绍。
       关于梯算子可以参照点击打开链接
       那么,梯度算子涉及到的数学知识需要我们一起来探讨一下:

      1. 计算一阶导数
许多边缘检测操作都是基于亮度的一阶导数——这样就得到了原始数据亮度的梯度。使用这个信息我们能够在图像的亮度梯度中搜寻峰值。如果 I(x) 表示点 x 的亮度,I′(x) 表示点 x 的一阶导数(亮度梯度),这样我们就会发现:

对于更高性能的图像处理来说,一阶导数能够通过带有掩码的原始数据(1维)卷积计算得到。

2.计算二阶导数
其它一些边缘检测操作是基于亮度的二阶导数。这实质上是亮度梯度的变化率。在理想的连续变化情况下,在二阶导数中检测过零点将得到梯度中的局部最大值。另一方面,二阶导数中的峰值检测是边线检测,只要图像操作使用一个合适的尺度表示。如上所述,边线是双重边缘,这样我们就可以在边线的一边看到一个亮度梯度,而在另一边看到相反的梯度。这样如果图像中有边线出现的话我们就能在亮度梯度上看到非常大的变化。为了找到这些边线,我们可以在图像亮度的二阶导数中寻找过零点。如果 I(x) 表示点 x 的亮度,I′′(x) 表示点 x 亮度的二阶导数,那么,

卷积掩码快速处理图像数据


边缘检测的一般步骤

1.滤波:边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。需要指出,大多数滤波器在降低噪声的同时也导致了边缘强度的损失,因此,增强边缘和降低噪声之间需要折中。
2.增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将邻域(或局部)强度值有显著变化的点突显出来。边缘增强一般是通过计算梯度幅值来完成的。
3.检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些点是边缘点。最简单的边缘检测判据是梯度幅值阈值判据。
4.定位:如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来。在边缘检测算法中,前三个步骤用得十分普遍。这是因为大多数场合下,仅仅需要边缘检测器指出边缘出现在图像某一像素点的附近,而没有必要指出边缘的精确位置或方向。

    阈值:

       一旦我们计算出导数之后,下一步要做的就是给出一个阈值来确定哪里是边缘位置。阈值越低,能够检测出的边线越多,结果也就越容易受到图片噪声的影响,并且越容易从图像中挑出不相关的特性。与此相反,一个高的阈值将会遗失细的或者短的线段。一个常用的这种方法是带有滞后作用的阈值选择。这个方法使用不同的阈值去寻找边缘。首先使用一个阈值上限去寻找边线开始的地方。一旦找到了一个开始点,我们在图像上逐点跟踪边缘路径,当大于门槛下限时一直纪录边缘位置,直到数值小于下限之后才停止纪录。这种方法假设边缘是连续的界线,并且我们能够跟踪前面所看到的边缘的模糊部分,而不会将图像中的噪声点标记为边缘。



下面开始研究具体算子

1. 一阶边缘检测(第一类梯度算子)

     1.1边缘

      边缘是指图象中灰度发生急剧变化的区域。图象灰度的变化情况可以用灰度分布的梯度来反映,给定连续图象f(x,y),其方向导数在边缘法线方向上取得局部最大值。图象中一点的边缘被定义为一个矢量,模为当前点最人的方向导数,方向为该角度代表的方向。通常我们只考虑其模,而不关心方向。

     1.2检测边缘

     边缘检测强调的是图像的对比度。检测对比度(即亮度上的差别),可以增强图像中的边界特征,这些边界正是图像对比度出现的地方。

     1.3差分运算

     差分处理来检测边缘亮度变化,对相邻点的差分处理也可以用来估算点的一阶导数。

   

    

 

   估算点的一阶导数


   1.4平滑处理

  这一章可以参考这里

    1.5常见检测算子:Robert,Prewitt,sobel,

2. 二阶边缘检测:Canny,Laplancian, Marr-Hildreth, LoG


2.1Canny:很多著作中把Canny看作一阶的边缘检测,这里本人为了区分sobel算子,将它归于二阶。

Canny边缘检测算子的提出是基于以下概念:
  (1)边缘检测算子是针对一维信号和前两个最优标准(即检测标准和定位标准)表达的,用微积分方法可以得到完整的解;
  (2)如果考虑第三个标准(多个响应),需要通过数值优化的办法得到最优解,该最优滤波器可以有效地近似为标准差为(的高斯平滑滤波器的一阶微分,其误差小于20%,这是为了便于实现;这与M ar—Hild reth边缘检测算子很相似;它是基于LoG边缘检测算子的;
  (3)将边缘检测箅子推广到两维情况。阶跃边缘由位置、方向和可能的幅度(强度)来确定。可以证明将图象与一对称2 D Gaussian做卷积后再沿梯度方向微分,就构成了一个简单而有效的方向算子(回想一下,LoG过零点算子并不能提供边缘方向的信息,因为它使用了Laplacian滤波器)。
  (4)由于噪声引起的对单个边缘的(多个)虚假响应通常造成所谓的“纹状(streaking)"问题。一般而言,该问题在边缘检测中是非常普遍的。
  边缘检测算子的输出通常要做阈值化处理,以确定哪些边缘是突出的。
  纹状是指边缘轮廓断开的情形,是由算子输出超出或低于阈值的波动引起的。纹状现象可以通过带滞后的阈值处理(thresh01ding withhysteresis)来消除;
  如果边缘响应超过一给定高阈值时,这些象素点构成了某个尺度下的边缘检测算子的确定的输出。
  个别的弱响应通常对应于噪声,但是如果这些点是与某些具有强响应的点连接时,它们很可能是图象中真实的边缘。这些连接的象素点在当其响应超过一给定的低阈值时,就被当作边缘象素。
  这里的低阈值和高阈值需要根据对信噪比的估计来确定。
  (5)算子的合适尺度取决于图象中所含的物体情况。解决该未知数的方法是使用多个尺度,将所得信息收集起来。不同尺度的Canny检测算子由高斯的不同的标准差(来表示。有可能存在几个尺度的算子对边缘都给出突出的响应(即信噪比超过阈值);在这种情况下,选择具有最小尺度的算子,因为它定位最准确。

  Canny边缘检测算法步骤:
  l、对于递增的标准差(重复(2)到(6)步骤);
  2、将图象f与尺度为高斯函数做卷积;
  3、对图象中的每个象素,估计局部边缘的法向n;
  4、用非最大抑制公式找到边缘的位置;
  5、用公式计算边缘强度;
  6、对边缘图像做滞后阈值化处理,消除虚假响应;
  7、用特征综合方法,收集来自多尺度的最终的边缘信息。

2.2 高斯差分函数

高斯差分函数在图像处理和模式识别中应用很广泛。

在SIFT(尺度不变特征转换)技术中,通过将原图像的像素矩阵函数和高斯差分函数进行卷积运算,可以获得SIFT特征点,这些特征点是位于图像边缘具有高斯差分极值点的关键点。通过高斯模糊处理,这些关键点的灰度值会发生剧烈的变化,因此使用这些关键点作为图像的特征点具有很好的稳定性和抗干扰性,对基于图像平移、旋转、缩放,光照,仿射、3D投射以及光照等条件的变化不敏感。有利于后期的图像配准。

3. Spacek,Petrou


4. 相位一致性

边缘检测的另一种形式被称为相位一致性。

边缘检测算子的比较突出了他们的一些内在问题:不完整的轮廓,阈值选择,噪声响应。而且,因为局部光照多变化,选择单个阈值通常不能适用于图像中所有的区域。我们开始关注如何优化低层次特征提取方法。

相位一致性是一个特征检测算子,主要有两个优点:一是可以检测大范围的特征,二是对局部(和平滑)光照变化具有不变性。它是基于相位(即时间)考虑的频域处理。


5. 局部特征检测:

     5.1角点检测:Harris;

     5.2:特征检测:SIFT,显著性算法



0 0
原创粉丝点击