[?] Calculate area of a maple leaf image?

Hi,

I want to calculate the area of the maple leaf in cm^2.

I have tried this

img = Binarize@
    Import["http://i37.ltalk.ru/22/85/298522/92/9427492/leave2.png"]~
   Erosion~1;
(m = MorphologicalComponents[img]) // Colorize

linecount = 
  2 /. (Binarize@
        Import["http://i37.ltalk.ru/22/85/298522/92/9427492/leave2.\
png"] // ColorNegate // Thinning // 
     ComponentMeasurements[#, "PerimeterCount"] &);
areacount = 
  2 /. ComponentMeasurements[MorphologicalComponents[img], "Count"];
areacount/linecount^2 // N

but I’m not sure which region is calculated and the unit given.

Can somebody help me? Thank you.

The way your image is displayed is misleading. It has an alpha channel. This is why the results from Binarize are weird.

Check this:

im = Import["http://i37.ltalk.ru/22/85/298522/92/9427492/leave2.png"]
ColorSeparate[im]

From the output it is clear that the alpha channel is already a good mask of the leaf.

To compute the area, use

comp = Binarize@AlphaChannel[im]

ComponentMeasurements[comp, "Area"]
(* {1 -> 82093.4} *)

As we’re working with an image, the units are pixels.

To get the result in \mathrm{cm}^2, we would need to know the dimensions of the image or the leaf in centimetres. If you have the actual leaf, you could measure it with a ruler, then use that information to calculate the pixel/cm ratio.

Thank you for your great help! :slight_smile:

very useful. if you can plot an area, then you can obtain the area without complex integral - assuming you do not need a perfect accuracy, which in the real world is (often)