1、1图像边缘检测技术的研究和比较摘 要边缘描绘对象的边界,因此边缘提取是图像处理的基础而重要的问题。 图像边缘检测大大地减少了图像数据量,过滤了无用的信息,而保留了图像重要属性结构。由于边缘检测是对象检测的第一步,因此对边缘检测算法的正确理解是问题的关键。本文对各种各样的图像边缘检测技术进行了比较分析。通过编写 MATLAB 70 程序,显示在几乎所有情景下 Canny 边缘检测算法比其他所有的算法的执行效果都好。对处理后图像的评估显示:在有噪声的情况下,LoG 算子,Robert 算子, Prewitt 算子, Sobel 算子各自都表现出色。观察 Canny 边缘检测算法在计算上比 LoG
2、算子, Sobel 算子、Prewitt 算子和 Robert 算子代价高。关键字 :边缘检测,噪声,数字图像处理1 介绍边缘检测定义为识别和定位图像突变间断性的过程。间断性是描述像素灰度急剧变化的描述对象边界的地方。 经典的边缘检测方法包括用算子对图像进行卷积,该算子对图像梯度敏感,当在平坦区域时,返回值为 0。现在设计出大量的边缘检测算子,它们各自针对某种特定边缘敏感。 在选择边缘检测算子时,要根据边缘取向、噪声环境和边缘结构等的变化而变。 算子的几何形状决定了边缘最敏感的特征方向。可以选选择合适的算子来寻找水平,垂直或者对角边缘。 由于噪声和边缘信息在高频部分,对有噪声的图像,边缘检测是
3、比较困难的。 而尝试减少噪声,又导致边缘模糊和变形。 用于有噪声图像的算子通常具有更大的尺寸,因此它能用足够的数据进行均衡,以削弱噪声像元,这个结果使检测出的边缘定位精度降低。不是所有的边缘包含灰度的阶跃变化。例如折射或弱焦点可能导致对象的边界灰度逐渐变化。 这些情况下,选择的算子要对这种渐变敏感。 因此,就出现了检测为伪边缘、真实的边缘的漏检、边缘定位精2度、高计算时间的问题和由噪声产生的问题等。 所以,本文诣在对各种边缘检测技术进行比较和分析,并且指出各自适用的情况。这里有许多方法进行边缘检测。 然而,这些检测方法大多可以分为两类:基于梯度的边缘检测:梯度法通过寻找图像一阶导数极大值和极小
4、值来检测边缘。基于 Laplacian 边缘检测:Laplacian 算法是搜索图像二阶导数的零交叉点来寻找边缘。 边缘具有一维的倾斜形状,并且计算图像导数可能突出它的位置。假设我们有以下由灰度跃迁显示边缘的信号:如果我们采用这个信号的梯度,我们得到如下图:明显地,原始的信号中位于的边缘中心的地方显示出了一个最大值。 这种找出边缘的方法属于边缘检测滤波中的“梯度滤波” ,包括 Sobel 算子。 如果梯度的值超出某阈值,该像素点称为边缘点。 如上所述,边缘比周围具有更大的像素灰度值。 因此,一旦设置阈值,就用该阈值与梯度值相比较,检测出任何超出阈值的边缘。 此外,当3一阶导数为最大值时,二阶导
5、数为零。 由此可知,我们可以用定位二阶导数为零的方法来找到边缘的位置,这个方法叫作 Laplacian,信号的二阶导数如下所示 :在本篇文章,我们对最常用的基于梯度和 Laplacian 边缘检测技术的分析和可视化比较。第 2 章是对问题的定义。第 3 章是对各种边缘检测技术的研究和分析。第 4 章通过开发 MATLAB 70 程序对各种边缘检测技术进行可视化比较。 第 5 章讨论各种边缘检测技术的优缺点。 第 6 章对 MATLAB 70 程序实验中分析和可视化比较说得出的结论进行讨论。2 问题定义这里的问题有伪边缘检测的、真实的边缘漏检,导致线变窄或变粗和由噪声引起的问题等。 在本文我们对
6、最常用的基于梯度和 Laplacian 边缘检测技术的的检测精度、漏检、导致线变窄或变粗的问题和由噪声引起的问题等作出了分析和可视化比较,并用MATLAB 70 开发了这个软件。3 边缘检测技术3.1 Sobel 算子如图 1 所示, 这个算子包括一对 33 卷积核。 其中一个核是另一个核转动 904的情况。图 1 : sobel 算子的模板这些核为最大地反应垂直和水平相对应的像素网格而设计,每个核对应着二个垂直方向之一的边缘。 这种核可以独立地应用于输入图像,测量各自方向的梯度成分 (称这些为 Gx 和 Gy)。然后组合这些梯度来找到在每个点的绝对幅值和那个梯度的方向3。梯度幅值由下式的出:
7、通常,近似幅值可以这样计算:这种方法加快了计算的速度。影响空间梯度的是边缘(与像素网格相关)的方向角,可由下式得出:3.2 Robert 交叉算子Robert 交叉算子执行起来简单,计算速度快,是对图像的二维空间梯度测量。 在每个输出点的像素值代表了对输入图像在该点空间梯度估计的绝对幅值。 如图 2 所示,该算子包括一对 22 卷积核,其中一个是将另一个简单的旋转 90得到4。 这与Sobel 算子非常类似。5图 2 Robert 算子模板。这些核为最大地反应边缘 45相对应的像素网格而设计,每个核对应着二个垂直方向之一的边缘。这种核可以独立地应用于输入图像,测量各自方向的梯度成分 (称这些为
8、 Gx 和 Gy)。然后组合这些梯度来找到在每个点的绝对幅值和那个梯度的方向3。 梯度幅值由下式的出:通常,近似幅值可以这样计算:这种方法加快了计算的速度。影响空间梯度的是边缘(与像素网格相关)的方向角,可由下式得出:3.3 Prewitt 算子Prewitt 算子5类似于 Sobel 算子用于检测图像的垂直和水平的边缘。图 3 Prewitt 梯度边缘检测器模板63.4 Laplacian-高斯算子Laplacian 是图像空间二阶导数的二维同向性测量法。 Laplacian 突出图像灰度快速变化的地区,因此常常被用于边缘检测。 Laplacian 经常用于图像处理,首先得对图像进行一些近似
9、高斯平滑滤波的方法进行平滑处理,降低对噪声的敏感度。该算子通常采取输入一个单灰度级图像,而输出另一个灰度级图像。Laplacian L (x,y)可由图像像素灰度值 I(x,y)得到 :因为输入图像是离散像元,我们必须找到一个接近 Laplacian 定义的二阶导数的离散卷积核5。 三个常用的小核如图 4 所示。图 4 通常使用接近 Laplacian 的离散滤波器。由于这些核接近图像的二阶导数的测量,他们对噪声是非常敏感的。 为了抗噪,在应用 Laplacian 滤波器之前通常用高斯平滑图像。 图像预处理减少高频噪声成分,应在差分处理之前进行。实际上,因为卷积操作是关联的,我们可以首先把 L
10、aplacian 过滤器与高斯平滑滤波器进行卷积,然后用这种混合滤波器对图像进行卷积以达到需要的结果。这样做有两个好处:因为高斯和 Laplacian 核通常都小于图像,通常这个方法的算术运算量少。LoG6核可以是预先计算好的,在图像处理时只需运用一次卷积就可以实现了。二维 LoG 函数7以零为中心,以高斯标准偏差 的形式表示:7在图 5 显示了图 5 二维 Laplacian-高斯函数, x 和 y 轴以标准偏差()标记接近这个函数的离散核(高斯 =14)在图 6 显示。8图 6 近似 =14 LoG 函数的离散模板注意,当高斯核越来越小时,LoG 核就与简单的 Laplacian 核一样了
11、,如图 4。 这是因为使用一个很窄的高斯(05 像元)去光滑离散的网格是没有效果的。因此,对于离散像素网格,简单的 Laplacian 可以替代高斯狭窄的 LoG。3.5 Canny 边缘检测算法Canny 边缘检测算法是大家公认最优的边缘探测器。 在他开始工作时候 Canny 的目的是提高大多已存在的边缘探测器的效果。 他是非常成功地实现了他的目标,他的想法和方法可以在他的论文中找到, “用于边缘检测的计算方法” 11。 在他的论文中,他遵守了一系列标准来改进当前边缘检测方法。 排在第一位也是最明显的标准是低误差率。重要的是,不应该丢失图像的边缘,也不会对非边缘响应。 第二个标准是边缘定位准
12、确。 换句话说,如实际边缘探测器找到的边缘像素点之间的距离最小。 第三个标准是对单边缘的只有一次响应。 采用这个标准是因为前两个标准从根本上不足够完全地消除对边缘的多次响应。 凭这些标准,Canny 边缘探测器首先对图像平滑以消除噪声。 后来发现图像梯度能突出高阶空间导数区域。 然后,该算法沿这些区域进行检测,同时抑制不是最大值的所有像素点。 通过滞后作用梯度列阵得到了进一步减少的。 滞后作用用于沿剩余的未被抑制的像素点进行跟踪。 滞后作用使用双阈值,如果幅度在第一阈值之下,则设为零(做一个非边缘) 。 如果幅度在高阈值之上,则它被做边缘。如果幅度在 2 阈值之间,除非有从这个像素点到其梯度在
13、 T2 之上的另一个像素点9之间是一条道路,否则它也设置为零。步骤 1:我们必须按照一系列的步骤来使用 Canny 边缘探测器算法。 第一步在定位和检测边缘之前应滤除原始图像的所有噪声。因为高斯过滤器可以用一个简单的模板来计算,这个模板专门在 Canny 中使用。只要设计好了适当的模板,就可以用标准卷积方法进行高斯平滑。 通常,卷积模板小于实际图像。 因此,模板在图像中滑动,每次操作方形像素块。高斯模板的宽度越大,探测器对噪声的敏感度越低。 当增加高斯模板宽度时,边缘检测定位的错误也稍有增加。步骤 2:对图像进行平滑和去噪后,下一个步骤是通过图像的梯度找到边缘的强度。Sobel 算子是在图像的
14、二维空间进行梯度测量。 然后,在每点可以找到近似绝对梯度的幅度(边缘强度)。 Sobel 算子3用一对 3x3 卷积模板,一个估算 x 方向( 列)的梯度,另一个估算 y 方向(行)的梯度。 它们如下所示:用如下公式来近似梯度幅度或者边缘强度:步骤 3:-用 x 和 y 方向的梯度来计算边缘的方向。 然而,当 sum(X)等于零时,就会产生错误,因此必须用代码限制任何时候出现这种情况。 每当在 x 方向的梯度等于零,边缘方向必须等于 90 度或 0 度,这取决于梯度在 y 方向的值, 如果 GY 有值为零,边缘方向为 0 度。 否则边缘方向为 90 度。计算边缘方向的公式为:Theta = i
15、nvtan (Gy/Gx)步骤 4:一旦知道边缘方向,下一步就是把该边缘方向与图像追踪方向联系起来。如果 5x5 图像的像素如下排列:10通过看像素点 “a”可以看到,当描述像素点的周围像素时,只有四个可能的方向,0 度 (在水平方向), 45 度( 沿正对角线), 90 度( 在垂直的方向 ),或者 135 度(沿负对角线)。根据本判断这四个方向中最接近的方向来确定边缘方向(即,如果发现方向角度 3度,则让它为零度)。 由此用一个半圆,把它划分它成 5 个地区。因此,属于黄色区域(0 到 225 和 1575 到 180 的范围 )的所有边缘方向被置为 0 度。在绿色区域(225 到 67
16、的范围 )的所有边缘方向被置为 45 度。在蓝色区域(675 到 1125 的范围)的所有边缘方向被置为 90 度。最后,属于红色区域 (1125 到 1575 程度)的所有边缘方向被置为 135 度。 步骤 5 :知道边缘方向后,现在进行非最大值抑制。 非最大值抑制用于沿在边缘方向进行追踪和压制不是边缘的所有像素点(设为 0)。 这将输出图像一条稀薄的线。步骤 6 :最后,滞后作用12作为抑制斑纹的方法。斑纹是由算子的输出在阈值上下波动产生的,它破坏了边缘的轮廓。如果一个单阈值,T1 应用于图像,并且边缘的平均强度等于 T1。这里有个例子,由于噪声影响,将会导致边缘在阈值之下,同样地,也有在
17、阈值之上的边缘,这样延伸出来的边缘看起来就像破折线。要避免于此,滞后作用使用一高一低的双阈值。比 T1 大的所有像素点假定为边缘,并立刻作出标记。然后,11任何大于 T2 的且连接这个边缘的像素点也被选择当边缘像素点。如果您认为沿着边缘,需要从 T2 梯度开始,但您在找到一个在 T1 下的梯度之前不要停止。4 各种边缘检测算法可视化比较图 7 用于边缘检测分析的图像在图 7 中展示了四个种边缘检测方法的效果。Canny 效果最佳,正如 Canny 的边缘检测解释的图像的区域所期望的那样。通过非最大的抑制,Canny 产生了细薄边缘线。 Canny 也利用了阈值化的滞后作用。12图 8 图 7
18、经过 Canny 边缘检测得到最佳结果图 9 :边缘检测技术的比较 (a)原始图像(b) Sobel (c) Prewitt (d)罗伯特(e) Laplacian (f)LoG13图 10 :用莉娜图像进行边缘检测技术的比较 (b)Canny (c)Robert (d)LoG (e) Sobel图 11 :对含噪图像的边缘检测技术比较(a)噪声原图(b) Sobel (c)Robert (d) Canny5 边缘探测器的优缺点边缘检测是计算机视觉的基础步骤,需要匹配过程中指出真的边界以获得最佳结果。这就是为什么选择合适的边缘检测器的重要性了。在这方面,我们在表 1 列出了各边缘14检测算法的
19、优缺点算子 优点 缺点经典算子(Sobel,Prewitt ,Kirsch 等) 简单、边缘和其他方向的检测 对噪声敏感,精度不高零交叉发(拉普拉斯,二方向导数)对边缘和其他方向的检测、在各个方向有固定的特征对已存在的边缘响应、对噪声敏感LoG,Marr-Hildreth 寻找出正确边缘的位置、测试像元周围更大的区域在拐角、弯曲和灰度级变化处,其效果不佳,会因为使用拉普拉斯滤波器而找不到边缘方向高斯(Canny,Shen-Castan)用概率统计误差率,定位和响应,提高信噪比,特别是对有噪声的检测效果更好复杂的计算、伪零值交叉,费时间表 1: 边缘探测器优缺点6 结论边缘检测是对象检测的第一步
20、,了解边缘检测技术之间的区别是非常重要的。在本文我们研究了最常用的边缘检测技术基于梯度和基于 Laplacian 的边缘检测技术。 并用MATLAB 70 开发软件。基于梯度的算法,例如 Prewitt 滤波器,有个主要缺点是对噪声非常敏感。滤波器的核和参数是固定的,对给定的图像不能适应。一种具有适应性的边缘检测算法必提供鲁棒性的解决方案,它能适应噪声变化的各种图像,帮助从人工加入了噪声的图像中区分出有效图像内容。Canny 的算法的效果极大地取决于可调参数 ,它是高斯滤波器的标准偏差,和两个阈值 T1和T2 。 也控制高斯滤波器的大小。 越大,高斯滤波器越大, 这意味着加大对有噪声图像必要的模糊,并且检测出更大的边缘。 然而,正如所料想的一样,高斯尺度越大,边缘定位的精度越低。 小意味着限制模糊量,维持图像更好边15缘。用户能通过调整这些参数适以适应不同的情况。与 Sobel、Prewitt 和 Robert 算子相比,Canny 边缘检测算法在计算上是更加费时。然而, 在几乎所有情景下 Canny 边缘检测算法都比这些算子的效果好。根据图像评估表明,在含有噪声时,Canny,LoG , Sobel, Prewitt, Roberts 分别表现良好。致 谢作者非常感激 Punjabi 大学工程学院的计算机工程提供了优秀实验室设施使得这项工作得以完成。