Package boofcv.alg.sfm.d3.structure
Class MaxGeoKeyFrameManager
java.lang.Object
boofcv.alg.sfm.d3.structure.MaxGeoKeyFrameManager
- All Implemented Interfaces:
VisOdomKeyFrameManager,VerbosePrint
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.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected FastArray<PointTrack>protected DogArray<MaxGeoKeyFrameManager.CameraInfo>protected final DogArray_I32protected Histogram2D_S32doubleIf the fraction of the image covered by features drops below this the current frame is a new keyframeprotected @Nullable PrintStream -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidhandleSpawnedTracks(PointTracker<?> tracker, VisOdomBundleAdjustment.BCamera camera) After the current frame becomes a keyframe new tracks are spawned from it.voidinitialize(FastAccess<VisOdomBundleAdjustment.BCamera> bundleCameras) Resets the manager into it's initial state.protected booleanPerform different checks that attempt to see if too much has changed.selectFramesToDiscard(PointTracker<?> tracker, int maxKeyFrames, int newFrames, VisOdomBundleAdjustment<?> sba) Selects frames to discard from the scene graph.protected voidselectOldToDiscard(VisOdomBundleAdjustment<?> sba, int totalDiscard) Selects an older frame to discard.voidsetVerbose(@Nullable PrintStream out, @Nullable Set<String> configuration)
-
Field Details
-
minimumCoverage
public double minimumCoverageIf the fraction of the image covered by features drops below this the current frame is a new keyframe -
discardKeyIndices
-
cameras
-
activeTracks
-
histogram
-
verbose
-
-
Constructor Details
-
MaxGeoKeyFrameManager
public MaxGeoKeyFrameManager() -
MaxGeoKeyFrameManager
public MaxGeoKeyFrameManager(double minimumCoverage)
-
-
Method Details
-
initialize
Description copied from interface:VisOdomKeyFrameManagerResets the manager into it's initial state. Specifies number of cameras and their shape.- Specified by:
initializein interfaceVisOdomKeyFrameManager
-
selectFramesToDiscard
public DogArray_I32 selectFramesToDiscard(PointTracker<?> tracker, int maxKeyFrames, int newFrames, VisOdomBundleAdjustment<?> sba) Description copied from interface:VisOdomKeyFrameManagerSelects 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:
selectFramesToDiscardin interfaceVisOdomKeyFrameManager- Parameters:
tracker- Feature trackermaxKeyFrames- Maximum number of allowed key framesnewFrames- Number of new frames addedsba- scene graph- Returns:
- Returns a list of frames to discard. They are in sequential order from least to greatest.
-
keepCurrentFrame
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
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
Description copied from interface:VisOdomKeyFrameManagerAfter the current frame becomes a keyframe new tracks are spawned from it. This passes in that new information- Specified by:
handleSpawnedTracksin interfaceVisOdomKeyFrameManager
-
setVerbose
public void setVerbose(@Nullable @Nullable PrintStream out, @Nullable @Nullable Set<String> configuration) - Specified by:
setVerbosein interfaceVerbosePrint
-