这一节描述了局部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:
...
};
增加描述符到训练集.
void
BOWTrainer::
add
(const Mat&
descriptors
)
Parameters: |
|
---|
训练集合使用聚类方法聚类构建词典
返回一个描述符的训练集合。
const vectorBOWTrainer::
getDescriptors
(
)
const
返回训练集中存储的所以描述符的数量。
int
BOWTrainer::
descripotorsCount
(
)
const
聚类训练描述符。
Mat
BOWTrainer::
cluster
(
)
const
Mat
BOWTrainer::
cluster
(const Mat&
descriptors
)
const
Parameters: |
|
---|
词汇表包含聚类中心。因此这个方法返回词汇表。在第一种方法中,存储的训练描述符被聚类。在第二种方法中,输入的描述符被聚类。
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:
...
};
The constructor.
BOWKMeansTrainer::
BOWKMeansTrainer
(int
clusterCount, const TermCriteria&
termcrit=TermCriteria(), int
attempts=3, int
flags=KMEANS_PP_CENTERS
)
通Kmeans()方法参数。
BOWImgDescriptorExtractor
- 计算给定图像的描述符和它的关键点集合;
- 对每个关键点描述符查找最近的视觉单词;
- 计算图像描述符的词袋模型作为一个归一化的词汇表直方图,直方图的第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
(const PtrParameters: |
|
---|
设置一个视觉词汇。
void
BOWImgDescriptorExtractor::
setVocabulary
(const Mat&
vocabulary
)
Parameters: |
|
---|
返回词汇。
const Mat&
BOWImgDescriptorExtractor::
getVocabulary
(
)
const
使用给定的视觉词汇计算一个图像的描述符。
void
BOWImgDescriptorExtractor::
compute
(const Mat&
image, vectorParameters: |
|
---|
若词汇设置了,则返回图像描述符的尺寸,否则返回0。
int
BOWImgDescriptorExtractor::
descriptorSize
(
)
const
返回一个图像描述符的尺寸Returns an image descriptor type.
int
BOWImgDescriptorExtractor::
descriptorType
(
)
const