libCalib
C++ library documentation
libCalib::Calibration Class Reference

Main interface to specify the calibration structure and run optimization. More...

#include <Calibration.h>

Public Member Functions

size_t addCamera (const Camera &c)
 
size_t addPose (const Pose &p=Pose())
 
size_t addTarget (const Target &t=Target())
 
size_t addDistanceConstraint (const DistanceConstraint &dc=DistanceConstraint())
 
bool checkConsistency (std::string &errorString) const
 
void saveToDisk (const std::string &filePath) const
 
void loadFromDisk (const std::string &filePath)
 
void reset ()
 
InitializationResult initialize (const std::vector< Detection > &detections, const InitializationSettings &settings=InitializationSettings())
 
OptimizationResult optimize (const std::vector< Detection > &detections, const OptimizationSettings &settings=OptimizationSettings(), std::function< bool(const int, const double)> iterationCallback=nullptr)
 
CovarianceResult estimateCovariance (const std::vector< Detection > &detections) const
 
bool estimateProjectionError (const CovarianceResult &cov, std::vector< double > &rms, std::vector< double > &max, std::vector< std::vector< std::pair< libCalib::Point2, libCalib::PixelCovariance > > > &pce) const
 
bool estimateTriangulationError (const CovarianceResult &cov, double &rms, double &max, std::vector< std::pair< Point3, PointCovariance > > &pc, std::vector< std::array< Point3, 100 > > &errors, const double planeOffset=0.0, const double featureNoise=0.0) const
 
template<class Archive >
void serialize (Archive &ar)
 

Public Attributes

std::vector< Cameracameras
 
std::vector< Poseposes
 
std::vector< Targettargets
 
std::vector< DistanceConstraintdistanceConstraints
 
bool isInitialized = false
 
bool isOptimized = false
 

Detailed Description

Main interface to specify the calibration structure and run optimization.

The class is responsible for holding the calibration data and initializing/optimizing all parameters.

The typical workflow consists of:

  1. adding the appropriate number of empty Camera, Pose and Target objects.
  2. collecting Detection objects which reference specific cameras, targets and poses.
  3. calling initialize()
  4. calling optimize()
Examples
single_camera/main.cpp, step_target/main.cpp, and stereo_calibration/main.cpp.

Member Function Documentation

◆ checkConsistency()

bool libCalib::Calibration::checkConsistency ( std::string &  errorString) const

Perform various checks on the current calibration data to ensure that all entities are referenced, etc., such that initialization and calibration will be possible.

◆ estimateCovariance()

CovarianceResult libCalib::Calibration::estimateCovariance ( const std::vector< Detection > &  detections) const

Estimate variances/covariances of the model parameters.

Examples
single_camera/main.cpp.

◆ estimateProjectionError()

bool libCalib::Calibration::estimateProjectionError ( const CovarianceResult cov,
std::vector< double > &  rms,
std::vector< double > &  max,
std::vector< std::vector< std::pair< libCalib::Point2, libCalib::PixelCovariance > > > &  pce 
) const

Estimate projection errors by propagating unprojected 3d points through the calibration covariance of each camera individually. Returns 2D pixel covariances for the projected points evenly sampled on the image planes.

◆ estimateTriangulationError()

bool libCalib::Calibration::estimateTriangulationError ( const CovarianceResult cov,
double &  rms,
double &  max,
std::vector< std::pair< Point3, PointCovariance > > &  pc,
std::vector< std::array< Point3, 100 > > &  errors,
const double  planeOffset = 0.0,
const double  featureNoise = 0.0 
) const

Estimate triangulation errors by propagating 3d points through the calibration covariance structure. Samples points evenly on a plane in the volume occupied by calibration object points. The plane is fitted to the camera centers.

planeOffset [m]: offsets the sample plane with positive values moving in positive y-direction. featureNoise [px]: specifies the standard deviation of error that should be assumed on the detection of points in camera images.

◆ initialize()

InitializationResult libCalib::Calibration::initialize ( const std::vector< Detection > &  detections,
const InitializationSettings settings = InitializationSettings() 
)

Initialize all camera and target intrinsic and extrinsic parameters for the current calibration setup.

Examples
single_camera/main.cpp, and stereo_calibration/main.cpp.

◆ loadFromDisk()

void libCalib::Calibration::loadFromDisk ( const std::string &  filePath)

Deserializes a Calibration object from json file.

◆ optimize()

OptimizationResult libCalib::Calibration::optimize ( const std::vector< Detection > &  detections,
const OptimizationSettings settings = OptimizationSettings(),
std::function< bool(const int, const double)>  iterationCallback = nullptr 
)

Run bundle block adjustment on all available data. Requires the Calibration to be initialized beforehand.

Examples
single_camera/main.cpp, step_target/main.cpp, and stereo_calibration/main.cpp.

◆ reset()

void libCalib::Calibration::reset ( )
inline

Resets the calibration setup and deletes all owned Camera, Pose, Target, Detection and DistanceConstrain objects.

◆ saveToDisk()

void libCalib::Calibration::saveToDisk ( const std::string &  filePath) const

Serializes the Calibration object to json file.