如何在HSV矩阵上使用kmeans



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

相关内容

  • 没有找到相关文章

最新更新