SIFT学习小记

近期开始接触了一些SIFT的东西,这里记下对SIFT的一些理解,算是小结一下。

才疏学浅,刚刚接触,肯定有理解不对的地方,欢迎指正!


=====================================================================================

9.11更新


最近对SIFT有了新的理解

SIFT从更大的层面上来看就是分成两个部分:detector + descriptor

其中detector输入是一幅图像,输出是检测出的各个关键点

descriptor输入是关键点,输出是对关键点的描述


而detector和descriptor都是可以换掉的

就是说我可以用这里SIFT提出的detector方法,再用其他特征子的descriptor方法,

或者我可以用其他的特征子的detector方法,再用SIFT的descriptor方法,

当然也可以都换掉,当然也就不是SIFT了。。。


=====================================================================================


1.概括地说一下SIFT是个什么东西?


答:SIFT,全称:Scale Invariant Feature Transform,是一种特征提取的算法,提取出的特征是局部特征,具备很多优秀的性质,比如最突出的尺度不变性,还有旋转不变性,光照不变性等。该算法由UBC的David.G.Lowe于1999年首次提出,于2004年完善,且已申请专利。

经典文章:Distinctive Image Features from Scale-Invariant Keypoints. IJCV 2004


2.什么叫做尺度不变性?


答:首先,什么是尺度?尺度源自于图像的尺度空间理论,这种尺度空间模型是对人类生物视觉的一种模拟。在自然界中有各种各样的尺度,比如树的尺度是米级的,书本的尺度是厘米级的等等。你给了计算机一幅图片,计算机事先并不知道这张图片是以什么尺度来度量的,在这种情况下,提取的特征都是当前尺度下的,但计算机提取特征的时候并没有把尺度考虑在内,所以,那些提取的特征一般来说是不具备尺度不变性的,也就是说,一旦我观察的尺度有了变化,(想象一下,在用百度地图的时候,鼠标滑轮滚动,就是一种尺度的变化),那么这些特征点很可能就找不到了,既然都找不到了,那怎么进一步匹配或者做什么呢?所以这些特征点在尺度的变化下就是不稳定的,但SIFT提取的特征就是对尺度变化比较稳定,所以SIFT才强大嘛!


3.什么叫做旋转不变性?


答:首先,我们要知道,提取特征点之后,我们是要用这些特征点做一些有用的事情,比如匹配查找图片,一旦两幅本质上是一样的图片,其中一幅图片旋转了某一个角度,那我还能匹配吗?当然是没问题的,这就看你提取的特征点是否具有旋转不变性了,也就是说,即使旋转了一定角度,我还是能够找到这样的特征点,和原来的特征点一一对应起来,一般来说旋转不变性是诸多特征提取算法基本都具备的性质。


4.感觉还是很抽象的样子,SIFT提取出来的特征点究竟是个什么啊?什么形式的特征点啊?


答:是向量,一个128维的向量(L1, L2, L3, ..., L128),整个SIFT就是为了构造这么一个向量,向量的每一维都体现了一定的特征点或其周围的信息,128个信息就比较靠谱地把某个点(特征点)周围的情况啊什么的都表达清楚了,也比较独特,基本不会找到很相似的实质上不是一个地方的点。


5.好吧,SIFT确实比较不错的样子,那我要怎么做呢?


答:经典步骤这里就不细说了,那四个步骤已经有网友说的很详细了,可以参考:

http://blog.youkuaiyun.com/zddblog/article/details/7521424

http://blog.youkuaiyun.com/abcjennifer/article/details/7639681

http://blog.youkuaiyun.com/xiaowei_cqu/article/details/8069548


6.那我再问你几个问题。一个是SIFT里面的尺度空间究竟是什么啊?


答:作者直接给出了定义:L(x,y,sigma)=G(x, y, sigma) * I (x, y),这里的L就是尺度空间了。其中,sigma请自行脑补。。。G是高斯函数,I是原始图像


7.为什么卷积的时候只需要在(6σ+1)*(6σ+1)的范围内就行了呢?


答:概率论的3σ法则,详细可以参见正态分布那一块。也就是说在原点左右3σ的范围内,落在这里的概率就已经非常高了,达到了99.7%,所以吧范围之外的都舍掉也问题不大。


8.为什么是高斯函数呢?其它函数不行吗?


答:Lindeberg等人已经证明,只能用高斯函数。当然博主没看过证明。


9.为什么使用DOG算子而不是LOG算子?


答:1.DOG效率高:当我已经构造玩高斯金字塔之后,如果我还要使用LOG算子,那我还要计算LOG的卷积模板,然后再对图像做卷积,还要做很多次乘法,但如果这时候我使用DOG算子,我只需要对已经构造完的高斯金字塔两两做差就行了,只是一些加减法,计算量小很多;

2.DOG和LOG比较近似:具体的公式可以见论文或者上面列出的参考资料。


10.去除那两类点的原理是什么?例如为什么那个D(X)就可以判别对比度高低,Hessian矩阵什么的都是些什么。。。?


答:博主也不知道背后的原理,只知道是这么做的。


11.统计直方图的时候是怎么统计的啊?


答:这里的直方图实质上是一种对角度的直方图,每10°做一个划分,成为一个Bin,360°一共就有36个bin。在统计的时候,先计算出每个点的梯度幅度m(x,y)和角度theta(x,y),具体公式见论文或上方的参考资料,之后对于每一个点,先计算他是位于哪一个Bin(根据其角度),在把这个幅度累加到这个bin里面,实际操作的时候还考虑到了权值,权值和该点到特征点的距离成反比。


12.旋转不变性是怎么得到的?


答:主方向是实现旋转不变性的途径。在计算出主方向之后,我遇到一个想要匹配的物体,就先计算它的主方向,看看他和我之前得到主方向的夹角,可以通过旋转公式把像素点都旋转过去,这样旋转操作就对图片匹配没有影响了。


13.亚像素sub pixel是怎么回事?


答:亚像素就是硬件上没有实现,但是软件上认可其存在的一个东西,利用其来计算一些东西,实质上可以当做是一种数量级,也就是比原来的像素在低一级(更细一级)的精度。


14.归一化是怎么消除光照,对比度的影响的?


答:这是论文里的话。归一化之后,如果是对比度的变化,那么分子分母都可以约掉这么一个常数,所以没有影响;

如果是光照的变化,也就是统一加一个常数,因为我们做的是差分高斯金字塔,是做差得到的,所以光照应该也没有影响。


具体的OpenCV源代码里面的问题,之后有空再整理。

这里只列出第一个:

15.请问OpenCVS的SIFT源码在哪里。。。。?


答:好吧,这是我确实遇到的问题。源码在...(你的安装路径)\opencv\sources\modules\nonfree\src,里面有SIFT,SURF等的源码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值