Class DualImageOfAbsoluteConic

java.lang.Object
com.irurueta.geometry.BaseConic
com.irurueta.geometry.DualConic
com.irurueta.ar.calibration.DualImageOfAbsoluteConic
All Implemented Interfaces:
Serializable

public class DualImageOfAbsoluteConic extends com.irurueta.geometry.DualConic implements Serializable
The dual image of the absolute conic (DIAC), is the projection of the dual absolute quadric using a given pinhole camera. In an ideal metric stratum, the dual absolute quadric is equal to the identity matrix, except for the bottom-right element, which is zero. In those cases the dual image of the absolute conic only depends on the pinhole camera intrinsic parameters, and for that reason the DIAC is typically used for camera calibration purposes.
See Also:
  • Field Summary

    Fields inherited from class com.irurueta.geometry.BaseConic

    a, b, BASECONIC_MATRIX_COLUMN_SIZE, BASECONIC_MATRIX_ROW_SIZE, c, DEFAULT_LOCUS_THRESHOLD, DEFAULT_PERPENDICULAR_THRESHOLD, MIN_THRESHOLD, N_PARAMS
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Constructor without arguments.
     
    DualImageOfAbsoluteConic(double a, double b, double c, double d, double e, double f)
    Constructor of this class.
     
    DualImageOfAbsoluteConic(com.irurueta.algebra.Matrix m)
    This method sets the matrix used to describe a dual conic.
     
    DualImageOfAbsoluteConic(com.irurueta.geometry.PinholeCameraIntrinsicParameters k)
    Constructor.
     
    DualImageOfAbsoluteConic(com.irurueta.geometry.PinholeCamera camera, com.irurueta.geometry.DualQuadric dualAbsoluteQuadric)
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    com.irurueta.geometry.Conic
    Computes the conic corresponding to this dual conic.
    com.irurueta.geometry.PinholeCameraIntrinsicParameters
    Assuming that we are working in a metric stratum this method obtains the internal parameters of a pinhole camera by means of Cholesky decomposition.
    final void
    setFromCameraAndDualAbsoluteQuadric(com.irurueta.geometry.PinholeCamera camera, com.irurueta.geometry.DualQuadric dualAbsoluteQuadric)
    Sets DIAC parameters by projecting provided dual absolute quadric using provided pinhole camera.
    final void
    setFromPinholeCameraIntrinsicParameters(com.irurueta.geometry.PinholeCameraIntrinsicParameters k)
    Sets DIAC parameters from pinhole camera intrinsic parameters when we are working in a metric stratum, which is equal to C^-1=K*K'.

    Methods inherited from class com.irurueta.geometry.DualConic

    angleBetweenLines, arePerpendicularLines, arePerpendicularLines, conic, createCanonicalDualAbsoluteConic, isLocus, isLocus, setParametersFromLines

    Methods inherited from class com.irurueta.geometry.BaseConic

    asMatrix, asMatrix, getA, getB, getC, getD, getE, getF, isNormalized, normalize, setA, setB, setC, setD, setE, setF, setParameters, setParameters, setParameters

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • DualImageOfAbsoluteConic

      public DualImageOfAbsoluteConic(com.irurueta.geometry.PinholeCameraIntrinsicParameters k)
      Constructor. When working on a metric stratum, the DIAC is directly related by the pinhole camera intrinsic parameters as C^-1=K*K'
      Parameters:
      k - pinhole camera intrinsic parameters.
    • DualImageOfAbsoluteConic

      public DualImageOfAbsoluteConic(com.irurueta.geometry.PinholeCamera camera, com.irurueta.geometry.DualQuadric dualAbsoluteQuadric)
      Constructor. When not working on a metric stratum, the DIAC can be obtained as the projection of provided dual absolute quadric using provided camera
      Parameters:
      camera - a pinhole camera.
      dualAbsoluteQuadric - the dual absolute quadric.
    • DualImageOfAbsoluteConic

      public DualImageOfAbsoluteConic(double a, double b, double c, double d, double e, double f)
      Constructor of this class. This constructor accepts every parameter describing a dual conic (parameters a, b, c, d, e, f).
      Parameters:
      a - Parameter A of the conic.
      b - Parameter B of the conic.
      c - Parameter C of the conic.
      d - Parameter D of the conic.
      e - Parameter E of the conic.
      f - Parameter F of the conic.
    • DualImageOfAbsoluteConic

      public DualImageOfAbsoluteConic(com.irurueta.algebra.Matrix m) throws com.irurueta.geometry.NonSymmetricMatrixException
      This method sets the matrix used to describe a dual conic. This matrix must be 3x3 and symmetric.
      Parameters:
      m - 3x3 Matrix describing the conic.
      Throws:
      IllegalArgumentException - Raised when the size of the matrix is not 3x3.
      com.irurueta.geometry.NonSymmetricMatrixException - Raised when the conic matrix is not symmetric.
    • DualImageOfAbsoluteConic

      protected DualImageOfAbsoluteConic()
      Constructor without arguments.
  • Method Details

    • getConic

      public com.irurueta.geometry.Conic getConic() throws com.irurueta.geometry.ConicNotAvailableException
      Computes the conic corresponding to this dual conic.
      Overrides:
      getConic in class com.irurueta.geometry.DualConic
      Returns:
      A new conic instance of this dual conic.
      Throws:
      com.irurueta.geometry.ConicNotAvailableException - Raised if the rank of the dual conic matrix is not complete due to wrong parameters or numerical instability.
    • setFromPinholeCameraIntrinsicParameters

      public final void setFromPinholeCameraIntrinsicParameters(com.irurueta.geometry.PinholeCameraIntrinsicParameters k)
      Sets DIAC parameters from pinhole camera intrinsic parameters when we are working in a metric stratum, which is equal to C^-1=K*K'.
      Parameters:
      k - pinhole camera intrinsic parameters.
    • setFromCameraAndDualAbsoluteQuadric

      public final void setFromCameraAndDualAbsoluteQuadric(com.irurueta.geometry.PinholeCamera camera, com.irurueta.geometry.DualQuadric dualAbsoluteQuadric)
      Sets DIAC parameters by projecting provided dual absolute quadric using provided pinhole camera. This method can be used when not working in a metric stratum. The projection is equal to C^-1=P*Q^-1*P'.
      Parameters:
      camera - a pinhole camera.
      dualAbsoluteQuadric - the dual absolute quadric.
    • getIntrinsicParameters

      public com.irurueta.geometry.PinholeCameraIntrinsicParameters getIntrinsicParameters() throws com.irurueta.geometry.InvalidPinholeCameraIntrinsicParametersException
      Assuming that we are working in a metric stratum this method obtains the internal parameters of a pinhole camera by means of Cholesky decomposition. To avoid numerical instabilities it is preferred to obtain the ImageOfAbsoluteConic corresponding to this instance (using #getConic() method), and from there using ImageOfAbsoluteConic#getIntrinsicParameters() method, since it is more reliable than using cholesky decomposition.
      Returns:
      the internal parameters of a pinhole camera.
      Throws:
      com.irurueta.geometry.InvalidPinholeCameraIntrinsicParametersException - if pinhole camera intrinsic parameters cannot be obtained from this conic instance.