how can we calculate surface area for this leaf in matlab?

only the leaf

4 Comments

How can calculate leaf area for this matlab
@Navoda click on the leaf tag on the right hand side of this page and you'll find lots of applications that do that. This one is a little harder because the leaf is green, as well as the background. But if your images have green leaves on a ctrasting color background, you can use the Color thresholder app on the Apps tab ofthe tool ribbon to create a mask. Then to get the area you can sum the mask pixels or use bwarea
leafArea = sum(leafMask(:))
leafArea = bwarea(leafMask)
This answer not clear to me
@Navoda If you have any more questions, then attach your image in a new discussion thread with the paperclip icon after you read this:

Sign in to comment.

 Accepted Answer

Which leaf? There are lots of leaves in that image, and they're all green. That's the problem. So you can either hand trace the leaf with imfreehand(). Demo of imfreehand are attached below in blue.
Or you can try texture segmentation because the giant leaf has a different texture than the "background" leaves. You can use stdfilt or entropyfilt() to do texture segmentation.
Once you've processed it to a point where you can threshold it then you can use regionprops, as shown in my image segmentation tutorial: http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862 I also have color segmentation demos there but since all your leaves are so close in color, that probably won't work.
Finally, to get a "real world" area, instead of pixels, you'll need to spatially calibrate and I attach my demo (below in blue) to show you how to do that.

5 Comments

what if its already threshold-ed then how do we compute surface area its not a leaf but still...
For example
greenPixels = rgbImage(:,:,2) > 50; % Whatever works.
numGreenPixels = sum(greenPixels (:));
What if I have this image and want to calculate the area of the leaves? I have the code that can forground the image, however, I got a blank image instead of only green. Can you help me
You can use color segmentation by hue, or discriminant analysis (if you have the stats toolbox).
See my demo http://www.mathworks.com/matlabcentral/fileexchange/28512-simplecolordetectionbyhue-- or try the Color Threshlder app on the Apps tab of the tool ribbon.
Did that work for you? If not, start your own question in a separate thread.

Sign in to comment.

More Answers (1)

It looks to me that if you were to convert to brightness you could threshold on that to get most of the leaf. The heart of the leaf might not come out exactly right with that due to shadows.
Watershed segmentation would be another approach.

Categories

Find more on Agriculture in Help Center and File Exchange

Asked:

on 31 Mar 2014

Commented:

on 14 Jul 2024

Community Treasure Hunt

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

Start Hunting!