MATLAB Answers

Which one is best for calculating circularity ?

251 views (last 30 days)
Muhammet on 22 Aug 2013
Commented: 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.

Accepted Answer

Image Analyst
Image Analyst on 22 Aug 2013
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
Muhammet on 23 Aug 2013
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.
Image Analyst
Image Analyst on 23 Aug 2013
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.
Rai_313 on 24 Apr 2015
hi Image Analyst ,
Im would like to ask, why shouldnt we use the haralick circularity?
thank you.

Sign in to comment.

More Answers (2)

Amith Kamath
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.

Shashank Prasanna
Shashank Prasanna on 22 Aug 2013

  1 Comment

Muhammet on 23 Aug 2013
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.

Community Treasure Hunt

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

Start Hunting!