MATLAB Answers


Which one is best for calculating circularity ?

Asked by Muhammet on 22 Aug 2013
Latest activity Commented on by Rai_313
on 24 Apr 2015
Hi all, I need to calculate objects roundness.I am not sure about which of the below ones is the best choice for this purpose.
- R= 4*pi*A/P^2; where A is area in pixels, P is Perimeter.
Thank you for your opinions.particles I need to measure are like this :


Sign in to comment.

3 Answers

Answer by Image Analyst
on 22 Aug 2013
 Accepted Answer

I use circularity quite a bit. The formula I use is the inverse of the one you use:
circularity = (Perimeter .^ 2) ./ (4 * pi * area);
so for me the circularity of a circle is 1 and the higher it goes, the less circular it it. For you the lower it goes (closer to zero) the less circular the blob is. You can do it either way.
I don't often use eccentricity because you can get the same eccentricity for a perfectly smooth ellipse as for some tortuous-shaped blob because it fits the perimeter shape to an ellipse. For example an asterisk and a disc might both have the same eccentricity but there is a dramatic difference in shape that is not picked up by eccentricity. Don't use eccentricity unless you know that your blobs are fairly close to ellipses.


Show 1 older comment
Tahnk you for your advice.I think you should use my relation to calculate circularity using area and Perimeter.In my way measures are limited to range [0 1], but in your way there is no upper limitation as it goes to infinity.
For eccentricity thats what I am doubting because these calculations are for chemical engineering researchers and they need to know about small scratches on border rather than what shape whole objects is similar to.
In practice, you can use either formula. It really does not matter. For scratches (small indents or bays) in the outer edge, you should look at the "Solidity" which will pick that up.
hi Image Analyst ,
Im would like to ask, why shouldnt we use the haralick circularity?
thank you.

Sign in to comment.

Answer by Amith Kamath on 22 Aug 2013

I would do one of the following:
1. Use the 'solidity' option in REGIONPROPS to estimate how 'curvy' the blob is, and solidity is defined as the area/convexArea.
2. Use the 'MajorAxisLength' and 'MinorAxisLength' properties in REGIONPROPS and compare the two. If they are close to equal, the object would be more circular (in most cases).
3. Use 'Area' and 'Perimeter' from REGIONPROPS to estimate circularity in my custom code. may be useful to see.


Sign in to comment.

Answer by Shashank Prasanna on 22 Aug 2013

  1 Comment

I am not looking for perfect circular objects almost with same radius.Objects are differing both in size,in circularity.Thank you for your concern.

Sign in to comment.