Sphericity segmentation of nuclei in binary segmented images

Hi all,

I have recently been working on a project where I analyse segmentations of brain tissue. My question is one that I thought would be very simple. The images are binary and I have been able to measure the sphericity (by first performing a distance transform watershed to make sure touching structures get seperated and to make sure they all get a different color for the sphericity measurement) of the nuclei using MorpholibJ. However, there is also some linear structures in the 3D data, which I would like to exclude by choosing a threshold value for the sphericity and only keeping structures that have a sphericity above this value. This has proven to be much harder than I expected however, so I would like to know if anyone knows a plugin that is capable of doing this.

Thanks in advance

1 Like

Hi @Ryan_Pollitt,

if you have a label image (where all objects are numbered) and a sphericity measurement, you could use CLIJ2 #clij to kick labels out of your label image. There is a tutorial online, where I do this depending on pixel count. But it should be doable to adapt this for sphericity - again starting point would be sphericity in a table or an array.

before / after:

Let me know if you need support getting this work on your data.


This really looks like a great solution. However, my Java coding experience is non-existent, so I was really hoping for a magical plugin to save me. Thanks for the help nonetheless!

1 Like

It’s not Java - it’s ImageJ macro. But yes, you may need to code a bit :wink:

There will be a webinar about it as part of the NEUBIAS academy next Wednesday. Feel free to join.

And if you want to get some basic ImageJ macro skill, check out my lecture:


Hi everyone,

On the topic of sphericity, I see that MorphoLibJ calculates it as image , and that “normalized such that the value for a ball equals one” (https://imagej.net/MorphoLibJ#Shape_factors).

So, if I get it right, a sphere would have a maximum value of one and anything less spheric than a sphere would have <1. I’m confused since I get a range of values for my objects’ sphericity ranging 0.1 -> ~2.

Shouldn’t 1 be the max possible?