Class RANSACDualAbsoluteQuadricRobustEstimator
java.lang.Object
com.irurueta.ar.calibration.estimators.DualAbsoluteQuadricRobustEstimator
com.irurueta.ar.calibration.estimators.RANSACDualAbsoluteQuadricRobustEstimator
Finds the best dual absolute quadric (DAQ) using RANSAC algorithm.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final double
Constant defining default threshold to determine whether cameras are inliers or not.static final double
Minimum value that can be set as threshold.private double
Threshold to determine whether cameras are inliers or not when testing possible estimation solutions.Fields inherited from class com.irurueta.ar.calibration.estimators.DualAbsoluteQuadricRobustEstimator
cameras, confidence, daqEstimator, 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, progressDelta
-
Constructor Summary
ConstructorsConstructorDescriptionConstructor.Constructor.RANSACDualAbsoluteQuadricRobustEstimator
(List<com.irurueta.geometry.PinholeCamera> cameras) Constructor.RANSACDualAbsoluteQuadricRobustEstimator
(List<com.irurueta.geometry.PinholeCamera> cameras, DualAbsoluteQuadricRobustEstimatorListener listener) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionestimate()
Estimates the Dual Absolute Quadric using provided cameras.com.irurueta.numerical.robust.RobustEstimatorMethod
Returns method being used for robust estimation.double
Returns threshold to determine whether cameras are inliers or not when testing possible estimation solutions.void
setThreshold
(double threshold) Sets threshold to determine whether cameras are inliers or not when testing possible estimation solutions.Methods inherited from class com.irurueta.ar.calibration.estimators.DualAbsoluteQuadricRobustEstimator
areValidConstraints, create, create, create, create, create, create, getCameras, getConfidence, getDeterminantThreshold, getFocalDistanceAspectRatio, getListener, getMaxIterations, getMinNumberOfRequiredCameras, getProgressDelta, getQualityScores, isEnforcedSingularityValidated, isFocalDistanceAspectRatioKnown, isListenerAvailable, isLocked, isPrincipalPointAtOrigin, isReady, isSingularityEnforced, isZeroSkewness, residual, setCameras, setConfidence, setDeterminantThreshold, setEnforcedSingularityValidated, setFocalDistanceAspectRatio, setFocalDistanceAspectRatioKnown, setListener, setMaxIterations, setPrincipalPointAtOrigin, setProgressDelta, setQualityScores, setSingularityEnforced, setZeroSkewness
-
Field Details
-
DEFAULT_THRESHOLD
public static final double DEFAULT_THRESHOLDConstant 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_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 cameras are inliers or not when testing possible estimation solutions. The threshold refers to the amount of error a possible solution has.
-
-
Constructor Details
-
RANSACDualAbsoluteQuadricRobustEstimator
public RANSACDualAbsoluteQuadricRobustEstimator()Constructor. -
RANSACDualAbsoluteQuadricRobustEstimator
public RANSACDualAbsoluteQuadricRobustEstimator(DualAbsoluteQuadricRobustEstimatorListener listener) Constructor.- Parameters:
listener
- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.
-
RANSACDualAbsoluteQuadricRobustEstimator
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.
-
RANSACDualAbsoluteQuadricRobustEstimator
public RANSACDualAbsoluteQuadricRobustEstimator(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 estimation progress changes.- Throws:
IllegalArgumentException
- if not enough cameras are provided for default settings. Hence, at least 2 cameras must be provided.
-
-
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.
-
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.
-
estimate
public DualAbsoluteQuadric estimate() throws com.irurueta.geometry.estimators.LockedException, com.irurueta.geometry.estimators.NotReadyException, com.irurueta.numerical.robust.RobustEstimatorExceptionEstimates the Dual Absolute Quadric using provided cameras.- Specified by:
estimate
in classDualAbsoluteQuadricRobustEstimator
- 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 classDualAbsoluteQuadricRobustEstimator
- Returns:
- method being used for robust estimation.
-