Calculate Area % of either freehand or ellipse ROI

2 views (last 30 days)
Hello - I'm trying to figure out the Area % of a thresholded ROI. Currently, I have my code set so that the image is thresholded, and then the user manual draws a freehand ROI (still debating if freehand or ellipse ROI is better). I want the code to give me the percent of area that is 'white' in the threshold over the total area in that ROI, but currently when I draw in the ROI, it is filled with 1's. How can I do this so that it is not filled and I can find the % Area? Below is my code. Thank you!
I=imread('Image.tif'); figure,imshow(I); BW = imbinarize(I,0.300); figure,imshow(BW); % Ask user to draw ROI. message = sprintf('Draw ROI on the wanted image.\nDouble click to finish drawing.'); uiwait(msgbox(message)); h=imfreehand;
  1 Comment
Victoria
Victoria on 30 Jul 2018
Update: I have found a way to find area percent with the following code:
percentageBlack=(1-nnz(BW)/numel(BW))*100;
AreaPercent=(100-percentageBlack)
Now I just need a way for this to ONLY calculate in a nonfilled manually selected ROI. Thanks!

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 30 Jul 2018
Use h to create a mask.
mask = h.createMask;
See attached demo for more details.
  4 Comments
Victoria
Victoria on 1 Aug 2018
T1=table(meanGL, sdGL, percentageBlack, AreaPercent);
head(T1,3)
C = table2cell(T1);
%File Location
path= 'C:\Users\Vicki\Documents\Loyola\MATLAB';
%File Name
xlswrite(fullfile(path,'\try.xlsx'), C, int2str(k));
Image Analyst
Image Analyst on 1 Aug 2018
You can use writetable() to write an Excel workbook without doing the convertion to a cell array.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!