Implemented re-ordering of indices. Some are improved, some are worse.
Found bug in re-ordering -- the gradient and Hessian's transformation Jacobian wasn't updated properly. After a few false starts, got it right. Results seem much better. Still getting signficant positive index offset for three curves, all others start at zero. Post-procssing to force them to zero seems to fix; more investigation is warranted in the future.
Offset may be due to insufficient perturb variance? Positive index offset only increases the variance of the first point; the conditional variance of future points is roughly the same for any index offset, due to conditional independence. Possibly the perturb position variance is too low? Carefull setting it too high, we'll get drift toward the camera. Quick test: increase perturb position variance from 52 to 202. The offset phenomenon is exagerated. When position perturbations are left in, the attached model moves all over the place, over 100 mm at times. Well beyond the perturb variance.
Remember that increasing the perturb variance increases the marginal within-view variance, too.
Running on dataset 9. Crashed. missing views of some curves. Going into ground truth tool to fix...
Still crashing. bug in process_gt2 -- new minimum points code. fixed.
Running okay, not much movement even though dataset has significant movement.
We were removing perturbations coming from the rate kernel. new getting more movement, still not the right kind.
plotting triangulated data over reconstructed data. Significant offset, no explanation:
Intrestingly, one curve wasn't properly connected to the parent; that curve shows no offset. Re-running with no connections to test this observation. Offset seems gone, ecept for the middle part of the root curve:
Observation: main curve shifts a lot between views; other curves have almost no shift. Possible index shrinkage problem?
measure index shrinkage: index vs. distance
If position variance is too low, we might be getting a pull toward the origin.
Off-center may be caused by pulling toward camera in per-view perturbation reconstructions. The overall reconstruction is basically the mean of the per-view reconstructions, so if the camera-pull isn't symmetric between views, this can lead to significant shift in the mean.
Indeed, lowering the perturb position variance reduces reconstruction offset. Recall that camera-pulling occurs because likelihood cylinders converge as they approach the camera. See the original discussion of this phenomenon back in August.
Idea: can we limit offset perturbation to only occur in the directions of the imaging plane? It seem possible -- just have constant offset in xy, zero offset in z, and rotate to match camera. Can even add this to S, so it's part of that noise model. This should take care of camera-pulling, at least to the extent that it's caused by the offset model. Can even scale offset variance based on the distance from the camera, effectively using pixel units instead of world units.
Running current version on all datasets.
Program crashes if curves are missing. Regression in code that constructs Track assoc -- emtpy curves weren't being removed. Fixed.
Will inspect results in the morning.
Posted by Kyle Simek