首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于Sift特征和Knn的图像分类

基于Sift特征和Knn的图像分类
EN

Stack Overflow用户
提问于 2014-11-10 12:14:25
回答 1查看 2.1K关注 0票数 2

你能帮我利用SIFT特征进行图像分类吗?

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

  • 给出一组训练图像,从中提取SIFT。
  • 计算K-指从训练集中提取的整组筛。"K“参数(集群的数量)取决于用于培训的筛选器的数量,但通常是500->8000 (越高越好)。
  • 现在你得到了K团簇中心。
  • 您可以通过将图像的每个SIFT分配给K类中的一个来计算图像的描述符。这样就可以得到长度为K的直方图。
  • 我在训练集中有130幅图像,所以我的训练集是130*K维
  • 我想分类我的测试图像,ı有1个图像,所以我的样本是1*k维。我写了这个代码针织(样本,训练集,小组)。

我想分类为7组。所以,knnclassify(sample(1*10),trainingset(130*10),group(7*1))

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

EN

回答 1

Stack Overflow用户

发布于 2014-11-12 11:52:13

直接从医生那里:

分类(样本,训练,组)使用最近邻方法将样本中的每一行数据分类为训练中的一组。样本和培训必须是具有相同列数的矩阵。组是用于培训的分组变量。它的唯一值定义组,每个元素定义相应的培训行所属的组。组可以是数字向量、字符串数组或字符串的单元格数组。训练和组必须有相同的行数.

这意味着,group应该是130x1,并且应该指明每个训练样本属于哪个组。在您的情况下,unique(group)应该返回7个值--在您的培训集中表示的七个类别。如果您还没有一个组向量来指定哪些图像属于哪些类别,则可以使用kmeans将您的培训集拆分为7个组:

代码语言:javascript
运行
复制
group = kmeans(trainingset,7);
knnclassify(sample, trainingset, group);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26843591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档