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

Learn moreOpportunities for recent engineering grads.

Apply Today
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. http://img534.imageshack.us/img534/4272/output3l.jpg

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!

*No products are associated with this question.*

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?

Show 6 older comments

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?

http://img203.imageshack.us/img203/1296/frame01s.jpg

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!

## 3 Comments

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/58096#comment_121213

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!

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/58096#comment_121230

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

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?

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/58096#comment_121239

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.