如何在hsv矩阵上使用k表示

时间:2013-05-16 15:56:37

标签: matlab k-means reshape hsv

我正在尝试仅在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);

我收到错误:

  

重塑元素的数量不得改变。

请帮忙, 谢谢!

1 个答案:

答案 0 :(得分:1)

请注意,您的重塑不起作用,因为原始大小为m * n,并且您正在尝试重塑为大小为m * n * 3的内容。您无法通过重塑来更改大小。

这有效:

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)