Abstract
Incorporating smoothness constraints into feature matching is known to enable ultra-robust matching. However, such formulations are both complex and slow, making them unsuitable for video applications. This paper proposes GMS (Grid-based Motion Statistics), a simple means of encapsulating motion smoothness as the statistical likelihood of a certain number of matches in a region. GMS enables translation of high match numbers into high match quality. This provides a real-time, ultra-robust correspondence system. Evaluation on videos, with low textures, blurs and wide-baselines show GMS consistently out-performs other real-time matchers and can achieve parity with more sophisticated, much slower techniques.
Author
JiaWang Bian, Wen-Yan Lin, Yasuyuki Matsushita, Sai-Kit Yeung, Tan Dat Nguyen, Ming-Ming Cheng
Publication:
GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence JiaWang Bian, Daniel Lin, Yasuyuki Matsushita, Sai-Kit Yeung, Tan Dat Nguyen, Ming-Ming Cheng IEEE CVPR, 2017 [Project Page] [pdf] [Code] [Video Demo]
Citation
If you use the code in your publication, please cite our paper.
Video Matching Demo
Environment:
The code can run on Windows, Linux, and Mac.
Requirement:
1.OpenCV 3.0 or later (for IO and ORB features, necessary)
2.cudafeatures2d module(for gpu nearest neighbor, optional)
How to run:
Image pair demo and video demo in demo.cpp.
(Note: Please use gpu match when you run video demo.)
Tune Parameters:
In Main.cpp
1.#define USE_GPU" will need gpu cudafeatures2d module for nearest neighbor match,
using cpu match by commenting it.
In gms_matcher.h
2. #define THRESH_FACTOR 6 // factor for calculating threshold
The higher, the less matches, vice verse
3. int GetInlierMask(vector<bool> &vbInliers, bool WithScale = false, bool WithRotation = false)
You can open multi-scale and rotation if your image pair contains that.