Simple example of what I think you want using imfreehand
:
I = imread('pout.tif');
imshow(I);
h = imfreehand; % now pick ROI
BW = createMask(h); % get BW mask for that ROI
pos = getPosition(h); % get position for that ROI
% define bounding box
x1 = round(min(pos(:,2)));
y1 = round(min(pos(:,1)));
x2 = round(max(pos(:,2)));
y2 = round(max(pos(:,1)));
I2 = I.*uint8(BW); % apply mask to image
I2 = I2(x1:x2,y1:y2);
figure;
subplot(1,2,1);
imshow(I);
subplot(1,2,2);
imshow(I2);
If you have the ROI's already saved in some way, and don't want to run imfreehand
again, all you really need is to calculate BW
(a mask with ones within the ROI and zeros elsewhere) and the bounding box (to crop tight around the ROI).