This section describes the following matching strategies:
- GMS: Grid-based Motion Statistics, [26]
- LOGOS: Local geometric support for high-outlier spatial verification, [175]
|
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 [26] .
|
|
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 [175] .
|
|
◆ 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[, withScale[, thresholdFactor]]] | ) -> | matchesGMS |
#include <opencv2/xfeatures2d.hpp>
GMS (Grid-based Motion Statistics) feature matching strategy described in [26] .
- 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 |
#include <opencv2/xfeatures2d.hpp>
LOGOS (Local geometric support for high-outlier spatial verification) feature matching strategy described in [175] .
- 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).