how to mask a region under the boundary?

4 views (last 30 days)
I have an RGB image in which I have segmented certain portions of the image using bwboundaries commands in matlab. Now i want the region under the boundary to be masked with green color. For this i want develop algorithm dynamically
& not by using imfreehand command. could any one help on this? . I have attached the rgb image with boundaries marked...

Accepted Answer

Image Analyst
Image Analyst on 18 Aug 2014
Have a loop. For each boundary that you have, call poly2mask. Then "OR" it in to a binary image that you will be building up. Then cast your image to color if necessary, then set masked areas to green. I'll give you pseudocode. See if you can figure it out.
binaryImage = false(rows, columns);
for k = 1 : length(boundaries)
thisBoundary = boundaries{k};
x = thisBoundary(:,1);
y = thisBoundary(:, 2);
thisMask = poly2mask(x, y, rows, columns);
binaryImage = binaryImage | thisMask;
end
% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
redChannel(binaryImage) = 0;
greenChannel(binaryImage) = 255;
blueChannel(binaryImage) = 0;
% Recombine separate color channels into a single, true color RGB image.
rgbImage = cat(3, redChannel, greenChannel, blueChannel);
imshow(rgbImage);
  4 Comments
Image Analyst
Image Analyst on 18 Aug 2014
Anand's Answer, and comment to that answer (which was the same) both moved here:
please provide your email id so that i will send my full code with images. Thank you for your help...
Image Analyst
Image Analyst on 18 Aug 2014
Attach your images and code with the paper clip icon. I don't do free, private consulting via emails. The ability to share images and code is built into this Answers site.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!