Class CalibrateMultiPlanar

java.lang.Object
boofcv.abst.geo.calibration.CalibrateMultiPlanar

public class CalibrateMultiPlanar extends Object

Multi camera calibration using multiple planar targets. It's assumed that all cameras are rigidly attach and that the calibration targets are static. Camera[0] is always the sensor reference frame. The world reference frame is defined as calibration target[0].

Usage:
  1. Specify camera model via #getCalibratorMono and configure* functions
  2. Call initialize(int, int)
  3. Specify shape of all cameras setCameraProperties(int, int, int)
  4. Specify target layouts using setTargetLayout(int, java.util.List<georegression.struct.point.Point2D_F64>)
  5. Call process() perform calibration. Check results to see if it succeeded
  6. Get found calibration with #getResults()
Algorithm overview:
  1. Calibrate each camera independently using monocular approach
  2. Estimate extrinsic relationship between cameras using common observed targets
  3. Estimate extrinsic relationship between sensor and world for each frame
  4. Run bundle adjustment to improve results

Internally it assumes that the targets are stationary and the camera system is moving. It will work just fine if the opposite is true as these are mathematically identical.

TODO add support for multiple targets. Current version has been simplified for one target.
  • Constructor Details

    • CalibrateMultiPlanar

      public CalibrateMultiPlanar()
  • Method Details

    • initialize

      public void initialize(int numCameras, int numTargets)
      Must call this function first. Specifies the number of cameras and calibration targets
    • setCameraProperties

      public void setCameraProperties(int which, int width, int height)
      Specifies the shape o images from a specific camera
    • setTargetLayout

      public void setTargetLayout(int which, List<Point2D_F64> layout)
      Specifies location of calibration points for a target.
    • addObservation

      public void addObservation(SynchronizedCalObs observations)
      Adds an observation. Order does not matter. All cameras are assumed to have synchronized shutters and observed the world at the exact same time.
      Parameters:
      observations - Observed calibration targets in a single fram.
    • process

      public boolean process()
      Processes the inputs and estimates the camera system's intrinsic and extrinsic calibration. If true is returned, then #getResults() will return the found calibration.
      Returns:
      true if successful or false if it failed
    • computeQualityText

      public String computeQualityText()
      Summarizes calibration quality and residual errors in a human readable text string