Package com.irurueta.geometry.estimators
Class PROSACDualQuadricRobustEstimator
java.lang.Object
com.irurueta.geometry.estimators.DualQuadricRobustEstimator
com.irurueta.geometry.estimators.PROSACDualQuadricRobustEstimator
Finds the best dual quadric for provided collection of 3D planes using PROSAC
algorithm.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final doubleConstant defining default threshold to determine whether planes are inliers or not.static final doubleMinimum value that can be set as threshold.private double[]Quality scores corresponding to each plane.private doubleThreshold to determine whether planes are inliers or not when testing possible estimation solutions.Fields inherited from class com.irurueta.geometry.estimators.DualQuadricRobustEstimator
confidence, DEFAULT_CONFIDENCE, DEFAULT_MAX_ITERATIONS, DEFAULT_PROGRESS_DELTA, DEFAULT_ROBUST_METHOD, listener, locked, MAX_CONFIDENCE, MAX_PROGRESS_DELTA, maxIterations, MIN_CONFIDENCE, MIN_ITERATIONS, MIN_PROGRESS_DELTA, MINIMUM_SIZE, planes, progressDelta -
Constructor Summary
ConstructorsConstructorDescriptionConstructor.PROSACDualQuadricRobustEstimator(double[] qualityScores) Constructor.Constructor.PROSACDualQuadricRobustEstimator(DualQuadricRobustEstimatorListener listener, double[] qualityScores) Constructor.PROSACDualQuadricRobustEstimator(DualQuadricRobustEstimatorListener listener, List<Plane> planes) Constructor.PROSACDualQuadricRobustEstimator(DualQuadricRobustEstimatorListener listener, List<Plane> planes, double[] qualityScores) Constructor.PROSACDualQuadricRobustEstimator(List<Plane> planes) Constructor with planes.PROSACDualQuadricRobustEstimator(List<Plane> planes, double[] qualityScores) Constructor with planes. -
Method Summary
Modifier and TypeMethodDescriptionestimate()Estimates a dual quadric using a robust estimator and the best set of 3D planes that fit into the locus of the estimated dual quadric found using the robust estimator.com.irurueta.numerical.robust.RobustEstimatorMethodReturns method being used for robust estimation.double[]Returns quality scores corresponding to each provided plane.doubleReturns threshold to determine whether planes are inliers or not when testing possible estimation solutions.private voidinternalSetQualityScores(double[] qualityScores) Sets quality scores corresponding to each provided plane.booleanisReady()Indicates if estimator is ready to start the quadric estimation.voidsetQualityScores(double[] qualityScores) Sets quality scores corresponding to each provided plane.voidsetThreshold(double threshold) Sets threshold to determine whether planes are inliers or not when testing possible estimation solutions.Methods inherited from class com.irurueta.geometry.estimators.DualQuadricRobustEstimator
create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, getConfidence, getListener, getMaxIterations, getPlanes, getProgressDelta, isListenerAvailable, isLocked, residual, setConfidence, setListener, setMaxIterations, setPlanes, setProgressDelta
-
Field Details
-
DEFAULT_THRESHOLD
public static final double DEFAULT_THRESHOLDConstant defining default threshold to determine whether planes are inliers or not. Threshold is defined by the equation abs(trans(P) * dQ * P) < t, where trans is the transposition, P is a plane, dQ is a dual quadric and t is a threshold. This equation determines the planes P belonging to the locus of a dual quadric dQ up to a certain threshold.- See Also:
-
MIN_THRESHOLD
public static final double MIN_THRESHOLDMinimum value that can be set as threshold. Threshold must be strictly greater than 0.0.- See Also:
-
threshold
private double thresholdThreshold to determine whether planes are inliers or not when testing possible estimation solutions. The threshold refers to the amount of algebraic error a possible solution has on a given line. -
qualityScores
private double[] qualityScoresQuality scores corresponding to each plane. The larger the score value the better the quality of the sample.
-
-
Constructor Details
-
PROSACDualQuadricRobustEstimator
public PROSACDualQuadricRobustEstimator()Constructor. -
PROSACDualQuadricRobustEstimator
Constructor with planes.- Parameters:
planes- 3D planes to estimate a dual quadric.- Throws:
IllegalArgumentException- if provided list of planes don't have a size greater or equal than MINIMUM_SIZE.
-
PROSACDualQuadricRobustEstimator
Constructor.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.
-
PROSACDualQuadricRobustEstimator
public PROSACDualQuadricRobustEstimator(DualQuadricRobustEstimatorListener listener, List<Plane> planes) Constructor.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.planes- 3D planes to estimate a dual quadric.- Throws:
IllegalArgumentException- if provided list of planes don't have a size greater or equal than MINIMUM_SIZE.
-
PROSACDualQuadricRobustEstimator
public PROSACDualQuadricRobustEstimator(double[] qualityScores) Constructor.- Parameters:
qualityScores- quality scores corresponding to each provided plane.- Throws:
IllegalArgumentException- if provided quality scores length is smaller than MINIMUM_SIZE (i.e. 9 planes).
-
PROSACDualQuadricRobustEstimator
Constructor with planes.- Parameters:
planes- 3D planes to estimate a dual quadric.qualityScores- quality scores corresponding to each provided plane.- Throws:
IllegalArgumentException- if provided list of planes don't have the same size as the list of provided quality scores, or if their size is not greater or equal than MINIMUM_SIZE.
-
PROSACDualQuadricRobustEstimator
public PROSACDualQuadricRobustEstimator(DualQuadricRobustEstimatorListener 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 plane.- Throws:
IllegalArgumentException- if provided quality scores length is smaller than MINIMUM_SIZE (i.e. 9 planes).
-
PROSACDualQuadricRobustEstimator
public PROSACDualQuadricRobustEstimator(DualQuadricRobustEstimatorListener listener, List<Plane> planes, double[] qualityScores) Constructor.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.planes- 3D planes to estimate a dual quadric.qualityScores- quality scores corresponding to each provided plane.- 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 planes are inliers or not when testing possible estimation solutions. The threshold refers to the amount of error a possible solution has on a given plane.- Returns:
- threshold to determine whether planes are inliers or not when testing possible estimation solutions.
-
setThreshold
Sets threshold to determine whether planes are inliers or not when testing possible estimation solutions. The threshold refers to the amount of algebraic error a possible solution has on a given plane.- 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 plane. The larger the score value the better the quality of the sampled plane.- Overrides:
getQualityScoresin classDualQuadricRobustEstimator- Returns:
- quality scores corresponding to each point.
-
setQualityScores
Sets quality scores corresponding to each provided plane. The larger the score value the better the quality of the sampled plane.- Overrides:
setQualityScoresin classDualQuadricRobustEstimator- Parameters:
qualityScores- quality scores corresponding to each plane.- 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 quadric estimation. This is true when input data (i.e. 3D planes and quality scores) are provided and a minimum of MINIMUM_SIZE planes are available.- Overrides:
isReadyin classDualQuadricRobustEstimator- Returns:
- true if estimator is ready, false otherwise.
-
estimate
public DualQuadric estimate() throws LockedException, NotReadyException, com.irurueta.numerical.robust.RobustEstimatorExceptionEstimates a dual quadric using a robust estimator and the best set of 3D planes that fit into the locus of the estimated dual quadric found using the robust estimator.- Specified by:
estimatein classDualQuadricRobustEstimator- Returns:
- a dual 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:
getMethodin classDualQuadricRobustEstimator- Returns:
- method being used for robust estimation.
-
internalSetQualityScores
private void internalSetQualityScores(double[] qualityScores) Sets quality scores corresponding to each provided plane. 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.
-