Class MaxGeoKeyFrameManager

  • All Implemented Interfaces:
    VisOdomKeyFrameManager, org.ddogleg.struct.VerbosePrint

    public class MaxGeoKeyFrameManager
    extends java.lang.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 Detail

      • minimumCoverage

        public double minimumCoverage
        If the fraction of the image covered by features drops below this the current frame is a new keyframe
      • discardKeyIndices

        protected final org.ddogleg.struct.GrowQueue_I32 discardKeyIndices
      • activeTracks

        protected org.ddogleg.struct.FastArray<boofcv.abst.tracker.PointTrack> activeTracks
      • histogram

        protected boofcv.alg.misc.Histogram2D_S32 histogram
      • verbose

        protected java.io.PrintStream verbose
    • Constructor Detail

      • MaxGeoKeyFrameManager

        public MaxGeoKeyFrameManager()
      • MaxGeoKeyFrameManager

        public MaxGeoKeyFrameManager​(double minimumCoverage)
    • Method Detail

      • selectFramesToDiscard

        public org.ddogleg.struct.GrowQueue_I32 selectFramesToDiscard​(boofcv.abst.tracker.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
      • setVerbose

        public void setVerbose​(@Nullable
                               java.io.PrintStream out,
                               @Nullable
                               java.util.Set<java.lang.String> configuration)
        Specified by:
        setVerbose in interface org.ddogleg.struct.VerbosePrint