Circular particle thresholding and identification

Hi - thanks in advance for reading/having a look at my problem… any small tips are greatly appreciated!

I have images of water droplets (micrometre size) on a soft substrate that I am trying to create a binary image of and segment individual droplets to attain the size, distribution and are coverage w.r.t. time. What I have found is that at early times when the droplets are spread out and non-touching I can readily attain this data, however when the droplets are polydisperse in size or tightly packed I can’t find a workflow that works.

Due to large droplets having a centre the same colour as the background, or when the particles are touching the dark perimeter isn’t homogenous meaning a threshold doesn’t attain the full circular shape.

Here’s an example of about the limit of polydispersity that I can semi-successfully analyse.

I found the best method often was to enhance the contrast and split into an RGB stack where the green provided the best contrast, and negated the background colour:

run(“Enhance Contrast…”, “saturated=50 equalize”);
run(“RGB Stack”);
run(“Stack to Images”);
selectWindow(“Blue”);
close();
selectWindow(“Red”);
close();
selectWindow(“Green”);

Then using binary operations to fill holes/watershed etc.

run(“Convert to Mask”);
run(“Fill Holes”);
run(“Watershed”);
run(“Analyze Particles…”, " circularity=0.50-1.00 show=Masks display clear summarize add");

As well as trying to split the colours, I have also tried different techniques:

  • Find Maxima and output segmented particles: worked for some cases but didn’t attain accurate shape profiles.
  • Hough Transforms: this didn’t work when the perimeters weren’t complete, creating multiple odd ellipses on singular droplets.
  • EllipseSplit: again worked well-ish on full circles but struggled with tight packing.
  • Analyse particles, mask output: ran this for thresholded particles to attain the inner pore shape on large droplets, which I then dilated. On the original threshold then inverted the LUT and analysed to get the small particles that appear as full dots (not big enough to have the inner transparent pore). I then added the masks together to get a composite representation of all the particles - this was probably the most successful method on awkward polydisperse cases. See the photo below where different parameters (circ/size) were used on the images to attain the different masks.

I have been working on this for so long and although I acknowledge I will need different workflows at different points in time of the images, I still struggle getting accurate data from some examples.

Please see below some raw images that I am not having any luck with:

Highpackingexample.tiff (1.0 MB) polycircleexample.tiff (1.0 MB)

I have had a play attaining new images but I get the same fundamental problems when I come to analyse. Ultimately as I have images every second I need a decent workflow with I can apply in batch.

Thank you for your time !

Hello
@FRANK
A similar topic has been covered here:

Did it help?

1 Like

Hi @Mathew ,

Thank you so much for helping - I did try with your macro but it exacerbated the issue with larger droplets and transparent centres/touching sides:

I liked your idea of converting to a different colour stack and had more luck with the K image contrast. Equally, I have been arbitrarily trying to use image calculator and operations to combine different images to see if that helps w complete perimeters or bringing out the small droplet prominance better but haven’t really had much luck / know what I am doing!

Thank you for your time I really appreciate it.