I have a rgb image and have converted into hsv colour space,with k=2,now i want to segment the image as shown below,please tell what process to perform next
I = imread('./../../Downloads/planes.png'); I = im2double(I(1:320, 1:478, :)); HSV = rgb2hsv(I); H = HSV(:,:,1); H = H(:); S = HSV(:,:,2); S = S(:); V = HSV(:,:,3); V = V(:); idx = kmeans([H S V], 2); imshow(ind2rgb(reshape(idx, size(I,1), size(I, 2)), [0 0 1; 0 0.8 0]))
Another alternative could be to use multi-level Otsu's thresholding to get the segmentation. You can use the function multithresh in the Image Processing Toolbox to do that.
Otsu's method and k-means clustering have equivalent objective functions (minimize within-class variance). The following paper discusses this relation:
Dongju Liu, Jian Yu, " Otsu Method and K-means ," Vol. 1, pp.344-349, Ninth International Conference on Hybrid Intelligent Systems, 2009.
Assuming you set k=2 and did the kmeans like you said and is shown in this example, I don't know what you want to do next. You haven't said. The most typical thing to do next is to call bwlabel() or bwconncomp() followed by regionprops to make various measurements (such as area) on the regions. I can be more specific if you get more specific.