林王兵++许燕++韩飞++吕超贤++龚佳俊
摘要:由于边缘在图像处理中的特殊地位,如何优化边缘检测算法,尤其是如何处理三维图像的边缘提取问题是中外科学家研究的热点。本文研究了传统的边缘检测算法,包括Roberts、Sobel、Caddy等算子,比较了它们所提取边缘的差异,并且对算法的提取效果进行检验。本文的研究可以被广泛应用到各种类型的图像处理的方式中。
关键词:边缘检测;图像处理;系统整合
中图分类号:TP391.41
文献标识码:A
DOI:10.3969/j.issn.1003-6970.2015.09.007
0 引言
图像是人们肉眼所能接收到的最直接的信息,它包含了事物最原始的信息。这些信息都是由边缘提供。所谓边缘,指的是图像局部特征的不连续性。在图像中,灰度值或者结构等信息的突变点称之为边缘。边缘是图像中一块区域的结束,也是另一区域的开始,是分割完整图像的重要依据。边缘在某些研究中是非常关键的,比如在工业生产中检测零件内部的瑕疵、医学CT与核磁共振的成像、微生物细胞轮廓的提取、军事中定位目标、涉及到指纹的信息安全与案件侦查等问题中的应用。
在传统的边缘检测方法中,是利用边缘的灰度特点,通过在各像素点上求微分或者二阶微分的方法来定位边缘像素点。也是根据灰度特有的特点,灰度图像可分为黑白交替的阶梯状、黑白黑的屋顶状、黑白灰渐变的脉冲状三种类型,如图1所示。对于阶梯状灰度图像来讲,可从图中看出图像的边缘点对应的是一阶微分曲线的峰值和二阶微分曲线的零点处;对于脉冲状和屋顶状的灰度图像来讲,从图中可以看出边缘点对应的是一阶导数曲线的零点处和二阶导数曲线的峰值处。
三种不同类型的灰度图像:
根据数字图像的特点,处理图像时通常采用差分来代替导数进行运算。使用图像一阶导数进行运算的情况并不常用,因为它具有固定不变的方向性,所以只能检测特定方向的边缘。为了消除一阶导数的缺点,我们可以将图像的梯度定义为梯度算子。梯度算子是图像处理中最为常用的一阶微分算法,并且可以很好的反馈出边缘灰度值得变化,同时不得不提是梯度的方向是存在于图像灰度的最大变化率上,这是它最重要的性质。
在实际的图像分割中,因为三阶导数受噪声的影响很大,所以只会用到一阶和二阶导数。二阶导数同时可以展示出灰度突变的类型。当图像是灰度均匀或者其他特别有些情况下,需要用二阶导数得到所需要的信息,因为一阶会有误差,造成无边界的后果。二阶导数对噪声也是比较敏感敏感的。解决这个问题的方法是利用对图像进行平滑滤波处理的方法清除掉部分噪声,然后再对图像进行边缘检测。因为使用二阶导数来进行信息统计的算法是建立在过零检测的基础之上的从而得到很少的点数,所以它的特性有利于进行接下来的工作或者实验的处理。
在图像边缘检测方法中,传统的算法算是偏成熟的,它的主要手段是通过微分运算来完成,并且是被归结成图像高频分量的不断增强的过程。在我们常见的边缘检测算法中,有Roberts算子、Sobel算子、Prewitt算子和Canny算子等。本文研究了传统的边缘检测算法,包括Roberts、Sobel、Caddy等算子,比较了它们所提取边缘的差异,并且对算法的提取效果进行检验。
5 Canny算子
Canny边缘检测算法的过程是先利用高斯平滑的技术来处理图像,然后计算一阶导数。一阶导数的极大值即为边缘。因为一阶导数的极值对应的是二阶导数的零点,所以强边缘和弱边缘都是二阶导数的零点。图像强边缘和弱边缘分别用两个阙值来检测,当强边
反正切函数含有两个参量,计算结果是一个角度,取值范围为圆周范围。
然后进行极大值抑制操作。对图像M(x,y)上的每一个像素点,都要找到梯度方向上与它相邻的两个像素点,并且分别计算两点的梯度幅值。如果该像素的梯度幅值大于或等于计算所得的两个值,那么当前像素可能就是边缘点。将图像的边缘压缩至一个像素宽度,经过非极大值抑制操作,由梯度幅值图像M(x,y)得到图像NMS(x,y)。
最后进行的是双门限检测和边缘连接处理,Canny边缘检测算子需要设定双门限:高门限TH和低门限TI,对图像NMS(x,y)上的每一个像素点,分别与高门限值和低门限值作比较,得到边缘图像的强边缘点和弱边缘点。追踪强边缘点中的边缘,当边缘到端点时,就在图像弱边缘点相应位置进行8邻域搜索,检测出边缘点,并且和强边缘点中的间断连接。不断追踪边缘,将高门限值图像强边缘点中边缘的间断连接起来。
在所有基本的算子中,Canny算子是去噪能力最强的,并且它具有良好的平衡性,弱边缘也可以被真正的检测出来,不过它也不是完美的,它也容易平滑掉一些边缘信息。但是我觉得canny算子优点还是很突出的,是最实用的。
6 结论
本文介绍了各种算子的检测方法以及各自的特点。
Roberts算子:总的来说它有自己的优点也有自己的缺点,它更适合用在边缘比较明显比较突出的图像分割,因为它的边缘定位相比来说比较精准,但是不足的是,它并不适合用于噪声大的图像分割,因为其对对噪声是极其的敏感。Roberts算子检测的图像处理后边缘不会很平滑,并且它的边缘定位的效果一般,精度也不高,需要做细化处理。
Prewitt算子:它对边缘的定位远不如Roberts算子,因为像素平均,因此它对噪声有抑制作用,不过有点弱的是这等于是低通滤波,它实现的时候可通过高斯滤波器来去噪,总上所述Prewitt算子并没有Roberts算子好。
Sobel算子:它和Prewitt算子具有相似性,他们都是加权平均的,但是它比Prewitt算子考虑的周全,它觉得邻域的像素对当前像素所产生的影响并不是等价的,意思就是说权值受到了距离的影响,与此同时,对检测实验结果也产生或大或小的影响,距离越大,产生的影响越小。
Canny算子:最实用的,功能性最强,但是任何好的事物都是要付出或多或少的代价才能实现,就是说相对比来说它的实现是比其他的复杂,Canny算子是一种优化算子,特点有很多,最出众的是具有滤波,在处理前,它先进行的操作是去噪,具体实现方法是利用高斯平滑滤波器,最终Canny算子连接边缘的手段是采用两个阈值来连接的。