I am analysing microscopic particles images of the kind shown below, and primarily I am interested in learning whether in Mathematica one can extract structural properties of the particles using the built-in image analysis tools.
More precisely,
is it for instance possible to compute the nearest-neighbour distance distribution?
Or more importantly, measuring the density of particles from the image? (that is, number of particles per area when binning the image).
I admit there might be similar questions previously asked but I could not pinpoint one that tackled such problem, so any help would be much appreciated.
Image example (source):
The kind of analysis I have learned so far is to use the ridge lines separating the particles in order to detect them and find their centres of mass based on the point of maximum distance to a ridge line (per particle). Here's an example
img = Import["https://i.stack.imgur.com/rUnvs.jpg"]
ridgelines = RidgeFilter[-img, 4];
distanceRidges =
DistanceTransform@
ColorNegate@
MorphologicalBinarize[
ridgelines] (*distance transform image based on the ridge filter*)
\
distMaximum =
MaxDetect[distanceRidges,
4] (*find centre of masses using max ridge dists*)
which yields:
dots = SelectComponents[Pruning[Thinning@distMaximum], #Count == 1 &]
you can get those blobs as entirely single dots. ThenPixelValuePositions[dots,1]
will get you their centers. From there you can doDistanceMatrix
and other such things likeNearest
etc. $\endgroup$