Object Categorization ===================== .. highlight:: cpp Some approaches based on local 2D features and used to object categorization are described in this section. .. index:: BOWTrainer .. _BOWTrainer: BOWTrainer ---------- `id=0.624981548431 Comments from the Wiki `__ .. ctype:: BOWTrainer Abstract base class for training ''bag of visual words'' vocabulary from a set of descriptors. See e.g. ''Visual Categorization with Bags of Keypoints'' of Gabriella Csurka, Christopher R. Dance, Lixin Fan, Jutta Willamowski, Cedric Bray, 2004. :: class BOWTrainer { public: BOWTrainer(){} virtual ~BOWTrainer(){} void add( const Mat& descriptors ); const vector& getDescriptors() const; int descripotorsCount() const; virtual void clear(); virtual Mat cluster() const = 0; virtual Mat cluster( const Mat& descriptors ) const = 0; protected: ... }; .. .. index:: BOWTrainer::add cv::BOWTrainer::add ------------------- `id=0.55981141615 Comments from the Wiki `__ ```` .. cfunction:: void BOWTrainer::add( const Mat\& descriptors ) Add descriptors to training set. The training set will be clustered using clustermethod to construct vocabulary. :param descriptors: Descriptors to add to training set. Each row of ``descriptors`` matrix is a one descriptor. .. index:: BOWTrainer::getDescriptors cv::BOWTrainer::getDescriptors ------------------------------ `id=0.197213441608 Comments from the Wiki `__ .. cfunction:: const vector\& BOWTrainer::getDescriptors() const Returns training set of descriptors. .. index:: BOWTrainer::descripotorsCount cv::BOWTrainer::descripotorsCount --------------------------------- `id=0.589567188232 Comments from the Wiki `__ .. cfunction:: const vector\& BOWTrainer::descripotorsCount() const Returns count of all descriptors stored in the training set. .. index:: BOWTrainer::cluster cv::BOWTrainer::cluster ----------------------- `id=0.499465812452 Comments from the Wiki `__ .. cfunction:: Mat BOWTrainer::cluster() const Cluster train descriptors. Vocabulary consists from cluster centers. So this method returns vocabulary. In first method variant the stored in object train descriptors will be clustered, in second variant -- input descriptors will be clustered. .. cfunction:: Mat BOWTrainer::cluster( const Mat\& descriptors ) const :param descriptors: Descriptors to cluster. Each row of ``descriptors`` matrix is a one descriptor. Descriptors will not be added to the inner train descriptor set. .. index:: BOWKMeansTrainer .. _BOWKMeansTrainer: BOWKMeansTrainer ---------------- `id=0.056318363983 Comments from the Wiki `__ .. ctype:: BOWKMeansTrainer :func:`kmeans` based class to train visual vocabulary using the ''bag of visual words'' approach. :: class BOWKMeansTrainer : public BOWTrainer { public: BOWKMeansTrainer( int clusterCount, const TermCriteria& termcrit=TermCriteria(), int attempts=3, int flags=KMEANS_PP_CENTERS ); virtual ~BOWKMeansTrainer(){} // Returns trained vocabulary (i.e. cluster centers). virtual Mat cluster() const; virtual Mat cluster( const Mat& descriptors ) const; protected: ... }; .. To gain an understanding of constructor parameters see :func:`kmeans` function arguments. .. index:: BOWImgDescriptorExtractor .. _BOWImgDescriptorExtractor: BOWImgDescriptorExtractor ------------------------- `id=0.0305574768224 Comments from the Wiki `__ .. ctype:: BOWImgDescriptorExtractor Class to compute image descriptor using ''bad of visual words''. In few, such computing consists from the following steps: 1. Compute descriptors for given image and it's keypoints set, \ 2. Find nearest visual words from vocabulary for each keypoint descriptor, \ 3. Image descriptor is a normalized histogram of vocabulary words encountered in the image. I.e. ``i`` -bin of the histogram is a frequency of ``i`` -word of vocabulary in the given image. :: class BOWImgDescriptorExtractor { public: BOWImgDescriptorExtractor( const Ptr& dextractor, const Ptr& dmatcher ); virtual ~BOWImgDescriptorExtractor(){} void setVocabulary( const Mat& vocabulary ); const Mat& getVocabulary() const; void compute( const Mat& image, vector& keypoints, Mat& imgDescriptor, vector >* pointIdxsOfClusters=0, Mat* descriptors=0 ); int descriptorSize() const; int descriptorType() const; protected: ... }; .. .. index:: BOWImgDescriptorExtractor::BOWImgDescriptorExtractor cv::BOWImgDescriptorExtractor::BOWImgDescriptorExtractor -------------------------------------------------------- `id=0.204827459102 Comments from the Wiki `__ .. cfunction:: BOWImgDescriptorExtractor::BOWImgDescriptorExtractor( const Ptr\& dextractor, const Ptr\& dmatcher ) Constructor. :param dextractor: Descriptor extractor that will be used to compute descriptors for input image and it's keypoints. :param dmatcher: Descriptor matcher that will be used to find nearest word of trained vocabulary to each keupoints descriptor of the image. .. index:: BOWImgDescriptorExtractor::setVocabulary cv::BOWImgDescriptorExtractor::setVocabulary -------------------------------------------- `id=0.137316738477 Comments from the Wiki `__ .. cfunction:: void BOWImgDescriptorExtractor::setVocabulary( const Mat\& vocabulary ) Method to set visual vocabulary. :param vocabulary: Vocabulary (can be trained using inheritor of :func:`BOWTrainer` ). Each row of vocabulary is a one visual word (cluster center). .. index:: BOWImgDescriptorExtractor::getVocabulary cv::BOWImgDescriptorExtractor::getVocabulary -------------------------------------------- `id=0.100098837965 Comments from the Wiki `__ .. cfunction:: const Mat\& BOWImgDescriptorExtractor::getVocabulary() const Returns set vocabulary. .. index:: BOWImgDescriptorExtractor::compute cv::BOWImgDescriptorExtractor::compute -------------------------------------- `id=0.913461508095 Comments from the Wiki `__ .. cfunction:: void BOWImgDescriptorExtractor::compute( const Mat\& image, vector\& keypoints, Mat\& imgDescriptor, vector >* pointIdxsOfClusters=0, Mat* descriptors=0 ) Compute image descriptor using set visual vocabulary. :param image: The image. Image descriptor will be computed for this. :param keypoints: Keypoints detected in the input image. :param imgDescriptor: This is output, i.e. computed image descriptor. :param pointIdxsOfClusters: Indices of keypoints which belong to the cluster, i.e. ``pointIdxsOfClusters[i]`` is keypoint indices which belong to the ``i-`` cluster (word of vocabulary) (returned if it is not 0.) :param descriptors: Descriptors of the image keypoints (returned if it is not 0.) .. index:: BOWImgDescriptorExtractor::descriptorSize cv::BOWImgDescriptorExtractor::descriptorSize --------------------------------------------- `id=0.813385359449 Comments from the Wiki `__ .. cfunction:: int BOWImgDescriptorExtractor::descriptorSize() const Returns image discriptor size, if vocabulary was set, and 0 otherwise. .. index:: BOWImgDescriptorExtractor::descriptorType cv::BOWImgDescriptorExtractor::descriptorType --------------------------------------------- `id=0.500242248636 Comments from the Wiki `__ .. cfunction:: int BOWImgDescriptorExtractor::descriptorType() const Returns image descriptor type.