Raw File
Tip revision: d187b3690ac220d4564db113788ea529e38af79e authored by JiaWang Bian on 10 June 2020, 06:30:43 UTC
Tip revision: d187b36
# 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**, **CVPR 2017**, [[Project Page](] [[pdf](] [[Bib](] [[Code](] [[Youtube](]

[JiaWang Bian](, Wen-Yan Lin, Yun Liu, Le Zhang, Sai-Kit Yeung, Ming-Ming Cheng, Ian Reid, **GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence**, **IJCV 2020**, [[pdf](] 

## Other Resouces

  The method has been integrated into OpenCV library (see [xfeatures2d.matchGMS](
  More experiments are shown in [FM-Bench](

  The paper was selected and reviewed by [Computer Vision News](

## If you find this work useful in your research, please consider citing our paper:
  		title={{GMS}: Grid-based Motion Statistics for Fast, Ultra-Robust Feature Correspondence},
  		author={Bian, JiaWang and Lin, Wen-Yan and Liu, Yun and Zhang, Le and Yeung, Sai-Kit and Cheng, Ming-Ming and Reid, Ian},
  		journal={International Journal of Computer Vision (IJCV)},

## Usage


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

	2.cudafeatures2d module(for gpu nearest neighbor, optional)
	3.OpenCV xfeatures2D moudle (if using the opencv built-in GMS function) 

C++ Example:

	See src/demo.cpp

Python Example:
	Go to "python" folder. Run "python3". 
	(You need install opencv_contrib by "pip install opencv-contrib-python")
Matlab Example:
	1. Go to "matlab" folder. Compile the code with OpenCV ('Compile.m'), and run 'demo.m'.

External Examples:

   [OpenCV C++ demo]( and [Mexopencv example](

Tuning Parameters:

	In src/demo.cpp
		1.	#define USE_GPU" (need cudafeatures2d module) 
				using cpu mode by commenting it.
		2.	We suggest using SIFT features for accuracy, and using ORB features for speed.

	In gms_matcher.h
		2.	#define THRESH_FACTOR 6		
				Set it higher for more input matches, and lower for the fewer input matches.
				Often 6 for ORB all matches, and 4 or 3 for SIFT matches (after ratio test).
		3. 	int GetInlierMask(vector<bool> &vbInliers, bool WithScale = false, bool WithRotation = false)
				Set WithScale to be true for wide-baseline matching and false for video matching.
				Set WithRotation to be true if images have significant reative rotations.

## Related projects

 * [FM-Bench]( (BMVC 2019, More evaluation details for GMS.)

back to top