【问题标题】:OpenCV Clustering Bag Of Words K-MeansOpenCV 聚类词袋 K-Means
【发布时间】:2015-02-15 00:27:18
【问题描述】:

SIFT DetectorExtractorFlannBased 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);

Clustered Extracted Keypoints 的数组大小将为[128 x 15]

然后,当在一组不同的 15 个图像上使用 BOWImgDescriptorExtractor 作为 Extractor 时,之前提取的数组作为它的 Vocabulary,数组出现在 [15 x 15]

为什么?

我无法找到关于这一切实际如何运作的太多信息,而只是将它放在哪里以及赋予什么价值。

【问题讨论】:

    标签: c++ opencv cluster-analysis k-means feature-extraction


    【解决方案1】:

    如果您有n 图像和k=15,则结果应始终为[n x 15]

    但在第一次运行中,您查看的是词汇表,而不是第一张图像的特征表示。您看到的128 是 SIFT 维度;这些是 15 个“典型”的 SIFT 向量;它们不是对您的图片的描述。

    需要阅读 BoW 模型,以及为什么结果应该是每个图像的长度为 k 的向量(可能是稀疏的,即有许多 0)。我的印象是您希望这种方法为每张图像生成一个 128 维特征向量。另外,k=15 可能太小了;而且训练数据集也太小了。

    【讨论】:

    • 那么如果使用特征检测器和提取器没有得到图像描述,那是什么?
    • 在您的原始输入图像上也运行 BOWImgDescriptorExtractor。这就是输入图像的特征表示。
    • 现在你忘了先训练......说真的,你是否阅读过关于 BOW 方法的文档(你知道 BOW 代表什么),或者你只是想通过查看OpenCV API?
    • 不,我只是把BOWImgDescriptorExtractor 放错地方了,它的早期人...
    猜你喜欢
    • 2017-12-06
    • 2015-04-11
    • 2018-02-26
    • 2011-08-13
    • 2013-08-08
    • 2013-02-14
    • 2018-01-14
    • 2011-03-08
    • 2011-04-11
    相关资源
    最近更新 更多