BOW( opencv源码)

物体目标分类

这章描述了局部2维图像特征相关算法和基于这些特征的二维图像中的物体目标分类。

BOWTrainer

class  BOWTrainer

给定训练图像的特征描述子集,该抽象基类用于训练 视觉词典包 词典. 具体参考文章 Visual Categorization with Bags of Keypoints by 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<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 – 向训练集中增加特征描述子. descriptors 矩阵中每一行就是一个特征描述子.

训练集可以用 clustermethod 聚类来构造视觉词典。

BOWTrainer::getDescriptors

返回训练集中的特征描述子.

C++:  const vector<Mat>&  BOWTrainer:: getDescriptors ( )  const

BOWTrainer::descripotorsCount

返回训练集中所有存储的特征描述子的数量.

C++:  const vector<Mat>&  BOWTrainer:: descripotorsCount ( )  const

BOWTrainer::cluster

根据训练集进行聚类.

C++:  Mat  BOWTrainer:: cluster ( )  const
C++:  Mat  BOWTrainer:: cluster (const Mat&  descriptors )  const
Parameters:
  • descriptors – 用于聚类的特征描述子. descriptors 矩阵中每一行 是一个特征描述子. 特征描述子不会被添加到训练集中部.

视觉词典包含聚类中信. 因此,这个方法返回的是视觉词典. 在输入为空的条件下, 存储在训练集中的特征描述子被用来聚类. 在输入特定的特征描述子矩阵条件下, 输入的特征描述子被用来聚类.

BOWKMeansTrainer

class  BOWKMeansTrainer

kmeans() -用于训练视觉词典的基类. 采用 视觉词典包 算法实现。

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

构造函数.

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

See kmeans() function parameters.

BOWImgDescriptorExtractor

class  BOWImgDescriptorExtractor

基于 视觉词典包 算法来计算一个图像的特征描述子的类. 算法步骤如下:

  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 Ptr<DescriptorExtractor>&  dextractor, const Ptr<DescriptorMatcher>&  dmatcher )

:param dextractor:给定一幅图像及其图像特征检测子(关键点)集,计算对应的特征描述子.

Parameters:
  • 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, vector<KeyPoint>&  keypoints, Mat&  imgDescriptor, vector<vector<int>>*  pointIdxsOfClusters=0, Mat*  descriptors=0  )
Parameters:
  • image – 输入图像.
  • keypoints – 对于给定输入图像输出的图像特征检测子(关键点).
  • imgDescriptor – 待输出的特征描述子.
  • pointIdxsOfClusters – 属于该聚类中心的关键点的标号. pointIdxsOfClusters[i] 是在非空条件下,属于第``i``个聚类中心 (视觉词典的词)的关键点的标号.
  • descriptors – 在非空条件下,返回图像检测子(关键点)对应的图像特征描述子.

BOWImgDescriptorExtractor::descriptorSize

如果字典已经生成,返回图像特征描述子矩阵的尺寸. 否则,返回0.

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

BOWImgDescriptorExtractor::descriptorType

返回图像特征描述子类型.

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

翻译者

bittnt@ OpenCV中文网站 <kylezheng04@gmail.com>

转http://www.opencv.org.cn/opencvdoc/2.3.2/html/modules/features2d/doc/object_categorization.html#bowimgdescriptorextractor-compute

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值