Fix for BA possible move bundles behind the camera
In some cases (was noticed on not good enough keyframe pair) bundle adjuster could have moved bundles behind the camera. This could indeed lead to lower rewprojection error but this is just pointless thing to do. Now added check to residuals functor which will return false to Ceres in cases point moved behind the camera to prevent such issues.
This commit is contained in:
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[1] += R_t[4];
|
||||||
x[2] += R_t[5];
|
x[2] += R_t[5];
|
||||||
|
|
||||||
|
// Prevent bundles from being moved behind the camera.
|
||||||
|
if (x[2] < T(0))
|
||||||
|
return false;
|
||||||
|
|
||||||
// Compute normalized coordinates: x /= x[2].
|
// Compute normalized coordinates: x /= x[2].
|
||||||
T xn = x[0] / x[2];
|
T xn = x[0] / x[2];
|
||||||
T yn = x[1] / x[2];
|
T yn = x[1] / x[2];
|
||||||
|
Reference in New Issue
Block a user