Greetings good people,
I have many z-stacks of images, and I need count the number of droplets and to measure their volume (or surface, they can be safely assumed to be spherical). I also need to automatize the process, as I have many stacks.
Despite the large amount of plugins available on Imagej to segment and label 3D images, I never managed to get good results due to two reasons: my pictures are very noisy and the droplets are tiny, with some being just a few pixels wide.
Here is an example of the raw data:
Luckly, I managed to improve the noise on my data thanks to the excellent noise2void plugin, but the problem of very small droplets remains. Here is an example:
As I said above, I tried several plugins but with little success:
Droplet Counter is really messy, and gives me really inconsistent results everytime.
Trackmate is very good, but not in this situation. It indiscriminately fits the estimated diameter on every blob, and therefore it doesn’t give a reasonable estimate of the droplet size. Also, it can’t be used in scripts, as it wants to run on its GUI at every cost.
3D Iterative Thresholding from the 3D ImageJ Suite seemed to be tailor made for this problem, but it gives wildly inconsistent results on my data despite having done a good amount of work to fine-tune its parameters. Sometimes it refuses to recognize some droplets, especially the most clustered ones. The other plugins from the same packaged worked somehow worse on my data
Classic Watershed from the MorphoLibJ seemed also to work, but understimates the number of droplets consistently. Note that I used the Subtract Background function from imagej and then used a very mild gaussian filter on the data beforehand, as it had the tendency to “split” in two parts some droplets.
Trainable Weka Segmentation seems pretty promising, but the built-in tools for training the images are pretty rough, and very often the plugin “melts” together two droplets. I think that this problem can be mitigated through extra training, but I haven’t been having much luck.
And on top of that, even when I somehow manage to get a passable segmentation, I stumble on another problem when trying to collect the statistics when using 3D Objects Counter.
Sometimes it “connects” droplets that seemingly don’t have any pixels in common, just like in this case:
Look at “droplet” number 77.
I believe that the problem lies in it not taking into account that the droplets are spheres, and therefore it “forcefully” connects everything above and below. This obviously messes up any estimation of the size of the droplets.
Has anyone ever faced the same problem when segmenting?
Is there any way to label and get the statistics of my segmented data that takes into account the (almost) sphericity of my droplets?
Thank you in advance!