Package com.irurueta.geometry.estimators
Class PointCorrespondenceAffineTransformation3DRobustEstimator
java.lang.Object
com.irurueta.geometry.estimators.AffineTransformation3DRobustEstimator
com.irurueta.geometry.estimators.PointCorrespondenceAffineTransformation3DRobustEstimator
- Direct Known Subclasses:
LMedSPointCorrespondenceAffineTransformation3DRobustEstimator,MSACPointCorrespondenceAffineTransformation3DRobustEstimator,PROMedSPointCorrespondenceAffineTransformation3DRobustEstimator,PROSACPointCorrespondenceAffineTransformation3DRobustEstimator,RANSACPointCorrespondenceAffineTransformation3DRobustEstimator
public abstract class PointCorrespondenceAffineTransformation3DRobustEstimator
extends AffineTransformation3DRobustEstimator
This is an abstract class for algorithms to robustly find the best affine
3D transformation for collections of matching 3D points.
Implementations of this class should be able to detect and discard outliers
in order to find the best solution.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final com.irurueta.numerical.robust.RobustEstimatorMethodDefault robust estimator method when none is provided.List of points to be used to estimate an affine 3D transformation.List of points to be used to estimate an affine 3D transformation.Fields inherited from class com.irurueta.geometry.estimators.AffineTransformation3DRobustEstimator
confidence, covariance, DEFAULT_CONFIDENCE, DEFAULT_KEEP_COVARIANCE, DEFAULT_MAX_ITERATIONS, DEFAULT_PROGRESS_DELTA, DEFAULT_REFINE_RESULT, inliersData, keepCovariance, listener, locked, MAX_CONFIDENCE, MAX_PROGRESS_DELTA, maxIterations, MIN_CONFIDENCE, MIN_ITERATIONS, MIN_PROGRESS_DELTA, MINIMUM_SIZE, progressDelta, refineResult -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedConstructor.protectedPointCorrespondenceAffineTransformation3DRobustEstimator(AffineTransformation3DRobustEstimatorListener listener) Constructor.protectedPointCorrespondenceAffineTransformation3DRobustEstimator(AffineTransformation3DRobustEstimatorListener listener, List<Point3D> inputPoints, List<Point3D> outputPoints) Constructor with listener and lists of points to be used to estimate an affine 3D transformation.protectedPointCorrespondenceAffineTransformation3DRobustEstimator(List<Point3D> inputPoints, List<Point3D> outputPoints) Constructor with lists of points to be used to estimate an affine 3D transformation. -
Method Summary
Modifier and TypeMethodDescriptionprotected AffineTransformation3DattemptRefine(AffineTransformation3D transformation) Attempts to refine provided solution if refinement is requested.create()Creates an affine 3D transformation estimator based on 3D point correspondences and using default robust estimator method.create(double[] qualityScores) Creates an affine 3D transformation estimator based on 3D point correspondences and using default robust estimator method.create(double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D point correspondences and using provided robust estimator method.Creates an affine 3D transformation estimator based on 3D point correspondences and using default robust estimator method.create(AffineTransformation3DRobustEstimatorListener listener, double[] qualityScores) Creates an affine 3D transformation estimator based on 3D point correspondences and using default robust estimator method.create(AffineTransformation3DRobustEstimatorListener listener, double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D point correspondences and using provided robust estimator method.create(AffineTransformation3DRobustEstimatorListener listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D point correspondences and using provided robust estimator method.create(AffineTransformation3DRobustEstimatorListener listener, List<Point3D> inputPoints, List<Point3D> outputPoints) Creates an affine 3D transformation estimator based on 3D point correspondences and using default robust estimator method.create(AffineTransformation3DRobustEstimatorListener listener, List<Point3D> inputPoints, List<Point3D> outputPoints, double[] qualityScores) Creates an affine 3D transformation estimator based on 3D point correspondences and using default robust estimator method.create(AffineTransformation3DRobustEstimatorListener listener, List<Point3D> inputPoints, List<Point3D> outputPoints, double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D point correspondences and using provided robust estimator method.create(AffineTransformation3DRobustEstimatorListener listener, List<Point3D> inputPoints, List<Point3D> outputPoints, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D point correspondences and using provided robust estimator method.create(com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 2D point correspondences and using provided robust estimator method.Creates an affine 3D transformation estimator based on 3D point correspondences and using default robust estimator method.Creates an affine 3D transformation estimator based on 3D point correspondences and using default robust estimator method.create(List<Point3D> inputPoints, List<Point3D> outputPoints, double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D point correspondences and using provided robust estimator method.create(List<Point3D> inputPoints, List<Point3D> outputPoints, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D point correspondences and using provided robust estimator method.Returns list of input points to be used to estimate an affine 3D transformation.Returns list of output points to be used to estimate an affine 3D transformation.double[]Returns quality scores corresponding to each pair of matched points.private voidinternalSetPoints(List<Point3D> inputPoints, List<Point3D> outputPoints) Internal method to set lists of points to be used to estimate an affine 3D transformation.booleanisReady()Indicates if estimator is ready to start the affine 3D transformation estimation.final voidSets lists of points to be used to estimate an affine 3D transformation.voidsetQualityScores(double[] qualityScores) Sets quality scores corresponding to each pair of matched points.Methods inherited from class com.irurueta.geometry.estimators.AffineTransformation3DRobustEstimator
createFromPlanes, createFromPlanes, createFromPlanes, createFromPlanes, createFromPlanes, createFromPlanes, createFromPlanes, createFromPlanes, createFromPoints, createFromPoints, createFromPoints, createFromPoints, createFromPoints, createFromPoints, createFromPoints, createFromPoints, estimate, getConfidence, getCovariance, getInliersData, getListener, getMaxIterations, getMethod, getProgressDelta, getRefinementStandardDeviation, isCovarianceKept, isListenerAvailable, isLocked, isResultRefined, setConfidence, setCovarianceKept, setListener, setMaxIterations, setProgressDelta, setResultRefined
-
Field Details
-
DEFAULT_ROBUST_METHOD
public static final com.irurueta.numerical.robust.RobustEstimatorMethod DEFAULT_ROBUST_METHODDefault robust estimator method when none is provided. -
inputPoints
List of points to be used to estimate an affine 3D 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 affine 3D 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.
-
-
Constructor Details
-
PointCorrespondenceAffineTransformation3DRobustEstimator
protected PointCorrespondenceAffineTransformation3DRobustEstimator()Constructor. -
PointCorrespondenceAffineTransformation3DRobustEstimator
protected PointCorrespondenceAffineTransformation3DRobustEstimator(List<Point3D> inputPoints, List<Point3D> outputPoints) Constructor with lists of points to be used to estimate an affine 3D 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 affine 3D transformation.outputPoints- list of output points to be used to estimate an affine 3D transformation.- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-
PointCorrespondenceAffineTransformation3DRobustEstimator
protected PointCorrespondenceAffineTransformation3DRobustEstimator(AffineTransformation3DRobustEstimatorListener listener) Constructor.- Parameters:
listener- listener to be notified of events such as when estimation stars, ends or its progress significantly changes.
-
PointCorrespondenceAffineTransformation3DRobustEstimator
protected PointCorrespondenceAffineTransformation3DRobustEstimator(AffineTransformation3DRobustEstimatorListener listener, List<Point3D> inputPoints, List<Point3D> outputPoints) Constructor with listener and lists of points to be used to estimate an affine 3D 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 affine 3D transformation.outputPoints- list of output points to be used to estimate an affine 3D transformation.- 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 affine 3D 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 affine 3D transformation.
-
getOutputPoints
Returns list of output points to be used to estimate an affine 3D 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 affine 2D transformation.
-
setPoints
public final void setPoints(List<Point3D> inputPoints, List<Point3D> outputPoints) throws LockedException Sets lists of points to be used to estimate an affine 3D 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 affine 3D transformation.outputPoints- list of output points to be used to estimate an affine 3D 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 affine 3D 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).
-
create
public static PointCorrespondenceAffineTransformation3DRobustEstimator create(com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D 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 affine 3D transformation.- Returns:
- an instance of affine 3D transformation estimator.
-
create
public static PointCorrespondenceAffineTransformation3DRobustEstimator create(List<Point3D> inputPoints, List<Point3D> outputPoints, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D point correspondences and using provided robust estimator method.- Parameters:
inputPoints- list of input points to be used to estimate an affine 3D transformation.outputPoints- list of output points to be used to estimate an affine 3D transformation.method- method of a robust estimator algorithm to estimate the best affine 3D transformation.- Returns:
- an instance of affine 3D 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 PointCorrespondenceAffineTransformation3DRobustEstimator create(AffineTransformation3DRobustEstimatorListener listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D 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 affine 3D transformation.- Returns:
- an instance of affine 3D transformation estimator.
-
create
public static PointCorrespondenceAffineTransformation3DRobustEstimator create(AffineTransformation3DRobustEstimatorListener listener, List<Point3D> inputPoints, List<Point3D> outputPoints, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D 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 affine 3D transformation.outputPoints- list of output points to be used to estimate an affine 3D transformation.method- method of a robust estimator algorithm to estimate the best affine 3D transformation.- Returns:
- an instance of affine 3D 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 PointCorrespondenceAffineTransformation3DRobustEstimator create(double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D 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 affine 3D transformation.- Returns:
- an instance of affine 3D transformation estimator.
-
create
public static PointCorrespondenceAffineTransformation3DRobustEstimator create(List<Point3D> inputPoints, List<Point3D> outputPoints, double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D point correspondences and using provided robust estimator method.- Parameters:
inputPoints- list of input points to be used to estimate an affine 3D transformation.outputPoints- list of output points to be used to estimate an affine 3D transformation.qualityScores- quality scores corresponding to each pair of matched points.method- method of a robust estimator algorithm to estimate the best affine 3D transformation.- Returns:
- an instance of affine 3D 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 PointCorrespondenceAffineTransformation3DRobustEstimator create(AffineTransformation3DRobustEstimatorListener listener, double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D 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 affine 3D transformation.- Returns:
- an instance of affine 3D transformation estimator.
-
create
public static PointCorrespondenceAffineTransformation3DRobustEstimator create(AffineTransformation3DRobustEstimatorListener listener, List<Point3D> inputPoints, List<Point3D> outputPoints, double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates an affine 3D transformation estimator based on 3D 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 affine 3D transformation.outputPoints- list of output points to be used to estimate an affine 3D transformation.qualityScores- quality scores corresponding to each pair of matched points.method- method of a robust estimator algorithm to estimate the best affine 3D transformation.- Returns:
- an instance of affine 3D 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 affine 3D transformation estimator based on 3D point correspondences and using default robust estimator method.- Returns:
- an instance of affine 3D transformation estimator.
-
create
public static PointCorrespondenceAffineTransformation3DRobustEstimator create(List<Point3D> inputPoints, List<Point3D> outputPoints) Creates an affine 3D transformation estimator based on 3D point correspondences and using default robust estimator method.- Parameters:
inputPoints- list of input points to be used to estimate an affine 3D transformation.outputPoints- list of output points to be used to estimate an affine 3D transformation.- Returns:
- an instance of affine 3D 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 PointCorrespondenceAffineTransformation3DRobustEstimator create(AffineTransformation3DRobustEstimatorListener listener) Creates an affine 3D transformation estimator based on 3D 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 affine 3D transformation estimator.
-
create
public static PointCorrespondenceAffineTransformation3DRobustEstimator create(AffineTransformation3DRobustEstimatorListener listener, List<Point3D> inputPoints, List<Point3D> outputPoints) Creates an affine 3D transformation estimator based on 3D 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 affine 3D transformation.outputPoints- list of output points to be used to estimate an affine 3D transformation.- Returns:
- an instance of affine 3D 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 PointCorrespondenceAffineTransformation3DRobustEstimator create(double[] qualityScores) Creates an affine 3D transformation estimator based on 3D point correspondences and using default robust estimator method.- Parameters:
qualityScores- quality scores corresponding to each pair of matched points.- Returns:
- an instance of affine 3D transformation estimator.
-
create
public static PointCorrespondenceAffineTransformation3DRobustEstimator create(List<Point3D> inputPoints, List<Point3D> outputPoints, double[] qualityScores) Creates an affine 3D transformation estimator based on 3D point correspondences and using default robust estimator method.- Parameters:
inputPoints- list of input points to be used to estimate an affine 3D transformation.outputPoints- list of output points to be used to estimate an affine 3D transformation.qualityScores- quality scores corresponding to each pair of matched points.- Returns:
- an instance of affine 3D 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 PointCorrespondenceAffineTransformation3DRobustEstimator create(AffineTransformation3DRobustEstimatorListener listener, double[] qualityScores) Creates an affine 3D transformation estimator based on 3D 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 affine 3D transformation estimator.
-
create
public static PointCorrespondenceAffineTransformation3DRobustEstimator create(AffineTransformation3DRobustEstimatorListener listener, List<Point3D> inputPoints, List<Point3D> outputPoints, double[] qualityScores) Creates an affine 3D transformation estimator based on 3D 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 affine 3D transformation.outputPoints- list of output points to be used to estimate an affine 3D transformation.qualityScores- quality scores corresponding to each pair of matched points.- Returns:
- an instance of affine 3D transformation estimator.
- 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.
-
internalSetPoints
Internal method to set lists of points to be used to estimate an affine 3D transformation. This method does not check whether estimator is locked or not.- Parameters:
inputPoints- list of input points to be used to estimate an affine 3D transformation.outputPoints- list of output points to be used to estimate an affine 3D transformation.- Throws:
IllegalArgumentException- if provided lists of points don't have the same size or their size is smaller than MINIMUM_SIZE.
-