Finished editing new likelihood function. See correspondence/clean_correspondence3.m
(filename likely to change soon). Below is a summary of results and comparison to the old approach.
Below is a plot of the maximum likelihood curves:
Each colored curve arises from a single 2D data curve. The curve represents the mean of a gaussian process. Variance is not shown; it is infinite in the direction of backprojection.
The dark-blue curve is an estimate of the posterior curve, which was used to backproject the 2D curves against. It is estimated from the point-correspondences.
Note that for clarity, x/y scale is significantly smaller than z-scale (up-direction). When axis are equally-scaled, max-likelihood curves lie very close the to blue curve.
The old likelihood suffered from a small but non-negligible number of awful correspondences, which severely damaged both reconstruction and marginal likelihood values. This was because the likelihood was derived from the point-to-point correspondences, which (a) is problematic at gaps, and (b) suffer bad correspondences which can't be fixed later. The new approach uses the old approach as a starting point, but then recomputes all 2D curve correspondences against a rough reconstruction. This dramatically improves correspondences as we see below.
This is the old correspondence. Blue points are points from the 2D data curve; the teal line is the posterior 3D curve (projected to 2D); red lines show correspondences.
Next is the fixed correspondence. Notice how the red correspondence lines are much shorter, indicating a less costly correspondence.
The old likelihood had a single GP curve that represented all of the different views. Now we have a GP curve per data-curve, which will be related by a GP prior.
This will allow us to simultaneously track and triangulate, a key novelty to this approach. More importantly, it will give us higher marginal likelihood numbers for true 3D curve observations, because we can make the independent noise component very small.
merge_correspondence.m
, to avoid a full DTW after every merge.