/GMS-Feature-Matcher

C++ code for "GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence"

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence

alt tag

Publication:

JiaWang Bian, Wen-Yan Lin, Yasuyuki Matsushita, Sai-Kit Yeung, Tan Dat Nguyen, Ming-Ming Cheng

GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence IEEE CVPR, 2017

[Project Page] [pdf] [Bib] [Code] [Youtube]

Usage

Requirement:

1.OpenCV 3.0 or later (for IO and ORB features, necessary)

2.cudafeatures2d module(for gpu nearest neighbor, optional)

C++ Example:

Image pair demo in demo.cpp.

Matlab Example

You should compile the code with opencv library firstly(see the 'Compile.m').

Python Example:

Use Python3 to run gms_matcher script.

Tune Parameters:

In demo.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. 

If you like this work, please cite our paper

@inproceedings{bian2017gms,
  title={GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence},
  author={JiaWang Bian and Wen-Yan Lin and Yasuyuki Matsushita and Sai-Kit Yeung and Tan Dat Nguyen and Ming-Ming Cheng},
  booktitle={IEEE Conference on Computer Vision and Pattern Recognition},
  year={2017}
}