OpenCV 聚类袋的单词 k 表示

OpenCV Clustering Bag Of Words K-Means

本文关键字:表示 单词 聚类 OpenCV      更新时间:2023-10-16

使用 SIFT DetectorExtractor ,带有 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 可能太小了;而且训练数据集也太小了。