使用SIFT功能训练SVM分类器

sai*_*sma 3 descriptor svm sift

我喜欢用SIFT DESCRIPTOR和SVM对4类图像进行分类.现在,使用SIFT提取器我获得不同大小的关键点例如img1有100个关键点img2有55个关键点....如何用matlab构建给定长度向量的直方图

Far*_*Tam 8

在这种情况下,也许密集筛选是一个不错的选择.

主要有两个阶段:

第1阶段:创建一个码本.

  1. 将输入图像分成一组子图像.
  2. 在每个子图像上应用筛选.每个关键点将具有128维特征向量.
  3. 对这些向量进行编码,通过简单地应用选择的k均值聚类来创建码本k.每个图像将产生矩阵V i(i <= n并且n是用于创建码字的图像的数量.)的大小128 * m,其中m是从图像收集的关键点的数量.因此至K-装置的输入是,一个大的矩阵V由水平级联创建V ,对于所有i.的K-装置的输出是一个矩阵Ç与大小128 * k.

第2阶段:计算直方图.

对于数据集中的每个图像,请执行以下操作:

  1. 创建h大小的直方图向量k并将其初始化为零.
  2. 如第1阶段中的步骤2那样应用密集筛选.
  3. 对于每个关键点的向量,在码本矩阵C中找到它的"最佳匹配"向量的索引(可以是欧几里德距离中的最小值).
  4. 将相应的bin增加到此索引h1.
  5. h按L1或L2标准归一化.

现在h已准备好进行分类.

另一种可能性是使用Fisher的向量而不是代码簿,https://hal.inria.fr/file/index/docid/633013/filename/jegou_aggregate.pdf


Bha*_*kar 6

对于不同的图像,您将始终获得不同数量的关键点,但每个描述符点的特征向量的大小保持相同,即128.人们更喜欢使用矢量量化或K均值聚类并构建词袋模型直方图.你可以看一下这个帖子.