Class ScoreFundamentalVsRotation

All Implemented Interfaces:
EpipolarScore3D, VerbosePrint

public class ScoreFundamentalVsRotation extends Object implements EpipolarScore3D
Determines the amount of 3D information by comparing the results from robustly fitting a Fundamental matrix vs fitting pure rotation/self calibration. A generic
  • Field Details

    • ratio3D

      public double ratio3D
      If number of matches from fundamental divided by homography is more than this then it is considered a 3D scene
    • maxRatioScore

      public double maxRatioScore
      The error ratio can get massive and this number prevents large values for being weighted too much in the score
    • minimumInliers

      public final ConfigLength minimumInliers
      The minimum number of inliers for an edge to be accepted. If relative, then relative to pairs.
    • inlierErrorTol

      public double inlierErrorTol
      A pair of observations are within tolerance to the model if the error is less than or equal to this
    • fitRotation

      public final RefineTwoViewPinholeRotation fitRotation
      Assumes pure rotation then refines rotation and intrinsics to observations
    • inliersRotationIdx

      protected final DogArray_I32 inliersRotationIdx
    • K1

      protected final DMatrixRMaj K1
    • K2

      protected final DMatrixRMaj K2
    • R

      protected final DMatrixRMaj R
  • Constructor Details

  • Method Details

    • process

      public void process(CameraPinholeBrown cameraA, @Nullable @Nullable CameraPinholeBrown cameraB, int featuresA, int featuresB, List<AssociatedPair> pairs, DMatrixRMaj fundamental, DogArray_I32 inliersIdx)
      Description copied from interface: EpipolarScore3D
      Determines if there's a 3D relationship between the views and scores how strong it is
      Specified by:
      process in interface EpipolarScore3D
      cameraA - (Input) Prior information on the camera intrinsics. View A.
      cameraB - (Input) Prior information on the camera intrinsics. View B. If null then it's assumed the two cameras are the same.
      featuresA - (Input) Number of features in imageA
      featuresB - (Input) Number of features in imageB
      pairs - (Input) Set of point feature pairs between the two images
      fundamental - (Output) Fundamental matrix describing the geometric relationship between the two views
      inliersIdx - (Output) Which features inside of pairs are in the inlier sets
    • getScore

      public double getScore()
      Description copied from interface: EpipolarScore3D
      Returns a score for how much 3D information there is. 0 = no 3D information. 1 = very strong 3D information. score is 0 to 1.
      Specified by:
      getScore in interface EpipolarScore3D
    • is3D

      public boolean is3D()
      Description copied from interface: EpipolarScore3D
      Decides if the two views have a 3D relationship.
      Specified by:
      is3D in interface EpipolarScore3D
      true if 3D or false if not
    • setVerbose

      public void setVerbose(@Nullable @Nullable PrintStream out, @Nullable @Nullable Set<String> configuration)
      Specified by:
      setVerbose in interface VerbosePrint