3

我正在尝试使用普通贝叶斯分类器使用 sift 进行对象分类。当我为每个可变大小的图像计算描述符时,我得到不同大小的特征向量。例如:

Feature Size: [128 x 39]

Feature Size: [128 x 54] 

Feature Size: [128 x 69]

Feature Size: [128 x 64]

Feature Size: [128 x 14]

至于开发,我使用了 20 个训练图像,因此我有 20 个标签。我的分类只有 3 个类别,包括车、书和球。所以我的标签向量大小是 [1 x 20]

据我了解,要执行机器学习,特征向量大小和标签向量大小应该相同,因此我应该将训练数据的向量大小设为 [__ x 20],标签为 [1 x 20]。

但我的问题是 sift 有 128 维的特征空间,因此每个图像都有不同的特征大小,如上图所示。如何在不丢失功能的情况下将所有内容转换为相同大小?或者也许我做错了,所以请帮我解决这个问题?

PS:实际上我已经使用 BOW 模型完成了它并且它有效但只是为了我的学习目的我试图在这件事上这样做只是为了学习出于兴趣所以欢迎任何提示和建议。谢谢

4

2 回答 2

4

你是对的,SIFT 描述符是一个 128 维的特征。

为图像中检测到的每个关键点计算 SIFT 描述符。在计算描述符之前,您可能使用了检测器(如 Harris、Sift 或 Surf 检测器)来检测兴趣点。

检测关键点和计算描述符是两个独立的步骤!

当您 Feature Size: [128 x Y] 在程序中打印时,Y 表示在当前图像中检测到的关键点的数量。

通常,使用 BOW 允许您为每个关键点描述符分配 BOW 中最近集群的索引。根据您的应用程序,您可以做出决定...(对场景中是否存在一个对象进行投票或...)

于 2013-07-17T09:11:20.017 回答
0

如果您不想使用 BOW,您可以尝试匹配Lowe 原始 SIFT 论文中描述的各个 SIFT 特征。

基本思想是您将两个图像相互比较并决定它们是否相似。您可以通过比较各个 SIFT 特征来做到这一点。你决定它们是否匹配。然后,要检查空间位置是否一致,您需要检查是否可以将匹配的特征从一张图像转换到另一张图像。

它在SIFT 维基百科文章中有更详细的描述。

于 2013-07-17T09:20:51.780 回答