SIFT的一些细节问题(一)

来源:互联网 发布:淘宝助理下载订单不全 编辑:程序博客网 时间:2024/05/17 02:45

      SIFT已经流行得近乎泛滥,大概在3、4年前看到SIFT时,大部分还是应用在宽基线图像匹配方面,其他方面的文章还不多,当时大概只查到几篇在目标跟踪方面应用的文章,但是都很浅显,没有什么改进,并且都是一些影响力不高的会议文章。当时心里闪过了一些念头,能不能在其他方面做一些应用,甚至对特征本身做一些改进?但是由于当时没有花很多时间在这方面的研究上,这个想法也就被搁置了。但是如今回过头来一看,局势完全不同了,SIFT像阿凡达风靡中国一样席卷图像处理各个领域,即使有些地方用上去显得有些生硬。从另一个角度上看,这也表示当前学术界的一种跟风潮流。如今SIFT不仅在各个方面都被“完美”地应用上,而且连SIFT本身也被改进得“体无完肤”。对SIFT本身的改进还是主要集中在特征描述符(feature descriptors)上,比如对邻域范围改进、对领域形状改进、对向量的组成和维数改进、加入颜色特征等等。这些先不说吧,毕竟我自己也是事后诸葛亮。这里只想写一下我在理解SIFT时的一些细节问题,有些我一直没有去解决,等待日后有机会我再将结果补充出来吧。

      在说细节问题之前,还是有必要对SIFT的整个基本流程做一个简介,尽管这个过程像当年的毛泽东语录一样早已被大家烂熟于心了,权且当做备忘录吧。SIFT分为以下4个步骤:

      (1)尺度空间极值点检测。在DOG得出的尺度空间中搜索出极值点。

      (2)特征点的精确定位。去掉低对比度的非极值点并抑制边缘效应。

      (3)特征点的方向计算。通过统计邻域内的梯度方向直方图得到主方向甚至辅方向。

      (4)特征描述符生成。统计特征点领域的梯度直方图生成4X4X8=128维特征向量。

      好,接下来说说我在理解中遇到的一些问题。

      1、Knoederink[1]、Lindeberg和[2]Florack[3]等人用精确的数学形式通过不同途径都证明了:高斯核是实现尺度变换的唯一变换核。这句话在我没有看过这三个人相应的文章之前,我还是把它当做真理对待吧。

      2、极值点检测过程中的参数取值问题。说得简单一点,到底SIFT的时候是取了几个Octave,几个Level,以及每个Octave的每个Level上的sigma怎样取值。虽然王永明和王贵锦编著的《图像局部不变性特征与描述》一书中专门对此做了介绍(这一点是我比较喜欢这本书的原因,尽管这本书有很多书写错误),但是似乎还是不够具体。至于这个问题,我觉得在自己应用的时候可以随机应变,不一定非要和文章中的参数完全一致。

      3、采用DOG的原因。这个不是难点,但是我觉得有必要把这个原因记录下来,说不定可以成为以后写论文的材料。原因有两点:(1)简化计算。因为计算DOG是图像和高斯核直接做卷积,然后求差,而LOG是先求出LOG核,再做卷积,相比之下要简单得多;(2)DOG是LOG的近似。Lindeberg在[2]中有证明,证明过程不难,只是引入了一个热传导方程,最后得到他们之间近似为(k-1)倍的关系,作者说常数(k-1)并不影响极值点的定位,关于这点,我现在有点短路,还没有搞懂。而与LOG近似就可以使用DOG的原因是Mikolajczyk在[4]中证实了LOG比gradient、Harris、Hessian等更能提取稳定的图像特征(至于这个,也没有去看这篇文章,有时间也可以看看)。作者原文大概就是这两个原因,但是王永明所著的书中多提出了一个原因,(3)“DOG保留了各个高斯尺度空间的图像,这样,在生成某一空间尺度的特征时,可以直接使用式(4-1)产生的尺度空间图像,而无需重新再次生成该尺度的图像”,这个原因我是真心没有看懂,暂时也归咎于我现在脑子短路的原因吧。

      4、点的精确定位问题。点的精确定位问题要解决两个问题:(1)去掉一些低对比度的非极值点;(2)去除边缘效应。解决第一个问题用了[5]中的三维二次插值函数方法,只知道大概思想,具体还是没有细看。解决第二个问题用了Hariss中思想,利用Hessian矩阵的迹和行列式值得到DOG响应的曲率的关系,然后设定阈值进行排除,关于这个也没用去仔细看。(哎,发现好多细节我呢提都是没有仔细看,等到日后再说,这可不行啊,自己严重警告自己一次。)

      暂时就写到这里吧,其实还有descriptor生成的一些问题,以后慢慢来吧。

Reference

      [1] konederink. The structure of images. Biological Cybernetics, 1984.

      [2] Lindeberg. Scale-space theory in computer vision. Kluwer Academic Publishers, 1994.

      [3] Florack. Scale and the differential structure of images. Image and Vision Computing, 1992.

      [4] Mikolajczyk. Detection of local feartures invariant to affine transformations. Ph.D. thesis, 2002.

      [5] Brown. Invariant features from interest point groups. BMVC, 2002.

 

      补充:回头看了一下关于第4个问题,点的精确定位,对其中的两个方法有了大概的了解,补充在这里做为备忘吧。

      (1)去掉一些低对比度的非极值点。低对比度即DOG响应值低的点,解决的方法是利用三维二次插值函数,然后求出极值点。拿一维为例,假如我知道一些离散点的值,可以根据离散的方式求出这些点的一阶导数和二阶导数,利用泰勒公式(将泰勒级数展开到二阶)可以将这些点拟合成为一个二次函数,然后求出二次函数的极值点。将同样的思想扩展到二维三维,则也可以根据前一步SIFT在DOG的邻近层的邻域搜索得到的离散极值点(非精确极值点)拟合二次函数,从而求得精确的极值点,去除DOG响应值低的点。至于推导过程,王永明的书上给出了,这部分讲的还是比较清楚的。

      (2)去除边缘效应。主要是根据D的Hessian矩阵来寻找主曲率大于某一阈值的点,通过Hessian矩阵的迹的平方与其行列式值的比值来判定(这一点没有研究,暂且当做真理对待),其简略描述如下:

clip_image002

在Harris的1988年《a combined corner and edge detector》中,采用的公式是:

clip_image002[1]

这里做了简化,只与两个特征值的比例有关,而与具体特征值无关。

原创粉丝点击