关键词 SUSAN 算法;角点提取;自适应阈值;图像连通性
角点是图像上曲率足够高、并且位于图像中不同亮度区域交界处的点。由于角点包含了很多的图像中的信息,因此,角点在图像匹配、运动物体的跟踪以及目标识别等方面有着广泛的应用。如何快速准确的提取出图像中的角点成为了一个关键的问题。
SUSAN算法是由英国牛津大学的Brady首先提出的,它是一种直接利用图像灰度有效地进行边缘、角点检测的低层次图像处理算法。它具有方法简单,抗噪能力强和处理速度快等特点。本文首先介绍SUSAN角点提取的原理,然后分析了该算法的缺点,提出SUSAN模板中自适应阈值的选取的方法,并利用角点像素与其所在的角之间具有连通性的特点,给出了一种角点精确定位的改进方法。
2 SUSAN算法的基本原理[1]
图1显示了一个在白色背景下的黑色的长方形,图中a,b,c,d,e五个位置分别是五个圆形的模板在图像中不同的位置,窗口的中心被称之为“核”。窗口中所有具有与核相同或相似灰度的像素,把这些像素构成的区域称为USAN ( Univalue Segment Assimilating Nucleus)。由图1可以看出,当核像素处在图像中的灰度一致区域时,USAN的面积会达到最大(超过一半),当核处在直边缘处约为最大值的一半,当核处在角点处更小,约为最大值的四分之一。因此,利用USAN面积的上述变化性质可检测边缘或角点。

图1 SUSAN模板在图像中的几种位置
本文所使用的是一个包含37个像素的圆形模板,半径为3.4个像素,如图2。为了提取出边缘,需要将模板内每个像素的灰度与模板中心的灰度进行比较,式(1)为相似比较函数:
(1) 式中:(x,y) 和(x0,y0) 分别是模板中心点和模板中其它点的坐标,c(x0,y0;x,y) 为比较的结果,f(x,y) 为该点的亮度值,t为灰度差阈值,一般取25。USUAN区域的大小可以由式(2)给出:
然后,由式(3)可以得到图像的初始角点响应,取响应的局部最大值作为角点。式中g为几何阈值。在用SUSAN算法进行边缘提取的时候通常取
,在进行角点提取的时候,通常取
。一般而言,对于g不需要通过调整就能取得较好的效果。
,在进行角点提取的时候,通常取
。一般而言,对于g不需要通过调整就能取得较好的效果。
(2)
(3) 由式(3)得到的角点初始响应符合 SUSAN 原理,即 USAN 区域越小,初始角点响应越大,这样便对图像中的角点信息进行了增强。

图2 包括37个像素的SUSAN圆形模板
3 改进的 SUSAN 角点提取算法
对SUSAN算法进行改进的实现,主要考虑到两方面:对于不同对比度和噪声情况的图像,SUSAN算法中阈值t的选取不同,因此门限的取值不应该依赖于人为的干涉,而应根据不同条件自动给出最优值,即自适应选取阈值t ;针对在角点检测时定位不够精确,容易出现角点偏移和错误判断的情况,采用图像连通性的概念解决问题。
3.1 自适应阈值t的选取
在SUSAN算法中,对于对比度较好的图像,阈值t的选取要很大;对于对比度较小或要得到图像更多细节信息的情况,阈值t的选取就要较小才能满足要求。本文通过对像素灰度值进行分析,提出不同图像对比度下t的自适应取值方法。
对于每个像素的SUSAN模板,通过计算模板内每个像素与中心像素的灰度差得到该模板的灰度差直方图,然后根据灰度差直方图通过迭代法确定该模板的阈值t,使得根据不同条件自动给出最优值t [2]。
第一步是确定初始值To。计算模板中每点与中心点的灰度差阈值,然后取灰度差值的均值为迭代初始值To,如式(4):
(4) 第二步是计算出迭代值 。根据迭代初值将灰度差直方图分为两部分,由式(5)计算下一个迭代值 :
(5) 式(5)中m为模板中像素点和中心像素点的灰度差值,h(m)为模板中具有该灰度差值的点的数量,Cmax 为灰度差值的最大值。每次迭代后进行判断,若一 Ti+1-Ti=0,那么停止迭代,取Ti+1作为最后的SUSAN模板的灰度差阈值。




