BOW( opencv源码)

本文介绍基于视觉词典包(BOW)的图像特征描述子训练与图像目标分类方法,包括BOWTrainer和BOWKMeansTrainer类的使用,以及如何利用BOWImgDescriptorExtractor类计算图像特征描述子。
部署运行你感兴趣的模型镜像

物体目标分类

这章描述了局部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

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值