From 66e760bf913bdf9c53c540ef74e83d62cb0de779 Mon Sep 17 00:00:00 2001 From: Fabien Servant Date: Thu, 26 Sep 2024 08:35:51 +0200 Subject: [PATCH] correct initialization in distortion convertion --- src/aliceVision/camera/DistortionRadial.hpp | 2 +- src/aliceVision/camera/Undistortion.hpp | 5 +++-- src/software/convert/main_convertDistortion.cpp | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/aliceVision/camera/DistortionRadial.hpp b/src/aliceVision/camera/DistortionRadial.hpp index 7a826eca74..2a783228ca 100644 --- a/src/aliceVision/camera/DistortionRadial.hpp +++ b/src/aliceVision/camera/DistortionRadial.hpp @@ -23,7 +23,7 @@ namespace radial_distortion { * @return optimal radius */ template -double bisection_Radius_Solve(const std::vector& params, double r2, Disto_Functor& functor, double epsilon = 1e-8) +double bisection_Radius_Solve(const std::vector& params, double r2, Disto_Functor& functor, double epsilon = 1e-16) { // Guess plausible upper and lower bound double lowerbound = r2, upbound = r2; diff --git a/src/aliceVision/camera/Undistortion.hpp b/src/aliceVision/camera/Undistortion.hpp index 4ede317603..14f888f683 100644 --- a/src/aliceVision/camera/Undistortion.hpp +++ b/src/aliceVision/camera/Undistortion.hpp @@ -31,10 +31,11 @@ class Undistortion public: Undistortion(int width, int height) { - setSize(width, height); - setOffset({0.0, 0.0}); _pixelAspectRatio = 1.0; _isDesqueezed = false; + + setSize(width, height); + setOffset({0.0, 0.0}); } virtual EUNDISTORTION getType() const = 0; diff --git a/src/software/convert/main_convertDistortion.cpp b/src/software/convert/main_convertDistortion.cpp index b13d739630..6d3a808ee2 100644 --- a/src/software/convert/main_convertDistortion.cpp +++ b/src/software/convert/main_convertDistortion.cpp @@ -67,9 +67,10 @@ bool convert(std::shared_ptr & undistortion, const camera: calibration::PointPair ppt; ppt.distortedPoint = pobs.second.getCoordinates(); ppt.undistortedPoint = intrinsic.getUndistortedPixel(ppt.distortedPoint); + ppt.scale = pobs.second.getScale(); Vec2 check = intrinsic.getDistortedPixel(ppt.undistortedPoint); - if ((check - ppt.distortedPoint).norm() > 1e-2) + if ((check - ppt.distortedPoint).norm() > 1e-3) { countErrors++; continue;