Ask Your Question

Particles morphology calculations

asked 2016-07-13 05:08:11 -0500

jmaire gravatar image


I'm a scientist and right now I have to automate the morphological description of sand grains. I want to compute those descriptors : - Circularity, according to Cox (Riley, 1941), that describes wether the grain is circular or elongated (easy to compute, no big deal here) - Roundness that describes if angles of sand grain are sharp or rounded.

I usually use imageJ for image analysis but its descriptor for roundness is shitty (4A/(Pi(major axis)^2)).

According to Wadell (1935) the roundness is the average radius of the corners divided by the inscribed circle's diameter.

image description

I would like to use opencv to find corners positions and to find the matching circles.

I'm just an opencv beginner and i don't have weeks to spend on it. Do you think that's something I could easily implement in onpencv with only some hours of work ?

Here are some sand grains I shot (some parts are blurry since microscope depth of field is limited)

image description

Thanks for your help guys


edit retag flag offensive close merge delete


Can you add another picture showing the expected output of the CV method?

Just for clarity.

MRDaniel gravatar imageMRDaniel ( 2016-07-13 07:48:35 -0500 )edit

2 answers

Sort by ยป oldest newest most voted

answered 2016-07-15 05:07:13 -0500

jmaire gravatar image

Of course, here it is, circles were made by hand, that is what i want to automate since i will have hundreds of images to analyze

image description

Open CV should compute the circles on grain corners, output the original image with circles overlay, then do some simple maths

Average diameter of the circles (1 to 16) = 36 px Diameter of biggest inscribed circle (17) = 273 px

Roundness = 36/273 = 0,13

edit flag offensive delete link more



Please, do not provide update as answers. Instead, update your original post with the edit button

LorenaGdL gravatar imageLorenaGdL ( 2016-07-15 05:12:38 -0500 )edit

May be use this paper


  1. Threshold your image
  2. FindContour
  3. use fourier descriptors to have a mathematical contour model
  4. use this model to find contour tangent at each contour point
LBerger gravatar imageLBerger ( 2016-07-15 05:49:47 -0500 )edit

answered 2016-07-14 09:31:09 -0500

elias gravatar image


Check the tutorial here:

What you basically want to do is threshold the image, then do Canny, then use the example above to fit a circle inside the outlines that you get from Canny.

Kind regards.

edit flag offensive delete link more

Question Tools



Asked: 2016-07-13 05:04:01 -0500

Seen: 866 times

Last updated: Jul 15 '16