SIFT

计算机视觉课堂笔记

参考:David G. Lowe, Distinctive Image Features from Scale-Invariant Keypoints, International Journal of Computer Vision, Vol. 60, Page 91-110, Nov 2004.

注:SIFT包括提取特征点,特征描述,特征匹配的方法,这里重点在前两个问题。

这篇论文的整体思路如下:

1.Detection of Scale-Space extrema

在DoG(difference-of-Gaussian) 空间中进行极值点检测,首先讨论了局部区域的极值点检测方法,这里采用了近邻的26点进行局部极值点判断;然后分别讨论了尺度采样的频率和空间域采样的频率对极值点检测的效果,结论是增加尺度采样的频率对得到稳定关键点是有好处的,但是会增加计算成本;而加大空间域的采样则不是越大越好(the image doubling increases the number of stable keypoints by almost a factor of 4,but no significant further improvements were found with a larger expansion factor).

2.Accurate keypoint localization

做了两件事,第一件事是通过类似于曲线拟合的方法,用前一步得到的关键点和高斯差分尺度空间方程拟合并求极值点,得到一个更精确的极值点位置(这个极值点的位置很有可能并不在像素点上,而有可能在两个像素点之间,这样提高精度);第二件事就是要去除边缘对点特征提取的影响(这个是在进行阈值限定之后的处理),这里与Harris 方法中剔除边缘的方法类似,建立了尺度差分的黑塞尔矩阵,通过矩阵的行列式和迹来表征其特征值之间的关系,进而得到了一个计算效率较高的方法来判断是否为想要的关键点(对计算结果小于某个阈值的进行保留)。

3.Orientation Assignment

这里开始对关键点进行描述,这是一个很重要的过程,直接决定了之后关键点匹配的效果。

建立了梯度直方图,用来统计关键点附近的梯度情况,然后用抛物线(why)拟合这个梯度直方图,然后求得一个方向极值点作为该关键点的主方向。这个做法可以避免旋转变换带来的影响。

4.The local image descriptor

根据关键点周围的局部特征,建立一个特征描述子。

在关键点周围取一个邻域并对其中点的梯度做高斯加权,具体做法是把邻域分成4*4个子区域,每个子区域都用八个方向为横轴统计一个梯度直方图(是高斯加权之后的),形成了4*4*8=128维的描述子。(论文中所给的图是一个简化版的 )

还要做的工作就是把描述子进行归一化,以消除对比度的影响。另外,SIFT 还将归一化之后大于0.2的分量都限制在0.2,避免在后期进行相似度计算时某些过高的分量会占有过多的比例使得其他的分量不起作用。

至此,特征点的检测与描述部分完成了,我们为每一个关键点产生了一个128维的描述子

5.Application to Object Recognition

目标识别的应用

所用的匹配准则:Nearest Neighbor Distance Ratio(NNDR),这里的距离用的是欧式距离;

所用的搜索策略:Best Bin First(BBF).

sift的一个改进较大的版本SURF参见:Speeded-Up Robust Features (SURF),Herbert Bay , Andreas Ess

sift详尽的翻译见:http://www.cnblogs.com/cuteshongshong/archive/2012/05/25/2506374.html

时间: 2024-10-24 22:20:40

SIFT的相关文章

汽车检测SIFT+BOW+SVM

整个执行过程如下:1)获取一个训练数据集. 2)创建BOW训练器并获得视觉词汇. 3)采用词汇训练SVM. 4)尝试对测试图像的图像金字塔采用滑动宽口进行检测. 5)对重叠的矩形使用非极大抑制. 6)输出结果. 该项目的结构如下: |-----car_detector|       |--detector.py| |--__init__.py| |--non_maximum.py| |--pyramid.py| |--sliding_window.py|-----car_sliding_wind

CV:object detection(SIFT)

1.SIFT综述 尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置.尺度.旋转不变量,此算法由 David Lowe在1999年所发表,2004年完善总结. 其应用范围包含物体辨识.机器人地图感知与导航.影像缝合.3D模型建立.手势辨识.影像追踪和动作比对. 此算法有其专利,专利拥有者为英属哥伦比亚大学. 局部影像特征的描述与侦测可以帮助辨识物体,SIFT

SIFT/SURF

SIFT/SURF为了实现不同图像中相同场景的匹配,主要步骤: 1.尺度空间的建立: 2.特征点的提取: 3.利用特征点周围邻域的信息生成特征描述子:(以特征点为中心,在周围邻域内统计特征,将特征附加到稳定点上,生成特征描述子) 4.特征点匹配. 如果两幅图像中的物体只是旋转和缩放的关系,加上图像的亮度及对比度的不同,要在这些条件下实现物体之间的匹配,只要找到多于三对物体间的匹配点就可以通过射影几何的理论建立它们的一一对应. 如何找到这样的匹配点呢?SIFT/SURF作者的想法是首先找到图像中的

SIFT四部曲之——高斯滤波

本文为原创作品,未经本人同意,禁止转载 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 或许网络上有各位牛人已经对sift算法进行各种的详解和说明,我(小菜鸟)在翻阅各种资料和对opencv中的代码进行反推之后,终于理解该算法.并记录之,供大家一起交流学习!这个博文主要记录了我的学习历程,或许对你有帮助,或许可以启发你,或许你只是一笑而过!没关系,至少自己总结过. 这篇文章主要是对sif

纯MATLAB版本 SIFT代码

先贴几个链接: http://blog.csdn.net/abcjennifer/article/details/7639681  Rachel-Zhang的 http://blog.csdn.net/manji_lee/article/details/8922474 David G. Lowe的两篇标志性的文章分别叫 Object recognition from local scale-invariant features 和 Distinctive Image Features from

SIFT算法详解(转)

http://blog.csdn.net/zddblog/article/details/7521424 目录(?)[-] 尺度不变特征变换匹配算法详解 Scale Invariant Feature TransformSIFT Just For Fun zdd  zddmailgmailcom or zddhubgmailcom SIFT综述 高斯模糊 1二维高斯函数 2 图像的二维高斯模糊 3分离高斯模糊 1 尺度空间理论 2 尺度空间的表示 3 高斯金字塔的构建 尺度空间在实现时使用高斯金

【特征匹配】SIFT原理之KD树+BBF算法解析

继上一篇中已经介绍了SIFT原理点击打开链接,最后得到了一系列特征点,每个特征点对应一个128维向量.假如现在有两副图片都已经提取到特征点,现在要做的就是匹配上相似的特征点. 相似性查询有两种基本方式:1.范围查询:即给点查询点和查询阈值,从数据集中找出所有与查询点距离小于阈值的点. 2.K近邻查询:给点查询点及正整数K,从数据集中找到与查询点最近的K个数据,当K=1时,就是最近邻查询. 特征匹配算子可以分为两类:1.穷举法:即将数据集中的点与查询点逐一计算距离,如果图1提取到N1个特征点,图2

SIFT学习笔记之二 特征提取

特征提取函数: int _sift_features( IplImage* img, struct feature** feat, int intvls, double sigma, double contr_thr, int curv_thr, int img_dbl, int descr_width, int descr_hist_bins ) { IplImage* init_img; IplImage*** gauss_pyr, *** dog_pyr; CvMemStorage* st

SIFT vs Dense-SIFT

有个博友问SIFT和Dense-SIFT在应用上的区别.这个问题可以放大到Sparse feature和Dense feature的使用场景上(不然现在说Dense-SIFT估计没人鸟了).之前自己也考虑过这个问题,今天不妨写出来.这些都是对基本问题的一些理解,后面的博客打算写点高级点的东西吧,这样显得自己逼格会高一些. 看过论文的人都会发现,图像识别问题大多用Dense-SIFT(当然现在也不用Dense-SIFT了,Deep Learning一统江湖.即使如此,CNN的输入也可以理解为一个D

【计算机视觉】SIFT中LoG和DoG比较

在实际计算时,三种方法计算的金字塔组数noctaves,尺度空间坐标σ,以及每组金字塔内的层数S是一样的.同时,假设图像为640*480的标准图像. 金字塔层数: 其中o_min = 0,对于分辨率为640*480的图像N=5. 每组金字塔内图像数:S=3,即在做极值检测时使用金子塔内中间3张图像.对于LoG每组金字塔内有S+2张图像(S=-1,0,1,2,3),需要做S+1次高斯模糊操作(后一张图像由前一张做高斯模糊得到):而DoG每组金字塔有S+3张高斯图像,得到S+2张DoG图像.尺度空间