how to visualize image segmentation using matlab After clustering in image, I want to visualize the result. To do so, I first reshape an RGB image to 3*size.

The result of BSMC is the set of indices after clustering. So I change the value at the pixel. But the result is not what I wanted.

How to show correctly segmentation result?

X = imread('image3.jpg');
%X = imresize(X, 0.2);
[height width depth] = size(X);
X = reshape(X, [depth height*width]);
X = double(X);
ppp = BSMC(X);
ppp = ppp.partition;

ppp = BSMC(X, 'initial_partition', ppp);
ppp = ppp.partition;

for (i = 1:size(ppp, 2) )
    color = zeros(3, 1);
    color(1) = randi([0,255]);
    color(2) = randi([0,255]);
    color(3) = randi([0,255]);

    for (j = 1:size(ppp(i).indices, 2) )
        X(:, ppp(i).indices(j) ) = color;
    end
end

X = reshape(X, [height width depth]);
X = uint8(X);
figure;
imshow(X);
some pointers for you to figure out the solution:


you can convert segmentation results to CONTOURS and then plot contours, with thick boundary lines.
first convert the image to grayscale,

x = rgb2gray(x);
img(:,:,1) = x;
img(:,:,2) = x;
img(:,:,3) = x;

now, for each cluster you can modify the color for that part of image. say for example row1, col1, keep the index for class 1:
  for i=1:size(row1,1)
        img2(row1(i), col1(i), 1) = 200;
    end
in the end show image with modified colors.
show image, then hold on, then show ONLY one cluster at a time as a region filled with a solid color, then set transparency to 50%.

two ways 

to set transparencey: 
set(h, 'AlphaData', alpha_data); % e.g. alpha_data = 0.5
or 
h=imagesc(img2);
alpha(h,0.5);