From e2916a255ef3618e8943972b91e2d5770f1429b4 Mon Sep 17 00:00:00 2001 From: Fabien Servant Date: Thu, 10 Oct 2024 18:16:27 +0200 Subject: [PATCH] Fix applyCalibration logic for isDesqueezed --- src/software/utils/main_applyCalibration.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/software/utils/main_applyCalibration.cpp b/src/software/utils/main_applyCalibration.cpp index 6983b3a179..bb70ca14f9 100644 --- a/src/software/utils/main_applyCalibration.cpp +++ b/src/software/utils/main_applyCalibration.cpp @@ -274,18 +274,20 @@ bool applyJson(sfmData::SfMData & sfmData, boost::json::value & input) double w = intrinsic->w(); double h = intrinsic->h(); double nh = h / pixelAspect; - double ratio = w / nh; + double ratio = w / h; double ratioDesqueezed = w / nh; - double iratio = filmbackWidth / filmbackHeight; + double filmratio = filmbackWidth / filmbackHeight; + + bool hasSpecialPixelAspect = (std::abs(pixelAspect - 1.0) > 1e-4); //Compare image size ratio and filmback size ratio bool isDesqueezed = false; - if (std::abs(ratioDesqueezed - iratio) < 1e-2) + if ((std::abs(ratio - filmratio) < 1e-2) && hasSpecialPixelAspect) { ALICEVISION_LOG_INFO("Input image look desqueezed"); isDesqueezed = true; } - else if (std::abs(ratio - iratio) > 1e-2) + else if (std::abs(ratioDesqueezed - filmratio) > 1e-2) { ALICEVISION_LOG_ERROR("Incompatible image ratios"); return false;