1

我正在尝试仅在h矩阵上使用 kmeans 聚类(来自原始图片),但我在使用 kmeans 的矩阵大小时遇到​​了问题。我知道我需要重塑它,但注意到我尝试过的作品。
这是我尝试过的:

x = imread('4.jpg');
hsv=rgb2hsv(x);
H=c(:,:,1);
[m,n]=size(H);
X = reshape(H,[m,n,3]);
X = double(squeeze(X));
IDX = kmeans(double(H),3);

我得到错误:

重塑元素的数量一定不能改变。

请帮忙,谢谢!

4

1 回答 1

1

请注意,您的重塑将不起作用,因为原始尺寸是 m*n,而您正试图重塑成尺寸为 m*n*3 的东西。您无法使用 reshape 更改大小。

这有效:

x = imread('peppers.png');
hsv=rgb2hsv(x);
H=hsv(:,:,1); %******H=c(:,:,1);
[m,n]=size(H);
figure(1), imshow(H);
%X = reshape(H,[m,n,3]);
%X = double(squeeze(X)); 
IDX = kmeans(double(H(:)),3);  % NOTE change to this line
H = reshape(IDX,[m,n]);
figure(2), imagesc(H)
于 2013-05-17T04:12:30.530 回答