-1

I have an image with 6 colors each indicating a value. I had obtained an image as shown below.

Original image

I need to smoothen the edges and then find out the area as well as the surface area of that region. The second image shows a black line drawn in the edges which indicates that I need to smoothen the edges in such a way.

New Image

I had used segmentation to create a mask as shown in the third image, and then obtain a segmented image using the code following the image.

Masked image

I have used the following code for generating till the masked image. Source : How to segment

 imshow(Out1)  
 str = 'Click to select initial contour location. Double-click to confirm    and proceed.';
 title(str,'Color','b','FontSize',12);
 disp(sprintf('\nNote: Click close to object boundaries for more accurate   result.'));
 mask = roipoly;
 figure, imshow(mask)
 title('Initial MASK');
 maxIterations = 3000; 
 bw = activecontour(Out1, mask, maxIterations, 'Chan-Vese');

 % Display segmented image
 figure, imshow(bw)
 title('Segmented Image');

In order to use the 'activecontour' function my image needs to be a grey-scale image, which I'm not being able to convert to greyscale and back. Also to find out surface area/ area of the region is there any inbuilt function. Please help thanks.

1 Answers1

0

use im2double, im2uint8, etc. to convert binary image to grayscale.

use bwarea or regionprops to find the region area.

user2999345
  • 4,195
  • 1
  • 13
  • 20