的边缘检测方法得到的往往是断续的、不完整的结构信息,噪声也较为敏感,为了有效抑制噪声,一般都首先对原图像进行平滑,再进行边缘检测就能成功地检测到真正的边缘。
从人的直观感受来说,边缘对应于物体的几何边界。图像上灰度变化剧烈的区域比较符合这个要求,我们一般会以这个特征来提取图像的边缘。但在遇到包含纹理的图像上,这有点问题,比如说,图像中的人穿了黑白格子的衣服,我们往往不希望提取出来的边缘包括衣服上的方格。这就又涉及到纹理图像的处理等方法。但一般认为边缘提取是要保留图像的灰度变化剧烈的区域,这从数学上,最直观的方法就是微分(对于数字图像来说就是差分),在信号处理的角度来看,也可以说是用高通滤波器,即保留高频信号。用于图像识别的边缘提取往往需要输出的边缘是二值图像,即只有黑白两个灰度的图像,其中一个灰度代表边缘,另一个代表背景。此外,还需要把边缘细化成只有一个像素的宽度。
图像边缘检测的基本步骤:
(1)滤波。边缘检测主要基于导数计算,但受噪声影响。但滤波器在降低噪声的同时也导致边缘强度的损失。
(2)增强。增强算法将邻域中灰度有显著变化的点突出显示。一般通过计算梯度幅值完成。
(3)检测。但在有些图像中梯度幅值较大的并不是边缘点。最简单的边缘检测是梯度幅值阈值判定。
(4)定位。精确确定边缘的位置。 总的说来传统边缘检测的流程图如下:
原始图像 平滑图像 平滑图像 阈值分割 得出边缘的二值化图像既检出边缘点 图像滤波 梯度算子 边缘定位 11 边缘增强 边缘检测
图2.2 边缘检测的流程图
特征提取作为图像边缘检测的一个重要内容,发展了众多的方法。这些方法经过实践的检验,成为了经典的内容。经典的边缘检测算子包括:Roberts算子,Prewitt算子,Sobel算子,Log (Laplacian of Gaussian)算子等。这些经典的边缘提取算子在使用时都是使用预定义好的边缘模型去匹配。 2.3 边缘检测与提取主要算法
边缘检测的实质是采用某种算法来提取出图像中对象与背景间的交界线。我们将边缘定义为图像中灰度发生急剧变化的区域边界。图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。
经典的边界提取技术大都基于微分运算。首先通过平滑来滤除图像中的噪声,然后进行一阶微分或二阶微分运算,求得梯度最大值或二阶导数的过零点,最后选取适当的阈值来提取边界。 2.3.1 Roberts边缘算子
Roberts算子是一种利用局部差分算子寻找边缘的算子,由下式给出:
g(x,y)={[f(x,y-f(x?1,y?1)]2+[f(x,y- 理类似于在人类视觉系统中发生的过程。
Roberts算子边缘定位准,但是对噪声敏感。适用于边缘明显而且噪声较少的图像分割,在应用中经常用Roberts算子来提取道路。 2.3.2 Sobel边缘算子
Sobel边缘算子的卷积和如图2.2所示,图像中的每个像素都用这
12
f(x?1,y?1)]2}
12 ,
其中f(x,y)是具有整数像素坐标的输入图像,平方根运算使该处
两个核做卷积。这两个核分别对垂直边缘和水平边缘响应最大,两个卷积的最大值作为该点的输出位。运算结果是一幅边缘幅度图像。
-1 0 1 -2 0 2 -1 0 1 -1 -2 -1 0 0 0 1 2 1 图2.2 Sobel边缘算子 Sobel算子认为邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。一般来说,距离越大,产生的影响越小。 2.3.3 Prewitt边缘算子
Prewitt边缘算子的卷积和如图2.3所示,图像中的每个像素都用这两个核做卷积,取最大值作为输出,也产生一幅边缘幅度图像。
-1 0 1 -1 0 1 -1 0 1 1 1 1 0 0 0 -1 -1 -1
图2.3 Prewitt边缘算子 Prewitt算子在一个方向求微分,而在另一个方向求平均,因而对噪声相对不敏感,有抑制噪声作用。但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位不如Roberts算子。
2.3.4 Laplacian边缘算子
拉普拉斯算子一种二阶边缘检测算子,它是一个线性的、移不变算子。是对二维函数进行运算的二阶导数算子,对一个连续函数f (x, y)它在图像中的位置(x, y),拉普拉斯值定义为:
Laplacian算子利用二阶导数信息,具有各向同性,即与坐标轴方向无关,坐标轴旋转后梯度结果不变。使得图像经过二阶微分后,在边缘处产生一个陡峭的零交叉点,根据这个对零交叉点判断边缘。其
13
?2f?2f?f?2?2
?x?y24邻域系统和8邻域系统的Laplacian算子的模板分别如图2.4和图2.5所示。
0 1 0 1 0 1 1 1 1 1 1
-4 1 1 0 -8 1 1 1 图2.4 邻域Laplacian算子 图2.5 邻域Laplacian算子
通常使用的拉普拉斯算子3×3模板如图2.6所示:
-1 -1 -1
图2.6 拉普拉斯算子
-1 8 -1 -1 -1 -1
-1 -2 -1 0 4 0 1 2 1 -1 0 1 -2 0 2 -1 0 1 Laplacian算子对噪声比较敏感,Laplacian算子有一个缺点是它对图像中的某些边缘产生双重响应。所以图像一般先经过平滑处理,通常把Laplacian算子和平滑算子结合起来生成一个新的模板。 2.3.5 Log边缘算子
现在介绍一种利用图像强度二阶导数的零交叉点来求边缘点的算法对噪声十分敏感,所以在边缘增强前滤除噪声。为此,马尔(Marr)和希尔得勒斯(Hildreth)根据人类视觉特性提出了一种边缘检测的方法,该方法将高斯滤波和拉普拉斯检测算子结合在一起进行边缘检测的方法,故称为Log(Laplacian of Gassian )算法。也称之为拉普拉斯高斯算法。该算法的主要思路和步骤如下:
(1)滤波:首先对图像f(x,y)进行平滑滤波,其滤波函数根据人类视觉特性选为高斯函数,即: G(x,y)?
1?22?exp?(x?y)? ?222???2???14
1其中,G(x,y)是一个圆对称函数,其平滑的作用是可通过?来控制的。将图像G(x,y)与f(x,y)进行卷积,可以得到一个平滑的图像,即:
g(x,y)?f(x,y)*G(x,y)
(2)增强:对平滑图像g(x,y)进行拉普拉斯运算,即:
h(x,y)??2?f(x,y)*G(x,y)?
(3)检测:边缘检测判据是二阶导数的零交叉点(即h(x,y)?0 的点)并对应一阶导数的较大峰值。
这种方法的特点是图像首先与高斯滤波器进行卷积,这样既平滑了图像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除。但是由于平滑会造成图像边缘的延伸,因此边缘检测器只考虑那些具有局部梯度最大值的点为边缘点。这一点可以用二阶导数的零交叉点来实现。拉普拉斯函数用二维二阶导数的近似,是因为它是一种无方向算子。在实际应用中为了避免检测出非显著边缘,应选择一阶导数大于某一阈值的零交叉点作为边缘点。由于对平滑图像g(x,y)进行拉普拉斯运算可等效为G(x,y)的拉普拉斯运算与f(x,y)的卷积,故上式变为:
h(x,y) = f(x,y)*?2G(x,y)
?2G?x2式中?2G(x,y)称为LOG滤波器,其为: = ?G(x,y)?1?x?y?122????1??exp?x?y?? 4?2?2???2??2???222 +
?2G?y2 =
这样就有两种方法求图像边缘:
①先求图像与高斯滤波器的卷积,再求卷积的拉普拉斯的变换,然后再进行过零判断。
②求高斯滤波器的拉普拉斯的变换,再求与图像的卷积,然后再进行过零判断。
这两种方法在数学上是等价的。上式就是马尔和希尔得勒斯提出的边缘检测算子(简称M-H算子),由于LOG滤波器在(x,y)空间中的图形与墨西哥草帽形状相似,所以又称为墨西哥草帽算子。
拉普拉斯算子对图像中的嗓声相当敏感。而且它常产生双像素宽的边缘,也不能提供边缘方向的信息。高斯-拉普拉斯算子是效果较
15