Class PROSACQuadricRobustEstimator

java.lang.Object
com.irurueta.geometry.estimators.QuadricRobustEstimator
com.irurueta.geometry.estimators.PROSACQuadricRobustEstimator

public class PROSACQuadricRobustEstimator extends QuadricRobustEstimator
Finds the bes quadric for provided collection of 3D points using PROSAC algorithm.
  • Field Details

    • DEFAULT_THRESHOLD

      public static final double DEFAULT_THRESHOLD
      Constant defining default threshold to determine whether points are inliers or not. Threshold is defined by the equation abs(trans(X)) * Q * X) < t, where trans is the transposition, X is a point, Q is a quadric and t is a threshold. This equation determines the points X belonging to the locus of a quadric Q up to a certain threshold.
      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 points are inliers or not when testing possible estimation solutions. The threshold refers to the amount of error (i.e. distance) a possible solution has on a matched pair of points.
    • qualityScores

      private double[] qualityScores
      Quality scores corresponding to each pair of matched points. The larger the score value the better the quality of the matching.
  • Constructor Details

    • PROSACQuadricRobustEstimator

      public PROSACQuadricRobustEstimator()
      Constructor.
    • PROSACQuadricRobustEstimator

      public PROSACQuadricRobustEstimator(List<Point3D> points)
      Constructor with points.
      Parameters:
      points - 3D points to estimate a quadric.
      Throws:
      IllegalArgumentException - if provided list of points don't have a size greater or equal than MINIMUM_SIZE.
    • PROSACQuadricRobustEstimator

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

      public PROSACQuadricRobustEstimator(QuadricRobustEstimatorListener listener, List<Point3D> points)
      Constructor.
      Parameters:
      listener - listener to be notified of events such as when estimation starts, ends or its progress significantly changes.
      points - 3D points to estimate a quadric.
      Throws:
      IllegalArgumentException - if provided list of points don't have a size greater or equal than MINIMUM_SIZE.
    • PROSACQuadricRobustEstimator

      public PROSACQuadricRobustEstimator(double[] qualityScores)
      Constructor.
      Parameters:
      qualityScores - quality scores corresponding to each provided point.
      Throws:
      IllegalArgumentException - if provided quality scores length is smaller than MINIMUM_SIZE (i.e. 9 points).
    • PROSACQuadricRobustEstimator

      public PROSACQuadricRobustEstimator(List<Point3D> points, double[] qualityScores)
      Constructor with points.
      Parameters:
      points - 3D points to estimate a quadric.
      qualityScores - quality scores corresponding to each provided point.
      Throws:
      IllegalArgumentException - if provided list of points don't have the same size as the list of provided quality scores, or it their size is not greater or equal than MINIMUM_SIZE.
    • PROSACQuadricRobustEstimator

      public PROSACQuadricRobustEstimator(QuadricRobustEstimatorListener listener, double[] qualityScores)
      Constructor.
      Parameters:
      listener - listener to be notified of events such as when estimation starts, ends or its progress significantly changes.
      qualityScores - quality scores corresponding to each provided point.
      Throws:
      IllegalArgumentException - if provided quality scores length is smaller than MINIMUM_SIZE (i.e. 9 points).
    • PROSACQuadricRobustEstimator

      public PROSACQuadricRobustEstimator(QuadricRobustEstimatorListener listener, List<Point3D> points, double[] qualityScores)
      Constructor.
      Parameters:
      listener - listener to be notified of events such as when estimation starts, ends or its progress significantly changes.
      points - 3D points to estimate a quadric.
      qualityScores - quality scores corresponding to each provided point.
      Throws:
      IllegalArgumentException - if provided list of points don't have the same size as the list of provided quality scores, or it their size is not greater or equal than MINIMUM_SIZE.
  • Method Details

    • getThreshold

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

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

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

      public void setQualityScores(double[] qualityScores) throws LockedException
      Sets quality scores corresponding to each provided point. The larger the score value the better the quality of the sampled point.
      Overrides:
      setQualityScores in class QuadricRobustEstimator
      Parameters:
      qualityScores - quality scores corresponding to each point.
      Throws:
      LockedException - if robust estimator is locked because an estimation is already in progress.
      IllegalArgumentException - if provided quality scores length is smaller than MINIMUM_SIZE (i.e. 9 samples).
    • isReady

      public boolean isReady()
      Indicates if estimator is ready to start the conic estimation. This is true when input data (i.e. 2D points and quality scores) are provided and a minimum of MINIMUM_SIZE points are available.
      Overrides:
      isReady in class QuadricRobustEstimator
      Returns:
      true if estimator is ready, false otherwise.
    • estimate

      public Quadric estimate() throws LockedException, NotReadyException, com.irurueta.numerical.robust.RobustEstimatorException
      Estimates a quadric using a robust estimator and the best set of 3D points that fit into the locus of the estimated quadric found using the robust estimator.
      Specified by:
      estimate in class QuadricRobustEstimator
      Returns:
      a quadric.
      Throws:
      LockedException - if robust estimator is locked because an estimation is already in progress.
      NotReadyException - if provided input data is not enough to start the estimation.
      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 QuadricRobustEstimator
      Returns:
      method being used for robust estimation.
    • internalSetQualityScores

      private void internalSetQualityScores(double[] qualityScores)
      Sets quality scores corresponding to each provided point. 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 MINIMUM_SIZE.