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)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021