Class MSACDualAbsoluteQuadricRobustEstimator
java.lang.Object
com.irurueta.ar.calibration.estimators.DualAbsoluteQuadricRobustEstimator
com.irurueta.ar.calibration.estimators.MSACDualAbsoluteQuadricRobustEstimator
Finds the best dual absolute quadric (DAQ) for provided collection of
cameras using MSAC algorithm.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final doubleConstant defining default threshold to determine whether cameras are inliers or not.static final doubleMinimum value that can be set as threshold.private doubleThreshold 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.MSACDualAbsoluteQuadricRobustEstimator(List<com.irurueta.geometry.PinholeCamera> cameras) Constructor.MSACDualAbsoluteQuadricRobustEstimator(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.RobustEstimatorMethodReturns method being used for robust estimation.doubleReturns threshold to determine whether cameras are inliers or not when testing possible estimation solutions.voidsetThreshold(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
-
MSACDualAbsoluteQuadricRobustEstimator
public MSACDualAbsoluteQuadricRobustEstimator()Constructor. -
MSACDualAbsoluteQuadricRobustEstimator
Constructor.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.
-
MSACDualAbsoluteQuadricRobustEstimator
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.
-
MSACDualAbsoluteQuadricRobustEstimator
public MSACDualAbsoluteQuadricRobustEstimator(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.
-
-
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 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.
-
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:
estimatein 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:
getMethodin classDualAbsoluteQuadricRobustEstimator- Returns:
- method being used for robust estimation.
-