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
-
Field Summary
Modifier and TypeFieldDescriptionprotected FastArray<PointTrack>
protected DogArray<MaxGeoKeyFrameManager.CameraInfo>
protected final DogArray_I32
protected Histogram2D_S32
double
If the fraction of the image covered by features drops below this the current frame is a new keyframeprotected @Nullable PrintStream
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
handleSpawnedTracks
(PointTracker<?> tracker, VisOdomBundleAdjustment.BCamera camera) After the current frame becomes a keyframe new tracks are spawned from it.void
initialize
(FastAccess<VisOdomBundleAdjustment.BCamera> bundleCameras) Resets the manager into it's initial state.protected boolean
Perform 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 void
selectOldToDiscard
(VisOdomBundleAdjustment<?> sba, int totalDiscard) Selects an older frame to discard.void
setVerbose
(@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:VisOdomKeyFrameManager
Resets the manager into it's initial state. Specifies number of cameras and their shape.- Specified by:
initialize
in interfaceVisOdomKeyFrameManager
-
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 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:VisOdomKeyFrameManager
After the current frame becomes a keyframe new tracks are spawned from it. This passes in that new information- Specified by:
handleSpawnedTracks
in interfaceVisOdomKeyFrameManager
-
setVerbose
public void setVerbose(@Nullable @Nullable PrintStream out, @Nullable @Nullable Set<String> configuration) - Specified by:
setVerbose
in interfaceVerbosePrint
-