SIFT reading notes

之前在上课的时候开始接触到sift特征描述子,只知道这算是图像处理中里程碑式的贡献,但对于其原理并不清楚,现在有时间便看了看一些相关打博文(在这儿说明一下,我个人的习惯是对于一些比较成熟的技术,当网上有很丰富的资源可以帮助理解的时候,我第一选择不会从原论文去开始阅读了解,而是从前人的一些说明解读中开始,这样一来可以帮助理解,更高效地获取得到原文的主要贡献,二来可以节省更多的时间,除非是,在查看了多份别人的博文后,仍热不太能理解的情况下,这时候便需要从原论文中去看~~)

首先,来说说什么是SIFT——Scale Invariant Feature Transform

从名字来看,可以知道这种特征具有尺度不变性,那它究竟是如何实现尺度不变的呢?一般而言,为了达到尺度不变的目的,惯性的思维是构造金字塔,但作者则提出了另一种金字塔的结构——DoG(Difference of Gaussian)如下图所示:

SIFT reading notes_第1张图片
DoG

注:在顶层添加三层可以实现特征提取的连续型,在这儿不在最底层添加一层是因为不方便将原始图像当做模糊后的图像来得到其未经模糊的图像,所以直接在顶层添加三层。

notation
SIFT reading notes_第2张图片
DoG space

Step1:构建DoG金字塔空间

首先有多个octave组,并依次通过下采样得到,在每一个octave组中,采用不同的高斯核来实现不同的尺度,theta取值越大,图像的模糊效果越明显,然后将相邻的两层相减,由此得到DoG金字塔空间。

Step2:在DoG中寻找极值点

SIFT reading notes_第3张图片
extreme point

由此便可得到相应theta下,对应尺度空间的极值点,此点可作为可疑的特征点

Step3:特征点筛选——精确定位极值点

通过Step2中得到的极值点,需要去除掉一些对比度较小,由不稳定边缘引起的极值点,以增强匹配稳定性,提高抗噪声能力。具体是如何实现的可以参考www.cnblogs.com/cfantaisie/archive/2011/06/14/2080917.html (PS:这是一篇对sift原理说明比较详细且易于理解的博文)

Step4:为每个关键点指定方向参数(使其具有旋转不变性)

SIFT reading notes_第4张图片
direction of key points

即以关键点为圆心,以一定长度(由公式计算得到,不同尺度theta下其半径不同)为半径,以带权重打方式统计该邻域中梯度方向直方图(距离中心关键点较远的对其影响较小),取直方图中值最大的方向为关键点的方向。然后将坐标轴旋转到该方向,以实现旋转不变性。

Step5:关键点描述子生成

在这一步中,即根据关键点的邻域生成128维的特征描述子

SIFT reading notes_第5张图片
feature descriptor

将关键点半径圆邻域划分成4×4的网格,对每个网格中进行梯度直方图统计,总共为8个方向,由此便可形成4×4×8=128维度的特征向量。对该特征向量进行归一化操作以消除对比度及光照对特征提取的影响。(如下图所示)

SIFT reading notes_第6张图片

综上,便是SIFT描述子的形成过程,可见,SIFT特征是局部特征描述,其具有尺度,旋转,平移不变性,但不具有放射不变性。

更为详细的说明可以参考文中所说到的那篇博文,以辅助理解。

你可能感兴趣的:(SIFT reading notes)