Class PROSACDualAbsoluteQuadricRobustEstimator
java.lang.Object
com.irurueta.ar.calibration.estimators.DualAbsoluteQuadricRobustEstimator
com.irurueta.ar.calibration.estimators.PROSACDualAbsoluteQuadricRobustEstimator
Finds the best dual absolute quadric (DAQ) for provided collection of
cameras using PROSAC 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[]
Quality scores corresponding to each provided homography.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.PROSACDualAbsoluteQuadricRobustEstimator
(double[] qualityScores) Constructor.PROSACDualAbsoluteQuadricRobustEstimator
(double[] qualityScores, DualAbsoluteQuadricRobustEstimatorListener listener) Constructor.Constructor.PROSACDualAbsoluteQuadricRobustEstimator
(List<com.irurueta.geometry.PinholeCamera> cameras) Constructor.PROSACDualAbsoluteQuadricRobustEstimator
(List<com.irurueta.geometry.PinholeCamera> cameras, double[] qualityScores) Constructor.PROSACDualAbsoluteQuadricRobustEstimator
(List<com.irurueta.geometry.PinholeCamera> cameras, double[] qualityScores, DualAbsoluteQuadricRobustEstimatorListener listener) Constructor.PROSACDualAbsoluteQuadricRobustEstimator
(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 quality scores corresponding to each provided camera.double
Returns threshold to determine whether cameras are inliers or not when testing possible estimation solutions.private void
internalSetQualityScores
(double[] qualityScores) Sets quality scores corresponding to each camera.boolean
isReady()
Indicates if estimator is ready to start the DAQ estimation.void
setQualityScores
(double[] qualityScores) Sets quality scores corresponding to each provided camera.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, isEnforcedSingularityValidated, isFocalDistanceAspectRatioKnown, isListenerAvailable, isLocked, isPrincipalPointAtOrigin, isSingularityEnforced, isZeroSkewness, residual, setCameras, setConfidence, setDeterminantThreshold, setEnforcedSingularityValidated, setFocalDistanceAspectRatio, setFocalDistanceAspectRatioKnown, setListener, setMaxIterations, setPrincipalPointAtOrigin, setProgressDelta, 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. -
qualityScores
private double[] qualityScoresQuality 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
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 classDualAbsoluteQuadricRobustEstimator
- 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 classDualAbsoluteQuadricRobustEstimator
- 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 classDualAbsoluteQuadricRobustEstimator
- 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.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.
-
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.
-