BOWTrainer

这一节描述了局部2D特征点描述方法并用来对象分类

opencv_source_code/samples/cpp/bagofwords_classification.cpp可以找到完整的bag-of-words的例子

opencv_source_code/samples/python2/find_obj.py

class BOWTrainer
{
public:
    BOWTrainer(){}
    virtual ~BOWTrainer(){}

    void add( const Mat& descriptors );
    const vector<Mat>& getDescriptors() const;
    int descripotorsCount() const;

    virtual void clear();

    virtual Mat cluster() const = 0;
    virtual Mat cluster( const Mat& descriptors ) const = 0;

protected:
    ...
};

BOWTrainer::add

增加描述符到训练集.

C++:  void  BOWTrainer:: add (const Mat&  descriptors )
Parameters:
  • descriptors – 增加到训练集的描述符。每一个描述符矩阵是一个描述符。

训练集合使用聚类方法聚类构建词典

BOWTrainer::getDescriptors

返回一个描述符的训练集合。

C++:  const vectorBOWTrainer:: getDescriptors ( )  const

BOWTrainer::descripotorsCount

返回训练集中存储的所以描述符的数量。

C++:  int  BOWTrainer:: descripotorsCount ( )  const

BOWTrainer::cluster

聚类训练描述符。

C++:  Mat  BOWTrainer:: cluster ( )  const
C++:  Mat  BOWTrainer:: cluster (const Mat&  descriptors )  const
Parameters:
  • descriptors – 需要聚类的描述符,但是不会添加到训练描述符集合。

词汇表包含聚类中心。因此这个方法返回词汇表。在第一种方法中,存储的训练描述符被聚类。在第二种方法中,输入的描述符被聚类。

BOWKMeansTrainer

class  BOWKMeansTrainer :  public  BOWTrainer

kmeans() -使用bag of visual words方法训练视觉词典。

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:
    ...
};

BOWKMeansTrainer::BOWKMeansTrainer

The constructor.

C++:   BOWKMeansTrainer:: BOWKMeansTrainer (int  clusterCount, const TermCriteria&  termcrit=TermCriteria(), int  attempts=3, int  flags=KMEANS_PP_CENTERS  )

通Kmeans()方法参数。

BOWImgDescriptorExtractor

class  BOWImgDescriptorExtractor
使用bag of visual words计算一副图像的描述子的类。包含下列几个步骤:
  1. 计算给定图像的描述符和它的关键点集合;
  2. 对每个关键点描述符查找最近的视觉单词;
  3. 计算图像描述符的词袋模型作为一个归一化的词汇表直方图,直方图的第i个是第i个词出现的频率。
class BOWImgDescriptorExtractor
{
public:
    BOWImgDescriptorExtractor( const Ptr<DescriptorExtractor>& dextractor,
                               const Ptr<DescriptorMatcher>& dmatcher );
    virtual ~BOWImgDescriptorExtractor(){}

    void setVocabulary( const Mat& vocabulary );
    const Mat& getVocabulary() const;
    void compute( const Mat& image, vector<KeyPoint>& keypoints,
                  Mat& imgDescriptor,
                  vector<vector<int> >* pointIdxsOfClusters=0,
                  Mat* descriptors=0 );
    int descriptorSize() const;
    int descriptorType() const;

protected:
    ...
};

BOWImgDescriptorExtractor::BOWImgDescriptorExtractor

C++:   BOWImgDescriptorExtractor:: BOWImgDescriptorExtractor (const Ptrdextractor, const Ptrdmatcher )
Parameters:
  • dextractor – 描述符提取器,用于计算输入图像和关键点的描述符;
  • dmatcher – 描述符匹配器,对于图像的每一个关键点描述符查找最近的词典

BOWImgDescriptorExtractor::setVocabulary

设置一个视觉词汇。

C++:  void  BOWImgDescriptorExtractor:: setVocabulary (const Mat&  vocabulary )
Parameters:
  • vocabulary – 词汇(可以通过BOWTrainer 训练得到)词汇的每一行是一个视觉词(聚类中心)。

BOWImgDescriptorExtractor::getVocabulary

返回词汇。

C++:  const Mat&  BOWImgDescriptorExtractor:: getVocabulary ( )  const

BOWImgDescriptorExtractor::compute

使用给定的视觉词汇计算一个图像的描述符。

C++:  void  BOWImgDescriptorExtractor:: compute (const Mat&  image, vectorkeypoints, Mat&  imgDescriptor, vector>*  pointIdxsOfClusters=0, Mat*  descriptors=0  )
Parameters:
  • image – 图像(需要计算描述符的图像);
  • keypoints – 输入图像校测到的关键点;
  • imgDescriptor – 计算并输出的图像描述符;
  • pointIdxsOfClusters – 关键点属于哪一类的目录,这意味着当pointIdxsOfClusters[i]非零时,它的值是属于第i聚类的关键点目录。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 – 图像关键点的描述符返回,如果他们是非零的。

BOWImgDescriptorExtractor::descriptorSize

若词汇设置了,则返回图像描述符的尺寸,否则返回0。

C++:  int  BOWImgDescriptorExtractor:: descriptorSize ( )  const

BOWImgDescriptorExtractor::descriptorType

返回一个图像描述符的尺寸Returns an image descriptor type.

C++:  int  BOWImgDescriptorExtractor:: descriptorType ( )  const

你可能感兴趣的:(BOWTrainer)