sift 算法在 cv 领域的重要性不言而喻,该作者的文章引用率在 cv 界是 number1.本篇博
客只是本人把 sift 算法知识点整理了下,以免忘记。本文比较早的一篇博文 opencv 源码解析
之(3):特征点检查前言 1 中有使用 opencv 自带的 sift 做了个简单的实验,而这次主要是利用
Rob Hess 的 sift 源码来做实验,其实现在的 opencv 版本中带的 sift 算法也是 Rob Hess 的,
只是稍微包装了下。
首先网上有不少文章介绍了 sift 算法,写得都不错,比如:
http://www.cnblogs.com/cfantaisie/archive/2011/06/14/2080917.html
该博客对 sift 算法理论做了介绍,且有示意图辅助理解,从该文中可以了解 sift 算法的大概流
程.
http://www.cnblogs.com/linyunzju/archive/2011/06/14/2080950.html
这篇文章对 sift 算法做了通俗易懂的解释.
http://blog.csdn.net/v_july_v/article/category/795430
这篇博客有教你怎样用 c 语言一步一步写 sift 算法。
http://underthehood.blog.51cto.com/2531780/658350
该文也对 sift 做了详细的介绍,博客的作者还对 sift 匹配做了讲解。
下面还是简单看下 sift 算法的理论,具体的内容可以参考上面的几篇文章。
一、Sift 描述子形成的步骤
1、 构造高斯差分空间图像。
Sift 特征点的检测时在 DOG 图像上进行的,DOG 图像是将相邻尺度空间图像相减得到的。
且金字塔的每一层都要构造一个 DOG 空间图像。默认参数是金字塔 4 层,即 4 个 octave,每
一个 octave 中有 5 张不同尺度的图片,不同 octave 的图片尺寸大小不同,所以每一层中就会
得到 4 幅 DOG 图像。
高斯金字塔的第 1 层第 1 副原图像是将原图像放大 2 倍且 sigma(sigma=1.6)模糊,第 2 幅
图像是 k*sigma(k 等于根号 2)模糊,第 3 幅是 k*k*sigma 模糊,后面类推…
高斯金字塔第 2 层第 1 幅图是选择金字塔上一层(这里是第 1 层)中尺度空间参数为
k*k*sigma 的那幅图(实际上是 2 倍的尺度空间)进行降采样(尺寸大小为原来的 1/4 倍)得到,
如果 k 不等于根号 2,那么取原图的 2*sigma 降采样得到。第 2 层第 2 幅图是在本层第一幅图
尺度模糊系数增加 k 倍模糊后的图像,后面类似…
示意图如下所示: