向特定集群显示具有特定颜色的 kmean 结果
Displaying kmean result with specific colors to specific clusters
我使用以下 matlab 代码对预处理图像应用了 k 均值聚类
%B - input image
C=rgb2gray(B);
[idx centroids]=kmeans(double(C(:)),4);
imseg = zeros(size(C,1),size(C,2));
for i=1:max(idx)
imseg(idx==i)=i;
end
i=mat2gray(imseg);
% i - output image
每次我显示输出时,分配给输出图像的颜色都会改变。
如何为 cluster1、cluster2、cluster3 和 cluster4 指定特定颜色。
您可以使用颜色图。设 R1
、B1
和 G1
是您要显示第一个簇的 RGB 值(范围 [0..1] 中的值),R2
是第二个簇的红色通道值等等......然后你的颜色图是:
cmp = [R1 G1 B1;
...
R4 G4 B4];
现在,
[idx centroids] = kmeans(double(C(:)),4);
imseg = reshape( idx, size(C) ); %// reshape
figure; imagesc( imseg );colormap( cmp ); %// that's it!
PS,
最好是not to use i
as a variable name in Matlab.
我使用以下 matlab 代码对预处理图像应用了 k 均值聚类
%B - input image
C=rgb2gray(B);
[idx centroids]=kmeans(double(C(:)),4);
imseg = zeros(size(C,1),size(C,2));
for i=1:max(idx)
imseg(idx==i)=i;
end
i=mat2gray(imseg);
% i - output image
每次我显示输出时,分配给输出图像的颜色都会改变。 如何为 cluster1、cluster2、cluster3 和 cluster4 指定特定颜色。
您可以使用颜色图。设 R1
、B1
和 G1
是您要显示第一个簇的 RGB 值(范围 [0..1] 中的值),R2
是第二个簇的红色通道值等等......然后你的颜色图是:
cmp = [R1 G1 B1;
...
R4 G4 B4];
现在,
[idx centroids] = kmeans(double(C(:)),4);
imseg = reshape( idx, size(C) ); %// reshape
figure; imagesc( imseg );colormap( cmp ); %// that's it!
PS,
最好是not to use i
as a variable name in Matlab.