【问题标题】:Assign values to knn search elements为 knn 搜索元素赋值
【发布时间】:2014-04-16 21:09:50
【问题描述】:

我需要搜索与我的样本数据最近的 3 个邻居。我的代码如下:

Sample = vec_1;      

Training = [vec_2;vec_3;vec_4;vec_5;vec_6];

IDX = knnsearch(Training,Sample,'K',3);

disp('Results: ');
disp (IDX);

我明白了:

Results: 
     5     3     2

我的问题是:我想为每个值分配图像:

for example for 5, img1.jpg
            for 3, img2.jpg........ so on

【问题讨论】:

  • @rayryeng.... 基本上问题是我想将存储的图像分配给这些向量
  • for IDX=1,imshow(img1).... forIDX=2,imshow(img2)... 等等 但是我发现这不是将图像分配给矢量元素的合适方法...
  • %%%%将图像分配给 knn 搜索元素%%%%%

标签: image matlab image-processing vector knn


【解决方案1】:

构造一个图像元胞数组,您可以在其中通过 KNN 的特定索引访问图像。您不需要使用实际的向量本身。索引可以用作键。

执行以下操作:

 maxIndex = max(IDX);
 imgCellArray = cell(1, maxIndex);
 imgCellArray{IDX(1)} = img1;
 imgCellArray{IDX(2)} = img2;
 imgCellArray(IDX(3)} = img3;

因此,如果IDX = [5 3 2],那么上面的代码将允许您以您想要的方式访问图像。 imgCellArray{5} 将为您提供img1,位于索引 5,imgCellArray{3} 将为您提供 img2,并位于索引 3,依此类推。

请记住,元胞数组中会有一些未填充的空槽。特别是在位置 1 和 4。但是,关于内存,您不应该太担心,因为分配的内存很少(如果有的话......我在这里不太确定)来表示空单元格。

【讨论】:

  • 谢谢兄弟!这对我来说意义重大......现在我得到了类似这样的 o/p ...... imgCellArray = [] [] [] [] [201x151 uint8] imgCellArray = [] [] [201x151 uint8] [] [201x151 uint8] imgCellArray = [] [201x151 uint8] [201x151 uint8] [] [201x151 uint8]
  • 所以现在如果我有大数据集,即 1000 张训练图像,例如在我的第一个问题中,我使用了 5 张图像,在 knn 搜索的帮助下,我得到了最好的 3 张图像。所以使用上面的代码这将是一个非常冗长的方法,我是循环和控制语句的初学者。所以请再次帮助我,我将非常感谢你。
  • 您是如何加载图像的?你能告诉我你剩下的代码吗?
  • 谢谢!老大哥一直以来的支持...我将单独发布我的代码
  • 我的实际代码是这样的,因为这是针对五个训练值,,,, %SAmple DAta vec_1=[2.35 2.48 1.25 2.42 -8.51]; %#训练值 vec_2=[2.48 2.99 1.32 2.88 -10.03]; vec_3=[2.93 2.93 1.33 2.87 -10.06]; vec_4=[2.92 3.04 1.08 2.92 -9.99]; vec_5=[2.99 3.12 1.64 3.09 -10.85]; vec_6=[2.31 2.59 1.01 2.49 -8.42];样本 = vec_1;训练 = [vec_2;vec_3;vec_4;vec_5;vec_6]; IDX = knnsearch(培训,样本,'K',3); disp('结果:');显示 (IDX);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多