Any way to calculate size distribution of cubes inclined on various angles?



Dear Community,

I faced a task which I don’t know how to tackle, at the moment. The task is to calculate size distribution of cubic particles from SEM image. The problem is that not all particles are on their faces, some are inclined, and the angle of inclination varies between particles. A sample image is below.
The question is could such image be processed (semi)automatically? I mean that it is probably possible to do particle by particle - measure angles between edges, recalculate projection angle, calculate cube edge, but that’s a bit laborious.
I wonder if that could be done by means of ImageJ instruments or custom plug-ins? I’d be grateful for any advice.

Thanks a lot!



The first thing you need to do is effectively (as best you can) segment your particles. This is a tall order for sure - it’s a tough image. Let’s see though … perhaps others here have better insight on a solid workflow - but just playing a bit myself I tried the following steps:

run("Find Edges");
run("Gaussian Blur...", "sigma=2");
run("Morphological Segmentation");
call("inra.ijpb.plugins.MorphologicalSegmentation.segment", "tolerance=20", "calculateDams=true", "connectivity=6");

Which gave these results:

I used the Morphological Segmentation tool from the MorpholibJ plugin.

This workflow isn’t ideal… the image you have is a tricky one (I cropped it in the end too). But you just need to try out different preprocessing steps and see what gives you the best segmentation. After that - you can focus on the measurements you need - but step one is getting the particles.

Again - perhaps others here have other ideas to get you started…



Thanks a lot for the procedure!
Actually, I plan to recollect the images using a more diluted suspension. I was just afraid that my description of the problem would be ambiguous without any visual example, and the problem with size calculations just didn’t got out of my head. My apologies if the image gave too much trouble.
In any case, the procedure is useful, thanks a lot! I was thinking on how to tell the software what is particle and what is not, and that looks like a very nice solution.