Login  Register

Roundness calculation

Posted by Heeschen, Bill (WA) on Jul 02, 2013; 8:32pm
URL: http://imagej.273.s1.nabble.com/Roundness-calculation-tp5003742.html

Greetings, all.
Looking for a literature basis for ImageJ's Roundness.

I got into a discussion with a colleague about ImageJ's Roundess calculation:
Roundness  =  4*Area/(pi*MajorAxis^2)
Which simplifies to...
        Roundness = (EquivDiam/MajorAxis)^2
where EquivDiam is the diameter of the circle with the same area as the object measured

In particular, the discussion centered on choice of MajorAxis instead of Feret in the denominator.

I can generate arguments favoring both choices, but it seems that using the Feret is the "purer" choice because it is closer to some of the literature definitions that I've found where the diameter of the minimum circumscribed circle is used in the denominator (see for example Rodriquez, et al review: http://pure.ltu.se/portal/files/36945408/Rodriguez_Johansson_Edeskar_Particle_Shape_Determination_by_Two_Dimensional_Image_Analysis_in_Geotechnical_Engineering.pdf ).

The problem with using MajorAxis is that it is a secondary measurement derived using the algorithm that fits an ellipse to an object (which I use heavily, by the way.)  In order to mathematically explain ImageJ's Roundness calculation, one must also explain the ellipse-fitting calculation and then explain why it is the best choice for generating the value to describe Roundness.  The problem, of course, is that the ellipse-fitting calculation coerces the numeric description of the object (major/minor axes) toward something that is nominally round by assuming that the object can be approximated by an ellipse!

Having now implied that Feret is the more-robust number, there are pathologic cases - such as an equilateral triangle - where even the Feret is a poor estimation of the minimum circumscribed circle!

I dug through the   Analyzer.java   code and see that using MajorAxis is straightforward because it is an element in the "stats" class (stats.major) whereas the values for Feret (Feret, angle, minimum Feret, etc.) seem  to only exist long enough to be written into the results table.  They are generated on the fly as a call to the roi.getFeretValues() method.

My easy solution is to do an additional Roundness calculation using Feret and report that, but if there is a literature reference that takes the side of "MajorAxis", then I would really appreciate seeing it.

Thanks,
Bill
William A. Heeschen, Ph.D.
Microscopy, Digital Imaging
The Dow Chemical Company
Midland, MI  48667
[hidden email]



--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html