引言
边缘检测是图像处理中的重要内容。图像边缘是图像局部特性不连续性(灰度突变、颜色突变、纹理结构突变等)的反映,它标志着一个区域的终结和另一个区域的开始。在实际图像处理问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去,同时它在图像识别、图像分割、图像增强以及图像压缩等领域中有较为广泛的应用。图像边缘检测的手段多种多样,大的框架有两种,一是传统的基于边缘检测算子的检测方法;另外一种是基于小波的多尺度边缘测算法。然而小波变换在用于处理图像时并不是最佳的,因为基于小波变换的图像边缘检测方法提取的边缘只具有有限的方向,而自然图像边缘的方向可能是任意的,因而小波边缘提取方法提取的边缘不能最佳地逼近图像边缘;传统的Robert、Sobel、Prewitt、Kirach和Laplacian算子对噪声较为敏感,在处理实际图像中效果并不理想。通过研究,本文提出了一种基于canny边缘检测算法,结合轮廓跟踪的方法,在物体边缘得到增强、对比度得到改善、噪声得到有效抑制的同时,很好地解决了使用传统的边缘检测算子在边缘检测过程中带来的检测边缘断裂的问题,从而能够保证检测到的边缘连续、单一、清晰,是一种实用的图像处理方法。最后把改进后的算法应用到实际医学图像边缘检测中,并与传统边缘检测算子的检测效果比较,从而得出结论。
1 Carmy算子的基本原理
1.1 平滑图像
Canny算子选用合适的一维高斯函数,分别按行和列对图像f(x,y)进行平滑去噪,这相当于对图像信号的卷积。所选的高斯函数为:
式中:σ为高斯曲线标准差,控制着平滑程度。
1.2 计算梯度的幅值和方向
Canny算子采用2×2邻域一阶偏导的有限差分来计算平滑后的数据阵列I(x,y)的梯度幅值和梯度方向。x和y方向偏导数的2个阵列Px[i,j]和Py[i,j]分别为:
像素的梯度幅值和梯度方向分别为:
1.3 获取边缘
为了提取单像素宽边缘,必须细化梯度幅值图。在梯度幅值图像中,M[i,j]的极大值所在位置附近会产生屋脊带,只有细化这些屋脊带才能精确地确定边缘的位置,仅保留幅值局部变化最大的点,这一过程叫做非极大值抑制。在非极大值抑制过程中,Canny算子使用3×3大小,包含8个方向的邻域对梯度幅值阵列M[i,j]的所有像素沿梯度方向进行梯度幅值的插值,在每一个点上,邻域的中心像素M[i,j]与沿梯度方向的2个梯度幅值的插值结果进行比较,如果邻域中心点的幅值M[i,j]不比梯度方向上的2个插值结果大,则将M[i,j]对应的边缘标志位赋值为0,这一过程把M[i.j]宽屋脊带细化为一个像素宽,并且保留了屋脊的梯度幅值。
对经过非极大值抑制和梯度直方图分类的子图像N[i,j]分别使用高、低2个阈值thrA和thrl,将梯度小于阈值的像素灰度置为0,分割得到2个阈值边缘图像TH[i,j]和TL[i,j]。由于图像TH[i,j]是由高阈值得到,因此伪边缘很少,但TL[i,j]保留边缘信息较为全面,但也含有一些伪边缘。因此以图像TH[i,j]为基础,图像TL[i,j]为补充获得相对较为全面的边缘。
1.4 轮廓跟踪或轮廓提取
在对图像进行canny边缘检测后,可能会出现某些检测边缘断裂、不连续的现象,为了解决这个问题,使获得的目标检测物体的边缘能够连续并且去除多余的伪边缘,在边缘检测后,再对图像进行边界跟踪,便可使这一问题得以很好地改善。
对于二值图像,轮廓提取的基本方法是掏空内部点,即如果原图像中有一点为黑,且其他相邻的8个点都为黑,则将该点删除。
本文借鉴二值图像轮廓跟踪方法,即将每一点与其相邻的8个点作比较。具体方法为:(1)先找到第一个边界像素。按从左到右、从下到上的顺序搜索,找到的第一个白点一定是最左下方的边界点,记为A0,它的右、右上、上、左上四个相邻点中至少有一个是边界点,记为B0,从B0开始找起,按右、右上、上、左上、左、左下、下、右下的顺序找8个相邻点中的边界点C0,如果C0就是A0点,则表明已经转了一
圈,结束;否则从C0点继续找,直到找到A0为止;(2)判断是否边界点:如果它的8个相邻点都不是白点,则它即为边界点。对于边界跟踪来说,跟踪后产生的轮廓边缘宽度只有一个像素,实现了边缘像素点单一、清晰,并很好地去除了伪边缘点。
2 实验结果对比
为验证本文算法,以医学图像为例,与传统边缘检测算子进行对比,实验表明,本文提出的方法具有很好的边缘检测效果,对比结果如图1~图5。
3 结果分析
本文采用将图像先进行Canny边缘检测,再进行轮廓跟踪的处理方法,一方面能够解决传统边缘检测算法所带来的边缘断裂问题,而且易于理解和实现,具有较好的检测效果。但另一方面,对图像分别进行两次处理,降低了图像处理的效率,在实时处理要求较高的应用环境,此算法还需进一步改进。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !