角点检测的研究现状
在基于特征点的图像匹配中,特征点的提取是最重要却又是最困难的一步。实际应用中,有时是由人工来选择特征点的。人工的方法需要由有经验的专家来进行,当要选择的特征点较多时,费时费力且易于出现差错。所以,近 20 年来,研究自动提取图像中的特征点一直受到研究者们的关注。前文也已经提到,目前在所有的特征点检测方法的研究中,角点因具有信息量丰富、便于测量和表示、旋转不变和不随光照条件改变而变化而成为许多特征匹配算法的首选[5]。
在一些应用中使用角点进行处理,可以减少参与计算的数据量,同时又不损失图像的重要灰度信息,而且角点在图像匹配中也有很重要的意义,利用角点特征进行匹配可以大大提高匹配的速度。角点作为输入可应用于3D建模、3D 对象跟踪等领域,尤其在实时处理中有很高的应用价值。在实现摄影测量自动化和遥感影像匹配中,提取角点特征具有重要意义。
1.4 本论文研究内容和章节安排
本文详细介绍了各种二维图像角点检测方法,并主要针对三种经典的角点检测方法,对其进行了归纳和分类。同时基于C#实现了这三种算法的相应程序的编写,并基于这个系统将这三种经典的角点检测算法进行了对比,分析各种算法的效果。
论文章节安排如一下:
第一章在绪论中介绍了计算机视觉和角点检测的研究现状。
第二章分析总结了二维图像特征点提取技术。
第三章给出了三种经典的角点检测算法的原理。
第四章学习了实现算法的开发环境以及语言基础。给出了算法的流程以及系统的框架,并且基于该语言环境实现了三种算法的实验系统。
第五章对三种检测算法进行各方面的实验以及对实验结果的进行了比较分析。
最后,作为本文的结束语,对全文的工作进行了总结。
二维图像特征点提取技术
2.1 特征点的定义分类及角点的引出
2.1.1 特征点的定义及分类
特征点是用来表征邻域局部特性的位置度量,它用来作为具有一定特征的局部区域位置的标识。在一些文献中特征点也被称为兴趣点(Interesting Point)或者是显著点(Significant Point)。我们将其理解为在图像中易于标识的点,如角点、直线交叉点、T型交汇点、高曲率点及特定区域的中心、重心等[10]。
特征点分为狭义特征点和广义特征点两种类型。狭义特征点是针对点本身来定义的,狭义特征点的位置本身具有常规的属性意义,如边缘点、角点、交叉点、分支点等。而广义特征点是基于区域定义的,它本身的位置不必具备特征意义,它只表示满足一定特征条件的某个特征区域的一个相对位置[18]。因此,从本质上说广义特征点其实就是一个特征区域,它的属性就是特征区域的属性。称其为点,是将其抽象为一个位置的概念,目前在模式识别及计算机视觉中定义的特征点,基本上都是狭义特征点。本论文所涉及的特征点为狭义上的角点。在以后的叙述中就直接使用角点这个词来描述特征点。
2.1.2 角点的引出
角点是特征点的一种,是指沿图像边缘曲线上的具有曲率局部极大值的点,或在一定条件下可以放宽为曲率大于一定阈值的点。可以认为,角点指示了图像上在二维空间内灰度变化剧烈的位置,和周围的邻点有着明显差异。直观地讲,角点是指在至少两个方向上图像灰度变化均较大的点。在实际图像中,轮廓的拐角、线段的末端等都是角点。
2.2 二维图像角点检测
2.2.1 二维图像角点检测准则
好的特征点提取算法提取出来的特征点应当满足两个条件:
(1) 特征点的重复度高,即在不同条件下拍摄的两幅图像中抽取的特征点具有高的一致性与稳定性。
(2) 特征点所包含的信息量大,也就是说被抽取的点很突出,能够有效地反映物体形状的主要结构信息。
衡量角点检测算法性能的准则[6]主要有以下四个:
(1) 检测准确性:不计噪声,即使最细小的角点,角点检测算法也应该可以检测到。
(2) 定位性:检测到的角点应尽可能接近它们的真实位置。
(3) 稳定性:对相同场景拍多幅照片时,每一个角点的位置都不应该移动。
(4) 复杂性:检测算法的复杂性越小,运行速度就越快,自动化程度就越高。
为了有效地匹配两幅图像,特征点的提取算法还应该具有旋转平移不变性,并且在发生小的尺度变化和透视形变时,能够检测出相同位置特征点。
2.2.2 二维图像角点检测技术
二维图像角点检测在计算机视觉和图像理解领域起着很重要的作用。
目前二维角点的检测主要分为两大类:一类是基于图像边缘的角点提取算法,第二类是直接基于图像灰度的角点检测[11]。
早期的角点检测方法即是基于图像边缘的角点提取算法,角点是一种边缘上的点,它是一种特殊的边界点,即两条以上边界的交点。其方法是,首先对图像进行区域分割,通过链码提取边界,然后在边界上寻找方向变化较快的点。这种方法在很大程度上依赖于图像分割的效果,如果提取的边缘发生错误,或是边缘线发生中断,则对角点的提取结果将造成较大影响,而边缘提取本身就是一项比较复杂的工作,同时这类算法的计算复杂度很高。后来出现了一种基于尺度空间描述的角点检测算法。这种算法首先使用canny检测器从原始图像中检测边缘,先使用高尺度得到候选角点,然后逐步减少尺度,在多个低尺度处跟踪改善角点位置的方法提高角点检测的精度。在这个算法的基础上,又出现了一种基于多尺度滤波的角点检测方法,目的是为了降低角点检测过程中对噪声的敏感性,其思想是使用大小不同的高斯窗对边界进行卷积运算,然后计算各边界点曲率值,并查询极值点,从而确定角点的位置。
近年来提出的角点检测方法大多是基于灰度图像的角点检测。基于灰度图像的角点检测,分为基于梯度的方法、基于二值图像、基于轮廓曲线的角点检测[11]。
基于灰度图像的角点检测定义角点是局部内灰度和梯度变换剧烈的极大点,所以这类算法所应用的手段主要是通过计算曲率及梯度来达到检测角点的目的。由于它不需要进行边缘提取工作,所以在实际中得到了广泛的应用。主要分为两类:基于模板的角点检测算法和基于几何特征的角点检测算法。
基于模板的角点检测算法主要考虑像素邻域点的灰度变化,即图像亮度的变化,将与邻点亮度对比足够大的点定义为角点。一般首先建立一系列具有不同角度的角点模板,然后在一定的窗口内比较待测图像与标准模板之间的相似程度,以此来检测图像中的角点。出于角点结构的复杂性,不可能设计覆盖所有方向和角点的模板,这一类角点检测方法计算量大且比较复杂。
基于几何特征的角点检测方法主要是通过计算像素的微分几何特征来进行角点检测。其中较为典型的有Kitchen和Rosenefeld提出的基于局部梯度幅值和边界上梯度方向改变率的角点检测算法。这种方法是通过计算边缘的曲率来判断角点的存在性,角点计算数值的大小不仅与边缘强度有关,而且与边缘方向的变化率有关,使用了图像亮度二阶导数,对噪声比基于模板的角点检测方法对噪声更为敏感。Wang和Brady提出了一种基于表面曲率的角点检测算法。为了改善角点检测的稳定性,首先将图像与高斯滤波器卷积,然后计算整个图像的表面曲率,当曲率高于一定阈值,并为局部最大值的点被认为是候选角点。Wang的算法性能满足实时算法的需求,可用于运动估计的实时角点检测。
另外一类基于几何特征的检测方法为自相关角点检测算法。自相关角点检测算法是基于几何特征的检测方法的其中一种算法。这类算子不同于一般角点的直观定义,它们认为与邻域有较大的亮度差,或其局部自相关亮度值较大的像素点为角点。经典的算法包括Harris、SUSAN、MIC等算子。这也是本次设计的核心内容,将在以下的章节中具体描述。