Class PROSACDualAbsoluteQuadricRobustEstimator

java.lang.Object
com.irurueta.ar.calibration.estimators.DualAbsoluteQuadricRobustEstimator
com.irurueta.ar.calibration.estimators.PROSACDualAbsoluteQuadricRobustEstimator

public class PROSACDualAbsoluteQuadricRobustEstimator extends DualAbsoluteQuadricRobustEstimator
Finds the best dual absolute quadric (DAQ) for provided collection of cameras using PROSAC algorithm.
  • Field Details

    • DEFAULT_THRESHOLD

      public static final double DEFAULT_THRESHOLD
      Constant defining default threshold to determine whether cameras are inliers or not. Threshold is defined by the equations used to estimate the DAQ depending on the required settings (zero skewness, principal point at origin, and known aspect ratio).
      See Also:
    • MIN_THRESHOLD

      public static final double MIN_THRESHOLD
      Minimum value that can be set as threshold. Threshold must be strictly greater than 0.0.
      See Also:
    • threshold

      private double threshold
      Threshold to determine whether cameras are inliers or not when testing possible estimation solutions. The threshold refers to the amount of error a possible solution has.
    • qualityScores

      private double[] qualityScores
      Quality scores corresponding to each provided homography. The larger the score value the better the quality of the sample.
  • Constructor Details

    • PROSACDualAbsoluteQuadricRobustEstimator

      public PROSACDualAbsoluteQuadricRobustEstimator()
      Constructor.
    • PROSACDualAbsoluteQuadricRobustEstimator

      public PROSACDualAbsoluteQuadricRobustEstimator(DualAbsoluteQuadricRobustEstimatorListener listener)
      Constructor.
      Parameters:
      listener - listener to be notified of events such as when estimation starts, ends or its progress significantly changes.
    • PROSACDualAbsoluteQuadricRobustEstimator

      public PROSACDualAbsoluteQuadricRobustEstimator(List<com.irurueta.geometry.PinholeCamera> cameras)
      Constructor.
      Parameters:
      cameras - list of cameras used to estimate the Dual Absolute Quadric (DAQ), which can be used to obtain pinhole camera intrinsic parameters.
      Throws:
      IllegalArgumentException - if not enough cameras are provided for default settings. Hence, at least 2 cameras must be provided.
    • PROSACDualAbsoluteQuadricRobustEstimator

      public PROSACDualAbsoluteQuadricRobustEstimator(List<com.irurueta.geometry.PinholeCamera> cameras, DualAbsoluteQuadricRobustEstimatorListener listener)
      Constructor.
      Parameters:
      cameras - list of cameras used to estimate the Dual Absolute Quadric (DAQ), which can be used to obtain pinhole camera intrinsic parameters.
      listener - listener to be notified of events such as when estimation starts, ends or its progress significantly changes.
      Throws:
      IllegalArgumentException - if not enough cameras are provided for default settings. Hence, at least 2 cameras must be provided.
    • PROSACDualAbsoluteQuadricRobustEstimator

      public PROSACDualAbsoluteQuadricRobustEstimator(double[] qualityScores)
      Constructor.
      Parameters:
      qualityScores - quality scores corresponding to each provided camera.
      Throws:
      IllegalArgumentException - if provided quality scores length is smaller than required number of cameras for default settings (i.e. 2 cameras).
    • PROSACDualAbsoluteQuadricRobustEstimator

      public PROSACDualAbsoluteQuadricRobustEstimator(double[] qualityScores, DualAbsoluteQuadricRobustEstimatorListener listener)
      Constructor.
      Parameters:
      qualityScores - quality scores corresponding to each provided camera.
      listener - listener to be notified of events such as when estimation starts, ends or its progress significantly changes.
      Throws:
      IllegalArgumentException - if provided quality scores length is smaller than required number of cameras for default settings (i.e. 2 cameras).
    • PROSACDualAbsoluteQuadricRobustEstimator

      public PROSACDualAbsoluteQuadricRobustEstimator(List<com.irurueta.geometry.PinholeCamera> cameras, double[] qualityScores)
      Constructor.
      Parameters:
      cameras - list of cameras used to estimate the Dual Absolute Quadric (DAQ), which can be used to obtain pinhole camera intrinsic parameters.
      qualityScores - quality scores corresponding to each provided camera.
      Throws:
      IllegalArgumentException - if not enough cameras are provided for default settings (i.e. 2 cameras) or quality scores and cameras don't have the same size.
    • PROSACDualAbsoluteQuadricRobustEstimator

      public PROSACDualAbsoluteQuadricRobustEstimator(List<com.irurueta.geometry.PinholeCamera> cameras, double[] qualityScores, DualAbsoluteQuadricRobustEstimatorListener listener)
      Constructor.
      Parameters:
      cameras - list of cameras used to estimate the Dual Absolute Quadric (DAQ), which can be used to obtain pinhole camera intrinsic parameters.
      qualityScores - quality scores corresponding to each provided camera.
      listener - listener to be notified of events such as when estimation starts, ends or its progress significantly changes.
      Throws:
      IllegalArgumentException - if not enough cameras are provided for default settings (i.e. 2 cameras) or quality scores and cameras don't have the same size.
  • Method Details

    • getThreshold

      public double getThreshold()
      Returns threshold to determine whether cameras are inliers or not when testing possible estimation solutions. The threshold refers to the amount of error a possible solution has.
      Returns:
      threshold to determine whether cameras are inliers or not when testing possible estimation solutions.
    • setThreshold

      public void setThreshold(double threshold) throws com.irurueta.geometry.estimators.LockedException
      Sets threshold to determine whether cameras are inliers or not when testing possible estimation solutions. The threshold refers to the amount of error a possible solution has.
      Parameters:
      threshold - threshold to determine whether cameras are inliers or not when testing possible estimation solutions.
      Throws:
      IllegalArgumentException - if provided value is equal or less than zero.
      com.irurueta.geometry.estimators.LockedException - if robust estimator is locked because an estimation is already in progress.
    • getQualityScores

      public double[] getQualityScores()
      Returns quality scores corresponding to each provided camera. The larger the score value the better the quality of the sampled camera.
      Overrides:
      getQualityScores in class DualAbsoluteQuadricRobustEstimator
      Returns:
      quality scores corresponding to each camera.
    • setQualityScores

      public void setQualityScores(double[] qualityScores) throws com.irurueta.geometry.estimators.LockedException
      Sets quality scores corresponding to each provided camera. The larger the score value the better the quality of the sampled camera.
      Overrides:
      setQualityScores in class DualAbsoluteQuadricRobustEstimator
      Parameters:
      qualityScores - quality scores corresponding to each camera.
      Throws:
      com.irurueta.geometry.estimators.LockedException - if robust estimator is locked because an estimation is already in progress.
      IllegalArgumentException - if provided quality scores length is smaller than minimum required number of cameras (i.e. 2 cameras).
    • isReady

      public boolean isReady()
      Indicates if estimator is ready to start the DAQ estimation. This is true when input data (i.e. cameras) is provided and contains at least the minimum number of required cameras, and also quality scores are provided.
      Overrides:
      isReady in class DualAbsoluteQuadricRobustEstimator
      Returns:
      true if estimator is ready, false otherwise.
    • estimate

      public DualAbsoluteQuadric estimate() throws com.irurueta.geometry.estimators.LockedException, com.irurueta.geometry.estimators.NotReadyException, com.irurueta.numerical.robust.RobustEstimatorException
      Estimates the Dual Absolute Quadric using provided cameras.
      Specified by:
      estimate in class DualAbsoluteQuadricRobustEstimator
      Returns:
      estimated Dual Absolute Quadric (DAQ).
      Throws:
      com.irurueta.geometry.estimators.LockedException - if robust estimator is locked.
      com.irurueta.geometry.estimators.NotReadyException - if no valid input data has already been provided.
      com.irurueta.numerical.robust.RobustEstimatorException - if estimation fails for any reason (i.e. numerical instability, no solution available, etc).
    • getMethod

      public com.irurueta.numerical.robust.RobustEstimatorMethod getMethod()
      Returns method being used for robust estimation.
      Specified by:
      getMethod in class DualAbsoluteQuadricRobustEstimator
      Returns:
      method being used for robust estimation.
    • internalSetQualityScores

      private void internalSetQualityScores(double[] qualityScores)
      Sets quality scores corresponding to each camera. This method is used internally and does not check whether instance is locked or not.
      Parameters:
      qualityScores - quality scores to be set.
      Throws:
      IllegalArgumentException - if provided quality scores length is smaller than the minimum number of required cameras for current settings.