GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence
CVPR2017
c++ code: https://github.com/JiawangBian/GMS-Feature-Matcher

主要本要针对特征匹配问题,提出了一个简单的基于统计的解决方法,可以快速区分出正确的匹配和错误的匹配,提高了匹配的稳定性。

首先来个直观的特征匹配图示

特征匹配是计算机视觉里一个基础性问题,对于特征匹配当前主要的问题在 robust 的匹配速度慢,快的匹配经常不稳定。
there is a wide performance gap between slow (but robust) feature matchers and the much faster (but often unstable) real-time solutions.

问题的核心在于邻域一致性这个约束的怎么利用。The central problem lies in the coherence constraints (neighboring pixels share similar motion) utilized in the more powerful feature correspondence techniques.

一致性是一个很强大的约束,但是稀疏特征不能很好的定义邻域。这导致基于一致性的特征匹配的计算量比较大,很难实现。
Coherence is a powerful constraint but sparse features lack well defined neighbors。 This causes coherence based feature correspondence [16, 42] to be both expensive to compute and complex to implement.

本文提出 GMS (Grid-based Motion Statistics) 可以有效的解决这个问题。
a means of encapsulating motion smoothness as a statistical likelihood of having a certain
number of feature matches between a region pair. We show GMS can rapidly and reliably differentiate true and false matches

本文的核心思想很简单:运动的平滑性导致了匹配的特征点邻域有较多匹配的点。我们可以通过计数邻域的匹配点个数来判断一个匹配正确与否。
Motion smoothness induces correspondence clusters that are highly unlikely to occur at random. Thus true and false matches can be differentiated by simply counting the number of matches in their neighborhood.

2 Our approach

S_i is a measure of neighborhood support

Assumption 1. Motion smoothness causes a (small) neighborhood around a true match to view the same 3D location. Likewise, the neighborhood around a false match views geometrically different 3D locations.
运动的平滑性导致了正确的匹配点附近的邻域里的特征点也是一一对应的。

下面首先用数学的角度推导出 正确匹配点附近的邻域中正确匹配和错误匹配的概率分布。
最终的结论如下:

分布图示

我们的目标是:

下面是将上面的理论分析变成可以实际中的运行算法
主要解决下面四个问题:
a) Efficient score computation through grid-cells;
b) Which neighborhoods to use;
c) How many grid-cells to use;
d) How to compute an effectively threshold S

3.1. Griding the problem

a) Efficient score evaluation, 这里我们主要通过将图像分为 G = 20×20 网格来实现
Scores of potential cell-pairs are computed only once. All matches between cell-pairs deemed true are accepted

b) Grouping match neighborhoods (cell-pairs) for robustness. 这里我们计算了一个网络四周的3*3=9个网格,如下图所示

c) How many grid-cells should be used? 经验值 G = 20 × 20 cells for 10,000 features n 大约为 25

d) Thresholding S_ij to divide cell-pairs into true and false sets {T ,F}.

整个算法流程图如下所示:

效果对比图

Dataset details

F-measure, Recall and Precision vs baseline

特征匹配--GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence相关推荐

  1. 【论文阅读】22-GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence

    [论文阅读]22-GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence 0.basic inf ...

  2. [论文笔记|特征点]GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence

    摘要 提出了一种基于网格的运动统计方法(GMS)以剔除特征误匹配,该方法将平滑性约束融入到分离的统计框架中,并使用网格进行快速计算.GMS对于各种具有挑战性的图像变化是鲁棒的,包括视点.比例和旋转.它 ...

  3. 【特征匹配】ORB原理与源码解析

    相关 : Fast原理与源码解析 Brief描述子原理与源码解析 Harris原理与源码解析 http://blog.csdn.net/luoshixian099/article/details/48 ...

  4. 利用RANSAC算法筛选SIFT特征匹配

    关于RANSAC算法的基本思想,可从网上搜索找到,这里只是RANSAC用于SIFT特征匹配筛选时的一些说明. RANSAC算法在SIFT特征筛选中的主要流程是: (1) 从样本集中随机抽选一个RANS ...

  5. 【图像处理】——特征匹配(SIFT特征检测器+FLANN特征匹配方法+KNN近邻最优匹配筛选)——cv.xfeatures2d.SIFT_create()sift.detectAndCompute

    转载请注明地址 目录 1.特征检测和特征匹配方法 (1)特征检测算法 (2)特征匹配算法 (3)各种特征检测算法的比较 2.特征匹配的基本步骤(附带主要的函数) (1)图像预处理--灰度化(模板--查 ...

  6. Python+OpenCV:特征匹配(Feature Matching)

    Python+OpenCV:特征匹配(Feature Matching) Basics of Brute-Force Matcher Brute-Force matcher is simple. It ...

  7. OpenCV中的特征匹配+单应性以查找对象

    OpenCV中的特征匹配+单应性以查找对象 1. 效果图 2. 源码 参考 这篇博客将混合calib3d模块中的特征匹配和单应性,在复杂图像中查找已知对象. 1. 效果图 特征匹配 & 单应性 ...

  8. OpenCV中的特征匹配(Feature Matching)

    OpenCV中的特征匹配(Feature Matching) 1. 效果图 2. 原理 3. 源码 3.1 SIFT关键点检测+Knn近邻匹配 3.2 ORB关键点检测+蛮力特征匹配 3.3 SIFT ...

  9. SLAM之特征匹配(一)————RANSAC-------OpenCV中findFundamentalMat函数使用的模型

    目录 1.RANSAC原理 2. RANSAC算法步骤: 3. RANSAC源码解析 step one niters最初的值为2000,这就是初始时的RANSAC算法的循环次数,getSubset() ...

最新文章

  1. 线性时间选择问题——分治
  2. Node.js 将Json文件数据转为SQL可执行的insert语句
  3. PlantUML权威教程-时序图
  4. 负载均衡设备oracle,Oracle RAC 服务器端联接负载均衡(Load Balance)
  5. VTK:参数化超椭球用法实战
  6. JSP第十四次课:JSP项目开发高级操作2---在线编辑器应用及前台首页显示商品
  7. 使用ASP.NET Core 3.x 构建 RESTful API - 4.3 HTTP 方法的安全性和幂等性
  8. 【刷题】BZOJ 4503 两个串
  9. js文件上传及格式装换
  10. java怎么打印反三角形_Java基础练习——打印正反三角形
  11. 抖音私聊不封号技术,教你怎么避免踩雷?
  12. 计算机中sqrt函数是什么意思,sqrt是什么函数
  13. Win10突然卡死的原因调查(转自yzhang)
  14. 使用Python将一个excel的某些内容导入到新的excel中
  15. oracle新建一个自增列,sequence的使用
  16. 本命年,系上红腰带!
  17. 一文读懂胶囊神经网络
  18. 华为机试C语言-VLAN资源池
  19. [原创翻译]利用文字识别来查询世界
  20. 备战大三实习篇之 Zookeeper

热门文章

  1. 蚂蚁金服“刷脸”支付技术解读:错误率低于百万分之一
  2. 施一公:优秀博士如何养成(全文) 清华大学演讲
  3. 上海交大c语言第一次作业,上海交大网络学院-计算机第一次作业及答案(含6次机会全部题目)-计算机基础的知识.docx...
  4. Microbiome:香港理工李向东组-医院源可吸入耐药基因与宿主群落、临床关联和环境风险...
  5. JGG:COVID-19感染导致儿童上呼吸道和肠道菌群持续失衡
  6. Nature子刊:Knight组发布快速UniFrac算法
  7. Nat. Med.:iHMP之“微生物组与早产”
  8. 扩增子三部曲:1分析图表解读大全(箱线,散点,热,曼哈顿,火山,韦恩,三元,网络)...
  9. R语言使用treemap包中的treemap函数可视化treemap图:treemap将分层数据显示为一组嵌套矩形、自定义设置treemap图的调色板、自定义设置treemap标题字体的大小
  10. R语言使用fs包的dir_create函数在指定路径下创建新的文件夹、使用file_create函数在指定文件夹下创建文件