forked from bartvdbraak/blender
Add check for points behind camera in euclidan BA cost functor
In cases keyframes are no so good, algebraic two frames construction could produce result, for which more aggressive Ceres-based BA code will fall to a solution for which points goes behind the camera, which is not so nice. Seems in newer Ceres returning false from cost functor wouldn't abort solution, but will restrict solver from moving points behind the camera. Works fine in own tests, but requires more tests.
This commit is contained in:
parent
97138e4dac
commit
ed131e67c4
4
extern/libmv/libmv/simple_pipeline/bundle.cc
vendored
4
extern/libmv/libmv/simple_pipeline/bundle.cc
vendored
@ -83,6 +83,10 @@ struct OpenCVReprojectionError {
|
||||
x[1] += R_t[4];
|
||||
x[2] += R_t[5];
|
||||
|
||||
// Prevent points from going behind the camera.
|
||||
if (x[2] < T(0))
|
||||
return false;
|
||||
|
||||
// Compute normalized coordinates: x /= x[2].
|
||||
T xn = x[0] / x[2];
|
||||
T yn = x[1] / x[2];
|
||||
|
Loading…
Reference in New Issue
Block a user