1 SIFT算法基本原理
SITF算法,即尺度不变特征变换(Scale-invariant feature transform)算法,是由David G.Lowe于1999年提出,并在2004年加以完善。论文下载地址:https://www.cs.ubc.ca/~lowe/keypoints/www.cs.ubc.ca
Lowe将尺度的概念引入到SIFT算法中,利用SIFT方法检测图像特征点的实质就是在不同尺度空间上查找特征点,这些特征点对应的就是不同尺寸的地物。SIFT配准方法主要分为以下几个步骤:DOG尺度空间的建立
尺度空间中提取关键点
生成特征描述子
特征点匹配
之后便可以进行后续的配准流程,如转换模型求解、重采样等。
1.1 DOG尺度空间的构建
图像在计算机中是以二维矩阵的方式存储的,分析图像就需要提取出图像的特征,这些特征应该是具有局部不变性的显著特征,如尺度不变和旋转不变。举个例子,当人们看一个物体时,它在距离人们10米的地方和距离人们100米的地方看到的大小是不一样,这样在视网膜上成像的图像尺度其实就发生了变化。尺度不变性就是不论是在10米还是100米处成像,都能够对图像进行清晰的辨认。图像尺度空间指的就是所有尺度的图像。SIFT算法中首先进行尺度空间的构建,提取不同尺度下的关键点,这样就可以具有尺度不变性。SIFT算法中定义图像自身和尺度空间分别为
和
,则尺度空间计算公式如下:
其中
指的是在
方向和
方向上进行卷积操作,
表示尺度空间坐标。高斯核是唯一产生多尺度空间的核。使用高斯模糊对图像进行高斯平滑且降低图像细节,对图像进行2*2降采样处理,即图像长宽都降低为原来的一半,如此实现图像尺度的降低。
为了检测稳定特征点的位置,SIFT算法用DOG尺度空间来代替尺度空间函数
。通过对两幅相邻高斯尺度空间图像相减,得到DOG尺度空间。用
函数来表示DOG空间,则该尺度空间的计算公式如下:
通过上式也可以看出 DOG 尺度空间中的图像可以反映图像像素的变化,有变化的地方才有特征的存在,因此利用DOG尺度空间来定位特征点。
DOG 金字塔构建如图1所示。图1 DOG金字塔构建图
1.2 DOG尺度空间中提取特征点
尺度空间中的所有检测点都与其同尺度相邻的8个点和上下尺度各相邻的9个点进行比较,只保留局部极值点。之后去除其中不好的关键点,通过子像元插值和剔除对比度低的点以及不稳定的边缘响应点来对精化检测到的关键点。图2是极值点检测图。图2 极值点检测
对特征点进行子像元插值,是因为特征点的寻找是在离散空间中进行,找的特征点也是离散的,但是对于连续空间来说,离散的极值点不一定就是函数的最终极值点,所以需要用插值来找到真正的极值点。
寻找到的极值点并不是图像特征点的另一种情况是,极值点过小。图3就是有效极值点和无效极值点的示意图。如果极值点与周围像素点差距过小的话,则该极值点是无效极值点。在图像某区域中,有这样一组数据,像素点的灰度值大小依次为23、25、24,则根据上述内容,会把25当做极值点,但是从视觉上,只单纯看图像来说,这组数据代表的图像区域应该是平滑的,并且25这个点与周围点的差别不是很大,很容易受到噪声的影响,所以对这类点的剔除方法是设定阈值,若检测到的