Class Zhang99CalibrationMatrixFromHomographies


public class Zhang99CalibrationMatrixFromHomographies
extends Object

Estimates camera calibration matrix from a set of homographies using linear algebra. Based upon the description found in [1], but has been modified to improve stability and flexibility. Two variants are implemented inside this class. One variant assumes that the skew is zero and requires two or more homographies and the other variant does not assume the skew is zero and requires three or more homographies. The calibration matrix structure is shown below.

Calibration matrix is defined as follows:
[ α c u0 ]
[ 0 β v0 ]
[ 0 0 1 ]
where 'c' is the camera's skew.

The zero skew variant is a modification of what was described in [1]. Instead of simply adding another row to force the skew to be zero that entire part of the equation has been omitted. The algorithm described in [1] was numerically unstable and did not produce meaningful results.

[1] Zhengyou Zhang, "Flexible Camera Calibration By Viewing a Plane From Unknown Orientations,", International Conference on Computer Vision (ICCV'99), Corfu, Greece, pages 666-673, September 1999.

  • Constructor Details

    • Zhang99CalibrationMatrixFromHomographies

      public Zhang99CalibrationMatrixFromHomographies​(boolean assumeZeroSkew)
      Configures calibration estimation.
      assumeZeroSkew - Assume that skew matrix is zero or not
    • Zhang99CalibrationMatrixFromHomographies

      public Zhang99CalibrationMatrixFromHomographies()
  • Method Details

    • setAssumeZeroSkew

      public void setAssumeZeroSkew​(boolean zeroSkew)
      Specifies if it should assume skew is zero or not
      zeroSkew - true if skew is zero
    • process

      public void process​(List<DMatrixRMaj> homographies)
      Given a set of homographies computed from a sequence of images that observe the same plane it estimates the camera's calibration.
      homographies - Homographies computed from observations of the calibration grid.
    • getCalibrationMatrix

      public DMatrixRMaj getCalibrationMatrix()
      Returns the computed calibration matrix.
      Calibration matrix.
    • getSolverNull

      public SolveNullSpaceSvd_DDRM getSolverNull()