how to get the roi of an image by masking

I have an image of size 584x565x3 and a binary mask of size 584x565. please consider the following piece of code
greenimg=I(:,:,2);
masked_I=mask.*greenimg;
imshow(masked_I);
But I am not getting the region of interest instead it seems same as the original mask
Please help

4 Commenti

Check the data type of masked_I : is it the same as I ?
Check
any(mask(:) ~= 1)
if it does not say true (or 1) in response then the masked version would be exactly the same
It is saying true
One modification in the question I want to mention is that my image is .tif (584x565x3) and binary mask is .gif(584x565). If anybody provide me with the solution it will be immensely helpful to me.Thanks in advance.
probably you are reading the roi in the wrong way or you roi isn t a valid roi. look for the values on your roi using unique(roi(:)). Read the roi using imread.

Accedi per commentare.

 Risposta accettata

Try it this way (Sean's way):
% Mask the image.
maskedImage = bsxfun(@times, originalImage, cast(mask,class(originalImage)));
Works no matter if originalImage is gray scale or RGB. mask is your binary image with true being "foreground" and that is what remains after masking.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by