gpt4 book ai didi

matlab - K表示聚类和Matlab

转载 作者:太空宇宙 更新时间:2023-11-03 20:19:32 24 4
gpt4 key购买 nike

我需要在 rgb 图像上使用 kmeans 函数。算法的每个元素都需要有 3 个维度,一个对应于图像的每个 channel 。元素的数量将是图像的像素总数。我需要在集群 #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)

谁能帮帮我?谢谢

最佳答案

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

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)));

关于matlab - K表示聚类和Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com