我正在尝试仅在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);
我收到错误:
重塑元素的数量不得改变。
请帮忙, 谢谢!
答案 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)