Class LineCorrespondenceProjectiveTransformation2DRefiner


public class LineCorrespondenceProjectiveTransformation2DRefiner extends ProjectiveTransformation2DRefiner<Line2D,Line2D>
A 2D projective transformation refiner using line correspondences. This class takes into account an initial estimation, inlier line 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

    • residualTestLine

      private final Line2D residualTestLine
      Line to be reused when computing residuals.
  • Constructor Details

    • LineCorrespondenceProjectiveTransformation2DRefiner

      public LineCorrespondenceProjectiveTransformation2DRefiner()
      Constructor.
    • LineCorrespondenceProjectiveTransformation2DRefiner

      public LineCorrespondenceProjectiveTransformation2DRefiner(ProjectiveTransformation2D initialEstimation, boolean keepCovariance, BitSet inliers, double[] residuals, int numInliers, List<Line2D> samples1, List<Line2D> 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.
    • LineCorrespondenceProjectiveTransformation2DRefiner

      public LineCorrespondenceProjectiveTransformation2DRefiner(ProjectiveTransformation2D initialEstimation, boolean keepCovariance, com.irurueta.numerical.robust.InliersData inliersData, List<Line2D> samples1, List<Line2D> 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<ProjectiveTransformation2D>
      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(ProjectiveTransformation2D transformation, Line2D inputLine, Line2D outputLine)
      Computes the residual between the affine transformation and a pair of matched lines.
      Parameters:
      transformation - a transformation.
      inputLine - input 2D line.
      outputLine - output 2D line.
      Returns:
      residual.
    • totalResidual

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