MATLAB: How to get the roi of an image by masking

image masking problem

I have an image of size 584x565x3 and a binary mask of size 584×565. 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

Best Answer

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.