关闭

我对SIFT的一点点了解

标签: siftopencv
865人阅读 评论(0) 收藏 举报
分类:

说来惭愧,每次不管看什么算法,都不能彻底搞明白。这两天心血来潮看起了SIFT,主要通过看各位的博文来学习,大致有了自己的一点点了解,因为还有其他事情也没有时间一直看下去了,就暂且总结一下自己的浅薄了解吧。

1.什么是SIFT算法:

SIFT检测算是目前应用最广泛的兴趣点特征检测方法,该检测算法所得到的特征点不仅在位置上能够稳定识别,而且具有尺度不变性和旋转不变性。

SIFT算法由D.G.Lowe 1999年提出,2004年完善总结。后来Y.Ke将其描述子部分用PCA代替直方图的方式,对其进行改进。
   •SIFT算法是一种提取局部特征的算法,在尺度空间寻找极值点,提取位置,尺度,旋转不变量
  •SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性。
  •独特性好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配。
  •多量性,即使少数的几个物体也可以产生大量SIFT特征向量。
  •可扩展性,可以很方便的与其他形式的特征向量进行联合。

2.SIFT算法的主要步骤是:

1)、构建差分高斯金字塔

用Laplacian of Gaussian能够很好地找到找到图像中的兴趣点,其产生的极大值和极小值点是一种非常稳定的特征点(与梯度特征、Hessian特征和Harris角点相比)但是需要大量的计算量,所以这里使用Difference of Gaussian图像的极大极小值近似寻找特征点.DOG算子计算简单,是尺度归一化的LoG算子的近似

 2)从差分高斯金字塔中寻找这些潜在特征点具体方法是比较当前特征点的灰度值和其他26个点的灰度值的大小,这26个点包括:当前尺度下该点的8邻域以及前一尺度和后一尺度下与该点最近的9个点(9*2+8=26)  

3)精确确定特征点的位置,去除对比度低的点和边缘点。
4)确定特征点方向:局部梯度直方图 

5)生成图像局部描述符:一般128维。


3.SIFT的发展

SIFT(Scale-invariant feature transform), Lowe, 2004

PCA-SIFT(Principle Component Analysis), Y.ke, 2004

SURF(Speeded Up Robust Features), Bay, 2006

 这三位先后登场各有千秋,算是图像特征点检测领域的宋氏三姐妹了!SIFT鼻祖先宗大佬,PCA-SIFT将SIFT中直方图方法换作主元分析法,SURF取出integral/Hessian两样法宝实现加速,也更易于并行。

4.参考博文

个人认为要想深刻理解SIFT,只需参考以下几篇博文即可。

http://blog.csdn.net/honpey/article/details/8639617#comments  SIFT解析(一)建立高斯金字塔

http://blog.csdn.net/honpey/article/details/8639634       SIFT解析(二)特征点位置确定

http://blog.csdn.net/honpey/article/details/8639643   SIFT解析(三)生成特征描述子

认真阅读上面三篇博文,必受益匪浅

http://blog.csdn.net/abcjennifer/article/details/7639681   SIFT特征提取分析

与上面的三篇博文,并驾齐驱。

http://blog.csdn.net/ijuliet/article/details/4640624    

谈谈SIFT、PCA-SIFT、SURF及我的一点思考


对SIFT的发展可以有一些了解

5.实现源代码

另外,我在CSDN的资源中上传了编译通过sift代码。

其中一个是C++版本,利用opencv接口实现

另外一个版本是利用opencv的源代码,自己写了一个接口,欢迎大家下载学习交流。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:53656次
    • 积分:773
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:26篇
    • 译文:0篇
    • 评论:1条
    最新评论