Image processing 基于Sift特征和Knn?

Image processing 基于Sift特征和Knn?,image-processing,classification,sift,knn,Image Processing,Classification,Sift,Knn,你能帮我等一下用SIFT特征进行图像分类吗 我想根据SIFT特征对图像进行分类: 给定一组训练图像,从中提取SIFT 计算从模型中提取的整个筛选集的K均值 训练集。簇的数量取决于K参数 你为训练所做的筛选的数量,但通常都在附近 500->8000越高越好。 现在您已获得K个群集中心。 您可以通过分配图像的每个SIFT来计算图像的描述符 将图像复制到其中一个K簇。通过这种方式,您可以获得 长度K的直方图。 我在训练集中有130个图像,所以我的训练集是130*K 维度的 我想对我的测试图像进行分类,

你能帮我等一下用SIFT特征进行图像分类吗

我想根据SIFT特征对图像进行分类:

给定一组训练图像,从中提取SIFT 计算从模型中提取的整个筛选集的K均值 训练集。簇的数量取决于K参数 你为训练所做的筛选的数量,但通常都在附近 500->8000越高越好。 现在您已获得K个群集中心。 您可以通过分配图像的每个SIFT来计算图像的描述符 将图像复制到其中一个K簇。通过这种方式,您可以获得 长度K的直方图。 我在训练集中有130个图像,所以我的训练集是130*K 维度的 我想对我的测试图像进行分类,因为我有1个图像,所以我的样本是1*k 维度的。我写了这个代码knnclassifysample,training 集合,分组。 我想分为7组。因此,knnclassifysample1*10,训练集130*10,组7*1


错误是:组的长度必须等于训练中的行数。我能做什么?

直接从文档:

CLASS=knnclassifySAMPLE,TRAINING,GROUP对列表中的每一行进行分类 样本中的数据使用最近的- 邻居法。样本和培训必须是具有相同属性的矩阵 列数。GROUP是用于培训的分组变量。它的 唯一值定义组,每个元素定义要创建的组 对应的培训行所属的。组可以是一个 数值向量、字符串数组或字符串单元格数组。训练 和组的行数必须相同

这意味着,该组应该是130x1,并且应该指示每个训练样本属于哪个组。uniquegroup在您的案例中应返回7个值-培训集中代表的七个类别。 如果您还没有指定图像所属类别的组向量,则可以使用kmeans将训练集拆分为7个组:

group = kmeans(trainingset,7);
knnclassify(sample, trainingset, group);