November 11, 2013

I've been struggling getting good results on the Columbia-strain images from the WACV dataset. I was hoping that manually re-tracing the ground trough would improve results, but problems still remain. MY current theory is that these datasets exhibit significant shifting of the plants over time. This is causing the dynamic programming algorithm for finding point-correspondences to give bad correspondences, which are never fixed later in the pipeline.

This is best illustrated using the point-correspondence tables below. These tables describe the point-corerspondences between views of a curve. Each row represents a 2D curve from a different view; values in the table represent the index of a point along the 2D curve. Each column represents a position along the underlying 3D curve, and the values in a column are a set of corresponding 2D points from each view. An 'x' represents 'no match'; x's only occur at the beginning and end of a row.

An ideal point-correspondence table looks like this:

```
3D curve position
+--------------------+
view 1 | 1 2 2 3 ... 50 50 |
index 2 | 1 1 2 2 ... 50 51 |
... | ... |
n-1 | 1 2 3 3 ... 48 48 |
n | 1 1 1 2 ... 45 46 |
```

When the plant-stem exhibits drift over time, we get problems where each subsesquent curve is shifted left in the correspondence table:

```
3D curve position
+--------------------------------------+
view 1 | 1 2 2 3 ... 50 50 x x x x x x |
index 2 | x x 1 1 ... 48 49 50 51 x x x x |
... | ... |
n-1 | x x x x ... 45 46 47 47 48 48 x x |
n | x x x x ... 43 43 44 44 45 45 46 47 |
```

As a result, we get 3D curves that are longer and tend to exhibit loopy curvature.

My current theory assumes this occurs because the point-correspondence algorithm optimizes a local score, not taking into account smoothness or per-view perturbations that our full model allows. I'm working on implementing a post-processing step that does local optimization on the index set w.r.t. the full marginal likelihood, which I'm hoping will fix these problems when they occur.

I've derived an efficient method for computing the analytical gradient of the index set w.r.t. the marginal likelihood, which I wrote up yesterday. I've implemented some of the pieces, but finish the end-to-end code.

Finished testing the function that computes dK/dt; accurate to within 1e-8 (which is probably due to the numerical approximation used for comparison).

*Hypocotyl Tracing*

Read three papers on Hypocotyl tracing from plant biology. Methods are mostly straighforward: threshold, extract curve using {distance transform, morphological skeleton, gaussian tracing}, terminate using hand-built criterion.

- Hypotrace, Want et al.
- HyDE, Cole et al.
- Miller et al.

*Root Tracing*

Read several papers on root tracing

- "RootRead3D" Clark et al. 2011
- Zhu 2006 - hough-transform / space carving to find voxels; skeletonize using "minumum cross section", fit with NURBS curve.
- "Smart-root" Lobet et. al 2011 - Most cited Clark descendant; Semi-auto,
*2D*; hand-build algorithm, trace bright regions with consistent radius. Grayscale features, strong GUI.- "EZRhizo" Armengaud et al. 2009 - Manual tracing? (To Read)
- "DART" Le Bot et al., 2010 - Manual Tracing? (To read)
- Iyer-Pascuzzi et a., 2010 - Automatic. Multiple angles, but
*2D analysis*. preprocess: Adaptive threshold. Medial axis: distance transform - "Root-trace" Nadeem et al. 2009 - auto; (To Download)

- Fang et al. 2009 - Laser scanner, skeleton using hough transform method.

*Neuron Analysis*

Reading papers of the teams that won the Diadam Challenge for tracing neurons.

*Wang et al. A Broadly Applicable 3-D Neuron Tracing Method Based on Open-Curve Snake*

Preprocessing: eigenanalysis of image hessian, eigenvalues are used to determine "vesselness" of each pixel. Presegmentation: Graph cut on "vesselness image". Actually "Vessel Cut"; "tubular structures are further enhanced and close-lying axons are thinned in the vesselness image". A bit vague here. See Freiman et al. (2009).

*To Read:*

Freiman et al. (2009). vessel-cut Narayanaswamy et al. (2011) curvelets and scalar voting

*Applications to TULIPS: datasets, evaluation*

This paper uses a handfull of branching curve datasets that we could use for our project.

We also get an evaluation metric for comparing centerlines.

*Possible Bisque analysis*

Run graph-cut or grab-cut to do foreground segmentation.

Posted by Kyle Simek