Class NonDecomposedLinePlaneCorrespondencePinholeCameraRefiner


public class NonDecomposedLinePlaneCorrespondencePinholeCameraRefiner extends LinePlaneCorrespondencePinholeCameraRefiner
A pinhole camera refiner using line/plane correspondences and the Levenberg-Marquardt algorithm to try to decrease overall error in LMSE terms among inlier samples by taking the pinhole camera matrix as a whole without decomposition. Typically, this refiner is used by a robust estimator, however it can also be useful in some other situations.
  • Field Details

    • DEFAULT_SUGGESTION_ERROR_WEIGHT

      public static final double DEFAULT_SUGGESTION_ERROR_WEIGHT
      Default value for the weight applied to errors related to suggested camera parameters during computation of projection residuals.
      See Also:
    • REFINE_DIMS

      private static final int REFINE_DIMS
      Dimensions for refinement.
      See Also:
    • suggestionErrorWeight

      private double suggestionErrorWeight
      Suggestion error weight. This weight is applied to errors related to suggested camera parameters during computation of projection residuals.
  • Constructor Details

    • NonDecomposedLinePlaneCorrespondencePinholeCameraRefiner

      public NonDecomposedLinePlaneCorrespondencePinholeCameraRefiner()
      Constructor.
    • NonDecomposedLinePlaneCorrespondencePinholeCameraRefiner

      public NonDecomposedLinePlaneCorrespondencePinholeCameraRefiner(PinholeCamera initialEstimation, boolean keepCovariance, BitSet inliers, double[] residuals, int numInliers, List<Plane> 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.
    • NonDecomposedLinePlaneCorrespondencePinholeCameraRefiner

      public NonDecomposedLinePlaneCorrespondencePinholeCameraRefiner(PinholeCamera initialEstimation, boolean keepCovariance, com.irurueta.numerical.robust.InliersData inliersData, List<Plane> 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

    • getSuggestionErrorWeight

      public double getSuggestionErrorWeight()
      Gets suggestion error weight. This weight is applied to errors related to suggested camera parameters during computation of projection residuals.
      Returns:
      suggestion error weight.
    • setSuggestionErrorWeight

      public void setSuggestionErrorWeight(double suggestionErrorWeight) throws LockedException
      Sets suggestion error weight. This weight is applied to errors related to suggested camera parameters during computation of projection residuals.
      Parameters:
      suggestionErrorWeight - suggestion error weight.
      Throws:
      LockedException - if estimator is locked.
    • refine

      public boolean refine(PinholeCamera 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:
      refine in class Refiner<PinholeCamera>
      Parameters:
      result - instance where refined estimation will be stored.
      Returns:
      true if result improves (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).