[Work Log] Index Refinement; Mean-curve Reconstruction

August 15, 2013
Project Tulips
Subproject Data Association v2
Working path projects/​tulips/​trunk/​src/​matlab/​data_association_2
Unless otherwise noted, all filesystem paths are relative to the "Working path" named above.

Continuing from yesterday.

Tried changing index_delta from 0.5 to 0.25. ML suddenly dropped a lot. Realized that oversampling the smoothed curves causes significant degree of many-to-one, and our code prevents skipping more than one or two points during correspondences.

Main Idea: Sampling period should be equal to (or close to) the data point-spacing.

Index-refinement

Allow indices to correspond to continuous values between the samples.

Modified correspondence/corr_to_likelihood.m to post-process indices to search the neighboring line segments for a better value. Re-ran tr_prep_likelihood to reconstruct Corrs collection. ML improves after fix.

Need to confirm improved indexing by visualizing results. See experiments/exp_2013_08_15_visualize_indices.m, still in progress. Some apparent bugs in aforementioned changes, causing bad results. Still investigating...

Mean-curve reconstruction

Last week, I derived the equation for finding the maximum posterior per-view reconstruction. Now we have a formula for the unobserved mean curve, i.e. the curve that each view is perturbed from. Iterestingly, they both have the same form:

\[ \mu = K^* (S K + I)^{-1} S y \]

Note that this is slightly different from the form used in a previous post. This form is equivalent, and better reflects the form used by Williams and Rasmussen.

Here, \(K\) is the prior covariance, \(S\) is the likelihood precision matrix, and \(y\) are the virtual observations in 3D. \(K^*\) is the covariance between the observed points (columns) and the points to be predicted (rows). The difference between the per-view and the mean reconstruction is the form of \(K^*\): for the per-view reconstruction, \(K^*\) uses the full prior covariance, whereas with the mean reconstruction, the perturb covariances are set to zero.

Usage

Modified curve_max_posterior_2.m by adding an extra optional parameter, kernel_2. If set, it assumes you want a mean reconstruction instead of a per-view reconstruction, and uses kernel_2 to build \(K*\).

Added an extra flag to experiments/exp_2013_08_11_reconstruct_for_web.m, which if set to true, will also plot the mean curve.

Posted by Kyle Simek
blog comments powered by Disqus