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:
- Compute descriptors for a given image and its keypoints set.
- Find the nearest visual words from the vocabulary for each keypoint descriptor.
- 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). |