From c1a4c304bc621d820dc49dd7a4510975ab4ded16 Mon Sep 17 00:00:00 2001
From: Sebastian Hahta <joseha@utu.fi>
Date: Mon, 27 Jan 2020 17:06:32 +0200
Subject: [PATCH] allow distortion parameters to be optimized

---
 applications/calibration-multi/src/main.cpp    | 18 ++++--------------
 .../calibration-multi/src/multicalibrate.cpp   |  2 +-
 2 files changed, 5 insertions(+), 15 deletions(-)

diff --git a/applications/calibration-multi/src/main.cpp b/applications/calibration-multi/src/main.cpp
index 0b84d6449..7a89a400a 100644
--- a/applications/calibration-multi/src/main.cpp
+++ b/applications/calibration-multi/src/main.cpp
@@ -132,7 +132,6 @@ bool setRectifyRPC(ftl::net::Universe* net, ftl::stream::Net* nstream, bool enab
 }
 
 bool setIntrinsicsRPC(ftl::net::Universe* net, ftl::stream::Net* nstream, Size size, vector<Mat> K, vector<Mat> D) {
-	return true;
 	return net->call<bool>(nstream->getPeer(), "set_intrinsics",
 							size, K[0], D[0], K[1], D[1] );
 }
@@ -206,31 +205,22 @@ void calibrateRPC(	ftl::net::Universe* net,
 		LOG(INFO) << K2;
 		LOG(INFO) << R_c1c2;
 		LOG(INFO) << T_c1c2;
-		LOG(INFO) << "R.isContinuous(): " << R_c1c2.isContinuous ();
-		LOG(INFO) << "R.step: " << R_c1c2.step;
-		LOG(INFO) << "R.cols: " << R_c1c2.cols;
-		LOG(INFO) << "T.isContinuous(): " << T_c1c2.isContinuous ();
-		LOG(INFO) << "T.step: " << T_c1c2.step;
-		LOG(INFO) << "T.cols: " << T_c1c2.cols;
+
 		LOG(INFO) << "--------------------------------------------------------";
 
 		auto *nstream = nstreams[c/2];
 		while(true) {
 			try {
 				if (params.optimize_intrinsic) {
-					setIntrinsicsRPC(net, nstream,
-						params.size,
-						vector<Mat>{calib.getCameraMat(c), calib.getCameraMat(c+1)},
-						vector<Mat>{calib.getDistCoeffs(c), calib.getDistCoeffs(c+1)}
-					);
+					setIntrinsicsRPC(net, nstream, params.size, {K1, K2}, {D1, D2});
 				}
 				setExtrinsicsRPC(net, nstream, R_c1c2, T_c1c2);
 				setPoseRPC(net, nstream, Rt_out[c]);
 				saveCalibrationRPC(net, nstream);
 				LOG(INFO) << "CALIBRATION SENT";
 				break;
-			}
-			catch (std::exception &ex) {
+
+			} catch (std::exception &ex) {
 				LOG(ERROR) << "RPC failed: " << ex.what();
 				sleep(1);
 			}
diff --git a/applications/calibration-multi/src/multicalibrate.cpp b/applications/calibration-multi/src/multicalibrate.cpp
index 754c1aa83..40c7e0bb3 100644
--- a/applications/calibration-multi/src/multicalibrate.cpp
+++ b/applications/calibration-multi/src/multicalibrate.cpp
@@ -700,7 +700,7 @@ double MultiCameraCalibrationNew::calibrateAll(int reference_camera) {
 	double err;
 	cvsba::Sba sba;
 	{
-		sba.setParams(cvsba::Sba::Params(cvsba::Sba::TYPE::MOTIONSTRUCTURE, 200, 1.0e-24, fix_intrinsics_, 5, false));
+		sba.setParams(cvsba::Sba::Params(cvsba::Sba::TYPE::MOTIONSTRUCTURE, 200, 1.0e-24, fix_intrinsics_, fix_intrinsics_, false));
 
 		vector<Mat> rvecs(R_.size());
 		vector<vector<int>> visible(R_.size());
-- 
GitLab