Experimental 2D Features Matching Algorithm#

Detailed Description#

This section describes the following matching strategies:

  • GMS: Grid-based Motion Statistics, [29]

  • LOGOS: Local geometric support for high-outlier spatial verification, [195]

Function Documentation#

matchGMS()#

void cv::xfeatures2d::matchGMS(
const Size & size1,
const Size & size2,
const std::vector< KeyPoint > & keypoints1,
const std::vector< KeyPoint > & keypoints2,
const std::vector< DMatch > & matches1to2,
std::vector< DMatch > & matchesGMS,
const bool withRotation = false,
const bool withScale = false,
const double thresholdFactor = 6.0 )

#include <opencv2/xfeatures2d.hpp>

GMS (Grid-based Motion Statistics) feature matching strategy described in [29] .

Note

Since GMS works well when the number of features is large, we recommend to use the ORB feature and set FastThreshold to 0 to get as many as possible features quickly. If matching results are not satisfying, please add more features. (We use 10000 for images with 640 X 480). If your images have big rotation and scale changes, please set withRotation or withScale to true.

Parameters

  • size1 — Input size of image1.

  • size2 — Input size of image2.

  • keypoints1 — Input keypoints of image1.

  • keypoints2 — Input keypoints of image2.

  • matches1to2 — Input 1-nearest neighbor matches.

  • matchesGMS — Matches returned by the GMS matching strategy.

  • withRotation — Take rotation transformation into account.

  • withScale — Take scale transformation into account.

  • thresholdFactor — The higher, the less matches.

matchLOGOS()#

void cv::xfeatures2d::matchLOGOS(
const std::vector< KeyPoint > & keypoints1,
const std::vector< KeyPoint > & keypoints2,
const std::vector< int > & nn1,
const std::vector< int > & nn2,
std::vector< DMatch > & matches1to2 )

#include <opencv2/xfeatures2d.hpp>

LOGOS (Local geometric support for high-outlier spatial verification) feature matching strategy described in [195] .

Note

This matching strategy is suitable for features matching against large scale database. First step consists in constructing the bag-of-words (BoW) from a representative image database. Image descriptors are then represented by their closest codevector (nearest BoW centroid).

Parameters

  • keypoints1 — Input keypoints of image1.

  • keypoints2 — Input keypoints of image2.

  • nn1 — Index to the closest BoW centroid for each descriptors of image1.

  • nn2 — Index to the closest BoW centroid for each descriptors of image2.

  • matches1to2 — Matches returned by the LOGOS matching strategy.