Class 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 Details

    • residualTestPoint

      private final Point2D 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

      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:
      refine in class Refiner<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

      private double totalResidual(AffineTransformation2D transformation)
      Computes total residual among all provided inlier samples.
      Parameters:
      transformation - a transformation.
      Returns:
      total residual.