Blender Git Commit Log
Git Commits -> Revision e38c1a5
Revision e38c1a5 by Keir Mierle (master) September 20, 2012, 18:55 (GMT) |
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 Details:
Full Hash: e38c1a5ae721630c217ca7830fd7aabf6f4620e0
SVN Revision: 50781
Parent Commit: a4f73c5
Lines Changed: +27, -11
5 Modified Paths:
/extern/libmv/libmv/multiview/euclidean_resection.cc (+13, -4) (Diff)
/extern/libmv/libmv/multiview/euclidean_resection.h (+3, -0) (Diff)
/extern/libmv/libmv/numeric/levenberg_marquardt.h (+5, -5) (Diff)
/extern/libmv/libmv/simple_pipeline/pipeline.cc (+2, -2) (Diff)
/extern/libmv/libmv/simple_pipeline/resect.cc (+4, -0) (Diff)
/extern/libmv/libmv/multiview/euclidean_resection.h (+3, -0) (Diff)
/extern/libmv/libmv/numeric/levenberg_marquardt.h (+5, -5) (Diff)
/extern/libmv/libmv/simple_pipeline/pipeline.cc (+2, -2) (Diff)
/extern/libmv/libmv/simple_pipeline/resect.cc (+4, -0) (Diff)