Package com.irurueta.geometry.estimators
Class EuclideanTransformation2DRobustEstimator
java.lang.Object
com.irurueta.geometry.estimators.EuclideanTransformation2DRobustEstimator
- Direct Known Subclasses:
LMedSEuclideanTransformation2DRobustEstimator,MSACEuclideanTransformation2DRobustEstimator,PROMedSEuclideanTransformation2DRobustEstimator,PROSACEuclideanTransformation2DRobustEstimator,RANSACEuclideanTransformation2DRobustEstimator
This is an abstract class to robustly find the best Euclidean transformation
for collections of matching 2D points.
Implementations of this class should be able to detect and discard outliers
in order to find the best solution.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected doubleAmount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%).private com.irurueta.algebra.MatrixEstimated covariance of estimated 2D Euclidean transformation.static final doubleConstant defining default confidence of the estimated result, which is 99%.static final booleanIndicates that covariance is not kept by default after refining result.static final intDefault maximum allowed number of iterations.static final floatDefault amount of progress variation before notifying a change in estimation progress.static final booleanIndicates that is refined by default using Levenberg-Marquardt fitting algorithm over found inliers.static final com.irurueta.numerical.robust.RobustEstimatorMethodDefault robust estimator method when none is provided.protected com.irurueta.numerical.robust.InliersDataData related to inliers found after estimation.List of points to be used to estimate an Euclidean 2D transformation.private booleanIndicates whether covariance must be kept after refining result.Listener to be notified of events such as when estimation starts, ends or its progress significantly changes.protected booleanIndicates if this estimator is locked because an estimation is being computed.static final doubleMaximum allowed confidence value.static final floatMaximum allowed value for progress delta.protected intMaximum allowed number of iterations.static final doubleMinimum allowed confidence value.static final intMinimum allowed number of iterations.static final floatMinimum allowed value for progress delta.static final intMinimum number of matched points required to estimate an Euclidean 2D transformation.List of points to be used to estimate an Euclidean 2D transformation.protected floatAmount of progress variation before notifying a progress change during estimation.protected booleanIndicates whether result must be refined using Levenberg-Marquardt fitting algorithm over found inliers.static final intFor some point configurations a solution can be found with only 2 points.private booleanIndicates whether estimation can start with only 2 points or not. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedConstructor.protectedEuclideanTransformation2DRobustEstimator(boolean weakMinimumSizeAllowed) Constructor.protectedConstructor.protectedEuclideanTransformation2DRobustEstimator(EuclideanTransformation2DRobustEstimatorListener listener, boolean weakMinimumSizeAllowed) Constructor.protectedEuclideanTransformation2DRobustEstimator(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints) Constructor with listener and lists of points to be used to estimate an Euclidean 2D transformation.protectedEuclideanTransformation2DRobustEstimator(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, boolean weakMinimumSizeAllowed) Constructor with listener and lists of points to be used to estimate an Euclidean 2D transformation.protectedEuclideanTransformation2DRobustEstimator(List<Point2D> inputPoints, List<Point2D> outputPoints) Constructor with lists of points to be used to estimate an Euclidean 2D transformation.protectedEuclideanTransformation2DRobustEstimator(List<Point2D> inputPoints, List<Point2D> outputPoints, boolean weakMinimumSizeAllowed) Constructor with lists of points to be used to estimate an Euclidean 2D transformation. -
Method Summary
Modifier and TypeMethodDescriptionprotected EuclideanTransformation2DattemptRefine(EuclideanTransformation2D transformation) Attempts to refine provided solution if refinement is requested.create()Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.create(double[] qualityScores) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(double[] qualityScores, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(double[] qualityScores, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.create(double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, double[] qualityScores) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, double[] qualityScores, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, double[] qualityScores, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.create(com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(List<Point2D> inputPoints, List<Point2D> outputPoints, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided estimator method.Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.create(List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.create(List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.create(List<Point2D> inputPoints, List<Point2D> outputPoints, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided estimator method.abstract EuclideanTransformation2Destimate()Estimates an Euclidean 2D transformation using a robust estimator and the best set of matched 2D point correspondences found using the robust estimator.doubleReturns amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%).com.irurueta.algebra.MatrixGets estimated covariance of estimated 3D point if available.com.irurueta.numerical.robust.InliersDataGets data related to inliers found after estimation.Returns list of input points to be used to estimate an Euclidean 2D transformation.Returns reference to listener to be notified of events such as when estimation starts, ends or its progress significantly changes.intReturns maximum allowed number of iterations.abstract com.irurueta.numerical.robust.RobustEstimatorMethodReturns method being used for robust estimation.intRequired minimum number of point correspondences to start the estimation.Returns list of output points to be used to estimate an Euclidean 2D transformation.floatReturns amount of progress variation before notifying a progress change during estimation.double[]Returns quality scores corresponding to each pair of matched points.protected abstract doubleGets standard deviation used for Levenberg-Marquardt fitting during refinement.private voidinternalSetPoints(List<Point2D> inputPoints, List<Point2D> outputPoints) Internal method to set lists of points to be used to estimate an Euclidean 2D transformation.booleanIndicates whether covariance must be kept after refining result.booleanIndicates whether listener has been provided and is available for retrieval.booleanisLocked()Indicates if this instance is locked because estimation is being computed.booleanisReady()Indicates if estimator is ready to start the Euclidean 2D transformation estimation.booleanIndicates whether result must be refined using Levenberg-Marquardt fitting algorithm over found inliers.booleanIndicates whether estimation can start with only 2 points or not.voidsetConfidence(double confidence) Sets amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%).voidsetCovarianceKept(boolean keepCovariance) Specifies whether covariance must be kept after refining result.voidSets listener to be notified of events such as when estimation starts, ends or its progress significantly changes.voidsetMaxIterations(int maxIterations) Sets maximum allowed number of iterations.voidSets list of points to be used to estimate an Euclidean 2D transformation.voidsetProgressDelta(float progressDelta) Sets amount of progress variation before notifying a progress change during estimation.voidsetQualityScores(double[] qualityScores) Sets quality scores corresponding to each pair of matched points.voidsetResultRefined(boolean refineResult) Specifies whether result must be refined using Levenberg-Marquardt fitting algorithm over found inliers.voidsetWeakMinimumSizeAllowed(boolean weakMinimumSizeAllowed) Specifies whether estimation can start with only 2 points or not.
-
Field Details
-
MINIMUM_SIZE
public static final int MINIMUM_SIZEMinimum number of matched points required to estimate an Euclidean 2D transformation.- See Also:
-
WEAK_MINIMUM_SIZE
public static final int WEAK_MINIMUM_SIZEFor some point configurations a solution can be found with only 2 points.- See Also:
-
DEFAULT_PROGRESS_DELTA
public static final float DEFAULT_PROGRESS_DELTADefault amount of progress variation before notifying a change in estimation progress. By default, this is set to 5%.- See Also:
-
MIN_PROGRESS_DELTA
public static final float MIN_PROGRESS_DELTAMinimum allowed value for progress delta.- See Also:
-
MAX_PROGRESS_DELTA
public static final float MAX_PROGRESS_DELTAMaximum allowed value for progress delta.- See Also:
-
DEFAULT_CONFIDENCE
public static final double DEFAULT_CONFIDENCEConstant defining default confidence of the estimated result, which is 99%. This means that with a probability of 99% estimation will be accurate because chosen sub-samples will be inliers.- See Also:
-
DEFAULT_MAX_ITERATIONS
public static final int DEFAULT_MAX_ITERATIONSDefault maximum allowed number of iterations.- See Also:
-
MIN_CONFIDENCE
public static final double MIN_CONFIDENCEMinimum allowed confidence value.- See Also:
-
MAX_CONFIDENCE
public static final double MAX_CONFIDENCEMaximum allowed confidence value.- See Also:
-
MIN_ITERATIONS
public static final int MIN_ITERATIONSMinimum allowed number of iterations.- See Also:
-
DEFAULT_REFINE_RESULT
public static final boolean DEFAULT_REFINE_RESULTIndicates that is refined by default using Levenberg-Marquardt fitting algorithm over found inliers.- See Also:
-
DEFAULT_KEEP_COVARIANCE
public static final boolean DEFAULT_KEEP_COVARIANCEIndicates that covariance is not kept by default after refining result.- See Also:
-
DEFAULT_ROBUST_METHOD
public static final com.irurueta.numerical.robust.RobustEstimatorMethod DEFAULT_ROBUST_METHODDefault robust estimator method when none is provided. -
listener
Listener to be notified of events such as when estimation starts, ends or its progress significantly changes. -
locked
protected boolean lockedIndicates if this estimator is locked because an estimation is being computed. -
progressDelta
protected float progressDeltaAmount of progress variation before notifying a progress change during estimation. -
confidence
protected double confidenceAmount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%). The amount of confidence indicates the probability that the estimated result is correct. Usually this value will be close to 1.0, but not exactly 1.0. -
maxIterations
protected int maxIterationsMaximum allowed number of iterations. When the maximum number of iterations is exceeded, result will not be available, however an approximate result will be available for retrieval. -
inliersData
protected com.irurueta.numerical.robust.InliersData inliersDataData related to inliers found after estimation. -
refineResult
protected boolean refineResultIndicates whether result must be refined using Levenberg-Marquardt fitting algorithm over found inliers. If true, inliers will be computed and kept in any implementation regardless of the settings. -
keepCovariance
private boolean keepCovarianceIndicates whether covariance must be kept after refining result. This setting is only taken into account if result is refined. -
covariance
private com.irurueta.algebra.Matrix covarianceEstimated covariance of estimated 2D Euclidean transformation. This is only available when result has been refined and covariance is kept. -
inputPoints
List of points to be used to estimate an Euclidean 2D transformation. Each point in the list of input points must be matched with the corresponding point in the list of output points located at the same position. Hence, both input points and output points must have the same size, and their size must be greater or equal than MINIMUM_SIZE. -
outputPoints
List of points to be used to estimate an Euclidean 2D transformation. Each point in the lis tof output points must be matched with the corresponding point in the list of input points located at the same position. Hence, both input points and output points must have the same size, and their size must be greater or equal than MINIMUM_SIZE. -
weakMinimumSizeAllowed
private boolean weakMinimumSizeAllowedIndicates whether estimation can start with only 2 points or not. True allows 2 points, false requires 3.
-
-
Constructor Details
-
EuclideanTransformation2DRobustEstimator
protected EuclideanTransformation2DRobustEstimator()Constructor. -
EuclideanTransformation2DRobustEstimator
protected EuclideanTransformation2DRobustEstimator(EuclideanTransformation2DRobustEstimatorListener listener) Constructor.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.
-
EuclideanTransformation2DRobustEstimator
protected EuclideanTransformation2DRobustEstimator(List<Point2D> inputPoints, List<Point2D> outputPoints) Constructor with lists of points to be used to estimate an Euclidean 2D transformation. Points in the list located at the same position are considered to be matched. Hence, both lists must have the same size, and their size must be greater or equal than MINIMUM_SIZE.- Parameters:
inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
EuclideanTransformation2DRobustEstimator
protected EuclideanTransformation2DRobustEstimator(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints) Constructor with listener and lists of points to be used to estimate an Euclidean 2D transformation. Points in the list located at the same position are considered to be matched. Hence, both lists must have the same size, and their size must be greater or equal than MINIMUM_SIZE.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
EuclideanTransformation2DRobustEstimator
protected EuclideanTransformation2DRobustEstimator(boolean weakMinimumSizeAllowed) Constructor.- Parameters:
weakMinimumSizeAllowed- true allows 2 points, false requires 3.
-
EuclideanTransformation2DRobustEstimator
protected EuclideanTransformation2DRobustEstimator(EuclideanTransformation2DRobustEstimatorListener listener, boolean weakMinimumSizeAllowed) Constructor.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.weakMinimumSizeAllowed- true allows 2 points, false requires 3.
-
EuclideanTransformation2DRobustEstimator
protected EuclideanTransformation2DRobustEstimator(List<Point2D> inputPoints, List<Point2D> outputPoints, boolean weakMinimumSizeAllowed) Constructor with lists of points to be used to estimate an Euclidean 2D transformation. Points in the list located at the same position are considered to be matched. Hence, both lists must have the same size, and their size must be greater or equal than MINIMUM_SIZE.- Parameters:
inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.weakMinimumSizeAllowed- true allows 2 points, false requires 3.- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
EuclideanTransformation2DRobustEstimator
protected EuclideanTransformation2DRobustEstimator(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, boolean weakMinimumSizeAllowed) Constructor with listener and lists of points to be used to estimate an Euclidean 2D transformation. Points in the list located at the same position are considered to be matched. Hence, both lists must have the same size, and their size must be greater or equal than MINIMUM_SIZE.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.weakMinimumSizeAllowed- true allows 2 points, false requires 3.- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
-
Method Details
-
getInputPoints
Returns list of input points to be used to estimate an Euclidean 2D transformation. Each point in the list of input points must be matched with the corresponding point in the list of output points located at the same position. Hence, both input points and output points must have the same size, and their size must be greater or equal than MINIMUM_SIZE.- Returns:
- list of input points to be used to estimate an Euclidean 2D transformation.
-
getOutputPoints
Returns list of output points to be used to estimate an Euclidean 2D transformation. Each point in the list of output points must be matched with the corresponding point in the list of input points located at the same position. Hence, both input points and output points must have the same size, and their size must be greater or equal than MINIMUM_SIZE.- Returns:
- list of output points to be used to estimate an Euclidean 2D transformation.
-
setPoints
Sets list of points to be used to estimate an Euclidean 2D transformation. Points in the list located at the same position are considered to be matched. Hence, both lists must have the same size, and their size must be greater or equal than MINIMUM_SIZE.- Parameters:
inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.LockedException- if estimator is locked because a computation is already in progress.
-
isReady
public boolean isReady()Indicates if estimator is ready to start the Euclidean 2D transformation estimation. This is true when input data (i.e. lists of matched points) are provided and a minimum of MINIMUM_SIZE points are available.- Returns:
- true if estimator is ready, false otherwise.
-
getQualityScores
public double[] getQualityScores()Returns quality scores corresponding to each pair of matched points. The larger the score value the better the quality of the matching. This implementation always returns null. Subclasses using quality scores must implement proper behaviour.- Returns:
- quality scores corresponding to each pair of matched points.
-
setQualityScores
Sets quality scores corresponding to each pair of matched points. The larger the score value the better the quality of the matching. This implementation makes no action. Subclasses using quality scores must implement proper behaviour.- Parameters:
qualityScores- quality scores corresponding to each pair of matched points.- 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. 3 samples).
-
getListener
Returns reference to listener to be notified of events such as when estimation starts, ends or its progress significantly changes.- Returns:
- listener to be notified of events.
-
setListener
public void setListener(EuclideanTransformation2DRobustEstimatorListener listener) throws LockedException Sets listener to be notified of events such as when estimation starts, ends or its progress significantly changes.- Parameters:
listener- listener to be notified of events.- Throws:
LockedException- if robust estimator is locked.
-
isListenerAvailable
public boolean isListenerAvailable()Indicates whether listener has been provided and is available for retrieval.- Returns:
- true if available, false otherwise.
-
isWeakMinimumSizeAllowed
public boolean isWeakMinimumSizeAllowed()Indicates whether estimation can start with only 2 points or not.- Returns:
- true allows 2 points, false requires 3.
-
setWeakMinimumSizeAllowed
Specifies whether estimation can start with only 2 points or not.- Parameters:
weakMinimumSizeAllowed- true allows 2 points, false requires 3.- Throws:
LockedException- if estimator is locked.
-
getMinimumPoints
public int getMinimumPoints()Required minimum number of point correspondences to start the estimation. Can be either 2 or 3.- Returns:
- minimum number of point correspondences.
-
isLocked
public boolean isLocked()Indicates if this instance is locked because estimation is being computed.- Returns:
- true if locked, false otherwise.
-
getProgressDelta
public float getProgressDelta()Returns amount of progress variation before notifying a progress change during estimation.- Returns:
- amount of progress variation before notifying a progress change during estimation.
-
setProgressDelta
Sets amount of progress variation before notifying a progress change during estimation.- Parameters:
progressDelta- amount of progress variation before notifying a progress change during estimation.- Throws:
IllegalArgumentException- if progress delta is less than zero or greater than 1.LockedException- if this estimator is locked because an estimation is being computed.
-
getConfidence
public double getConfidence()Returns amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%). The amount of confidence indicates the probability that the estimated result is correct. Usually this value will be close to 1.0, but not exactly 1.0.- Returns:
- amount of confidence as a value between 0.0 and 1.0.
-
setConfidence
Sets amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%). The amount of confidence indicates the probability that the estimated result is correct. Usually this value will be close to 1.0, but not exactly 1.0.- Parameters:
confidence- confidence to be set as a value between 0.0 and 1.0.- Throws:
IllegalArgumentException- if provided value is not between 0.0 and 1.0.LockedException- if this estimator is locked because an estimator is being computed.
-
getMaxIterations
public int getMaxIterations()Returns maximum allowed number of iterations. If maximum allowed number of iterations is achieved without converging to a result when calling estimate(), a RobustEstimatorException will be raised.- Returns:
- maximum allowed number of iterations.
-
setMaxIterations
Sets maximum allowed number of iterations. When the maximum number of iterations is exceeded, result will not be available, however an approximate result will be available for retrieval.- Parameters:
maxIterations- maximum allowed number of iterations to be set.- Throws:
IllegalArgumentException- if provided value is less than 1.LockedException- if this estimator is locked because an estimation is being computed.
-
getInliersData
public com.irurueta.numerical.robust.InliersData getInliersData()Gets data related to inliers found after estimation.- Returns:
- data related to inliers found after estimation.
-
isResultRefined
public boolean isResultRefined()Indicates whether result must be refined using Levenberg-Marquardt fitting algorithm over found inliers. If ture, inliers will be computed and kept in any implementation regardless of the settings.- Returns:
- true to refine result, false to simply use result found by robust estimator without further refining.
-
setResultRefined
Specifies whether result must be refined using Levenberg-Marquardt fitting algorithm over found inliers.- Parameters:
refineResult- true to refine result, false to simply use result found by robust estimator without further refining.- Throws:
LockedException- if estimator is locked.
-
isCovarianceKept
public boolean isCovarianceKept()Indicates whether covariance must be kept after refining result. This setting is only taken into account if result is refined.- Returns:
- true if covariance must be kept after refining result, false otherwise.
-
setCovarianceKept
Specifies whether covariance must be kept after refining result. This setting is only taken into account if result is refined.- Parameters:
keepCovariance- true if covariance must be kept after refining result, false otherwise.- Throws:
LockedException- if estimator is locked.
-
getCovariance
public com.irurueta.algebra.Matrix getCovariance()Gets estimated covariance of estimated 3D point if available. This is only available when result has been refined and covariance is kept.- Returns:
- estimated covariance or null.
-
estimate
public abstract EuclideanTransformation2D estimate() throws LockedException, NotReadyException, com.irurueta.numerical.robust.RobustEstimatorExceptionEstimates an Euclidean 2D transformation using a robust estimator and the best set of matched 2D point correspondences found using the robust estimator.- Returns:
- an Euclidean 2D transformation.
- 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 abstract com.irurueta.numerical.robust.RobustEstimatorMethod getMethod()Returns method being used for robust estimation.- Returns:
- method being used for robust estimation.
-
create
public static EuclideanTransformation2DRobustEstimator create(com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- Parameters:
method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
-
create
public static EuclideanTransformation2DRobustEstimator create(List<Point2D> inputPoints, List<Point2D> outputPoints, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided estimator method.- Parameters:
inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
create
public static EuclideanTransformation2DRobustEstimator create(double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- Parameters:
qualityScores- quality scores corresponding to each pair of matched points.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided quality scores length is smaller than MINIMUM_SIZE (i.e. 3 matched points).
-
create
public static EuclideanTransformation2DRobustEstimator create(List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- Parameters:
inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.qualityScores- quality scores corresponding to each pair of matched points.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points or scores don't have the same size or their size is smaller than MINIMUM_SIZE.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- 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 pair of matched points.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided quality scores don't have the required minimum size.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.qualityScores- quality scores corresponding to each pair of matched points.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size of their size is smaller than MINIMUM_SIZE.
-
create
public static EuclideanTransformation2DRobustEstimator create(boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- Parameters:
weakMinimumSizeAllowed- true allows 2 points, false requires 3.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
-
create
public static EuclideanTransformation2DRobustEstimator create(List<Point2D> inputPoints, List<Point2D> outputPoints, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided estimator method.- Parameters:
inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.weakMinimumSizeAllowed- true allows 2 points, false requires 3.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.weakMinimumSizeAllowed- true allows 2 points, false requires 3.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.weakMinimumSizeAllowed- true allows 2 points, false requires 3.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
create
public static EuclideanTransformation2DRobustEstimator create(double[] qualityScores, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- Parameters:
qualityScores- quality scores corresponding to each pair of matched points.weakMinimumSizeAllowed- true allows 2 points, false requires 3.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided quality scores length is smaller than MINIMUM_SIZE (i.e. 3 matched points).
-
create
public static EuclideanTransformation2DRobustEstimator create(List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- Parameters:
inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.qualityScores- quality scores corresponding to each pair of matched points.weakMinimumSizeAllowed- true allows 2 points, false requires 3.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points or scores don't have the same size or their size is smaller than MINIMUM_SIZE.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, double[] qualityScores, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- 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 pair of matched points.weakMinimumSizeAllowed- true allows 2 points, false requires 3.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided quality scores don't have the required minimum size.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores, boolean weakMinimumSizeAllowed, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using provided robust estimator method.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.qualityScores- quality scores corresponding to each pair of matched points.weakMinimumSizeAllowed- true allows 2 points, false requires 3.method- method of a robust estimator algorithm to estimate the best Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size of their size is smaller than MINIMUM_SIZE.
-
create
Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Returns:
- an instance of Euclidean 2D transformation estimator.
-
create
public static EuclideanTransformation2DRobustEstimator create(List<Point2D> inputPoints, List<Point2D> outputPoints) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size of their size is smaller than MINIMUM_SIZE.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.- Returns:
- an instance of Euclidean 2D transformation estimator.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
create
Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
qualityScores- quality scores corresponding to each pair of matched points.- Returns:
- an instance of Euclidean 2D transformation estimator.
-
create
public static EuclideanTransformation2DRobustEstimator create(List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points ot be used to estimate an Euclidean 2D transformation.qualityScores- quality scores corresponding to each pair of points.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, double[] qualityScores) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- 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 pair of matched points.- Returns:
- an instance of Euclidean 2D transformation estimator.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points ot be used to estimate an Euclidean 2D transformation.qualityScores- quality scores corresponding to each pair of matched points.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
create
Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
weakMinimumSizeAllowed- true allows 2 points, false requires 3.- Returns:
- an instance of Euclidean 2D transformation estimator.
-
create
public static EuclideanTransformation2DRobustEstimator create(List<Point2D> inputPoints, List<Point2D> outputPoints, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.weakMinimumSizeAllowed- true allows 2 points, false requires 3.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size of their size is smaller than MINIMUM_SIZE.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.weakMinimumSizeAllowed- true allows 2 points, false requires 3.- Returns:
- an instance of Euclidean 2D transformation estimator.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.weakMinimumSizeAllowed- true allows 2 points, false requires 3.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
create
public static EuclideanTransformation2DRobustEstimator create(double[] qualityScores, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
qualityScores- quality scores corresponding to each pair of matched points.weakMinimumSizeAllowed- true allows 2 points, false requires 3.- Returns:
- an instance of Euclidean 2D transformation estimator.
-
create
public static EuclideanTransformation2DRobustEstimator create(List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points ot be used to estimate an Euclidean 2D transformation.qualityScores- quality scores corresponding to each pair of points.weakMinimumSizeAllowed- true allows 2 points, false requires 3.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, double[] qualityScores, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- 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 pair of matched points.weakMinimumSizeAllowed- true allows 2 points, false requires 3.- Returns:
- an instance of Euclidean 2D transformation estimator.
-
create
public static EuclideanTransformation2DRobustEstimator create(EuclideanTransformation2DRobustEstimatorListener listener, List<Point2D> inputPoints, List<Point2D> outputPoints, double[] qualityScores, boolean weakMinimumSizeAllowed) Creates an Euclidean 2D transformation estimator based on 2D point correspondences and using default robust estimator method.- Parameters:
listener- listener to be notified of events such as when estimation starts, ends or its progress significantly changes.inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points ot be used to estimate an Euclidean 2D transformation.qualityScores- quality scores corresponding to each pair of matched points.weakMinimumSizeAllowed- true allows 2 points, false requires 3.- Returns:
- an instance of Euclidean 2D transformation estimator.
- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
internalSetPoints
Internal method to set lists of points to be used to estimate an Euclidean 2D transformation. This method does not check whether estimator is locked or not.- Parameters:
inputPoints- list of input points to be used to estimate an Euclidean 2D transformation.outputPoints- list of output points to be used to estimate an Euclidean 2D transformation.- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
attemptRefine
Attempts to refine provided solution if refinement is requested. This method returns a refined solution of the same provided solution if refinement is not requested or has failed. If refinement is enabled, and it is requested to keep covariance, this method will also keep covariance of refined transformation.- Parameters:
transformation- transformation estimated by a robust estimator without refinement.- Returns:
- solution after refinement (if requested) or the provided non-refined solution if not requested or refinement failed.
-
getRefinementStandardDeviation
protected abstract double getRefinementStandardDeviation()Gets standard deviation used for Levenberg-Marquardt fitting during refinement. Returned value gives an indication of how much variance each residual has. Typically, this value is related to the threshold used on each robust estimation, since residuals of found inliers are within the range of such threshold.- Returns:
- standard deviation used for refinement.
-