Supplementary Method 1 - ImageJ Macro //setBatchMode(true); "run(""Close All"");" "run(""Clear Results"");" "roiManager(""reset"");" "print(""\\Clear"");" "path = File.openDialog(""Choose an image""); " open(path); "//open(""/home/touvierj/Bureau/noirez/pla_P_eau_1_bff3_c1.TIF"");" "//open(""/home/touvierj/Bureau/noirez/sol_R_eau_4_c1.TIF"");" "dir=getDirectory(""image"");" print(dir); "run(""16-bit"");" " ""title=[Image Originale]"");" "rename(""Image1"");" " ""distance=1 known=0 pixel=1 unit=pixel"");" "run(""Duplicate...""" height channels slices frames); "run(""Set Scale...""" getDimensions(width " ""sigma=2"");" "selectWindow(""Image1"");" " ""radius=30 mask=0.9999999"");" "run(""Gaussian Blur...""" "run(""Unsharp Mask...""" "setAutoThreshold(""Huang dark"");" "run(""Convert to Mask"");" " ""radius=2"");" "run(""Invert"");" " ""iterations=6 count=1 edm=Overwrite do=Open"");" "run(""Median...""" " ""edm=32-bit"");" "run(""Options...""" "run(""Options...""" mean min max std histogram) "run(""Distance Map"");" max); getStatistics(area " ""noise=15 output=[Segmented Particles] above light"");" setThreshold(1 "run(""Find Maxima...""" "rename(""Segmented Image1"");" " "" area fit shape feret's display redirect=None decimal=2"");" "selectWindow(""Segmented Image1"");" " ""size=60-12000 display clear exclude record add"");" "run(""Set Measurements...""" "run(""Analyze Particles...""" "selectWindow(""Image1"");" close(); "selectWindow(""EDM of Image1"");" close(); "selectWindow(""Image Originale"");" i); for(i=0 ; i 0.8 && solid < 0.85) || circ < 0.48) {" " ""stroke=red width=1 fill=red"");}}" " run(""Add Selection...""" " dir+""Results.csv"");" " } else { run(""Add Selection...""" " dir+""principalRoiSet.zip"");" "saveAs(""Measurements""" "roiManager(""Save""" "selectWindow(""Segmented Image1"");" close(); open(path);