class cv::BOWImgDescriptorExtractor

Overview

Class to compute an image descriptor using the bag of visual words. Moreā€¦

#include <features2d.hpp>

class BOWImgDescriptorExtractor
{
public:
    // construction

    BOWImgDescriptorExtractor(
        const Ptr<DescriptorExtractor>& dextractor,
        const Ptr<DescriptorMatcher>& dmatcher
        );

    BOWImgDescriptorExtractor(const Ptr<DescriptorMatcher>& dmatcher);

    // methods

    void
    compute(
        InputArray image,
        std::vector<KeyPoint>& keypoints,
        OutputArray imgDescriptor,
        std::vector<std::vector<int>>* pointIdxsOfClusters = 0,
        Mat* descriptors = 0
        );

    void
    compute(
        InputArray keypointDescriptors,
        OutputArray imgDescriptor,
        std::vector<std::vector<int>>* pointIdxsOfClusters = 0
        );

    void
    compute2(
        const Mat& image,
        std::vector<KeyPoint>& keypoints,
        Mat& imgDescriptor
        );

    int
    descriptorSize() const;

    int
    descriptorType() const;

    const Mat&
    getVocabulary() const;

    void
    setVocabulary(const Mat& vocabulary);

protected:
    // fields

    Ptr<DescriptorExtractor> dextractor;
    Ptr<DescriptorMatcher> dmatcher;
    Mat vocabulary;
};

Detailed Documentation

Class to compute an image descriptor using the bag of visual words.

Such a computation consists of the following steps:

  1. Compute descriptors for a given image and its keypoints set.
  2. Find the nearest visual words from the vocabulary for each keypoint descriptor.
  3. Compute the bag-of-words image descriptor as is a normalized histogram of vocabulary words encountered in the image. The i-th bin of the histogram is a frequency of i-th word of the vocabulary in the given image.

Construction

BOWImgDescriptorExtractor(
    const Ptr<DescriptorExtractor>& dextractor,
    const Ptr<DescriptorMatcher>& dmatcher
    )

The constructor.

Parameters:

dextractor Descriptor extractor that is used to compute descriptors for an input image and its keypoints.
dmatcher Descriptor matcher that is used to find the nearest word of the trained vocabulary for each keypoint descriptor of the image.
BOWImgDescriptorExtractor(const Ptr<DescriptorMatcher>& dmatcher)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Methods

void
compute(
    InputArray image,
    std::vector<KeyPoint>& keypoints,
    OutputArray imgDescriptor,
    std::vector<std::vector<int>>* pointIdxsOfClusters = 0,
    Mat* descriptors = 0
    )

Computes an image descriptor using the set visual vocabulary.

Parameters:

image Image, for which the descriptor is computed.
keypoints Keypoints detected in the input image.
imgDescriptor Computed output image descriptor.
pointIdxsOfClusters Indices of keypoints that belong to the cluster. This means that pointIdxsOfClusters[i] are keypoint indices that belong to the i -th cluster (word of vocabulary) returned if it is non-zero.
descriptors Descriptors of the image keypoints that are returned if they are non-zero.
void
compute(
    InputArray keypointDescriptors,
    OutputArray imgDescriptor,
    std::vector<std::vector<int>>* pointIdxsOfClusters = 0
    )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:

keypointDescriptors Computed descriptors to match with vocabulary.
imgDescriptor Computed output image descriptor.
pointIdxsOfClusters Indices of keypoints that belong to the cluster. This means that pointIdxsOfClusters[i] are keypoint indices that belong to the i -th cluster (word of vocabulary) returned if it is non-zero.
int
descriptorSize() const

Returns an image descriptor size if the vocabulary is set. Otherwise, it returns 0.

int
descriptorType() const

Returns an image descriptor type.

const Mat&
getVocabulary() const

Returns the set vocabulary.

void
setVocabulary(const Mat& vocabulary)

Sets a visual vocabulary.

Parameters:

vocabulary Vocabulary (can be trained using the inheritor of BOWTrainer). Each row of the vocabulary is a visual word (cluster center).