[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56053] trunk/blender/extern/libmv: Fix for bundle adjusting with motion restricted

Sergey Sharybin sergey.vfx at gmail.com
Mon Apr 15 01:43:00 CEST 2013


Revision: 56053
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56053
Author:   nazgul
Date:     2013-04-14 23:43:00 +0000 (Sun, 14 Apr 2013)
Log Message:
-----------
Fix for bundle adjusting with motion restricted

This commit bundles new libmv version from own branch
which brings fix for wrong parameter block used for
modal solver parameterization.

Fixes #34985: Crash with Motion tracker (Tripod Motion)

Modified Paths:
--------------
    trunk/blender/extern/libmv/ChangeLog
    trunk/blender/extern/libmv/libmv/simple_pipeline/bundle.cc

Modified: trunk/blender/extern/libmv/ChangeLog
===================================================================
--- trunk/blender/extern/libmv/ChangeLog	2013-04-14 21:42:58 UTC (rev 56052)
+++ trunk/blender/extern/libmv/ChangeLog	2013-04-14 23:43:00 UTC (rev 56053)
@@ -1,3 +1,199 @@
+commit 03cbc88ce7f51aa26ba503acea2e984bcb78873c
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Mon Apr 15 05:35:33 2013 +0600
+
+    Fix for bundle adjusting with motion restricted
+    
+    Was a bug introduced in previous commit, which
+    was trying to set parameterization for non-existing
+    camera->t parameter block.
+    
+    Replaced with subset parameterization.
+    
+    Also added basic synthetic unit test for modal solver.
+
+commit c78a68f980e778d40ce836fa1d7471cb7264d4a0
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Mon Apr 8 23:33:20 2013 +0600
+
+     Bundle adjustment improvements
+    
+    - Get rid of rotation matrix parameterization,
+      use angle-axis instead.
+    
+      Also Joined rotation and translation into
+      a single parameter block.
+    
+      This made minimization go significantly faster,
+      like 1.3x times in average.
+    
+    - Fix first camera when bundling. This is to
+      address orientation ambiguity.
+    
+      Reconstruction result could still vary in
+      size, but that's another issue to be addressed
+      later.
+    
+    Additional change:
+    
+    Split EuclideanBundleCommonIntrinsics into
+    smaller functions, so it's now a bit easier
+    to follow.
+
+commit 28c7566629c2cf5b03a787c9509856e87472eb2f
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Mon Apr 8 23:31:57 2013 +0600
+
+    Update Ceres to current HEAD
+    
+    Brings up some noticeable speed improvements. In particular
+    the automatic differentiation and bundle adjustment solvers.
+
+commit efde9faa21e70b031d3cbcb2dcdcd38e597bf56e
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Mon Apr 8 02:21:26 2013 +0600
+
+    Corrected path to gflags
+    
+    Currently tools/track.cc is not used, but let's
+    keep things a bit more up-to-date :)
+
+commit f8b5ea196fb00ab07d577e9738a60cdd1de16509
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Mon Apr 8 02:17:16 2013 +0600
+
+    Re-enable tests for multiview and image
+    
+    For as long code is in repo and used by some tools
+    better to have it covered by tests.
+    
+    Some of them are failing tho, but that's completely
+    different story to be addressed later.
+
+commit d2a7ee60a5845738f76b88bfc373eefc2cc8501a
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Mon Apr 8 02:10:07 2013 +0600
+
+    Do not modify cache's CMAKE_CXX_FLAGS_RELEASE when configuring Ceres
+    
+    Otherwise you'll have infinite appending of Ceres-specific flags
+    on every saving of any CmakeLists.txt.
+
+commit 45edb507bf46194dd55b7fc46a7d90ee3853834d
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Sun Apr 7 21:53:23 2013 +0600
+
+    Fixed compilation with BUILD_TOOLS enabled
+    
+    This commit mainly reverts parts of following commits:
+        0eebc21db831211738acc938566bbc29d68d45db
+        d8109b7a4fede1660e0dbd73735f1a9e3fd79eec
+        e59595806c045916ab4ef15ef7047c1a728b2da9
+        2d6cd58ee1cd7c5073980f358c71b2898ad16b4c
+    
+    They declared  lots of stuff deprecated, but in
+    fact it's not deprecated just a bit different
+    usage pipeline. Anyway, deprecation shall not
+    happen spontaneously as a part of other changes.
+    And for sure shall not break anything.
+
+commit 7a9c83d3ccaa2f0015f88b9156d7662c46244b4a
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Sat Apr 6 20:49:05 2013 +0600
+
+    Revert "Change libmv's bilinear sampling to assume the same"
+    
+    Revert changes to bilinear sampler which were originally
+    aimed to match blender's pixel center (where integer coord
+    is a left-bottom corner, x.5 coords are centers.
+    
+    The reason of revert is changing this assumption in only
+    sampler didn't work well and lead to wrong results of
+    BlurredImageAndDerivativesChannels for example.
+    
+    Discovered when was doing unit-tests for brute region tracker.
+    
+    This reverts commit daa354c0735b954b0cd7725626e9a3d67416d46b.
+
+commit 15f3bb00340933ce753a1a55e9cde9383352e259
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Sat Apr 6 18:37:37 2013 +0600
+
+    Added basic test for brute region tracker
+    
+    It is failing at this moment and this is caused because
+    of how SampleLinear works - seems it's assumption about
+    pixel center is not correct for internal sampling.
+
+commit 1146602972c07e99a9e4ab37d35ac83aec490e60
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Sat Apr 6 16:54:08 2013 +0600
+
+    Tweak to KLT region tracker test
+    
+    KLT is usually used to track relatively small
+    motions, and in this case motion almost equals
+    to half window size. This confuses math and
+    leads to not so much expected result.
+    
+    Further, not actually sure this is nice idea
+    to use KLT in such synthetic case.
+
+commit 1e22cbcac480863b6b5abc5c85f23dc70748933a
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Sat Apr 6 16:40:59 2013 +0600
+
+    Pyramid tracker unit test fix
+    
+    Issue was caused by trackers modifying guessed
+    point location even in case of failure. So made
+    id so both level 0 and level 3 of pyramid are
+    starting from the same initial guessed location.
+    
+    Modifying locations in case tracker returns false
+    is not actually a bug - someone could still want
+    to use that location. False in this case  means
+    more like "returned location is not so much
+    accurate".
+
+commit 3ad5e0efa071f202ee7c2034d70dd97aa62b13aa
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Sat Apr 6 00:38:40 2013 +0600
+
+    Intersect unit test fix
+    
+    EuclideanIntersect is not aware of camera calibration
+    matrix yet and always assumes it to be an identity.
+    
+    So using non-identity matrix to construct sample case
+    leads to wrong projection results.
+    
+    For now made it so test case uses identity matrix for
+    calibration.
+    
+    Also fixed variable shadowing which lead to wrong
+    markers positions (were either zero or undefined).
+
+commit 3a153c2b65f38653a36c36975018f68d42d60670
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Sat Apr 6 00:12:12 2013 +0600
+
+    Camera intrinsics unit tests fixes
+    
+    - Existing test ApplyIsInvertibleSimple was not
+      doing right thing - distortion model used there
+      was ininvertible.
+    
+      Tweaked parameters in a way model is invertible now.
+    
+    - Added some own tests which tests;
+    
+      * Principal point always maps from pixel space to
+        zero normalized position.
+    
+      * Some basic tests to check whether individual
+        apply/invert works correct.
+
 commit e3b2bccba6145290738a6677c14f7369ec7a38cd
 Author: Sergey Sharybin <sergey.vfx at gmail.com>
 Date:   Thu Apr 4 02:59:58 2013 +0600
@@ -495,207 +691,3 @@
     
     But anyway, imo it's now nice to have a structure which could
     be used to pass different settings to the solver.
-
-commit 5a23d01dd531d1e0798298d17ba42a3397effb82
-Author: Keir Mierle <mierle at gmail.com>
-Date:   Thu Sep 20 18:55:44 2012 +0000
-
-    Make Euclidean resection "always" succeed.
-    
-    The Euclidean resection code had a magical constant, 1e-3, used to
-    compare the results of solving an equation. This failure detection
-    was well-intended, trying to prevent poor solutions from getting
-    made without notifying the caller. Unfortunately in practice, this
-    threshold is too conservative. Furthermore, it is not clear the
-    threshold should exist at all; the purpose of the Euclidean
-    resection is to come up with the best solution it can; other
-    methods (e.g. reprojection error) should be used to compare
-    whether the method succeeded.
-    
-    This commit changes the Euclidean EPnP code to always succeed,
-    causing the previous fallback to projective resection to never
-    run. In most cases, this will result in better reconstructions.
-    
-    This should, in most cases, fix the dreaded "flipping" problem.
-
-commit 57dad861d2a7f9d058c6d8edde1a2d51d7225a51
-Author: Keir Mierle <mierle at gmail.com>
-Date:   Thu Sep 20 02:27:34 2012 +0000
-
-    Fix variable naming in the planar tracker.
-
-commit e9392fd3b46f5668662935696e7d9afac3390ca4
-Author: Keir Mierle <mierle at gmail.com>
-Date:   Thu Sep 20 02:10:33 2012 +0000
-
-    Add smarter tolerance checking in the planar tracker.
-    
-    The planar tracker uses Ceres for the refinement stage. During
-    refinement, Ceres iteratively updates the parameters with the
-    latest best guess. If the change in the parameters falls below a
-    threshold, Ceres will abort successfully ("converged").
-    
-    For the case of pure translation tracking, the parameters are
-    exactly the two pixel shifts (dx, dy), and measuring the change in
-    these parameters gives a meaningful termination criterion.
-    However, for all the other parameterizations like affine, where
-    the parameterization involves affine parameters that have no
-    physical interpretation, Ceres is left with no way to terminate
-    the solver early. With the existing code, often many iterations
-    are run long after Ceres has found a solution sufficiently
-    accurate for all tracking needs. No one needs tracking with
-    a quadrillionth of a pixel accuracy; that time is wasted.
-    
-    This patch extends the existing iteration callback that is passed
-    in to Ceres to check if the pattern has fallen out of the search
-    window, to also check if the optimizer has made a tiny step. In
-    particular, if the maximum shift of any patch corner between two
-    successful optimizer steps is less than a threshold (currently
-    0.005 pixels), the track is declared successful and tracking
-    is terminated.
-    
-    This leads to dramatic speed increases in some cases, with little
-    to no loss in track quality. This is especially apparent when
-    tracking patches with affine or perspective motion models. For
-    example, on some tracking cases I tried, the iterations Ceres took
-    went from 50 to 3.
-
-commit 36729c19bf90cb767e9adb96ba7dd48a5ace2be1
-Author: Keir Mierle <mierle at gmail.com>

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list