我使用以下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提供特定颜色。
答案 0 :(得分:3)
您可以使用色彩图。让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!