我对SIFT的一点点了解

原创 2013年12月05日 22:37:52

说来惭愧,每次不管看什么算法,都不能彻底搞明白。这两天心血来潮看起了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的源代码,自己写了一个接口,欢迎大家下载学习交流。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

实战模板方法模式——了解多态一点点

最近完成了

操作mysql的一点点学习整理

  • 2012年11月24日 11:41
  • 1KB
  • 下载

我对搜索算法的一点点理解

大家在学习算法参加信息学竞赛的过程中会遇到一种很暴力的“搜索·”算法,说他很暴力是因为他真的很暴力(哈哈,开个玩笑),搜索在最坏情况下的时间复杂度相当于暴力。与此同时,搜索有时能够解决所有问题的一种方...

每天进步一点点——leveldb项目实践

leveldb是Google公司开源的高性能Key-Value数据库,在很多开源的项目中就有使用,例如:Chromium,淘宝的Tair,SSDB等。leveldb对于小数据在写入百万个之后读写性能依...
  • cywosp
  • cywosp
  • 2014年03月08日 00:48
  • 17885

DSP学习心得,从基础一点点的写

  • 2011年02月24日 13:34
  • 345KB
  • 下载

一点点星空留言本

  • 2004年08月22日 15:38
  • 157KB
  • 下载

每天进步一点点——swift对象副本修复之简单理解

一直以来都在使用openstack的swift来做分布式存储,至于为什么使用其来做存储在这里就不说明(网上搜搜其的优点就知道了), 随着项目的步步深入,越来越多的问题也随之而来。在项目进行的过程中对s...
  • cywosp
  • cywosp
  • 2013年10月18日 11:26
  • 11137
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我对SIFT的一点点了解
举报原因:
原因补充:

(最多只允许输入30个字)