我对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的源代码,自己写了一个接口,欢迎大家下载学习交流。


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

如果你了解我的过去,你就会理解我的现在

一个人的现在,由他的过去决定,在这些需要资历的工种,现在的每一步.都是在为了未来做积累.时间长度,了无定格,以前过的怎么样,现在又怎么样.这两者肯定会有一定的联系.见面的第一眼,你看到的是我的很多面的...
  • hades_win
  • hades_win
  • 2017年01月11日 10:44
  • 916

我的友情测试主页---看我的朋友有多了解我:)

http://wayne92.testren.com看大家能答出多少?一次全答对的人可能只有我啦,哈哈注:大家不要发短信给那个网站,扣钱滴,不知道直接问我萨...
  • wayne92
  • wayne92
  • 2007年01月02日 19:02
  • 1004

我对计算机的认识

这篇文章并不是我在翻阅大量书籍和资料得出来的学习领悟,而是我根据自己的认知猜测出来的东西。 也是我以后慢慢看书寻找答案的开始。 大学学了计算机基础还有微机原理等课程,每当讲到一些系统啊一些...
  • iweiwei520
  • iweiwei520
  • 2015年10月17日 15:44
  • 206

谈谈我对大数据技术的一些理解。

谈谈我对大数据技术发展的个人理解。
  • lzh41764176
  • lzh41764176
  • 2018年01月01日 01:33
  • 90

我对管理和领导的理解

关于管理或者领导,一直来我觉得这两个词没什么不一样,以前一听到这个词我想到的就是,命令、权力、心思缜密、发号施令、一脸严肃、好斗争、内心极度压抑、官僚、受贿、上巴结下掠夺等等。因此,我从内心上极度不愿...
  • CatherineJChen
  • CatherineJChen
  • 2015年11月09日 15:46
  • 352

对c语言的一些看法

我知道有很多人想学编程,但是不知道从何学起,百度或者Google大家一般都是说c语言,但是,各执己见,又会有很多人 说C语言很难,不适合初学者,当初我就是这个样子,什么也不懂,贴吧里的人说C语言,特...
  • Eilode
  • Eilode
  • 2016年05月01日 17:12
  • 818

由身体垮掉所想到的……过去一年的总结 & 一点心声

不知不觉的,又不得不去校医院了,这次还是老毛病,这是一年来第三次去校医院看同一种病了,俗话说有再一再二没有再三再四,我看来已经超越这个极限了。 怎么会这样?我自己也在问我自己这个问题,我是不是太拼了?...
  • tassadar
  • tassadar
  • 2004年12月15日 17:46
  • 1478

面试官问“你还有什么需要了解的吗”——应该这样回答

最近被追问,如何化解面试官说出“你还有什么需要从我这里了解的吗”时你竟无言以对的尴尬。 比较不建议在这个时候向面试官提问琐碎日常,比如: 有没有加班费啊喂? ...
  • Lunaqi
  • Lunaqi
  • 2018年01月09日 09:33
  • 130

对String的深入理解

我们先来看一段代码:package com.ykp.test;public class StringTest { public static void main(String[] args) ...
  • ghgzczxcvxv
  • ghgzczxcvxv
  • 2016年03月12日 14:54
  • 509

谈谈我对京东的认识(2):商业价值和前景分析

BAT强,不但强在主营业务绝对垄断版的存在,更在于周边业务的层层包围。围绕核心业务,延伸出诸多次要业务,凡是能够先服务主营业务的生意,都有机会发展壮大。...
  • FansUnion
  • FansUnion
  • 2017年03月28日 12:44
  • 1672
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我对SIFT的一点点了解
举报原因:
原因补充:

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