threshold distance transform skeleton identify chains, endpoints, and intersections identify endpoint merge candidates identify t-junction merge candidates
identify ambiguous cases ambiguous intersection (which one is the lateral?) ambiguous merge (endpoint vs t-junction?
for each skeleton point, find direction and distance to two matching points get width
identify soma as point with largest distance
filter bad skeleton points average touch-point velocity is much less than skeleton point velocity. with changes almost as fast as skeleton point moves
——————————— GROUND TRUTH ————————————
w/ known skeleton ——————————— identify skeleton points that are good/bad manually resolve junctions manually perform merges
general ———— Trace out general topology w/ bezier curves.
———————— LEARNING ————————
quantities of interest:
GP parameters position changes width changes
soma shape/size?
GP MODELS
smooth curve plus mean-reverting random walk? smooth curve resolves ambiguous branch using curvature
———————— LIKELIHOOD —————
Allow greater uncertainty along cross-section, because width doesn’t change symmetrically.
Evidence is weaker where skeleton points are weak (i.e. width changes quickly)
——————— INFERENCE —————
Questions to answer:
which skeleton sections are for actual dendrites?
————— STRAW MEN ——————
——————— Evaluation ———————
general, weak —————————— number of curves number of lateral branches histogram of curve lengths
general, strong ——————————— topology evaluation / mot metrics - match to ground truth and count identity swaps, etc
w/ GT against known skeleton ——————————————— misclassified junctions false positive/false negative merges
—————— misc —————— Is there any benefit to reconstructing the “smoothed” neuron? probably not. but the latent model is still useful for classifying junctions.
How do deal with un-ground-truthable junctions?
how to deal with regions poorly modelled by a skeleton?
I should look into neuron-tracing prior art.
threshold issue: try multiple thresholds and somehow merge skeletons?
cd /Volumes/offload/Downloads/JT106_Ex33_Original img = imread('JT106_Ex33_61.tif'); level = graythresh(img) I = img > (level * max(img(:))); D = bwdist(~I); skel = bwmorph(D,'skel',Inf); imagesc(skel) skel2 = bwmorph(D,'skel',5);
Posted by Kyle Simek