diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-05-12 21:06:00 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-05-12 21:06:00 +0400 |
commit | 5637b0d39b007766a0131ca293a9f6f81bb4455b (patch) | |
tree | 831cf156e6534168bd1038f11a53b98f3fdc0c85 /extern/libmv/ChangeLog | |
parent | c3b1f0fa20325aa82faef2761fc76ee76dc35cb8 (diff) |
Update bundled version of libmv
- Ensures fix for msvc2012 is applying correct.
- Some code cleanup to match libmv's code style.
- Do not include points which were intersect
behind the camera to a reconstruction.
- Includes changes needed for keyframe selection.
Diffstat (limited to 'extern/libmv/ChangeLog')
-rw-r--r-- | extern/libmv/ChangeLog | 302 |
1 files changed, 148 insertions, 154 deletions
diff --git a/extern/libmv/ChangeLog b/extern/libmv/ChangeLog index a8010baa77b..60d8b1f6d6d 100644 --- a/extern/libmv/ChangeLog +++ b/extern/libmv/ChangeLog @@ -1,3 +1,151 @@ +commit f003b9e3031db4592c2d91b1ea2538c73b7e767d +Author: Sergey Sharybin <sergey.vfx@gmail.com> +Date: Sun May 12 22:34:54 2013 +0600 + + Cleanup in simple pipeline's bundler + + - Better match Google's code style conventions. + - Move evaluation part into own function, makes + bundling itself easier to follow. + - Made evaluation an optional parameter. + - Removed note about unsupported camera intrinsics + refining flags. Technically, all combinations + are possible. + +commit f0e68f69e5c5f0fd82334246d382e59f1eb20164 +Author: Sergey Sharybin <sergey.vfx@gmail.com> +Date: Sun May 12 22:19:31 2013 +0600 + + Remove check for zero focal length in BA cost functor + + This check is actually redundant, because empty intrinsics + will have focal length of 1.0, which means original comment + about BundleIntrinsics was not truth. + + It is possible that external user will send focal length of + zero to be refined, but blender prevents this from happening. + +commit 7ed5e4da65d2c0df63a08b1e1f4b4de1855f1bf0 +Author: Sergey Sharybin <sergey.vfx@gmail.com> +Date: Sat May 11 20:33:54 2013 +0600 + + Fix compilation error with msvc2012 + + Using change from glog's upstream for this. + +commit 7e162266f96abc25d80e2352cd77f21ed93593b7 +Author: Sergey Sharybin <sergey.vfx@gmail.com> +Date: Sat May 11 19:50:57 2013 +0600 + + Style cleanup, mainly pointed by Sameer in Ceres's codereview + +commit 42da053c6410b4f3fb13798c7e9c5f4a861b6825 +Author: Sergey Sharybin <sergey.vfx@gmail.com> +Date: Fri May 10 18:30:40 2013 +0600 + + Keyframe selection improvements + + Added additional criteria, which ignores + keyframe pair if success intersection factor + is lower than current candidate pair factor. + + This solves issue with keyframe pair at which + most of the tracks are intersecting behind the + camera is accepted (because variance in this + case is really small), + + Also tweaked generalized inverse function, + which now doesn't scale epsilon by maximal + matrix element. This gave issues at really bad + candidates with unstable covariance. In this + case almost all eigen values getting zeroed + on inverse leading to small expected error. + +commit f3eb090f7240f86799099fe86ce9386eb2bd3007 +Author: Sergey Sharybin <sergey.vfx@gmail.com> +Date: Fri May 10 17:59:40 2013 +0600 + + Keyframe selection code cleanup + + - Updated comments in code. + - Removed currently unused functions. + Actually, they'd better be moved to some generic + logging module, but we don't have it now so was + lazy to create one now. Could happen later using + code from git history + - Renamed function to match better to what's going + on in it. + +commit b917b48bd877eedd17dec907cacf0b27a36e717d +Author: Sergey Sharybin <sergey.vfx@gmail.com> +Date: Fri May 10 17:44:49 2013 +0600 + + Optimization for reconstruction variance + + Achieved by replacing SVD-based pseudo-inverse with + an eigen solver pseudo inverse. + + New function works in the same way: it decomposes + matrix to V*D*V^-1, then inverts diagonal of D + and composes matrix back. + + The same way is used to deal with gauges - last + 7 eigen values are getting zeroed. + + In own tests gives approx 2x boost, without + visible affect on selected keyframe quality. + +commit 041b4b54fff66311347a307a5922c2516c76ee44 +Author: Sergey Sharybin <sergey.vfx@gmail.com> +Date: Thu Mar 14 14:53:42 2013 +0600 + + 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. + + Covariance matrix is estimating using generalized inverse + with 7 (by the number of gauge freedoms) zeroed eigen values + of J^T * J. + + 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 94c4654f1145f86779bd0a7e8cda1fd2c751d27d +Author: Sergey Sharybin <sergey.vfx@gmail.com> +Date: Fri May 10 13:27:21 2013 +0600 + + Left extra debugging print in reconstruction scale by accident. + commit 3886b488575ec5e79debce7b9f2e9824f5297c0f Author: Sergey Sharybin <sergey.vfx@gmail.com> Date: Fri May 10 12:23:03 2013 +0600 @@ -493,157 +641,3 @@ Date: Fri Mar 1 17:33:27 2013 +0600 Use threaded cost function, jacobian and linear solver computation, so bundling is as fast as it could be with current parameter block structure. - -commit 931fe37a10212b91b525d4f6eb753990a338b471 -Author: Sergey Sharybin <sergey.vfx@gmail.com> -Date: Fri Mar 1 17:29:21 2013 +0600 - - Fixed comment for euclidean bundling, - which is now supports raidal bundling independently - from other intrinsics. - -commit 217d8e6edc3de1a853fb84275d2d2dd898e7529c -Author: Sergey Sharybin <sergey.vfx@gmail.com> -Date: Tue Feb 26 18:19:01 2013 +0600 - - Allow K1,K2 refirement combination - - It is now possible to refine only radial distortion - with new Ceres based bundler and this new combination - is already used in Blender. - -commit d8850addc944d400f7a9c358396c437d9e4acc70 -Author: Sergey Sharybin <sergey.vfx@gmail.com> -Date: Tue Feb 26 18:17:09 2013 +0600 - - Switch euclidean intersection code to use Ceres - - Would not expect any significant changes in solver - behavior, but it could be more accurate in some cases. - - Switching projective intersection to ceres is marked - as a TODO for now. - -commit 6990b7946ec96b3cb2dcfc8a1beaaba9538b0802 -Author: Keir Mierle <mierle@gmail.com> -Date: Mon Feb 25 20:00:48 2013 +0000 - - 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 1696342954614b54133780d74d6ee0fbcbe224f0 -Author: Sergey Sharybin <sergey.vfx@gmail.com> -Date: Tue Feb 26 18:10:33 2013 +0600 - - Upgrade ceres to latest upstream version - - This is needed because of some features of new Ceres - for further development. - -commit 575336f794841ada90aacd783285014081b8318c -Author: Sergey Sharybin <sergey.vfx@gmail.com> -Date: Mon Jan 7 15:58:40 2013 +0600 - - Fixed for keyframe selection - - - Calculate residuals for GRIC in pixel space rather than - in normalized space. - - This seems to be how it's intended to be used. - - Algebraic H and F will still use normalized coordinates which - are more stable, after this matrices are converted to pixel - space and Ceres refinement happens in pixel space. - - - Standard deviation calculation was wrong in GRIC. It shouldn't - be deviation of residuals, but as per Torr it should be deviation - of measurement error, which is constant (in our case 0.1) - - Not sure if using squared cost function is correct for GRIC, - but cost function is indeed squared and in most papers cost - function is used for GRIC. After some further tests we could - switch GRIC residuals to non-squared distance. - - - Bring back rho part of GRIC, in unit tests it doesn't make - sense whether it's enabled or not, lets see how it'll behave - in real-life footage. - - - Added one more unit test based on elevator scene and manual - keyframe selection. - -commit 24117f3c3fc5531beb6497d79bb6f1780a998081 -Author: Sergey Sharybin <sergey.vfx@gmail.com> -Date: Sun Jan 6 19:07:06 2013 +0600 - - Added test for keyframe selection based on manual selection - - Additional changes: - - - Reduce minimal correspondence to match real-world manually - tracked footage - - - Returned back squares to SymmetricEpipolarDistance and - SymmetricGeometricDistance -- this is actually a cost - functions, not distances and they shall be squared. - -commit 770eb0293b881c4c419c587a6cdb062c47ab6e44 -Author: Sergey Sharybin <sergey.vfx@gmail.com> -Date: Fri Dec 21 00:43:30 2012 +0600 - - Improvements for keyframe selection - - - Changed main keyframe selection cycle, so in cases there're no - more next keyframes for current keyframe could be found in the - image sequence, current keyframe would be moved forward and - search continues. - - This helps in cases when there's poor motion in the beginning - of the sequence, then markers becomes occluded. There could be - good keyframes in the middle of the shot still. - - - Extended keyframe_selection_test with real world cases. - - - Moved correspondences constraint to the top, so no H/F estimation - happens if there's bad correspondence. Makes algorithm go a bit - faster. - - Strangely, but using non-squared distances makes neighbor frames - test fail, using squared distances makes this tests pass. - - However, using non-squared distances seems to be working better - in real tests i've been doing. So this requires more investigation/ - -commit 7415c62fbda36c5bd1c291bc94d535a66da896d0 -Author: Sergey Sharybin <sergey.vfx@gmail.com> -Date: Thu Dec 20 18:46:09 2012 +0600 - - Cosmetic change to correspondences reports in keyframe selection |