SIFT算法学习

来源:互联网 发布:ug中心钻编程 编辑:程序博客网 时间:2024/05/21 06:01

这篇文章参考了Utkarsh的博客,感觉他对SIFT的理解非常深刻,传送门在此:SIFT--Utkarsh

SIFT学习

1.  SIFT:ScaleInvariant Feature Transform

不同图像间的特征匹配是计算机视觉中的一个焦点,如果图片是大致相似的(同样的尺寸,同样的方向),简单的角点检测(Harris)是可行的。但是如果图象有不同尺度和旋转,你就需要尺度不变的特征转换(SIFT)。

2.  为毛SIFT牛叉

SIFT不仅仅是尺度不变,你可以改变下列几项,一样能获得较好的结果。

²  尺度

²  旋转

²  亮度(强度)

²  视角

下面是一个例子:

我们要寻找这些目标:


这是我们搜索的场景:


这是我们得到的结果:


大的矩形标识的是匹配的图片,小的矩形标识的是这些区域里的单个特征。注意这些大的矩形是根据目标的朝向和尺度来刻画的。

3.  算法

SIFT是一个较复杂的算法,所以我把整个算法分割成几个部分,这是整个大纲。

 Ø  构建一个尺度空间

这是最初的准备工作,你要创建一个原始图片的一组尺度图来确保尺度不变。

Ø  LoG近似

高斯拉普拉斯算子对于查找特征点很有帮助,但是消耗太大,所以我们采用在之前创建的尺度图来完成近似LoG的计算

Ø  查找特征点

在之前快速近似策略上,我们尝试查找特征点,在我们前一步的计算得到高斯差分(DoG)中查找极大值和极小值。

Ø  舍弃不适合的特征点

边缘和低对比度区域是不合适的特征点。去除它们使得算法更有效和鲁棒性。这里使用了一个类似Harris角点的技术。

Ø  对特征点赋予方向

每个特征点都会计算出一个方向,它会涉及到更多的计算,这可以有效的去除方向的影响,使得它满足方向不变性。

Ø  产生SIFT特征

 

4.  你能用SIFT干什么

图片检索追踪。。。。。。。。whatever you like