【问题标题】:Bag of Visual Words in OpencvOpencv中的视觉词袋
【发布时间】:2013-11-02 22:57:56
【问题描述】:

我在 opencv 中使用 BOW 对可变大小的特征进行聚类。但是从opencv的文档中还不清楚一件事,我也找不到这个问题的原因:

假设:字典大小 = 100。

我使用 surf 来计算特征,每个图像都有可变大小的描述符,例如:128 x 34、128 x 63 等。现在在 BOW 中,它们中的每一个都是聚类的,我得到一个 128 x 100 的固定描述符大小一个图像。我知道 100 是使用 kmeans 聚类创建的聚类中心。

但我对此感到困惑,如果图像具有 128 x 63 描述符,那么它如何聚集成 100 个簇,这使​​用 kmeans 是不可能的,除非我将描述符矩阵转换为 1D。不转一维会丢失单个关键点的有效128维信息?

我需要知道如何操纵描述符矩阵以仅从 63 个特征中获得 100 个聚类中心。

【问题讨论】:

    标签: opencv computer-vision k-means surf feature-extraction


    【解决方案1】:

    这样想。

    当前图像共有 10 个聚类均值和 6 个特征。这些特征中的前 3 个最接近第 5 个均值,其余 3 个分别最接近第 7 个、第 8 个和第 9 个均值。那么您的功能将类似于[0, 0, 0, 0, 3, 0, 1, 1, 1, 0] 或它的标准化版本。这是 10 维的,这等于集群平均值的数量。因此,您可以根据需要从 63 个特征创建 100000 维向量。

    但我还是觉得有问题,因为在你应用 BOW 之后,你的特征应该是 1x100 而不是 128x100。您的集群平均值为 128x1,并且您正在为这些平均值分配 128x1 大小的特征(第一张图像使用 34 128x1 特征,第二张图像使用 63 128x1 特征等)。因此,基本上您将 34 或 63 个特征分配给 100 个均值,您的结果应该是 1x100。

    【讨论】:

    • 哦,谢谢你说的这么清楚。只是我的正确,我在写 BOW 特征向量大小时犯了一个错误。我检查了它,如你所说,它是 1 x 100。对此表示歉意.. 感谢您提供明确的解决方案
    猜你喜欢
    • 2014-06-28
    • 2016-01-11
    • 1970-01-01
    • 2013-08-14
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2015-02-15
    相关资源
    最近更新 更多