class cv::detail::AffineBestOf2NearestMatcher

Overview

Features matcher similar to cv::detail::BestOf2NearestMatcher which finds two best matches for each feature and leaves the best one only if the ratio between descriptor distances is greater than the threshold match_conf. More…

#include <matchers.hpp>

class AffineBestOf2NearestMatcher: public cv::detail::BestOf2NearestMatcher
{
public:
    // construction

    AffineBestOf2NearestMatcher(
        bool full_affine = false,
        bool try_use_gpu = false,
        float match_conf = 0.3f,
        int num_matches_thresh1 = 6
        );

protected:
    // fields

    bool full_affine_;

    // methods

    virtual
    void
    match(
        const ImageFeatures& features1,
        const ImageFeatures& features2,
        MatchesInfo& matches_info
        );
};

Inherited Members

public:
    // methods

    virtual
    void
    collectGarbage();

    bool
    isThreadSafe() const;

    void
    operator()(
        const ImageFeatures& features1,
        const ImageFeatures& features2,
        MatchesInfo& matches_info
        );

    void
    operator()(
        const std::vector<ImageFeatures>& features,
        std::vector<MatchesInfo>& pairwise_matches,
        const cv::UMat& mask = cv::UMat()
        );

    virtual
    void
    collectGarbage();

protected:
    // fields

    bool is_thread_safe_;
    Ptr<FeaturesMatcher> impl_;
    int num_matches_thresh1_;
    int num_matches_thresh2_;

    // methods

    virtual
    void
    match(
        const ImageFeatures& features1,
        const ImageFeatures& features2,
        MatchesInfo& matches_info
        ) = 0;

    virtual
    void
    match(
        const ImageFeatures& features1,
        const ImageFeatures& features2,
        MatchesInfo& matches_info
        );

Detailed Documentation

Features matcher similar to cv::detail::BestOf2NearestMatcher which finds two best matches for each feature and leaves the best one only if the ratio between descriptor distances is greater than the threshold match_conf.

Unlike cv::detail::BestOf2NearestMatcher this matcher uses affine transformation (affine trasformation estimate will be placed in matches_info).

See also:

cv::detail::FeaturesMatcher cv::detail::BestOf2NearestMatcher

Construction

AffineBestOf2NearestMatcher(
    bool full_affine = false,
    bool try_use_gpu = false,
    float match_conf = 0.3f,
    int num_matches_thresh1 = 6
    )

Constructs a “best of 2 nearest” matcher that expects affine trasformation between images.

Parameters:

full_affine whether to use full affine transformation with 6 degress of freedom or reduced transformation with 4 degrees of freedom using only rotation, translation and uniform scaling
try_use_gpu Should try to use GPU or not
match_conf Match distances ration threshold
num_matches_thresh1 Minimum number of matches required for the 2D affine transform estimation used in the inliers classification step

See also:

cv::estimateAffine2D cv::estimateAffinePartial2D

Methods

virtual
void
match(
    const ImageFeatures& features1,
    const ImageFeatures& features2,
    MatchesInfo& matches_info
    )

This method must implement matching logic in order to make the wrappers detail::FeaturesMatcher::operator()_ work.

Parameters:

features1 first image features
features2 second image features
matches_info found matches