Package com.irurueta.ar.calibration
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
ConstructorsModifierConstructorDescriptionprotected
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 TypeMethodDescriptioncom.irurueta.geometry.Conic
getConic()
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
-
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.ConicNotAvailableExceptionComputes the conic corresponding to this dual conic.- Overrides:
getConic
in classcom.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.InvalidPinholeCameraIntrinsicParametersExceptionAssuming 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.
-