使用matlab进行图像聚类

时间:2013-11-25 14:45:44

标签: matlab image-processing k-means

我有大约400张图片。 20个属于20个不同类别的图像。我需要执行自动图像聚类并显示结果,即以树格式的图像聚类。

我是第一次使用MATLAB,我设法执行以下操作

  1. 加载所有图片
  2. 将图像转换为灰度
  3. 将所有图像调整为75 * 75
  4. 提取筛选功能
  5. K表示20个群集的聚类
  6. 现在,我无法弄清楚如何以树形格式显示属于不同群集的图像。

    我的代码在这里

    for i = 1:length(Names)
       im = imread(Names{i});
       im = im2single(im2bw(im)) ; %-gray
       im=imresize(im, [75 75]);
       %-----------%      
       [f1, descr] = vl_dsift(im2single(im));
       Y = datasample(descr,500,2,'Replace',false);
       descriptors(:,:,1) = Y;
       descriptors=double(descriptors);
    end 
    %kmeans
    numClusters = 20 ;
    [centers, assignments] = vl_kmeans(descriptors, numClusters);
    

    我得到的输出是中心128*20,分配是1*500矩阵。有人可以告诉我如何找出哪个图像属于哪个群集并显示图像分离的群集?我需要以树格式显示簇,每个簇显示它包含的图像。

1 个答案:

答案 0 :(得分:1)

有一个函数treeplot可以帮助生成树结构的图形。我不清楚它是属于特殊工具箱还是核心Matlab。

如果它位于工具箱中而您无法访问,则可以考虑根据您的需要调整uitree;但请注意,此函数未记录,因此可能会在将来的版本中消失或更改行为。