I am affiliated with a project that is interested in quantifying number and length of axonal tracts in whole-brain images of mice. I came upon Skan (https://jni.github.io/skan/getting_started.html) as a potential tool for this problem. While it was designed for blood vessel analysis, I see potential in using it for appropriately stained neuronal tracts. When we applied the software to a full brain image we had moderate success but there are still artifacts from the staining being picked up as true tracts.
Has anyone used Skan for similarly large-scale image analysis with success? My partner in this project has had success in manually tuning the parameters on smaller images, but if anyone could explain them and how to go about tuning parameters in a more efficient way, that would be great.
We are mainly stuck at the skan.pre step of the pipeline since the skeletonization and process estimation steps are relatively straightforward. Here is some example code so you know our parameters but the workflow is otherwise the same as given on the website apart from the fact that we are attempting this in a whole brain image.
spacing_nm = 912.9766206 # The approximate value of nm per pixel given to me """Thresholding is done using the Sauvola thresholding algorithm (only thresholds according to a local window)""" smooth_radius = 5 / spacing_nm # float OK threshold_radius = int(np.ceil((50 / spacing_nm))) binary0 = threshold(image0, sigma = smooth_radius, radius = threshold_radius)
What might be a good radius to consider for the Sauvola binarization if we are dealing with a 13045x23237 pixel image with very high resolution? Let me know if I am missing important info, thanks!