谈谈对SIFT算法的理解

本文深入探讨SIFT(尺度不变特征转换)算法,包括尺度空间极值点检测、关键点定位、方向分配和关键点描述四个步骤。通过对高斯差分算子的使用,SIFT算法能在缩放、旋转等变换下保持图像匹配的稳定性。文章还讨论了参数选择、边缘消除和方向直方图构建等关键技术点。

参考资料

SIFT算法一般是指David G. Lowe在1999年提出,2001、2004两年改进后的算法。其中又属04年这篇最全面而详细。Lowe的论文和Demo参见其主页
http://www.cs.ubc.ca/~lowe/keypoints/

关于SIFT的研究非常多,我在学习中除了如上资料,还参照了以下内容:
一篇很不错的解释
http://blog.youkuaiyun.com/zddblog/article/details/7521424
MATLAB的VlFeat库,里面有SIFT的源代码http://www.vlfeat.org

概要

因为Lowe在论文中很多细节并未给出,导致很多人(包括我)在企图实现SIFT时遇到了很大的困难。在参照了前人的笔记以及代码后,我尝试搞懂Lowe的想法,并尽量把我所遇到的不太好理解的地方重点解释。尤其是一个经常被提起的问题:
关键点带有的尺度空间、DoG金字塔层数信息的利用
形象来说,就是
可能重合的关键点如何应用在同一张「二维」图像上,尽管我们在demo上看不到任何重合的SIFT向量,以及这样做的意义是什么
将在后文解释。然而对于和本算法关联不是那么大的知识,i.e. 高斯差分空间上极值点对应主曲率较大处,将给出一个模糊而形象的理解,并给出参考文献,以供有兴趣、有需求的朋友查阅。

希望这篇文章能够帮到各位。

SIFT主要目的

SIFT旨在解决缩放、平移、旋转变换下的图像匹配问题,同时也可以解决小角度的放射变换和3D投 影,以及部分照明因素、噪声的影响。

整体思想

Lowe将SIFT分成了四步,其中第一、二步从图像中提取关键点的位置 (keypoints),第三步对关键 点赋予方向,第四步将关键点包含的位置、方向信息综合成一个128维向量。 于是,SIFT将图像匹 配问题转化为向量最短(欧式)距离求解。

STEP 1 尺度空间极值点检测

关键点:对缩放和旋转变换保持某种性质不变的点
寻找尺度空间中的极值点,即可能的关键点

构建 DoG上的尺度空间

图中每一张平面都是一个经若干次变换得到的平面。 有图所示,我们最后得到的是一黄(左)一蓝(右)代表的两个金字塔状图片层。蓝金字塔(DoG)是黄金字塔相邻层差分得到。
「图」

下面关注黄金字塔的构建。 首先,左下角就是我们拿到的原图。 相同大小的图片成为一个组(octave),每组从下到上依次是 1S+3 张。 第 i 张图像由第1张卷积 σi=ki1σ 的高斯函数产生, 即:

L(x,y,σi)=G(x,y,σi)I(x,y)

其中
G(x,y,σ)=12πσ2e(x2+y2)/2σ2

下一组的第一张由前一组的倒数第三张做因子为2的降采样生成。其余同理。

这样,我们就定义了DoG上的尺度空间。在此空间上的极值点就是备选的关键点了。

选取 DoG和尺度空间的原因

探测在尺度变换下保持不变的位置可以通过寻找在不同尺度下稳定的特征决定。 这个一系列的尺度就是尺度空间。

高斯变换的理由在于:在一定条件下,尺度空间的核函数只有高斯函数。

对尺度空间做差分的原因:Lindeberg (1994)的研究表明Laplacian of Gaussian (LoG) 算子可以产生非常稳定的图像特征。因此理论上应当使用LoG对高斯空间(黄色金字塔)逐层寻找该层中的相对不变的位置,即稳定的特征。

然而,DoG与LoG十分相似,

σ2G=Gσ(G(x,y,kσ)G(x,y,σ)kσσ)

G(x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值