您好,欢迎访问三七文档
第六章边缘检测边缘(edge)是指图像局部亮度变化最显著的部分.边缘主要存庄于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征提取等图像分析的重要基础,图像分析和理解的第一步常常是边缘检测(edgedetection),由于边缘检测十分重要,因此成为机器视觉研究领域最活跃的课题之一,本章主要讨论边缘检测和定位的基本概念,并通过几种常用的边缘检测器来说明边缘检测的基本问题。图像中的边缘通常与图像亮度或图像亮度的一阶导数的不连续性有关.图像亮度的不连续可分为:①阶跃不连续,即图像亮度在不连续处的两边的象素灰度值有着显著的差异;②线条不连续,即图像亮度突然从一个值变化到另一个值,保持一个较小的行程后又返回到原来的值.在实际中,阶跃和线条边缘图像是很少见的,由于大多数传感元件具有低频特性,使得阶跃边缘变成斜坡型边缘,线条边缘变成屋顶形边缘,其中的亮度变化不是瞬间的,而是跨越一定的距离,这些边缘如图6.1所示。对一个边缘来说,有可能同时具有阶跃和线条边缘特性.例如在一个表面上,由一个平面变化到法线方向不同的另一个平面就会产生阶跃边缘;如果这一表面具有镜面反射特性且两平面形成的棱角比较圆滑,则当棱角圆滑表面的法线经过镜面反射角时,由于镜面反射分量,在棱角圆滑表面上会产生明亮光条,这样的边缘看起来像在阶跃边缘上叠加了一个线条边缘.由于边缘可能与场景中物体的重要特征对应,所以它是很重要的图像特征.比如,一个物体的轮廓通常产生阶跃边缘,因为物体的图像亮度不同于背景的图像亮度。在讨论边缘算子之前,首先给出一些术语的定义:边缘点:图像中亮度显著变化的点.边缘段:边缘点坐标[i,j]及其方向θ的总和,边缘的方向可以是梯度角.边缘检测器:从图像中抽取边缘(边缘点或边缘段)集合的算法.轮廓:边缘列表,或是一条边缘列表的曲线模型.边缘连接:从无序边缘表形成有序边缘表的过程.习惯上边缘的表示采用顺时针方向来排序.边缘跟踪:一个用来确定轮廓图像(指滤波后的图像)的搜索过程.边缘点的坐标可以是边缘位置象素点的行、列整数标号,也可以在子象素分辨率水平上表示.边缘坐标可以在原始图像坐标系上表示,但大多数情况下是在边缘检测滤波器的输出图像的坐标系表示,因为滤波过程可能导致图像坐标平移或缩放.边缘段可以用象素点尺寸大小的小线段定义,或用具有方向属性的一个点定义.请注意,在实际中,边缘点和边缘段都称为边缘。由边缘检测器生成的边缘集可以分成两个子集:真边缘集和假边缘集.真边缘集对应场景中的边缘,假边缘集不是场景中的边缘.还有一个边缘子集,即场景中漏检的边缘集。假边缘集称之为假阳性(falsePositive),而漏掉的边缘集则称之为假阴性(falseNegative)。边缘连接和边缘跟踪之间的区别在于:边缘连接是把边缘检测器产生的无序边缘集作为输入,输出一个有序边缘集;边缘跟踪则是将一幅图像作为输入,输出一个有序边缘集.另外,边缘检测使用局部信息来决定边缘,而边缘跟踪使用整个图像信息来决定一个象素点是不是边缘。6.1梯度边缘检测是检测图像局部显著变化的最基本运算.在一维情况下,阶跃边缘同图像的一阶导数局部峰值有关.梯度是函数变化的一种度量,而一幅图像可以看作是图像强度连续函数的取样点阵列.因此,同一维情况类似,图像灰度值的显著变化可用梯度的离散逼近函数来检测.梯度是一阶导数的二维等效式,定义为矢量用上式计算x和y方向梯度的位置是相同的,这一点位于内插点[[i+1/2,j+1/2]处,即在2×2邻域的所有四个象素点之间.不过这种计算可能会导致一些混淆,所以,通常用3×3邻域计算梯度值.这一方法将在下一节讨论。6.2边缘检测算法6.2.1边缘检测算法的基本步骤边缘检测算法有如下四个步骤:①滤波:边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与嗓声有关的边缘检测器的性能.需要指出,大多数滤波器在降低嗓声的同时也导致了边缘强度的损失,因此,增强边缘和降低噪声之间需要折衷。②增强:增强边缘的基础是确定图像各点邻域强度的变化值.增强算法可以将邻域(或局部)强度值有显著变化的点突显出来.边缘增强一般是通过计算梯度幅值来完成的。③检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些点是边缘点.最简单的边缘检测判据是梯度幅值阈值判据。④定位:如果某一应用场合要求确定边缘位置,则边缘的位置可在子象素分辨率上来估计,边缘的方位也可以被估计出来.在边缘检测算法中,前三个步骤用得十分普遍.这是因为大多数场合下,仅仅需要边缘检测器指出边缘出现在图像某一象素点的附近,而没有必要指出边缘的精确位置或方向.边缘检测误差通常是指边缘误分类误差,即把假边缘判别成边缘而保留,而把真边缘判别成假边缘而去掉.边缘估计误差是用概率统计模型来描述边缘的位置和方向误差的.我们将边缘检测误差和边缘估计误差区分开,是因为它们的计算方法完全不同,其误差模型也完全不同。人们已经发展了许多边缘检测器,这里仅讨论常用的几种边缘检测器.6.2.2Roberts算子同前面的2×2梯度算子一样,差分值将在内插点[i+1/2,j+1/2]处计算.Roberts算子是该点连续梯度的近似值,面不是所预期点[ij]处的近似值。6.2.3Sobel算子,正如前面所讲,采用3×3邻域可以避免在象素之间内插点上计算梯度.考虑下图中所示的点[i,j]周围点的排列。Sobel算子也是一种梯度幅值。6.2.4Prewitt算子Prewitt算子与.Sobel算子的方程完全一样,只是常量c=l.所以请注意,与Sobel算子不同,这一算子没有把重点放在接近模板中心的象素点[Prewitt1970].6.2.5各种算法比较现在来比较一下上面讨论过的边缘检测器.我们将按照本节开头所提出的滤波、增强和检测这三个步骤,来比较各种方法.第四步定位将不讨论.图6.2给出测试图像及经高斯滤波后的图像。图6.3给出在忽略滤波步骤情况下Roberts,Sobel和Prewitt边缘检测方法实验结果,对滤波后的图像进行边缘检测的结果见图6.4,其中滤波器为前一章介绍的7×7高斯滤波器,梯度幅值的计算见式(6.3).比较图6.3和图6.4可以发现,经过滤波的图像,由噪声引起的假边缘明显减少,同时也去除了许多细微边缘。6.3二阶微分算子前面讨论了计算一阶导数的边缘检测器,如果所求的一阶导数高于某一阈值,则可确定该点为边缘点.这样做会导致检测的边缘点太多(注意一下图6.3和图6.4中阈值化后的粗线).一种更好的方法就是求梯度局部最大值对应的点,并认定它们是边缘点,如图6.5所示.在图6.5中,若用阈值来进行边缘检测,则在a和b之间的所有点都被记为边缘点.但通过去除一阶导数中的非局部最大值,可以检測出更精确的边缘.一阶导数的局部最大值对应着二阶导数的零交叉点(Zerocrossing).这样,通过找图像强度的二阶导数的零交叉点就能找到精确的边缘点。在二维空间,对应二阶导数有两种算子:拉普拉斯算子和二阶方向导数。现在考虑一下图6.7所示的例子.该图给出了拉普拉斯算法对斜坡边缘的响应,其中的一行输出是零交叉点直接对应着图像中的一个象素点.再者,这是一种理想情况,边缘的实际位置仍要通过内插方法来确定。6.3.2二阶方向导数已知图像曲面f(x,y),其θ方向(与y轴夹角)的方向导数在f(x,y)点的值为根据式(6.5),在梯度方向上的二阶导数为拉普拉斯的二阶方向导数算子在机器视觉中并不常用,因为任何包含有二阶导数的算子比只包含有一阶导数的算子更易受噪声的影响,甚至一阶导数很小的局部峰值也能导致二阶导数过零点.为了避免噪声的影响,必须采用特别有效的滤波方法.在下一节,我们将讨论高斯滤波与二阶导数相结合的边缘检测方法。6.4LoG算法正如上面所提到的,利用图像强度二阶导数的零交叉点来求边缘点的算法对噪声十分敏感,所以,希望在边缘增强前滤除噪声.为此,Marr和Hildreth将髙斯滤波和拉普拉斯边缘检测结合在一起,形成LoG(LaplacianofGaussian)算法,也称之为拉普拉斯高斯算法[Marr1980].LoG边缘检测器的基本特征是:①平滑滤波器是高斯滤波器.②增强步骤采用二阶导数(二维拉普拉斯函数).③边缘检测判据是二阶导数零交叉点并对应一阶导数的较大峰值.⑤使用线性内插方法在子象素分辨率水平上估计边缘的位置.这种方法的特点是图像首先与高斯滤波器进行卷积(高斯滤波器在6.6节中将详细讨论),这一步既平滑了图像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除.由于平滑会导致边缘的延展,因此边缘检测器只考虑那些具有局部梯度最大值的点为边缘点.这一点可以用二阶导数的零交叉点来实现.拉普拉斯函数用作二维二阶导数的近似,是因为它是一种无方向算子.为了避免检测出非显著边缘,应选择一阶导数大于某一阈值的零交叉点作为边缘点。LoG算子输出h(x,y)是通过卷积运算得到的称之为墨西哥草帽算子(见图6.8).这样,下面两种方法在数学上是等价的:①求图像与高斯滤波器卷积,再求卷积的拉普拉斯变换.②求高斯滤波器的拉普拉斯变换,再求与图像的卷积.如果采用第一种方法,就可能用到5.4节介绍的高斯平滑滤波器.直接实现LoG算法的典型模板见图6.9.图6.10给出了应用LoG算子和零交叉点检测的结果.有关讨论实现LoG算法的有效方法,请参见文献[Huertas1986].滤波(通常是平滑)、增强、检测这三个边缘检测步驟对使用LoG边缘检测仍然成立,其中平滑是用高斯濾波器来完成的;增彊是将边缘转換成零交叉点来实现的;边缘检测则是通过检测零交叉点来进行的。可以看到,零交叉点的斜率依赖于图像强度在穿过边缘时的变化对比度.剩下的问題是把那些由不同尺度算子检测到的边缘组合起来.在上述方法中,边缘是在特定的分辨率下得到的.为了从图像中得到真正的边缘,有必要把那些通过不同尺度箅子得到的信息组合起来[Witkin1981]。这里介绍一下尺度空间概念.高斯平滑运算导致图像中边缘和其它尖锐不连续部分的模糊,其中模糊量取决于值值越大,噪声滤波效果越好,但同时也丢失了重要的边缘信息,影响了边缘检测器的性能.如果用小尺度滤波器,即取小值,又有可能平滑不完全而留有太多的噪声.大尺度滤波器在平滑相互邻近的两个边缘时,可能会将它们连在一起,这样只能检测出一个边缘.因此,在不知道物体尺度和位置的情况下,很难准确确定滤波器的尺度。使用多尺度滤波模板并在滤波器的不同尺度上分析边缘特性的方法仍在研究中.这些方法的基本思想是,通过使用大尺度滤波模板产生鲁棒边缘和小尺度滤波模板产生精确定位边缘的特性,来检测出图像的最佳边缘.Yuille和Poggio的研究工作奠定了多尺度高斯滤波的理论基础[Yuille1985,1986]。6.5图像逼近一幅图像是一个连续函数的采样阵列.有关图像的大多数思想首先在连续域内进行讨论,然后使用离散逼近法来计算所需要的性质.如果我们能从采样图像中估计连续函数,那么我们就能从估计的函数中求得图像性质,并且可以在子象素分辨率上计算边缘的位置。图6.11为一幅数字图像对应的离散三维图形表示,其中的纵坐标表示象素灰度值。设连续图像函数为z=f(x,y)(6.28)现在的任务是从数字图像的灰度值重构连续函数.对复杂的图像来说,连续强度函数可能包含x和y的超阶幂方,从而使得重构原始函数十分困难.如果将采用简单的分段函数来建立图像的模型,任务就变成了重构每一个分段解析函数,或小面(facets).换言之,就是试图找到在每一象素点的邻域内最能通近该邻域强度度值的简单函数,如图6.12所示.这种逼近叫小面模型(facetmodel)[Haralick1984].图6.13给出了采用5×5邻域的小面模型坐标系统。连续图像强度函数可以在每一个象素点上得到局部逼近.对一幅;n×m的图像,你能得到n.m个逼近函数,每一个函数仅对图像中一个特定象素有效.使用这些函数(而不是象素值)来确定边缘位置.许多复杂解析函
本文标题:第六章边缘检测
链接地址:https://www.777doc.com/doc-5012576 .html