Blender Git Loki
Git Commits -> Revision 2833994
Revision 2833994 by Keir Mierle (master) February 25, 2013, 20:00 (GMT) |
Switch motion tracker bundle adjustment to Ceres. Patch originally written by me, then finished by Sergey. Big thanks to Sergey for troopering through and fixing the many issues with my original (not compilable) patch. The Ceres implementation uses 2 parameter blocks for each camera (1 for rotation and 1 for translation), 1 parameter block for common intrinsics (focal length etc) and 1 parameter block for each track (e.g. bundle or 3D point). We turn on some fancy optimizer options to get better performance, in particular: options.preconditioner_type = ceres::SCHUR_JACOBI; options.linear_solver_type = ceres::ITERATIVE_SCHUR; options.use_inner_iterations = true; options.use_nonmonotonic_steps = true; options.max_num_iterations = 100; Special thanks to Sameer Agarwal of Ceres fame for splitting out the SCHUR_JACOBI preconditioner so that it didn't depend on CHOLMOD. Previously we could not use that preconditioner in Blender because CHOLMOD is too large of a dependency for Blender. BundleIntrinsicsLogMessage: - Moved bunch of if(foo) LG << "bar" into this function, to make EuclideanBundleCommonIntrinsics a little bit easier to follow. EuclideanBundle: - Fix RMSE logging. |
Commit Details:
Full Hash: 2833994a71c548917341a51f9085149f122ddf53
SVN Revision: 54859
Parent Commit: 5be99ab
Lines Changed: +274, -167