Blender Git Commit Log
Git Commits -> Revision 46be7e0
Revision 46be7e0 by Sergey Sharybin (soc-2011-tomato) April 24, 2013, 14:30 (GMT) |
Initial commit of reconstruction variance criteria which is an addition for GRIC-based keyframe selection. Uses paper Keyframe Selection for Camera Motion and Structure Estimation from Multiple Views, ftp://ftp.tnt.uni-hannover.de/pub/papers/2004/ECCV2004-TTHBAW.pdf as a basis. Currently implemented camera positions reconstructions, bundle positions estimation and bundle adjustment step. Covriance estimation is implemented in very basic way and need to be cleaned up, speed up and probably fixed. Covariance matrix is estimating using generalized inverse with 7 (by the number of gauge freedoms) zeroed eigen values of J^T * J. Use value of 7 because we've got 3 translations, 3 rotations and 1 scale freedoms. Additional changes: - Added utility function FundamentalToEssential to extract E from F matrix, used by both final reconstruction pipeline and reconstruction variance code. - Refactored bundler a bit, so now it's possible to return different evaluation data, such as number of cameras and points being minimized and also jacobian. Jacobian currently contains only camera and points columns, no intrinsics there yet. It is also currently converting to an Eigen dense matrix. A bit weak, but speed is nice for tests. Columns in jacobian are ordered in the following way: first columns are cameras (3 cols for rotation and 3 cols for translation), then goes 3D point columns. - Switched F and H refining to normalized space. Apparently, refining F in pixel space squeezes it a lot making it wrong. - EuclideanIntersect will not add point to reconstruction if it happened to be behind the camera. - Cleaned style a bit. |
Commit Details:
Full Hash: 46be7e067b23b3dcef37ec747a77b509d4955c70
SVN Revision: 56265
Parent Commit: 48f3a30
Lines Changed: +529, -177
11 Modified Paths:
/extern/libmv/ChangeLog (+76, -79) (Diff)
/extern/libmv/libmv-capi.cpp (+3, -2) (Diff)
/extern/libmv/libmv/multiview/fundamental.cc (+19, -0) (Diff)
/extern/libmv/libmv/multiview/fundamental.h (+5, -0) (Diff)
/extern/libmv/libmv/simple_pipeline/bundle.cc (+84, -2) (Diff)
/extern/libmv/libmv/simple_pipeline/bundle.h (+34, -2) (Diff)
/extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc (+2, -14) (Diff)
/extern/libmv/libmv/simple_pipeline/intersect.cc (+1, -0) (Diff)
/extern/libmv/libmv/simple_pipeline/keyframe_selection.cc (+297, -74) (Diff)
/extern/libmv/libmv/simple_pipeline/keyframe_selection.h (+1, -1) (Diff)
/extern/libmv/libmv/simple_pipeline/pipeline.cc (+7, -3) (Diff)
/extern/libmv/libmv-capi.cpp (+3, -2) (Diff)
/extern/libmv/libmv/multiview/fundamental.cc (+19, -0) (Diff)
/extern/libmv/libmv/multiview/fundamental.h (+5, -0) (Diff)
/extern/libmv/libmv/simple_pipeline/bundle.cc (+84, -2) (Diff)
/extern/libmv/libmv/simple_pipeline/bundle.h (+34, -2) (Diff)
/extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc (+2, -14) (Diff)
/extern/libmv/libmv/simple_pipeline/intersect.cc (+1, -0) (Diff)
/extern/libmv/libmv/simple_pipeline/keyframe_selection.cc (+297, -74) (Diff)
/extern/libmv/libmv/simple_pipeline/keyframe_selection.h (+1, -1) (Diff)
/extern/libmv/libmv/simple_pipeline/pipeline.cc (+7, -3) (Diff)