MATLAB Answers


If ROI is already outlined how to mask ROI without using imfreehand function output parameters?

I have detected the region of interest in an image without using imfreehand function. Now I want to mask inside the ROI which I have outlined in red line as shown in below image.

I am stuck up with following part of code.

hFH = imfreehand();

binaryImage = hFH.createMask();

xy = hFH.getPosition;

I dont want to use imfreehand as I have already detected ROI. So in above code what should I assign to hFH?

Can somebody please help me with this? Thanks in advance for your help!


In simple words I dont want to use "imfreehand" function as I have already detected & outlined "Region of Interest" (ROI) in the image. Now the problem is I want to know what are the output values of imfreehand so that I can find out the similar values from the "Region of Interest" from my image & can use them in order to apply the mask on it.

hFH = imfreehand();

What will hFH contain (I mean to say which values of ROI drawn using imfreehand) ?

I hope this time it is much clear than the earlier one. Thanks in advance!

hFH would be an object inherited from the imroi class, and the methods available for it are

methods imfreehand

As far as I understand your question, you are trying to compare pixel values from your ROI with a freehand ROI using imfreehand? Would that not be possible by just an and between the ROI and your image?

Yes you are partially right. My intention here is to mask the ROI which I have already detected using Random Walker algorithm (& obviously without using imfreehand). If I could able to mask the ROI it would be helpful to proceed further for calculations such as Area, Centroid, Perimeter etc. It would be a great help if somebody could help me to mask the ROI as discussed above.

Log in to comment.


No products are associated with this question.

1 Answer

Answer by Image Analyst
on 7 Jan 2013
 Accepted Answer

I'm not sure what you're asking. What is "the ROI" - the area you drew with imfreehand(), or the white binary blob inside that, or the whole image?

And what does " the similar values from the "Region of Interest"" mean? Do you mean the gray levels in that ROI?

I don't understand what you're going to "apply the mask" to? What is the mask anyway? Is it the same as the ROI, or is it something else?


The Random Walker Algorithm logic is based on seed points calculated by various algebraic formulas which is much complicated in the first place.

I am not an expertise in Matlab but moreover a novice struggler in it. Let me put it in a simpler manner.

1) I have an input image wherein a irregular part is outlined in red color 2) At this point I dont know its x.y coordinates. How can I calculate Area, Centriod, Perimeter etc. of the red outlined part in the image?

Thanks for your help in advance!

If somebody masked the image like that, and saved it as an RGB image, then you need to find the red:

% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
% Find the outline by itself.
redOutline = (redChannel == 255) & ...
  (greenChannel == 0) & ...
  (blueChannel == 0);
% Fill it in
filledRedMaskImage = imfill(redOutline, 'holes');
% Count pixels
areaInPixels = sum(filledRedMaskImage (:));

I tried it on my image and worked like a magic. Thanks a Million!

Log in to comment.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!