介绍

匹配不同图片的特征是计算机视觉常见的问题. 当所有要匹配的图片很相似的时候(大小,方位),简单的角点检测算子就可以匹配,但是,当你的图片大小,方位不同的时候,你就要用到尺度不变特征变换(scale invariant feature transform).

为什么是SIFT?

SIFT算子不仅仅具有尺度不变特性,你可以改变以下的内容,还可以得到很好的结果:

  • scale尺度
  • rotation旋转
  • Illumination亮度
  • Viewpoint视角

下面是一个例子:

我们要查找这些内容:

【技术翻译】SIFT算子原理及其实现 (一)介绍-LMLPHP

我们在下面这张图片中查找以上目标

【技术翻译】SIFT算子原理及其实现 (一)介绍-LMLPHP

这是结果:

【技术翻译】SIFT算子原理及其实现 (一)介绍-LMLPHP

可以看出上面的图片匹配非常鲁棒。大长方形圈出了匹配对象; 小正方形是这些区域内的特征. 注意看大长方形的形状,它和你要匹配的目标在场景图片中的方向和视角是一致的.

SIFT是一个非常复杂的算法. 它涉及到很多处理过程,也很容易让人糊涂. 因此我将整个算法分为以下几个部分, 下面是SIFT算法的主要部分:

  • 构建尺度空间
  • LOG近似
  • 角点匹配
  • 去除低质量角点
  • 给角点加上方位
  • 生成SIFT特征

我可以用SIFT算子做什么?

当你实现了整个算法之后,你就可以得到你图片的SIFT特征. 一旦你有了这些,你可以做任何你想做的:
图片查找,目标检测/识别, 或者你想到的任何东西,这些我们后面会谈到.

但是问题是这个算法是有专利的!

因此,对于学术目的而言,SIFT还是很好的. 如果你在找一些能应用到商业的算法,还是换个方法吧!

这个系列接下来的内容

  • 1. 介绍
  • 2. 尺度空间
  • 3. LOG 近似
  • 4. 角点匹配
  • 5. 去除低分辨率角点
  • 6. 角点的方向
  • 7. 生成特征

原文地址:http://aishack.in/tutorials/sift-scale-invariant-feature-transform-introduction/  作者:Utkarsh Sinha

实现地址:https://github.com/kassol/SIFT/tree/master/src

参考资料:http://www.inf.fu-berlin.de/lehre/SS09/CV/uebungen/uebung09/SIFT.pdf

     http://web.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_1.pdf

        http://www.cs.ubc.ca/~lowe/papers/iccv99.pdf

     https://stackoverflow.com/questions/19815732/what-is-gradient-orientation-and-gradient-magnitude

05-20 20:21