colour image segmentation using k means

조회 수: 1 (최근 30일)
FIR
FIR 2013년 1월 16일
답변: Spandan Tiwari 2013년 10월 11일
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

채택된 답변

Thorsten
Thorsten 2013년 1월 16일
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]))
  댓글 수: 3
FIR
FIR 2013년 1월 17일
for the following Image i changed k=5,but why i get only two colours
Walter Roberson
Walter Roberson 2013년 1월 17일
편집: Walter Roberson 2013년 1월 17일
[0 0 1; 0 0.8 0] is a color table with two entries: bright blue, and medium green. If you can come up with the RGB shade you want, change the 0 0.8 0 to that RGB triple.
If you have 5 clusters you would want 5 entries in the color table.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Spandan Tiwari
Spandan Tiwari 2013년 10월 11일
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.

Image Analyst
Image Analyst 2013년 1월 16일
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.
  댓글 수: 4
FIR
FIR 2013년 1월 17일
i actually meant last 2 lines
SAM
SAM 2013년 10월 11일
편집: SAM 2013년 10월 11일
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.
can you please tell me how can i calculate the area...

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by