MATLAB中分割图像的颜色分配

MATLAB中分割图像的颜色分配,matlab,k-means,image-segmentation,Matlab,K Means,Image Segmentation,我正在用MATLAB处理颜色分割。我使用了基于文档的k-means聚类,并在代码方面走了这么远 global imgRGB; global imgLAB; img = imgRGB; cform = makecform('srgb2lab'); imgLAB = applycform(img, cform); ab = double(imgLAB(:,:,2:3)); rows = size(ab,1) cols = size(ab,2); ab = reshape(ab, rows*cols

我正在用MATLAB处理颜色分割。我使用了基于文档的k-means聚类,并在代码方面走了这么远

global imgRGB;
global imgLAB;
img = imgRGB;

cform = makecform('srgb2lab');
imgLAB = applycform(img, cform);
ab = double(imgLAB(:,:,2:3));
rows = size(ab,1)
cols = size(ab,2);
ab = reshape(ab, rows*cols, 2);
cluster = 5;
[idx center] = kmeans(ab, cluster, 'distance', 'sqEuclidean', 'Replicates', 5);
label = reshape(idx, rows, cols);
figure; imshow(label, []);
imgSeg = cell(5);
rgb_label = repmat(pixel_labels, [1 1 3]);
for k=1:cluster
    color = img;
    color(rgb_label ~= k) = 0;
    imgSeg{k} = color;
end
figure; 
imshow(imgSeg{1});
我将图像作为输入,这就是它被定义为全局的原因

对于链接中的彩色图像,它会生成灰度输出


我认为它指定灰色色调作为颜色,但我需要为每个簇指定一种颜色。我的意思不是灰色,而是一种颜色。如何实现这一点?

在直接显示标签时,您的体形应该使用不同的标签

尝试:

但是,如果希望将
pixel_标签
转换为RGB图像(每个像素3个颜色通道),则需要使用(而不是将标签复制到所有通道)。替换
rgb_标签=repmat(像素_标签[1 3])带有

rgb_label = ind2rgb(pixel_labels, rand(max(pixel_labels(:)),3));

很抱歉,那没用。我应该在代码的其他地方使用colormap函数吗?不,仍然不起作用。我不知道是不是因为这条线<代码>rgb_标签=repmat(像素_标签[1 1 3])
rgb_label = ind2rgb(pixel_labels, rand(max(pixel_labels(:)),3));