Early October - I finally decide that although it would be nice to work on one of the many neat modeling projects that don't have anything to do with my other research, I need to concentrate. I pick modeling camera motion, since that is what I am currently trying to do (in an ad.hoc. manner).
Oct. 17 - Didn't have a written proposal to hand in today. Spent all my time either recuperating from the 10th or reading about different approaches to camera motion estimation (and the parallel problem of structure from motion.)
Oct. 23 - Finally learned how to author HTML documents ! Compared to something like configuring mh mail using the mh-format language, it's plain english. I wrote the proposal and linked it in tonight. I committed to a feature-based approach, after deciding that optical flow techniques were doomed to failure in all but a few special cases, and noting that Horn's research has turned from optical flow to feature based over the last six years. When a strong advocate of a particular technique gives up on it, it's time to change !
Nov. 7 - Gave up on actually using live data for my project. The instrumented camera isn't quite ready, and neither is the digitizing on Cheops. I also realized that my hands were full just dealing with the Kalman filtering, a good feature tracker is another project in itself.
Nov. 15 - The basic foundations have been written, including matrix math routines (based around the NR matrix and vector representations), the kalman filter routines, and MatLab functions to synthesize the data. Now to add the wrapper application and the model specific code...
- The linearization of the measurement model is a ROYAL pain...
I have been working on it off and on for two week (spending a lot of time figuring out what other people did, and (re)learning probabilistic systems and calculus) I finally decided that to keep from stalling on this road block I would concentrate on getting the software debugged using a simpler model. By only allowing camera translations, I was able to do the math and code it up in a night.
Nov. 30 - It finally doesn't blow up immediately. Spent much of the last day figuring out how to get the OSF/UNIX cc compiler on the Alphas to properly ignore all the floating point exceptions (see the makefile for details.) Other problems were due to an virgin matrix math library.
Dec. 3 - It converges !!! I finally got the simple case (no rotation) to converge on a solution. This means that I probably found most of the bugs in the code...(cross my fingers.) The problems were due to errors in my linearization of the measurement model. I spent a lot of time playing with the initial estimate and system variances. It is neat how you can guide the kalman filter (even when it isn't working right for other reasons.) Also added monte-carlo support to wrapper app.
Dec. 4 - Arghh ! All my reference books were on hold when I tried to renew them. Kalman filtering must be a popular final project around the 'Tute. This means I'm flying on conference papers alone from here on out.
Started more rigorous testing (ie. more motion, simulated over a longer time.) The algorithm tracks the motion for a while, then reaches a point where it just blows up. This is to be expected (the system model doesn't allow motion), and the IEKF tracks it longer than the EKF. I'm going to add in auxiliary motion information, and work on a batch algorithm for providing the initial estimate. Support for rotation will come last, if at all.
Dec. 7 - Decided to add a Levenberg-Marquardt algorithm to provide the initial estimates. This will require calculating the Hessian of the image transformation. Yuk.
Dec. 9 - Starting to code up the Hessian and converting my Kalman filtering code to support rotation.
Dec. 12 - Rotation is now being estimated as well. Some problems, possibly due small errors in the rotational acceleration accumulating in the global rotation matrix...
Dec. 16 - Trying to pull together a coherent description of what I did and learned. Publishing eqns using HTML sux ! LaTex still rules...