OpenCV 聚类袋的单词 k 表示
OpenCV Clustering Bag Of Words K-Means
使用 SIFT Detector
和 Extractor
,带有 FlannBased Matcher
,以及为BOWKMeansTrainer
设置的Dictionary
如下所示:
TermCriteria termCrit(CV_TERMCRIT_ITER, 100, 0.001);
int dictionarySize = 15; // -- Same as number of images given in
int retries = 1;
int flags = KMEANS_PP_CENTERS;
BOWKMeansTrainer trainBowTrainer(dictionarySize, termCrit, retries, flags);
聚集提取的关键点的数组大小将以[128 x 15]
.
然后,当使用 BOWImgDescriptorExtractor
作为另一组 15 张图像的Extractor
时,将先前提取的数组作为其Vocabulary
,数组以 [15 x 15]
出现。
为什么?
我找不到太多关于这一切实际如何运作的信息,而只是把它放在哪里以及给予什么价值。
如果您有n
图像和k=15
,则结果应始终[n x 15]
。
但是在第一次运行中,您查看的是词汇表,而不是第一个图像的特征表示。您在那里看到128
是 SIFT 维度;这些是 15 个"典型"SIFT 向量;它们不是对您的图像的描述。
您需要阅读 BoW 模型,以及为什么结果应该是每个图像的长度k
(可能稀疏,即有许多 0)的向量。我的印象是,您希望这种方法为每个图像生成一个 128 维特征向量。此外,k=15 可能太小了;而且训练数据集也太小了。
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- 文本文件中的单词链表
- 如何将ampl中的集合表示为c++中的向量
- 在指针的帮助下,文本文件中单词的频率
- std::is_base_of表示ctor编译错误
- 输入中的字符串数未知(以字母表示)
- 我可以信任表示整数的浮点或双精度来保持精度吗
- 如何根据单词在文本中出现的概率输出单词
- c++模板来表示多项式
- 从字符串变量中逐字符读取单词
- 使用std::mt19937从字符串中返回一个随机单词
- 询问在设计我的手臂模拟器功能表示格式1
- CMakeLists.txt中的命名空间表示法
- 如何用for循环在c++中生成单词三角形
- 将数字转换为单词
- 使用if-else将数字转换为单词
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- C++-字符串是否包含一个带有简单循环的单词
- 向量中的常用单词用C++表示单词出现的次数
- OpenCV 聚类袋的单词 k 表示