jef*_*eff 8 matlab image-processing data-mining sift vlfeat
我试图在我的数据集中获得N = ~1300个图像的特征向量,我必须实现的一个特征是形状.所以我计划使用SIFT描述符.但是,每个图像返回不同数量的关键点,所以我运行
[F,D] = vl_sift(image);
Run Code Online (Sandbox Code Playgroud)
F的大小4 x N和D的大小128 x N,其中N是检测到的关键点的数量.
但是,我想获得一个128 x 1可以尽可能好地表示图像的单个矢量大小.我已经看过像聚类和k-means这样的东西,但我不知道怎么做.
最基本的想法是获得大小为128x1的这N个向量的平均值,然后我有一个特征向量.但取平均值有意义吗?我应该做某种直方图吗?
任何帮助将不胜感激.谢谢 !
这实际上是一个很大的研究问题.你是对的,平均所有描述符都没有意义.有几种方法可以从一组局部描述符中创建单个向量.一大类方法被称为"特征包"或"视觉词包".一般的想法是从许多图像聚类局部描述符(例如筛选)(例如使用k均值).然后,您拍摄特定图像,找出该图像中每个描述符所属的聚类,并创建直方图.有不同的方法来进行聚类以及创建和标准化直方图的不同方法.
一种稍微不同的方法称为"金字塔匹配内核",它是一种在局部描述符集上训练SVM分类器的方法.
所以对于初学者谷歌"包的功能"或"视觉词袋".