这一节描述了局部2D特征点描述方法并用来对象分类
opencv_source_code/samples/cpp/bagofwords_classification.cpp可以找到完整的bag-of-words的例子
opencv_source_code/samples/python2/find_obj.py
BOWTrainer::add
增加描述符到训练集.
-
C++:
-
Parameters: - descriptors – 增加到训练集的描述符。每一个描述符矩阵是一个描述符。
void
BOWTrainer::
add
(const Mat&
descriptors
)
训练集合使用聚类方法聚类构建词典
BOWTrainer::getDescriptors
返回一个描述符的训练集合。
-
C++:
const vector<Mat>&
BOWTrainer::
getDescriptors
(
)
const
BOWTrainer::descripotorsCount
返回训练集中存储的所以描述符的数量。
-
C++:
int
BOWTrainer::
descripotorsCount
(
)
const
BOWTrainer::cluster
聚类训练描述符。
-
C++:
Mat
BOWTrainer::
cluster
(
)
const
-
C++:
-
Parameters: - descriptors – 需要聚类的描述符,但是不会添加到训练描述符集合。
Mat
BOWTrainer::
cluster
(const Mat&
descriptors
)
const
词汇表包含聚类中心。因此这个方法返回词汇表。在第一种方法中,存储的训练描述符被聚类。在第二种方法中,输入的描述符被聚类。
BOWKMeansTrainer
-
class
BOWKMeansTrainer
:
public
BOWTrainer
kmeans()
-使用bag of visual words方法训练视觉词典。
BOWKMeansTrainer::BOWKMeansTrainer
The constructor.
-
C++:
-
通Kmeans()方法参数。
BOWKMeansTrainer::
BOWKMeansTrainer
(int
clusterCount, const TermCriteria&
termcrit=TermCriteria(), int
attempts=3, int
flags=KMEANS_PP_CENTERS
)
BOWImgDescriptorExtractor
-
class
BOWImgDescriptorExtractor
使用bag of visual words计算一副图像的描述子的类。包含下列几个步骤:
- 计算给定图像的描述符和它的关键点集合;
- 对每个关键点描述符查找最近的视觉单词;
- 计算图像描述符的词袋模型作为一个归一化的词汇表直方图,直方图的第i个是第i个词出现的频率。
BOWImgDescriptorExtractor::BOWImgDescriptorExtractor
-
C++:
-
Parameters: - dextractor – 描述符提取器,用于计算输入图像和关键点的描述符;
- dmatcher – 描述符匹配器,对于图像的每一个关键点描述符查找最近的词典
BOWImgDescriptorExtractor::
BOWImgDescriptorExtractor
(const Ptr<DescriptorExtractor>&
dextractor, const Ptr<DescriptorMatcher>&
dmatcher
)
BOWImgDescriptorExtractor::setVocabulary
设置一个视觉词汇。
-
C++:
-
Parameters: - vocabulary – 词汇(可以通过
BOWTrainer
训练得到)词汇的每一行是一个视觉词(聚类中心)。
- vocabulary – 词汇(可以通过
void
BOWImgDescriptorExtractor::
setVocabulary
(const Mat&
vocabulary
)
BOWImgDescriptorExtractor::getVocabulary
返回词汇。
-
C++:
const Mat&
BOWImgDescriptorExtractor::
getVocabulary
(
)
const
BOWImgDescriptorExtractor::compute
使用给定的视觉词汇计算一个图像的描述符。
-
C++:
-
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 thei
-th cluster (word of vocabulary) returned if it is non-zero.(这个地方翻译的不准确) - descriptors – 图像关键点的描述符返回,如果他们是非零的。
void
BOWImgDescriptorExtractor::
compute
(const Mat&
image, vector<KeyPoint>&
keypoints, Mat&
imgDescriptor, vector<vector<int>>*
pointIdxsOfClusters=0, Mat*
descriptors=0
)
BOWImgDescriptorExtractor::descriptorSize
若词汇设置了,则返回图像描述符的尺寸,否则返回0。
-
C++:
int
BOWImgDescriptorExtractor::
descriptorSize
(
)
const
BOWImgDescriptorExtractor::descriptorType
返回一个图像描述符的尺寸Returns an image descriptor type.
-
C++:
int
BOWImgDescriptorExtractor::
descriptorType
(
)
const