Skip to content

Commit

Permalink
[software] checkerboardCalibration: option to enable/disable rig cali…
Browse files Browse the repository at this point in the history
…bration
  • Loading branch information
mugulmd committed Sep 14, 2023
1 parent 8935e05 commit 6598544
Showing 1 changed file with 18 additions and 13 deletions.
31 changes: 18 additions & 13 deletions src/software/pipeline/main_checkerboardCalibration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,7 @@ int aliceVision_main(int argc, char* argv[])
std::string sfmOutputDataFilepath;

double squareSize = 10.;
bool calibrateRigs = true;

po::options_description requiredParams("Required parameters");
requiredParams.add_options()
Expand All @@ -462,7 +463,8 @@ int aliceVision_main(int argc, char* argv[])

po::options_description optionalParams("Optional parameters");
optionalParams.add_options()
("squareSize,s", po::value<double>(&squareSize)->default_value(squareSize), "Checkerboard square width in mm");
("squareSize,s", po::value<double>(&squareSize)->default_value(squareSize), "Checkerboard square width in mm")
("calibrateRigs", po::value<bool>(&calibrateRigs)->default_value(calibrateRigs), "Perform rig calibration");

CmdLine cmdline("This program calibrates camera intrinsics and extrinsics.\n"
"AliceVision checkerboardCalibration");
Expand Down Expand Up @@ -509,9 +511,22 @@ int aliceVision_main(int argc, char* argv[])
}

// Calibrate rigs
if (!estimateRigs(sfmData))
if (calibrateRigs)
{
return EXIT_FAILURE;
if (!estimateRigs(sfmData))
{
return EXIT_FAILURE;
}

// Mark all rig sub-poses as constant
for (auto& pr : sfmData.getRigs())
{
sfmData::Rig& rig = pr.second;
for (auto& subPose : rig.getSubPoses())
{
subPose.status = sfmData::ERigSubPoseStatus::CONSTANT;
}
}
}

// Mark all intrinsics as calibrated
Expand All @@ -521,16 +536,6 @@ int aliceVision_main(int argc, char* argv[])
intrinsicPtr->setInitializationMode(camera::EInitMode::CALIBRATED);
}

// Mark all rig sub-poses as constant
for (auto& pr : sfmData.getRigs())
{
sfmData::Rig& rig = pr.second;
for (auto& subPose : rig.getSubPoses())
{
subPose.status = sfmData::ERigSubPoseStatus::CONSTANT;
}
}

// Save sfmData to disk
if (!sfmDataIO::Save(sfmData, sfmOutputDataFilepath, sfmDataIO::ESfMData(sfmDataIO::ALL)))
{
Expand Down

0 comments on commit 6598544

Please sign in to comment.