Package com.irurueta.geometry.refiners
Class PointCorrespondenceAffineTransformation2DRefiner
java.lang.Object
com.irurueta.geometry.refiners.Refiner<AffineTransformation2D>
com.irurueta.geometry.refiners.InliersDataRefiner<AffineTransformation2D>
com.irurueta.geometry.refiners.PairMatchesAndInliersDataRefiner<AffineTransformation2D,Point2D,Point2D>
com.irurueta.geometry.refiners.AffineTransformation2DRefiner<Point2D,Point2D>
com.irurueta.geometry.refiners.PointCorrespondenceAffineTransformation2DRefiner
public class PointCorrespondenceAffineTransformation2DRefiner
extends AffineTransformation2DRefiner<Point2D,Point2D>
A 2D affine transformation refiner using point correspondences.
This class takes into account an initial estimation, inlier point matches
and their residuals to find a solution that minimizes error of inliers in
LMSE terms.
Typically, a refiner is used by a robust estimator, however it can also be
useful in some other situations.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Point2DPoint to be reused when computing residuals.Fields inherited from class com.irurueta.geometry.refiners.PairMatchesAndInliersDataRefiner
samples1, samples2Fields inherited from class com.irurueta.geometry.refiners.InliersDataRefiner
inliers, numInliers, residualsFields inherited from class com.irurueta.geometry.refiners.Refiner
covariance, DEFAULT_KEEP_COVARIANCE, initialEstimation, keepCovariance, listener, locked -
Constructor Summary
ConstructorsConstructorDescriptionConstructor.PointCorrespondenceAffineTransformation2DRefiner(AffineTransformation2D initialEstimation, boolean keepCovariance, com.irurueta.numerical.robust.InliersData inliersData, List<Point2D> samples1, List<Point2D> samples2, double refinementStandardDeviation) Constructor.PointCorrespondenceAffineTransformation2DRefiner(AffineTransformation2D initialEstimation, boolean keepCovariance, BitSet inliers, double[] residuals, int numInliers, List<Point2D> samples1, List<Point2D> samples2, double refinementStandardDeviation) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionbooleanrefine(AffineTransformation2D result) Refines provided initial estimation.private doubleresidual(AffineTransformation2D transformation, Point2D inputPoint, Point2D outputPoint) Computes the residual between the affine transformation and a pair of matched points.private doubletotalResidual(AffineTransformation2D transformation) Computes total residual among all provided inlier samples.Methods inherited from class com.irurueta.geometry.refiners.AffineTransformation2DRefiner
getRefinementStandardDeviation, refine, setRefinementStandardDeviationMethods inherited from class com.irurueta.geometry.refiners.PairMatchesAndInliersDataRefiner
getSamples1, getSamples2, isReady, setSamples1, setSamples2Methods inherited from class com.irurueta.geometry.refiners.InliersDataRefiner
getInliers, getNumInliers, getResiduals, getTotalSamples, setInliers, setInliersData, setNumInliers, setResidualsMethods inherited from class com.irurueta.geometry.refiners.Refiner
getCovariance, getInitialEstimation, getListener, isCovarianceKept, isLocked, setCovarianceKept, setInitialEstimation, setListener
-
Field Details
-
residualTestPoint
Point to be reused when computing residuals.
-
-
Constructor Details
-
PointCorrespondenceAffineTransformation2DRefiner
public PointCorrespondenceAffineTransformation2DRefiner()Constructor. -
PointCorrespondenceAffineTransformation2DRefiner
public PointCorrespondenceAffineTransformation2DRefiner(AffineTransformation2D initialEstimation, boolean keepCovariance, BitSet inliers, double[] residuals, int numInliers, List<Point2D> samples1, List<Point2D> samples2, double refinementStandardDeviation) Constructor.- Parameters:
initialEstimation- initial estimation to be set.keepCovariance- true if covariance of estimation must be kept after refinement, false otherwise.inliers- set indicating which of the provided matches are inliers.residuals- residuals for matched samples.numInliers- number of inliers on initial estimation.samples1- 1st set of paired samples.samples2- 2nd set of paired samples.refinementStandardDeviation- standard deviation used for Levenberg-Marquardt fitting.
-
PointCorrespondenceAffineTransformation2DRefiner
public PointCorrespondenceAffineTransformation2DRefiner(AffineTransformation2D initialEstimation, boolean keepCovariance, com.irurueta.numerical.robust.InliersData inliersData, List<Point2D> samples1, List<Point2D> samples2, double refinementStandardDeviation) Constructor.- Parameters:
initialEstimation- initial estimation to be set.keepCovariance- true if covariance of estimation must be kept after refinement, false otherwise.inliersData- inlier data, typically obtained from a robust estimator.samples1- 1st set of paired samples.samples2- 2nd set of paired samples.refinementStandardDeviation- standard deviation used for Levenberg-Marquardt fitting.
-
-
Method Details
-
refine
public boolean refine(AffineTransformation2D result) throws NotReadyException, LockedException, RefinerException Refines provided initial estimation. This method always sets a value into provided result instance regardless of the fact that error has actually improved in LMSE terms or not.- Specified by:
refinein classRefiner<AffineTransformation2D>- Parameters:
result- instance where refined estimation will be stored.- Returns:
- true if result improves (error decreases) in LMSE terms respect to initial estimation, false if no improvement has been achieved.
- Throws:
NotReadyException- if not enough input data has been provided.LockedException- if estimator is locked because refinement is already in progress.RefinerException- if refinement fails for some reason (e.g. unable to converge to a result).
-
residual
private double residual(AffineTransformation2D transformation, Point2D inputPoint, Point2D outputPoint) Computes the residual between the affine transformation and a pair of matched points.- Parameters:
transformation- a transformation.inputPoint- input 2D point.outputPoint- output 2D point.- Returns:
- residual.
-
totalResidual
Computes total residual among all provided inlier samples.- Parameters:
transformation- a transformation.- Returns:
- total residual.
-