CVPR2017-图像特征匹配-GMS:基于网格的运动统计的快速且极度鲁棒的图像特征匹配算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kevin_zhao_zl/article/details/89810718

论文地址: GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence
工程地址:github链接

1. 介绍

  该论文提出基于网格的运动统计的方法用于特征匹配,总体思想是针对特征匹配问题,本质上是一个基于统计的解决方法,可以快速区分出正确的匹配和错误的匹配,即将较高的特征点匹配数量转化为较高质量的匹配,使得算法更加快速和鲁棒,如图(1)所示:在这里插入图片描述  该论文认为运动的平滑性导致了匹配的特征点周围的区域有较多匹配的点,因此可以通过计数周围区域的匹配点个数来判断一个匹配正确与否。之前的特征匹配的论文多认为匹配的质量受特征不变性和区别是否明显的影响,本文从一个新的角度来分析,认为原始特征的数量也能够影响匹配的质量。而找到更多特征显然比设计全新的匹配器更加简单,GMS就是这样一个简捷的解决方法,综合来看论文的贡献在于:

  • 将运动平滑性转化为统计问题以判别错误的匹配,使得困难场景上的匹配更加高效
  • 一个有效的基于网格的打分器,能够与实时的特征匹配器结合
  • 证明了GMS系统具有更好的效果(SIFT,SURF,LIFT)

2. 论文提出的方法

  给出一组不同角度的同一场景的图像,特征的匹配即是一幅图中的一个像素/特征点与另一幅图像中的相同点被识别为相似,如果运动是平滑的,领域像素点和特征会共同移动,可以有以下假设:
假设一运动的平滑性使得匹配周围出现一个相似区域的出现,真匹配中两幅图上这样的区域位置移动平滑,假匹配则运动不平滑
包围着相应图像特征的区域{a,b},如下图所示,真匹配 x i x_i 周围的区域是{a,b},一部分真匹配周围的小区域也相同,论文认为真匹配的区域中会有更多相同的区域。
在这里插入图片描述  假设一表明真匹配区域会共享许多相同的小区域,由此提出一个统计方法GMS能够可靠地分辨出真假匹配,论文第三节介绍了用于区域打分的网格算法。

2.1 分析用到的符号

  图像对{ I a , I b I_a,I_b }分别有{ N , M N,M }个特征, χ = \chi= { x 1 , x 2 , x 3 , . . . , x i , . . . , x N x_1,x_2,x_3,...,x_i,...,x_N }是所有匹配的特征的区域的集合. χ \chi 的势为N,目标是将集合 χ \chi 中的真匹配和假匹配区别开来。上图中图像的对应区域{ I a , I b I_a,I_b }在图中表示为{ a , b a,b },每一个都有{ n , m n,m }个特征, χ i χ \chi_i \subseteq\chi 是对应的匹配 x i x_i 的区域内的匹配, S i S_i 是区域内支持真匹配的计量/分数,有
(1) S i = χ i 1 S_i=|\chi_i|-1\tag{1}

  -1表示减去了原始的匹配

2.2 统计时的其他限制

  由于特征周围区域选取的较小,论文不考虑区域内的相似的情况,只考虑相同或不同。令 f a f_a 表示区域a内n个支撑特征中的一个,给定 f a f_a 匹配成功的概率为t,论文需要找到一个阈值来判断{ a , b a,b }是真匹配,下图给出了论文推到用到的符号。
在这里插入图片描述
下图则给出了 f a f_a 的事件空间, f a f_a 在图像b中的相似特征落在区域b(即事件 f a b f_a^b )或者没有( f a b ˉ \bar {f_a^b} )。匹配要么是真( f a t f_a^t ),要么是假( f a f f_a^f )。给定 T a b f a b T^{ab}即当前匹配为真匹配,f_a^b 表示事件 f a t f_a^t 和一部分 f a f f_a^f 的并集,给定 F a b , f a b F^{ab}即当前匹配为假匹配,f_a^b 必然是 f a f f_a^f 的子集。
在这里插入图片描述
  论文还做出了一个假设:即假设二 f a f_a 是一个错误的匹配,则它的匹配可能出现在全图的任一位置
  这样当匹配错但还是匹配到区域b中的概率可以表示为:
(2) p ( f a b f a f ) = β m / M p(f_a^b|f_a^f)=\beta m/M\tag{2}

  其中m表示区域b中的特征数, β \beta 是一个因子,使得假设更加strong,当 β = 1 \beta=1 时是一个通常的情况。
  令 p t = p ( f a b T a b ) p_t=p(f_a^b|T^{ab}) 时给定图像中的相同位置{a,b},特征 f a f_a 的在图像b中最相似的特征点落在区域b中的概率,其中包含匹配正确或者匹配错误但仍在区域b中,根据贝叶斯法则和事件 f a t , f a f f_a^t,f_a^f T a b T^{ab} 独立,可得最后计算结果,如下所示:
在这里插入图片描述
  同理有 p f = p ( f a b F a b ) p_f=p(f_a^b|F^{ab}) ,即错误匹配且落在区域b中,计算如下所示:
在这里插入图片描述
  由于每个特征是否匹配相互独立,使用假设一和公式3,4可以近似得到 S i S_i 的分布,是一个二项分布的形式,如下所示:
在这里插入图片描述
  公式5的重点在于真匹配和假匹配都有区域内支持特征的分数,但是S的分布却大不相同,也就是S的概率分布函数可能是双峰的,使得S的分数成为区别真假匹配的有效因子,下图说明了真匹配和假匹配区域内支持特征的分数统计的不同分布(横轴是当前匹配周围区域内支持为真的特征点 f a t f_a^t 的数量也就是S,纵轴应该是可信度,但是个人觉得这个边界不应该这样,即便有特殊情况,右端S越大真匹配的可信度会慢慢降低,或者左端S越大假匹配的可信度越来越大,但也不应该有这么大的空间, 貌似不是可信度,不管是什么总感觉不太对~):
在这里插入图片描述

2.3 选取多个区域

  运动通常在很大的一个区域上都是平滑的,然而假设一需要足够小的区域,在较大区域中可能真匹配的区域中会包含不支持的特征点,反之也一样。这会导致真假匹配随分数的分布区别不明显,由此提出另一个假设:假设三如运动在一个较大的区域平滑,真匹配周围的多个小区域都相似,也就是分数高。这样会得到一个更加一般的分数计算方式,即:
在这里插入图片描述
  其中K表示不相交的区域的个数{ a k , b k a^k,b^k }是预测得到的区域对, χ a k b k χ \chi_{a^kb^k} \subseteq\chi 是落在区域对{ a k , b k a^k,b^k }上的匹配的子集,分数的分布如下所示:
在这里插入图片描述
  假设三的意思就是说运动在一个较大的区域内也平滑(个人认为),计算分数的时候考虑与区域a邻近的更大的区域,这样做会增大真假匹配的差异。相应的均值和方差可以通过如下方式计算:
在这里插入图片描述

2.4 分析

  Partionability Score
在这里插入图片描述
  这个因数即算法的真假匹配的区分能力,用均值的差除以标准差的和表示真匹配和假匹配区别的大小即两个分布的距离,算法目标就是要最大化这个P值。
  Quantity-Quality equivalence
在这里插入图片描述
  即给定 m t > m f m_t >m_f ,真假匹配的区别随着特征数的增大而增大,也就是说对于较难分析的场景需要更多的特征数,如下图所示,第一层代表的传统方法主要是通过增加描述符来获得更好的效果,第三个对较大范围的变形建模效果就最好;第二层的GMS方法能够使用ORB实现相同的效果,仅仅增加了特征的数量而已。
在这里插入图片描述
  Motion Prediction:增加特征数量在实际应用中很困难,公式10表明我们可以增加K,即增加加入分数计算的区域的个数,这也是论文使用的方式。
  Practical Applicability:在特征数量足够多的时候,GMS相当有效,给定10000个均匀分布的特征,参数取{ m = n = 25 , β = 1 , t = 0.5 , K = 1 m=n=25,\beta=1,t=0.5,K=1 },因此 S i S_i 的均值和标准差为:
在这里插入图片描述
  这个区别已经很大,而且此时K=1,这证明了GMS匹配能力十分强大。
  Relationshop to descriptors:真假匹配的区别大小和概率t的关系可以通过以下式子给出:
在这里插入图片描述
  也就是特征越强,即概率为1,则P趋向于无穷大

3. 用于快速打分的基于网格的方法

  论文第三节第一段主要介绍了什么是网格框架,说明了以下几个问题:

  • 通过网格单元进行高效的分数计算
  • 哪些网格单元应当视为计算支持特征的区域加入计算
  • 使用多少个网格单元
  • 怎样高效的计算阈值S

  第二段则介绍了算法的细节。

3.1 通过网格来解决问题

高效的分数计算.为每个特征匹配的区域打分的时间复杂度是 O ( N ) N O(N),N 是特征数量。这样尽可能多地提高特征数量和实时的目标就有了冲突,论文将一幅图像划分为 20 × 20 20 \times 20 的不重复网格,这样算法的复杂度降为O(1)。实际上可能会有很多特征正好处于网格的边界,所以论文会调整网格的长宽进行三次的算法迭代得到分数。
在这里插入图片描述
将区域组合以更加鲁棒.公式6和10表明组合更多的区域能够增大真假匹配的区别,根据公式6选择一个 3 × 3 3 \times 3 区域如上图所示,可以得到对于每个单元对{ i , j i,j },分数 S i j S_{ij} 为:
在这里插入图片描述
  其中 χ i k j k |\chi_{i^kj^k}| 是单元格{ i k , j k i^k,j^k }之间的匹配,如下图所示,
在这里插入图片描述
使用多少个网格单元?使用较多的网格单元会提高匹配定位效果,但是会减少每个单元中特征的数量进而减弱真假匹配的区别,虽然增加K值可以避免但是却大大增加了计算时间,论文使用一个经验值即 G = 20 × 20 G=20\times 20 和10000个特征。即每个网格25个特征。
真假匹配的阈值 S i j S_{ij} .通过真假匹配的分布来看, τ = m f + α s f \tau=m_f+\alpha s_f ,实际上是一个经验值, m f m_f 非常小而 α \alpha 非常较大经验值取6从而使得算法拒绝更多的假匹配,近似地 τ α s f α n \tau \approx \alpha{s_f} \approx \alpha \sqrt{n} ,从而有:
在这里插入图片描述
   n i 3 × 3 n_i是3 \times 3 个网格的总特征数。

3.2 实现细节

  使用OpenCV ORB特征,特征数量设定为10000。纹理较强的图像的特征远远多于10000(特征会聚成一个点分布不均) \to 将所有图片resize成固定大小,论文选择 480 X 640;纹理较弱的图像的特征少于10000 \to 特征阈值设为0。区域通过海明距离在GPU上计算,这一过程与CPU上的特征检测同时进行,这是两个比较耗时的步骤,进行运动网格数据统计的算法如下所示:
在这里插入图片描述

4. 实验

数据集描述
在这里插入图片描述
精确率和召回率
在这里插入图片描述
性能和速度
在这里插入图片描述
性能表现随阈值选取变化
在这里插入图片描述
不同场景下的性能表现
在这里插入图片描述
视频中的表现
在这里插入图片描述

欢迎关注 深度学习与数学  [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kevin_zhao_zl/article/details/89810718