From aca257266918bf64eedd4775930f5cf3e4102497 Mon Sep 17 00:00:00 2001
From: Sebastian Hahta <joseha@utu.fi>
Date: Thu, 8 Aug 2019 11:03:02 +0300
Subject: [PATCH] fix Q scaling

---
 components/rgbd-sources/src/calibrate.cpp | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/components/rgbd-sources/src/calibrate.cpp b/components/rgbd-sources/src/calibrate.cpp
index acc580e2a..fb2735d30 100644
--- a/components/rgbd-sources/src/calibrate.cpp
+++ b/components/rgbd-sources/src/calibrate.cpp
@@ -119,12 +119,12 @@ bool Calibrate::_loadCalibration(cv::Size img_size, std::pair<Mat, Mat> &map1, s
 	img_size_ = img_size;
 
 	// TODO: normalize calibration
-	double scale_x = 1.0 / 1280.0;
-	double scale_y = 1.0 / 720.0;
+	double scale_x = ((double) img_size.width) / 1280.0;
+	double scale_y = ((double) img_size.height) / 720.0;
 
 	Mat scale(cv::Size(3, 3), CV_64F, 0.0);
-	scale.at<double>(0, 0) = (double) img_size.width * scale_x;
-	scale.at<double>(1, 1) = (double) img_size.height * scale_y;
+	scale.at<double>(0, 0) = (double) scale_x;
+	scale.at<double>(1, 1) = (double) scale_y;
 	scale.at<double>(2, 2) = 1.0;
 
 	M1_ = scale * M1_;
@@ -132,9 +132,10 @@ bool Calibrate::_loadCalibration(cv::Size img_size, std::pair<Mat, Mat> &map1, s
 	P1_ = scale * P1_;
 	P2_ = scale * P2_;
 
-	Q_.at<double>(0, 3) = Q_.at<double>(3, 2) * (double) img_size.width * scale_x;
-	Q_.at<double>(1, 3) = Q_.at<double>(3, 2) * (double) img_size.height * scale_y;
-	Q_.at<double>(3, 3) = Q_.at<double>(3, 3) * (double) img_size.width * scale_x;
+	Q_.at<double>(0, 3) = Q_.at<double>(0, 3) * scale_x;
+	Q_.at<double>(1, 3) = Q_.at<double>(1, 3) * scale_y;
+	Q_.at<double>(2, 3) = Q_.at<double>(2, 3) * scale_x; // TODO: scaling?
+	Q_.at<double>(3, 3) = Q_.at<double>(3, 3) * scale_x;
 
 	// cv::cuda::remap() works only with CV_32FC1
 	initUndistortRectifyMap(M1_, D1_, R1_, P1_, img_size_, CV_32FC1, map1.first, map2.first);
-- 
GitLab