【问题标题】:K means clustering and MatlabK表示聚类和Matlab
【发布时间】:2011-12-22 08:18:33
【问题描述】:

我需要在 rgb 图像上使用 kmeans 函数。算法的每个元素都需要有 3 个维度,一个用于图像的每个通道。元素的数量将是图像的像素总数。我需要在集群 #5 上使用kmeans

这就是我尝试过的:

img = imread('mypic.jpg');
red = img(:,:,1);
green = img(:,:,2);
blue = img(:,:,3);

kmeans(red,5)


我不知道我做的对不对。我有这个错误:

??? Error using ==> plus
Integers can only be combined with integers of the same class, or scalar doubles.

Error in ==> kmeans>distfun at 704
            D(:,i) = D(:,i) + (X(:,j) - C(i,j)).^2;

Error in ==> kmeans at 313
    D = distfun(X, C, distance, 0);

Error in ==> mysegmentation at 9
kmeans(R,2)

谁能帮帮我?谢谢

【问题讨论】:

    标签: matlab image-segmentation


    【解决方案1】:

    您的例外是由于kmeans 期待双精度类型的数据(因此在下面第二行中对double 的调用)。但是您还有一个额外的问题,因为您没有将正确的数据传递给 kmeans。您需要创建一个 numpixels x 3 矩阵。 reshape 是你的朋友。这是一个例子。祝你好运。

    img = imread('mypic.jpg');
    flatImg = double(reshape(img,size(img,1)*size(img,2),size(img,3)));
    idx = kmeans(flatImg,5);
    imagesc(reshape(idx,size(img,1),size(img,2)));
    

    【讨论】:

    • 是的!这就是我需要的,一个 numpixels x 3 矩阵。我很难理解重塑功能。该函数返回一个 'size(img,1)*size(img,2)' x 'size(img,3)' 矩阵,对吗?你能解释一下吗?你把'R*G x B'放在矩阵上?对不起,我对图像处理很陌生,我需要一些帮助:)
    • img(1,1,:) 的值是一个 3 元素向量,保存索引 (1,1) 处像素的 RGB 值。 flatImg(1,:) 的值与 img(1,1,:) 的值相同。同样,img(1,2,:) 中的 3 个元素与 flatImg(2,:) 中的 3 个元素相同。我们正在重新组织 img 矩阵的结构,将像素视为 RGB 值的向量,并忽略它们的空间关系。
    • 太好了,我明白了,我正在一点一点地理解它!如果我想再加入 2 个维度怎么办(现在总共有 5 个维度)。一个是像素的行号,另一个是列号。如何更改“flatImg”重塑?提前致谢。
    • 代码已经处理了这个问题 size(img,3) 处理 5 通道图像,或 30 通道图像....
    • 如何选择矩阵的第 3 行?我知道如何获取第 3 行的元素(img(3,:))。但我不知道如何将行号作为输入。当我向 reshape 函数添加一些东西时,我收到了这个错误:“要 RESHAPE,元素的数量不能改变。”
    【解决方案2】:

    试试img = double(imread('mypic.jpg'))/255.;

    【讨论】:

      【解决方案3】:
      I1= imread('d:\flowers.jpg');
      I2=rgb2gray(I1);
      
      I=double(I2);
      figure
      subplot(1,3,1)
      imshow(I1)
      subplot(1,3,2)
      imshow(I2)
      g=kmeans(I(:),4);
      J = reshape(g,size(I));
      subplot(1,3,3)
      imshow(J,[])
      

      【讨论】:

        猜你喜欢
        • 2016-10-13
        • 1970-01-01
        • 2013-02-14
        • 2013-05-17
        • 2016-08-12
        • 2016-09-06
        • 2013-03-14
        • 2017-10-15
        相关资源
        最近更新 更多