SIFT 尺度不变特征变换算法

看了一周的SIFT,感受到了该算法的强大,下面就将介绍下该算法的实现过程(主要参考lowe的论文)html


SIFTScale-invariant feature transform)是一种检测局部特征的算法,该算法经过求得一幅图中的特征点(interest points,or corner points)及其有关scale 和 orientation 的描述子获得特征并进行图像特征点匹配,首先由lowe于99年提出,于04年对其进行了完善。算法

主要应用物体辨识、机器人地图感知与导航、影像缝合、3D模型创建、手势辨识、影像追踪和动做比对。数据库

SIFT算法的特色有函数

1. SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持必定程度的稳定性;优化

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

3. 多量性,即便少数的几个物体也能够产生大量的SIFT特征向量;.net

4. 高速性,经优化的SIFT匹配算法甚至能够达到实时的要求;rest

5. 可扩展性,能够很方便的与其余形式的特征向量进行联合。code


算法创建主要有四个步骤orm

1. 尺度空间极值检测(Scale-space extrema detection):搜索全部尺度上的图像位置。经过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。

2. 关键点定位(Keypoint localization):在每一个候选的位置上,经过一个拟合精细的模型来肯定位置和尺度。关键点的选择依据于它们的稳定程度。

3. 方向肯定(Orientation assignment):基于图像局部的梯度方向,分配给每一个关键点位置一个或多个方向。全部后面的对图像数据的操做都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。

4. 关键点描述(Keypoint descriptor):在每一个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示容许比较大的局部形状的变形和光照变化。


一、尺度空间极值检测(Scale-space extrema detection

  关键词:尺度空间,高斯差分尺度空间,高斯金子塔,高斯差分金字塔(DOG)


尺度空间:由一原始图像通过不一样尺度的高斯模糊所得的一组图像空间

   定义:

   其中 G(x,y,σ) 是尺度可变高斯函数,I(x,y)是原始图像,σ大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的σ值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。

    

高斯差分尺度空间:极值点由高斯差分尺度空间肯定。

选择高斯差分尺度空间计算极值点的缘由有两点:

      一、容易计算,不一样尺度空间相减便可

      二、也是最根本的一点:差分尺度空间和高斯拉普拉斯函数近似相等

           推导以下:

                                                                                                                        (1)

                                                                                   (2)

               (1)和(2)可得

                

             高斯金字塔及高斯差分金字塔:创建以下图

            

     

      

        左边是高斯金字塔,右边是高斯金字塔每组的相邻两层相减所得的高斯差分金字塔;

极值点的检测:

       在高斯差分金字塔中,每一个像素与本层的相邻的8个及上下两层相邻的9个像素一共26个像素对比,若是是最小或最大则为极值点,见下图:

      

        

 高斯金字塔的塔数及每组包含的层数肯定:

        高斯金字塔的塔数能够由公式肯定:

        (M,N 为原始图像的长和宽,t为金字塔顶层图像的小的维数的对数值)

       层数的肯定: 假设最终所检测极值点的层数intvls 为s ,因为极值点是在三层中所检测的,那么GOD中的层数应该为s+2,又因为GOD是由高斯金字塔上下两层相减所得,因此高斯金字塔中的层数应该为s+3


2. 关键点定位(Keypoint localization)

  因为咱们实在离散空间中进行的关键点定位,因此关键点的位置颇有可能不精确,以下图:

  

   咱们对尺度空间DoG函数进行曲线拟合。利用DoG函数在尺度空间的Taylor展开式(拟合函数)Harris Corner检测器

                                                   (3)

   其中,。求导并让方程等于零,能够获得极值点的偏移量为:

                                                                   (4)

   带入方程得:

                                                               (5)

     其中,表明相对插值中心的偏移量,当它在任一维度上的偏移量大于0.5时(即xy),意味着插值中心已经偏移到它的邻近点上,因此必须改变当前关键点的位置。同时在新的位置上反复插值直到收敛;也有可能超出所设定的迭代次数或者超出图像边界的范围,此时这样的点应该删除,在Lowe中进行了5次迭代。另外,太小的点易受噪声的干扰而变得不稳定,因此将小于某个经验值(Lowe论文中使用0.03Rob Hess等人实现时使用0.04/S)的极值点删除。同时,在此过程当中获取特征点的精确位置(原位置加上拟合的偏移量)以及尺度()。 


去除对比度小的关键点及边缘点

  对比度小的点:经过DOG所得的极值点中存在对比度小的点,若   ,该特征点就保留下来,不然丢弃。

   边缘点:因为DoG算子会产生较强的边缘响应,因此极值点中存在边缘点:由于一个定义很差的高斯差分算子的极值在横跨边缘的地方有较大的主曲率,而在垂直边缘的方向有较小的主曲率。咱们能够经过hessian矩阵解决这个问题;

   

其中Dxx、Dxy等能够经过有限差分求导获得

D的主曲率和H的特征值成正比,令α为较大特征值,β为较小的特征值,咱们不直接求特征值,求Tr 和 行列式Det则

令α=γβ,则

 (r + 1)2/r的值在两个特征值相等的时候最小,随着r的增大而增大,所以,为了检测主曲率是否在某域值r下,只需检测

当比值为负值时直接丢弃,当 (α+β)/ αβ> (r+1)2/r, throw it out.   在Lowe的文章中,取r=10。


3. 方向肯定(Orientation assignment)

   关键点的位置肯定了,接下来咱们肯定关键点的尺度和方向,算出每一个关键点的幅度和方向

   经过尺度不变性求极值点,可使其具备缩放不变的性质,利用关键点邻域像素的梯度方向分布特性,咱们能够为每一个关键点指定方向参数方向,从而使描述子对图像旋转具备不变性,咱们经过求每一个极值点的梯度来为极值点赋予方向

  

方向直方图的生成
    肯定关键点的方向采用梯度直方图统计法,统计以关键点为原点,必定区域内的图像像素点对关键点方向生成所做的贡献。
   

   

Lowe实验结果代表描述子采用4×4×8=128维向量表征综合效果最优(不变性与独特性)。


关键点描述子生成步骤

    一、肯定计算描述子所需的图像区域,图像区域的半径经过下式计算:


   二、将坐标移相当键点主方向

    

  旋转后领域内采样点的新坐标为:

  

 三、在图像半径区域内对每一个像素点求其梯度幅值和方向,而后对每一个梯度幅值乘以高斯权重参数,生成方向直方图

  四、在窗口宽度为2X2的区域内计算8个方向的梯度方向直方图,绘制每一个梯度方向的累加值,便可造成一个种子点。而后再在下一个2X2的区域内进行直方图统计,造成下一个种子点,共生成16个种子点

  五、描述子向量元素门限化及门限化后的描述子向量规范化

  六、根据特征点的尺度对特征描述向量进行排序,SIFT特征向量生成




特征向量造成后,咱们能够利用特征向量进行各类应用了!

实验结果

一、特征点的提取:

二、特征点匹配


三、利用ransac算法后的图像匹配



RR   Refrence:

1  j 一、lowe文章David G.Lowe Distinctive Image Features from Scale-Invariant Keypoints. January 5, 2004.

        二、David G.Lowe Object Recognition from Local Scale-Invariant Features. 1999

        三、http://blog.csdn.net/zddmail/article/details/7521424

        四、http://blog.csdn.net/abcjennifer/article/details/7639681

     五、http://www.cnblogs.com/cfantaisie/archive/2011/06/14/2080917.html

            

            附录:上传一份rob hess 的源码,rob hess主页源码已经修改,这份是适用于win的,可是有部分地方须要修改

             http://download.csdn.net/detail/u011469591/5832149

          


1

相关文章
相关标签/搜索