我打算量化我想要使用BOW从我的图像集中提取的SIFT特征。我知道如何使用vl_sift
函数从一个图像中提取SIFT特征,但我不知道如何对从我所拥有的大集合中的所有图像中提取的所有特征执行kmeans操作。 This与我的情况类似,只是我不知道他所使用的数据是什么,我不知道如何收集从所有图片中提取的所有功能对他们说kmeans。
这是我到目前为止的代码。它从每个图像中提取SIFT特征,但不将它们保存在任何地方。
imgds = imageSet('E:\Flower Classification\10\seg','recursive')
for index = 1:imgds.Count
for i = 1:40
I = read(imgds(index),i);
II=single(rgb2gray(I));
[~,d]= vl_sift(II);
???
end
end
我感谢任何建议。 我需要以下内容:
- 收集一个列表中的所有功能
- 对所有这些功能执行kmeans(有一个名为vl_kmeans的函数,但它需要一组数据,我在vl_feat文档中找不到有关如何形成此数据的任何内容)
- 为每个图像创建一个矢量来表示它。 (也称为特征直方图,因此不是使用一组特征来表示图像,而是由每个kmeans中心的特征数量来表示)
醇>