Measure circle (or ring) with varying diameter

I am studying the dynamics (fast) moving droplets. On the microscope, they appear as dark rings. Prior to do the tracking, I obviously need to detect the droplets.
I would like to precisely and efficiently (especially in terms of computation time, and if possible CPU-GPU-RAM ressources) detect the position and measure the size of these droplets.
I am using Matlab, and so far I have been using imfindcircle. The issue is that it does allow one to measure sizes smaller than 5 pixels, nor does it allow subpixel measurement of the size of the particles.
Also, it does not seem to be very fast to compute, and I was thinking of maybe finding a better way using GPU for instance…?

Does anyone know something that could fit my needs?
Thank you!
an example for one of the image I am dealing with is attached here (it is on 16bits):

PS: last, I am really new to Fourier decomposition for image processing, but would it allow for location detection? I am guessing not, but I’d rather ask… :slight_smile:

There was a paper in Scientific Reports a few years ago that might be relevant. It included matlab code for fitting diffraction patterns.

“3D tracking of single nanoparticles and quantum dots in living cells by out-of-focus imaging with diffraction pattern recognition.” Gardini et al, Scientific Reports 2015.

link to paper


Thank you Hazen. Very interesting paper indeed. I’ll try out the matlab code they provide.