OpenCV  5.0.0-pre Open Source Computer Vision
Experimental 2D Features Matching Algorithm

Functions

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)
GMS (Grid-based Motion Statistics) feature matching strategy described in [22] . More...

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)
LOGOS (Local geometric support for high-outlier spatial verification) feature matching strategy described in [159] . More...

Detailed Description

This section describes the following matching strategies:

• GMS: Grid-based Motion Statistics, [22]
• LOGOS: Local geometric support for high-outlier spatial verification, [159]

◆ 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 )
Python:
cv.xfeatures2d.matchGMS(size1, size2, keypoints1, keypoints2, matches1to2[, withRotation=false, withScale=false, thresholdFactor=6.0]) -> matchesGMS

#include <opencv2/xfeatures2d.hpp>

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

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

◆ 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 )
Python:
cv.xfeatures2d.matchLOGOS(keypoints1, keypoints2, nn1, nn2, matches1to2[, ]) -> None

#include <opencv2/xfeatures2d.hpp>

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

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.
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).