3

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

假设:字典大小 = 100。

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

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

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

4

1 回答 1

11

像这样想。

当前图像有 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。

于 2013-10-24T11:11:52.977 回答