Class ScoreRatioFundamentalHomography

java.lang.Object
boofcv.alg.structure.score3d.ScoreRatioFundamentalHomography
All Implemented Interfaces:
EpipolarScore3D, VerbosePrint

public class ScoreRatioFundamentalHomography
extends Object
implements EpipolarScore3D
If there is a geometric relationship or not is determined by the number of inliers. The minimum number is specified by minimumInliers. A threshold is used for classifying an edge as 3D or not ratio3D len(F)/len(H) a value of 1 just requires equality, greater than one means there must be more features from F (fundamental) than H (homography). See [1] for more details on this test.

[1] Pollefeys, Marc, et al. "Visual modeling with a hand-held camera." International Journal of Computer Vision 59.3 (2004): 207-232.

  • Field Details

    • minimumInliers

      public final ConfigLength minimumInliers
      The minimum number of inliers for an edge to be accepted. If relative, then relative to pairs.
    • 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
  • 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
      Parameters:
      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
      Returns:
      score
    • is3D

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

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