Class MaxGeoKeyFrameManager

java.lang.Object
boofcv.alg.sfm.d3.structure.MaxGeoKeyFrameManager
All Implemented Interfaces:
VisOdomKeyFrameManager, VerbosePrint

public class MaxGeoKeyFrameManager extends Object implements VisOdomKeyFrameManager
Designed to be frame rate independent and maximize geometric information across frames. Old frames are kept as long as possible and attempts to drop/skip over bad frames due to motion blur.
  • Field Details

  • Constructor Details

    • MaxGeoKeyFrameManager

      public MaxGeoKeyFrameManager()
    • MaxGeoKeyFrameManager

      public MaxGeoKeyFrameManager(double minimumCoverage)
  • Method Details

    • initialize

      public void initialize(FastAccess<VisOdomBundleAdjustment.BCamera> bundleCameras)
      Description copied from interface: VisOdomKeyFrameManager
      Resets the manager into it's initial state. Specifies number of cameras and their shape.
      Specified by:
      initialize in interface VisOdomKeyFrameManager
    • selectFramesToDiscard

      public DogArray_I32 selectFramesToDiscard(PointTracker<?> tracker, int maxKeyFrames, int newFrames, VisOdomBundleAdjustment<?> sba)
      Description copied from interface: VisOdomKeyFrameManager
      Selects frames to discard from the scene graph. The most recent frame(s) (highest index value) is assumed to be the current tracker frame.
      Specified by:
      selectFramesToDiscard in interface VisOdomKeyFrameManager
      Parameters:
      tracker - Feature tracker
      maxKeyFrames - Maximum number of allowed key frames
      newFrames - Number of new frames added
      sba - scene graph
      Returns:
      Returns a list of frames to discard. They are in sequential order from least to greatest.
    • keepCurrentFrame

      protected boolean keepCurrentFrame(VisOdomBundleAdjustment<?> sba)
      Perform different checks that attempt to see if too much has changed. If too much has changed then the current keyframe should be kept so that new features can be spawned and starvation avoided.
      Returns:
      true if it should keep the current frame
    • selectOldToDiscard

      protected void selectOldToDiscard(VisOdomBundleAdjustment<?> sba, int totalDiscard)
      Selects an older frame to discard. If a frame has zero features in common with the current frame it will be selected. After that it scores frames based on how many features it has in common with the other frames, excluding the current frame.
      Parameters:
      totalDiscard - How many need to be discarded
    • handleSpawnedTracks

      public void handleSpawnedTracks(PointTracker<?> tracker, VisOdomBundleAdjustment.BCamera camera)
      Description copied from interface: VisOdomKeyFrameManager
      After the current frame becomes a keyframe new tracks are spawned from it. This passes in that new information
      Specified by:
      handleSpawnedTracks in interface VisOdomKeyFrameManager
    • setVerbose

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