如何获得固定大小的 SIFT 特征向量?

Posted

技术标签:

【中文标题】如何获得固定大小的 SIFT 特征向量?【英文标题】:How to get a fixed size SIFT feature vector? 【发布时间】:2014-06-03 07:12:11 【问题描述】:

我试图在我的数据集中获得 N =~ 1300 张图像的特征向量,我必须实现的特征之一是形状。所以我打算使用 SIFT 描述符。但是,每个图像返回不同数量的关键点,所以我运行

[F,D] = vl_sift(image);

F 的大小为 4 x N,D 的大小为 128 x N,其中 N 是检测到的关键点数。

但是,我想获得一个大小为128 x 1 的向量,它可以尽可能好地表示图像。我见过聚类和 k-means 之类的东西,但我不知道该怎么做。

最基本的思路是取这N个大小为128x1的向量的平均值,然后我就有了一个特征向量。但是取平均值有意义吗?我应该做某种直方图吗?

任何帮助将不胜感激。 谢谢!

【问题讨论】:

您可以查看此答案***.com/a/36796437/1197132 并欢迎进一步提问。 【参考方案1】:

这实际上是一个很大的研究问题。你是对的,平均所有的描述符是没有意义的。有几种方法可以从一组局部描述符中创建单个向量。一大类方法称为“特征袋”或“视觉词袋”。总体思路是从许多图像(例如使用 k-means)中聚类局部描述符(例如筛选)。然后你拍摄一张特定的图像,找出该图像中的每个描述符属于哪个集群,并创建一个直方图。有不同的聚类方法以及创建和规范化直方图的不同方法。

一种稍微不同的方法称为“金字塔匹配内核”,它是一种在局部描述符集上训练 SVM 分类器的方法。

所以对于初学者来说,谷歌“功能包”或“视觉词包”。

【讨论】:

如果你应该做Bag of Words,那么你真的应该阅读这个。因为 BoW 不适用于每张图像一个 128d 特征。它适用于每张图像的大量特征,然后每个转换为“单词”,这将产生每张图像 1000+ 稀疏向量。 没错。我为 SIFT 和每张图像大约 1500 个关键点和大约 1000 张图像执行此操作,我总共有超过 2m 个向量。一旦我用 k-means 计算词汇表,我希望我很好。关于如何获得颜色描述符的任何想法?我唯一能想到的是色调直方图,但它会为每张图像生成一个矢量。

以上是关于如何获得固定大小的 SIFT 特征向量?的主要内容,如果未能解决你的问题,请参考以下文章

SIFT特征

如何获得经过训练的 LDA 分类器的特征权重

OpenCV+Python特征提取算法与图像描述符之SIFT / SURF / ORB

如何使用单词的向量表示(从 Word2Vec 等获得)作为分类器的特征?

如何使用单词的向量表示(从Word2Vec等获得)作为分类器的特征?

SIFT特征描述与检测的Matlab实现