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

时间:2014-04-18 18:19:15

标签: matlab image-processing data-mining sift vlfeat

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

[F,D] = vl_sift(image);

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

但是,我希望获得一个大小为128 x 1的矢量,它可以尽可能好地表示图像。我已经看过像聚类和k-means这样的东西,但我不知道怎么做。

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

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

1 个答案:

答案 0 :(得分:6)

这实际上是一个很大的研究问题。你是对的,平均所有描述符都没有意义。有几种方法可以从一组局部描述符中创建单个向量。一大类方法被称为“特征包”或“视觉词包”。一般的想法是从许多图像(例如,使用k均值)聚类局部描述符(例如,筛选)。然后,您拍摄特定图像,找出该图像中每个描述符所属的聚类,并创建直方图。有不同的方法来进行聚类以及创建和标准化直方图的不同方法。

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

所以对于初学者谷歌“功能袋”或“视觉词袋”。