[Work Log] WACV Reconstruction issues; iPlant Reading; Index optimization

November 11, 2013

WACV Reconstruction issues

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).

iPlant Reading

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.

Root Tracing

Read several papers on root tracing

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