SIFT算法原理与实现

来源:互联网 发布:淘宝金牌卖家怎么开通 编辑:程序博客网 时间:2024/05/29 11:18

摘要:本文将就SIFT(Scale Invariant Feature Transform,尺度不变特征转换算法)的基本原理和实现进行阐述。

注:本文将在作者的逐步学习中完善,欢迎批评指正。

 

概述:SIFT算法由University of British Columbia(英属哥伦比亚大学)的David G. Lowe(http://www.cs.ubc.ca/~lowe/)于1999年提出[1],并于2004年完善[2]。该算法是一种计算机视觉算法,它从图像中提取特有的不变特性,利用这些特性,可以对一个物体的不同视图进行匹配。提取的特性对于图像尺度变化,旋转等具有不变性。

        该算法在物体识别,手势识别,机器人地图感知与导航,3D建模,影像缝合与追踪,动作对比等反面有着广泛应用。

注:该算法拥有专利,可用于科学研究,当如果用于商业用途,必须取得相应授权。

 

算法步骤:该算法主要分4步进行:

1. 尺度空间极值检测(Scale-space extrema detection):该步骤首先利用高斯模糊构建高斯金字塔,然后利用高斯差分(Difference of Gaussian,DoG)构建高斯差分金字塔。然后在DoG空间通过对相邻层图像进行比较获得空间极值点。

2.关键点定位(Keypoint localization):对DoG空间函数进行曲线拟合,对极值点进行修正并去除不稳定的极值点。除此之外,还要消除边缘响应带来的影响。在尺度空间通过上述步骤获得的关键点具有尺度不变性。

3.关键点方向分配(Orientation assignment):通过关键点所在的局部局域的梯度方向来定义关键点的方向,这样定义的关键点具有旋转不变性。

4. 生成关键点描述子(Keypoint descriptor):用一组向量将各个关键点描述出来,这个描述子不但包括关键点,也包括关键点周围对其有贡献的像素点。以此作为目标匹配的依据。

        下面将对各个步骤进行更详细的阐述。

极值检测:

 1)图像的尺度空间表示:图像的尺度空间定义为可变尺度高斯函数(variable-scale Gaussian)与输入图像的卷积,记为;

参考文献:

[1] David G. Lowe, "Object recognition from local scale-invariant features," International Conference on Computer Vision,Corfu, Greece (September 1999), pp. 1150-1157.

[2] David G. Lowe, "Distinctive image features from scale-invariant keypoints," International Journal of Computer Vision,60, 2 (2004), pp. 91-110.

 

原创粉丝点击