Class Zhang99DecomposeHomography


public class Zhang99DecomposeHomography extends Object

Decomposes a homography into rigid body motion (rotation and translation) utilizing specific assumptions made inside the Zhang99 paper [1].

Let K and R be the calibration matrix and rotation matrix.
R = [ r1 , r1 , r1 ]
ri is the ith column in R.
Then compute R using the column of the homography matrix: r1 = λ*inv(K)*h1
r2 = λ*inv(K)*h2
r3 = cross(r1,r2)
t = λ*inv(K)*h3
t is the translation vector. The R computed above is only approximate and needs to be turned into a real rotation matrix.

[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

    • Zhang99DecomposeHomography

      public Zhang99DecomposeHomography()
  • Method Details

    • setCalibrationMatrix

      public void setCalibrationMatrix(DMatrixRMaj K)
      Specifies the calibration matrix.
      K - upper triangular calibration matrix.
    • decompose

      public Se3_F64 decompose(DMatrixRMaj H)
      Compute the rigid body motion that composes the homography matrix H. It is assumed that H was computed using Zhang99ComputeTargetHomography.
      H - homography matrix.
      Found camera motion.