边缘特征提取方法

边缘检测是图形图像处理、计算机视觉和机器视觉中的一个基本工具,通常用于特征提取和特征检测,旨在检测一张数字图像中有明显变化的边缘或者不连续的区域,在一维空间中,类似的操作被称作步长检测(step detection)。边缘是一幅图像中不同屈原之间的边界线,通常一个边缘图像是一个二值图像。边缘检测的目的是捕捉亮度急剧变化的区域,而这些区域通常是我们关注的。在一幅图像中两度不连续的区域通常是以下几项之一:

l        图像深度不连续处

l        图像(梯度)朝向不连续处

l        图像光照(强度)不连续处

l        纹理变化处

理想情况下,对所给图像应用边缘检测器可以得到一系列连续的曲线,用于表示对象的边界。因此应用边缘检测算法所得到的结果将会大大减少图像数据量,从而过滤掉很多我们不需要的信息,留下图像的重要结构,所要处理的工作即被大大简化。然而,从普通图片上提取的边缘往往被图像的分割所破坏,也就是说,检测到的曲线通常不是连续的,有一些边缘曲线段开,就会丢失边缘线段,而且会出现一些我们不感兴趣的边缘。这就需要边缘检测算法的准确性。下面介绍两个本文实现的边缘检测算法:canny算子和sobel算子进行边缘检测。

 

1.1.1   Canny算子边缘检测

Canny边缘检测算法基于一个多阶边缘算子,是由John F. Canny于1986年首先提出的[46],他不但给出了边缘检测的方法,也提出了边缘检测的计算理论。

Canny边缘检测器使用一个基于高斯模型派生的检测模型,因为未处理图像可能含有噪声,所以开始在原始图像上应用一个高斯滤波器,结果是一个轻度平滑的图像,以至于不至于被单个噪声像素干扰全局重要参数。

以一个5×5的高斯滤波模板为例(见公式3-7),对图像A应用高斯滤波可得B。下面对图像的光强梯度统计都基于图B。


一幅图像中的边缘可能在方向上各有所异,所以Canny算法用四个滤波器分别检测图像中的水平、垂直和对角线边缘。边缘检测器(如 Roberts, Prewitt, Sobel)值返回一个水平方向分量Gx和竖直方向分量Gy,由此边缘梯度和方向即可确定:


所有边缘的角度都在上述选定的四个方向(0°,45°,90°,135°)周围。下一步通过滞后性门限跟踪边缘线。

与小的光强梯度相比,数值较大的光强梯度更容易作为边缘线。在大多数图像中定义一个门限值来确定光强梯度取值多少适合作为边缘线通常是不可行的,因此Canny算法使用滞后作用确定门限值。该方法使用两个门限分别定义高低边界。假设所有的边缘应该不受噪声影响而且是连续的曲线。因此我们设置一个高门限用于判定确定是边缘的曲线,再由此出发,利用方向信息跟踪那些可追踪的图像边缘。当追踪该边缘时,应用低门限可以让我们追踪那些含有边缘的区域直到找到下一个曲线的起点。

如图 3‑5所示,(a)为原图的灰度图,(b)为高斯滤波平滑图,(c)和(d)分别是手动设置的高低门限值如图所示的canny边缘检测结果。根据多组图像数据测试发现,当canny高低门限值分别设置为50,150时能够保证大部分有效信息的保留且不会有过多冗余信息。因此后文中采用门限值[Thres1,Thres2]= 50,120 作为canny边缘检测参数。Opencv中以下代码实现:

      cvCanny( dst,src, 50, 120, 3 );




1.1.1   Sobel算子边缘检测

和Canny算子类似,Sobel算子[47]也是利用梯度信息对图像进行边缘检测的。对图像进行边缘检测时,计算每个像素的梯度并给出不同方向从明到暗的最大变化及其变化率。这个结果显示出图片在该点亮度变化为“急剧”还是“平滑”,由此可以判断该区域成为边缘的概率。在实际操作中,这个成为边缘的可能性(称为magnitude)计算比计算方向更为可靠,也更为便捷。在图像中的每个像素点,梯度向量只想亮度增长最大的方向,该梯度向量的长度对应于该方向的光强变化率。这就说明在同一像素图像上一个区域的某点的sobel算子是一个零向量,而且在边缘线上的点上有一组向量值为亮度梯度。

数学上在原图像上应用3×3的掩膜计算水平和垂直两个方向的变化梯度近似值。如果我们定义A为源图像,和分别作为一幅图像的水平近似梯度和垂直近似梯度,计算方式如下:


式3-9中,*表示二维卷积运算。这里建立的坐标系在x坐标方向向右,y坐标方向向下,在图像中的每个点,用式3-8描述总梯度大小及方向。用Sobel算子进行边缘检测结果见图 3‑6所示。


你可能感兴趣的:(Computer,Vision)