Class SelfCalibrationLinearRotationMulti

java.lang.Object
boofcv.alg.geo.selfcalib.SelfCalibrationLinearRotationMulti

public class SelfCalibrationLinearRotationMulti extends Object
Camera calibration for when the camera's motion is purely rotational and has no translational component and camera parameters can change every frame. Linear constraints need to be specified on camera parameters. Based off of variable calibration Algorithm 19.3 on page 482 in [1].
 Steps:
 1) Compute homographies between view i and reference frame, i.e. xi = Hix, ensure det(H)=1
 2) Uses equation wi=(Hi)-Tw(i)-1 to express linear constraints
 3) Compute K using Cholesky decomposition w = U*UT. Actually implemented as an algebraic formula.
 

There will be a sign ambiguity in the returned result for the translation vector. That can be resolved by checking for positive depth of triangulated features.

  1. R. Hartley, and A. Zisserman, "Multiple View Geometry in Computer Vision", 2nd Ed, Cambridge 2003
  • Constructor Details

    • SelfCalibrationLinearRotationMulti

      public SelfCalibrationLinearRotationMulti()
  • Method Details

    • setConstraints

      public void setConstraints(boolean zeroSkew, boolean principlePointOrigin, boolean knownAspect, double aspect)
      Specifies linear constraints Known aspect ratio constraint can only be used if zero skew is also assumped.
      Parameters:
      zeroSkew - Assume that skew is zero
      principlePointOrigin - Principle point is at the origin
      knownAspect - that the aspect ratio is known
      aspect - If aspect is known then this is the aspect. ratio=fy/fx Ignored otherwise.
    • estimate

      public GeometricResult estimate(List<Homography2D_F64> viewsI_to_view0)
      Assumes that the camera parameter are constant
      Parameters:
      viewsI_to_view0 - (Input) List of observed homographies
      Returns:
      true if successful
    • numberOfConstraints

      public int numberOfConstraints()
      Number of constraints which are applied by each view
    • computeInverseH

      public boolean computeInverseH(List<Homography2D_F64> homography0toI)
      Ensures the determinant is one then inverts the homogrpahy
    • getFound

      public DogArray<CameraPinhole> getFound()