[Work Log] Brainstorm: Neuron-tracing

December 01, 2014

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?


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 ——————

  1. Use all curves; no merging, use heuristics to resolve junctions
  2. same as 1. but use “weak curve” heuristic to trim bad cases train an svm to decide which curves are good?

——————— 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?

matlab code

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
blog comments powered by Disqus