Class MetricExpandByOneView

All Implemented Interfaces:

public class MetricExpandByOneView
extends ExpandByOneView
Expands a metric scene by one view (the taget) using the geometric relationship between the target and two known metric views.
  1. Input: A seed view and the known graph
  2. Selects two other views with known camera matrices
  3. Finds features in common with all three views
  4. Trifocal tensor and RANSAC to find the unknown seed camera matrix
  5. Estimate calibrating homography from found projective scene and known metric values
  6. Elevate target from projective to metric
  7. Bundle Adjustment to refine estimate
  8. Convert from local coordinates to world / scene coordinates
  9. Add found metric view for target to scene

The initial projective scene is found independently using common observations in an attempt to reduce the influence of past mistakes. To mitigate past mistakes, the intrisic parameters for the known views are optimized inside of bundle adjustment even though they are "known". Only the found intrinsic and Se3 for the target view will be added/modified in the scene graph.

  • Field Details

    • onlyConsiderCalibrated

      public boolean onlyConsiderCalibrated
      Do not consider the uncalibrated case if the camera is already known
    • expandCalibrated

      public EstimateViewKnownCalibration expandCalibrated
    • expandUnknown

      public EstimateViewSelfCalibrate expandUnknown
    • overfitHandyCap

      public double overfitHandyCap
      Fit score for uncalibrated case needs to be significantly better than calibrated to be selected. This is how much its score is degraded. The reason is because you will almost always get a better fit when you allow more parameters to vary.
  • Constructor Details

    • MetricExpandByOneView

      public MetricExpandByOneView()
  • Method Details

    • process

      public boolean process​(LookUpSimilarImages dbSimilar, LookUpCameraInfo dbCam, SceneWorkingGraph workGraph, PairwiseImageGraph.View target)
      Attempts to estimate the camera model in the global projective space for the specified view
      dbSimilar - (Input) image data base
      workGraph - (Input/Output) scene graph. On input it will have the known scene and if successful the metric information for the target view.
      target - (Input) The view that needs its projective camera estimated and the graph is being expanded into
      true if successful target view has an estimated calibration matrix and pose, which have already been added to "workGraph"
    • setVerbose

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