SIFT特征点提取与匹配算法(2)

2019-08-31 19:17

??x求得了局部的极值。在这种理念下,则极值点对于展开点的偏移量满足:

2??D?1?D?x??(?2)? (1.5)

?x?x??则容易由此得到极值点的坐标。容易想到,如果三维向量x在任何一个维度的值大于0.5,

那么这个极值点会更接近另外一个像素点,而不是本身的这个展开点。那么此时就将展开点

??换做更接近的那个点,然后再次展开计算偏移量x。最后偏移量的值被加到展开点上以得

到关键点的最终位置。当然这个最终位置的坐标不一定是整数,所以这个关键点的位置是一种修正过的,或说插值过(interpolated)的估计值。需要注意的是,SIFT特征匹配最终也不需要有一个整数的坐标值。在生成了关键点描述子之后,在匹配时与具体的坐标就不相关了。

1.2.2去除对比度低的不稳定关键点

在精确定位了特征关键点之后,该特征关键点的DOG函数可以由其临近的像素点的

??)可以用来去除那DOG展开获得,即式(1.1)。研究表明,特征关键点的DOG函数值D(x些因为对比度偏低而不稳定的关键点。其值越低,则越不稳定越应该忽略。在实际操作中,

?)的函数并不是(1.1)用来求D(x,而是在此基础上继续忽略2阶项后所得:

T??1?D?)?D?D(xx?? (1.6)

2?x??)?0.03的点全部去除。 在Lowe教授的研究中,这个阈值为0.03,亦即所有D(x1.2.3 去除由边缘响应所带来的不稳定关键点

为了增强特征点的稳定性,仅仅去除低对比的点是不够的。DOG函数有着较强的边缘响应,如果关键点被定位在边缘,那么这个关键点很有可能是不稳定的,尤其容易受到噪声的影响,即是是少量的噪声也会影响匹配的稳定性。

一个定义不好的高斯差分算子的极值在横跨边缘的地方有较大的主曲率,而在垂直边缘的方向有较小的主曲率。那么我们只需要求出关键点主曲率便可以决定是否因其处于边缘而舍去他。主曲率可以通过2×2的Hessian矩阵H来计算,其中:

??DxxDxy? H????DxyDyy?该点的两个主曲率是与Hessian矩阵的两个特征值成比例的。而在实际应用中并不用计算出

H的特征值,因为我们可以只考虑他们中较大的特征值比较小的特征值的比例r便可以确定该点是不是处于边缘(因为在横跨边缘的地方有较大的主曲率,对应一个大特征值;而在垂直边缘的方向有较小的主曲率,对应一个较小特征值,比例只要足够大,就可以认为该点满足处于边缘的性质)。设α为较大的特征值,β为较小的特征值,则?=r?。由于

Tr(H)?Dxx?Dyy???? (1.7)

我们构建

Det(H)?DxxDyy?(Dxy)2??? (1.8)

Tr(H)2(???)2(r?1)2ratio??()? (1.9)

Det(H)??r则如果我们考虑

r?r0时则认为该点处于边缘,那在具体判定时,我们可以不用计算

即可。计算一个二阶矩阵

(r0?1)2出其具体特征值,而是只用等效判断是否有ratio?r0一般情况下,阈值r0取为10。 1.3 关键点主方向分配

的迹以及其行列式,要比计算其特征值的代价小得多,只用进行20次不到的浮点操作即可。

给一个关键点分配主方向,并将主方向纳入关键点的描述子特性之中,那么这个关键点就具有了旋转不变性。

描述主方向需要用到像素点的梯度。梯度的模和方向如下以像素差分的方法定义和计算:

m(x,y)?(L(x?1,y)?L(x?1,y))2?(L(x,y?1)?L(x,y?1))2 (1.10)

?(x,y)?tan?1(L(x,y?1)?L(x,y?1))/(L(x?1,y)?L(x?1,y)) (1.11)

关键点的主方向是通过统计以关键点为中心的一个邻域之内所有点梯度方向来确定。在实际计算中,这种统计通过梯度方向直方图来确定。梯度直方图将360°分为36个柱,每个柱为10°。其中出现的梯度方向峰值就是这个关键点的主方向。在邻域内的点的方向被纳入直方图时,还要经过一次高斯加权;这个加权的高斯函数是以关键点为中心,1.5σ为标准差的,其中σ就是这个关键点所在的尺度。

若当梯度直方图中存在的次高峰,其模值大于等于最高峰的80%,那么就将该次高峰对应的方向定为该点的辅方向。如果一个特征点有辅方向,那么就建立另外一个新的特征点,

这个特征点和原特征点有着同样的坐标,但是方向不同。也就是说这样会出现一些坐标相同但是主方向不同的特征点。实验表明,虽然只有15%的特征点存在辅方向,但是给具有辅方向的关键点生成新关键点,能极大的提高匹配的稳定性。

最后,如果还想进一步提高峰值位置的精度,可以用最接近峰值的3个直方图值做抛物线拟合,将拟合出的抛物线最大值的位置作为精确的峰值位置,亦即精确的主方向角度。 1.4 关键点描述子生成

前面的工作我们已经指定了特征关键点的位置、尺度和方向,这样特征点就已经对于这些参数的变化保持了不变性。下一步就是要生成一种能描述这样特征的描述子,并尽可能让这种描述子对于其他一些变化也有一定的不变性,如光照和三维视角变化。

在建立描述子时,要将描述子的主方向坐标旋转到关键点的主方向上来,这样才能保证具有旋转不变性。之后选择以关键点为中心的16×16区域(图1.5),计算出其中每一点的梯度值;然后将这个区域所有的梯度值用一个中心在该区域中央的高斯函数加权(高斯函数的标准差为1.5倍的区域宽度)。接下来将整个区域分为16个4×4的小区域(图1.5中红色区域),在这个小区域中统计梯度直方图,直方图分为8个方向;那么整个描述子所覆盖的区域含有的信息就是16×8=128个,则整个描述子可以看做是一个128维的向量,即特征向量。生成描述子的过程可以由图1.6表示。

最后将特征向量归一化,则可以去掉光照变化产生的影响。如果光照变化是对比度变化,则相当于是对每个点的梯度乘上了一个常数,那么标准化后这个常数就被消除了;如果光照变化是亮度的变化,那么相对于对每个点的像素值加上了一个常数,对梯度的变化没有任何影响。但是由于一些非线性的光照变化会使某些像素的梯度模值产生较大变化,同时对梯度方向没有影响,因此我们在统计梯度直方图时将所有大于某个阈值的梯度模值都置为这个阈值,就可以降低光照变化的影响。要注意的是,向量归一化是在所有模值经过阈值的限制之后进行的。因为这样的操作相当于降低了大模值点的模值在匹配中的权重。这个阈值一般选为0.2。

图 1.5

图 1.6

至此SIFT特征全部集中在SIFT向量,亦即特征描述子之上。作为图像的局部特征一种表征,他决定了基于特征的各种后续处理方法的效果。 1.5 比较描述子间欧氏距离进行匹配

在描述子生成完毕之后,特征提取阶段即告结束。完成图像匹配,接下来要做的是对这些特征运用适当的比较方法来找到对应关系。由于特征点描述子可以看做为128维的向量,则可以通过向量的相关概念来抽象出比较描述子的方法。最直观的便是两个向量间的欧氏距离,我们可以容易的想出,两个相同的向量其欧式距离为0,那么两个完全相同的特征点描述子,其欧氏距离也为0。不过很显然,由于噪声以及其他图像变换的存在,同一个点对应在不同图像上的特征描述子不可能完全相同,那么如何确定两个描述子匹配呢?

首先应该想到,描述子距离越近,越应该认为其匹配。但是为了达到稳健的匹配,仅仅有“最近”是不够的。因为对于128维这样高维的描述子,误匹配并没有像独特的对应性,因此误匹配的描述子容易具有比较接近的距离。因此,如果两个特征点A和B真正的是一个对匹配点,那么他们的描述子之间所对应欧式距离首先要最小;其次,这个小还要小到一定程度:需要他比描述子A到除B以外其他任何描述子的距离都显著的小,才能体现正确匹配的唯一独特性。在造作中,我们可以以最近距离与次近距离的比例来衡量这种“显著程度”,只有当最近距离与次近距离小于某个比例阈值时,我们才接受这一对匹配。

要比较所有描述子的距离,我们可以通过遍历搜索完成。虽然相对于模板匹配的整图像遍历搜索,这样的计算量并不算太大,但也比较可观。选择一种合适的数据结构存贮这些描述子,并用合适的搜索策略这个数据结构,是重要优化命题,但在本文中,不对这个问题进行具体的讨论。

RANSAC去误匹配的思路

RANSAC方法本身是一种迭代的方法,用在去误匹配当中的思路如下 设A、 B分别为基准图和目标图上所找出的匹配点集合

(1)随机在A、B中选取3对匹配点对,并通过这三对点得到一个仿射变换矩阵。

(2)用该矩阵变换A中所有的点到B’,此时比较B和B’中对应点的坐标误差ei=||B’i-Bi||,设置一个误差阈值sigma,如果误差e小于该值,判定该点对为内点。 (3)重复(1)、(2),找到内点最多的一次变换,并将该次变换得到的内点对作为新的A、B,进行一轮新的迭代。

(4)迭代终止判定,就是该次迭代所找到的最大内点数目,与此次A、B中的点数目一致。 (5)最后得到的这一组A B就是去误配后的匹配点集。


SIFT特征点提取与匹配算法(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:11216园林工程学

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: