[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56719] trunk/blender/extern/libmv: Update bundled version of libmv

Sergey Sharybin sergey.vfx at gmail.com
Sun May 12 19:06:00 CEST 2013


Revision: 56719
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56719
Author:   nazgul
Date:     2013-05-12 17:06:00 +0000 (Sun, 12 May 2013)
Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/extern/libmv/ChangeLog
    trunk/blender/extern/libmv/libmv/multiview/fundamental.cc
    trunk/blender/extern/libmv/libmv/multiview/fundamental.h
    trunk/blender/extern/libmv/libmv/simple_pipeline/bundle.cc
    trunk/blender/extern/libmv/libmv/simple_pipeline/bundle.h
    trunk/blender/extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc
    trunk/blender/extern/libmv/libmv/simple_pipeline/intersect.cc
    trunk/blender/extern/libmv/libmv/simple_pipeline/pipeline.cc
    trunk/blender/extern/libmv/libmv-capi.cpp
    trunk/blender/extern/libmv/third_party/glog/src/windows/port.h

Modified: trunk/blender/extern/libmv/ChangeLog
===================================================================
--- trunk/blender/extern/libmv/ChangeLog	2013-05-12 16:52:42 UTC (rev 56718)
+++ trunk/blender/extern/libmv/ChangeLog	2013-05-12 17:06:00 UTC (rev 56719)
@@ -1,3 +1,151 @@
+commit f003b9e3031db4592c2d91b1ea2538c73b7e767d
+Author: Sergey Sharybin <sergey.vfx at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at gmail.com>
 Date:   Fri May 10 12:23:03 2013 +0600
@@ -493,157 +641,3 @@
     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 at 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 at 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 at 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 at 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 at 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 at 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 at 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
-    

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list