SIFT特征

  01 Jan 2015


概述

SIFT (Scale-invariant feature transform,尺度不变特征转换) 算法的特点:SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;每个关键点有三个信息:位置,所处尺度、方向.

优点:

  1. 独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;

  2. 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;

  3. 高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;

  4. 可扩展性,可以很方便的与其他形式的特征向量进行联合。


算法流程:

  1. 构建高斯差分尺度空间: 。然后一层一层地构建图像金字塔(注:2kσ中的2是必须的,尺度空间是连续的,高斯平滑导致图像丢失高频信息,所以 Lowe 建议在建立尺度空间前首先对原始图像长宽扩展一倍,以保留原始图像信息,增加特征点数量。尺度越大图像越模糊。(换句话说:在不同模糊情况下,仍然坚挺的点,则认为是特征点。。“三层中26领域的极值为特征点”)

  2. 检测DOG尺度空间极值点(具体做法看上面DOG):一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点;在极值比较的过程中,每一组图像的首末两层是无法进行极值比较的,为了满足尺度变化的连续性,我们在每一组图像的顶层继续用高斯模糊生成了 3 幅图像,高斯金字塔有每组S+3层图像。DOG金字塔每组有S+2层图像.。

  3. 除去不好的特征点,这一步本质上要去掉DoG局部曲率非常不对称的像素。 通过拟和三维二次函数以精确确定关键点的位置和尺度(达到亚像素精度),同时去除低对比度的关键点和不稳定的边缘响应点(因为DoG算子会产生较强的边缘响应),以增强匹配稳定性、提高抗噪声能力,在这里使用近似Harris Corner检测器。。。(未真正理解)。。。

  4. 特征点描述子的生成。在所在的尺度空间取以特征点为中心的1616像素大小的邻域,并且邻域划分为44个子区域(则每个子区域有44个像素)。然后在每个44像素的小块上计算8个方向的梯度方向直方图,绘制每个像素梯度方向的累加值,即可形成一个描述子,用高斯窗口对其进行加权(越靠近关键点的像素梯度方向信息贡献越大),将44个描述子(子区域)根据位置依次排序,形成一个44*8 =128维的特征向量。

    为了对光线变化更具鲁棒性,描述子都被归一化到单位长度。如果图像的对比度发生变化,每个像素值都会加上一个数值,归一化后,对比度的影响被消除了。对于图像亮度的变化每个像素值都会加上一个数值,然而这对计算的梯度是没有影响的。因此,该描述子对亮度的仿射变换是鲁棒的。

    为了使算子具备旋转不变性,实现旋转不变的基本思想是采用“相对”的概念,为关键点赋一个方向,定义的关键点描述子是相对于这个方向的。具体做法是:要以特征点为中心,在附近邻域内整个像素块旋转θ角,其中θ角为主方向角度,即使主方向旋转到0度。

    其中梯度方向直方图的绘制方法:使用公式,分别得到每个像素的梯度幅值和方向,而梯度直方图的范围是0~360度,其中每45度一个柱,总共8个柱。

  5. 特征点匹配。1)利用最近邻和次最近邻的比例(即最近的要很小,且比次近的还小得多),当小于某个比例阈值时,我们才接受这一对匹配,可使用欧式距离; 2)利用最近邻法,定义为特征向量的欧氏距离。

一般使用一种叫kd树的数据结构来完成搜索,搜索内容是以目标图像的关键点为基准,搜索与目标图像的特征点最近邻的原图特征点和次近邻的原图特征点。可使用RANSAC进行特征点的匹配和消除错配。

对SIFT算法的改进算法有:PCA-SIFT; CSIFT; SURF; ASIFT 。。。