MATLAB Answers


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

Asked by Prashant Kashid on 6 Jan 2013

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!


Prashant Kashid on 7 Jan 2013

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!

Amith Kamath
on 7 Jan 2013

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?

Prashant Kashid on 7 Jan 2013

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.


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?


Prashant Kashid on 9 Jan 2013

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!

Image Analyst
on 9 Jan 2013

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 (:));
Prashant Kashid on 9 Jan 2013

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

Discover MakerZone

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

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!