说来惭愧,每次不管看什么算法,都不能彻底搞明白。这两天心血来潮看起了SIFT,主要通过看各位的博文来学习,大致有了自己的一点点了解,因为还有其他事情也没有时间一直看下去了,就暂且总结一下自己的浅薄了解吧。
1.什么是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的源代码,自己写了一个接口,欢迎大家下载学习交流。