[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53202] trunk/blender/extern/libmv: Camera tracking: synchronize changes with own branch
Sergey Sharybin
sergey.vfx at gmail.com
Thu Dec 20 12:03:40 CET 2012
Revision: 53202
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53202
Author: nazgul
Date: 2012-12-20 11:03:39 +0000 (Thu, 20 Dec 2012)
Log Message:
-----------
Camera tracking: synchronize changes with own branch
Should be no functional changes.
Modified Paths:
--------------
trunk/blender/extern/libmv/CMakeLists.txt
trunk/blender/extern/libmv/ChangeLog
trunk/blender/extern/libmv/bundle.sh
trunk/blender/extern/libmv/files.txt
trunk/blender/extern/libmv/libmv/multiview/fundamental.cc
trunk/blender/extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc
trunk/blender/extern/libmv/libmv/simple_pipeline/tracks.cc
trunk/blender/extern/libmv/libmv/simple_pipeline/tracks.h
trunk/blender/extern/libmv/third_party/gflags/README.libmv
trunk/blender/extern/libmv/third_party/glog/README.libmv
Modified: trunk/blender/extern/libmv/CMakeLists.txt
===================================================================
--- trunk/blender/extern/libmv/CMakeLists.txt 2012-12-20 09:49:15 UTC (rev 53201)
+++ trunk/blender/extern/libmv/CMakeLists.txt 2012-12-20 11:03:39 UTC (rev 53202)
@@ -47,9 +47,9 @@
libmv/multiview/conditioning.cc
libmv/multiview/euclidean_resection.cc
libmv/multiview/fundamental.cc
+ libmv/multiview/homography.cc
libmv/multiview/projection.cc
libmv/multiview/triangulation.cc
- libmv/multiview/homography.cc
libmv/numeric/numeric.cc
libmv/numeric/poly.cc
libmv/simple_pipeline/bundle.cc
@@ -71,8 +71,8 @@
libmv/tracking/lmicklt_region_tracker.cc
libmv/tracking/pyramid_region_tracker.cc
libmv/tracking/retrack_region_tracker.cc
+ libmv/tracking/track_region.cc
libmv/tracking/trklt_region_tracker.cc
- libmv/tracking/track_region.cc
third_party/fast/fast_10.c
third_party/fast/fast_11.c
Modified: trunk/blender/extern/libmv/ChangeLog
===================================================================
--- trunk/blender/extern/libmv/ChangeLog 2012-12-20 09:49:15 UTC (rev 53201)
+++ trunk/blender/extern/libmv/ChangeLog 2012-12-20 11:03:39 UTC (rev 53202)
@@ -1,3 +1,487 @@
+commit cfabdfe48df2add3d1f30cf4370efd0b31990ab0
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date: Thu Dec 20 05:46:53 2012 +0600
+
+ Assorted fixes for keyframe selection:
+
+ - Biggest error was in cost functors used for F and H refirement,
+ they were just wrong.
+
+ - Use natural logarithms, since it's actually makes sense from
+ math papers point of view and error is somewhere else.
+
+ - Disabled rho for GRIC, for now use non-clamped error for tests.
+
+ - Made SymmetricEpipolarDistance returning non-squared distance
+ Keyframe selection is currently the only used of this function
+ and it seems using non-squared distance makes much more sense.
+
+ Also would think to append suffix "Squared" to functions which
+ returns squared distances.
+
+ - Removed templated version of SymmetricEpipolarDistance, since
+ it's not needed actually.
+
+ This is actually even worse working than previous implementation,
+ but commit it needed for further review.
+
+commit 35d8c57626ad74818f155e6e5960c663ea84e032
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date: Thu Dec 20 03:00:40 2012 +0600
+
+ Euclidean resection cost function didn't use correct constructor
+
+ It was storing a reference to initial rotation passed by value,
+ leading to pointer being pointing to a stack variable, leading to
+ wrong memory access in residuals computing.
+
+ Apparently was visible in optimized builds only with inline
+ substitution allowed.
+
+commit 0798d3162bb49cee7e1c423ceccbca1326ad5650
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date: Thu Dec 20 02:50:52 2012 +0600
+
+ Automatic keyframe selection based on Pollefeys's criteria
+
+ This commit implements automatic keyframe selection algorithm
+ based on Pollefeys's criteria (F-GRIC is smaller than H-GRIC
+ and correspondence ratio is more then 90%).
+
+ It is implemented as a part of simple pipeline and returns
+ vector of keyframe images for a given Tracks structure.
+
+ For simple pipeline reconstruction two best keyframes are
+ expected to be selected from all detected candidates.
+ Criteria for this selection could be reprojection error of
+ solution from two candidate keyfames.
+
+ Unfortunately, it's not fully workable yet, hopefully would
+ be fixed soon.
+
+commit e943985552f0598ae122252876f305d72c25c2f9
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date: Thu Dec 6 17:47:11 2012 +0600
+
+ Camera Tracking: allow fallback to reprojection resection
+ by user demand
+
+ This fixes some "regressions" introduced in previous commit
+ which lead to much worse solution in some cases. Now it's
+ possible to bring old behavior back.
+
+ Perhaps it's more like temporal solution for time being smarter
+ solution is found. But finding such a solution isn't so fast,
+ so let's bring manual control over reprojection usage.
+
+ 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>
+Date: Wed Sep 19 22:25:02 2012 +0000
+
+ Detect too-small planar tracking patches.
+
+ The planar tracker did not detect very skinny patches which have
+ effectively zero area and are untrackable. This adds detection and
+ rejection of patterns with zero area. This fixes a crash found by
+ during Mango production.
+
+commit 5cf2bae255a5a0f2e36ea0516670782cb88b589d
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date: Thu Dec 6 17:33:53 2012 +0600
+
+ Real fix for previous commit from Keir. He's comment;
+
+ Cleanup for when trackers fall out of the search window.
+
+ Sergey originally left a TODO() here, but his fix is the correct
+ one. I removed the TODO and fixed some comment issues.
+
+commit a11533918720e5b43dc1e95895db0eb36c8c06aa
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date: Thu Dec 6 17:31:16 2012 +0600
+
+ Fix crash when tracking in planar motion model (and maybe some other)
+
+ It was an Abort() caused by check for solver result not equal to USER_ABORT.
+
+ In some cases solver returns USER_ABORT due to BoundaryCheckingCallback
+ detects coordinates does not belong to image.
+
+ Somehow this callback wasn't called in previous version of Ceres and
+ in the same case marker was jumping. Now when the callback is called
+ it seems we could simply return failure of tracking without aborting
+ Blender.
+
+ Probably this is in fact some issue somewhere else, would double
+ check with Keir about this.
+
+commit 4be2306bcc664b259aaf7068b9f32ab60124a509
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date: Thu Dec 6 17:29:39 2012 +0600
+
+ Resolved some compilation warnings (missed prototypes)
+
+ In some cases it was missed include of header file, in some other
+ cases symbol could be static.
+
+commit bef729ba5c12683d13584d2a728b8b6506b7ca90
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date: Thu Dec 6 17:27:17 2012 +0600
+
+ Code cleanup: silence some -Wnarrowing warnings from C++11
+
+commit add1415d896818367087c784a3013dd8f1bb2095
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date: Thu Dec 6 17:25:18 2012 +0600
+
+ Changes to SamplePlanarPatch to support mask input and
+ added output for pattern center.
+
+commit daa354c0735b954b0cd7725626e9a3d67416d46b
+Author: Keir Mierle <mierle at gmail.com>
+Date: Sat Jun 9 19:22:39 2012 +0000
+
+ Change libmv's bilinear sampling to assume the same
+ pixel conventions as Blender. This fixes the preview
+ widget in Blender, and should make tracking slightly
+ more accurate.
+
+commit 99b6222873fbfbe248316316956720376a58f438
+Author: Keir Mierle <mierle at gmail.com>
+Date: Sat Jun 9 18:58:51 2012 +0000
+
+ Add new warp regularization scheme for planar tracking.
+
+ This adds a new term to the tracking cost function that
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list