我正试图仅在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);
我得到错误:
重塑的元素数量不能改变。
请帮忙,谢谢你!
注意你的重塑将不起作用,因为原始大小是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)