Class PointTrackerKltPyramid<I extends ImageGray<I>,D extends ImageGray<D>>

java.lang.Object
boofcv.abst.tracker.PointTrackerKltPyramid<I,D>
All Implemented Interfaces:
PointTracker<I>
Direct Known Subclasses:
PointTrackerKltPyramid_MT

public class PointTrackerKltPyramid<I extends ImageGray<I>,D extends ImageGray<D>> extends Object implements PointTracker<I>
Wrapper around PyramidKltTracker for PointTracker. Every track will have the same size and shaped descriptor. If any fault is encountered the track will be dropped.
  • Field Details

  • Constructor Details

    • PointTrackerKltPyramid

      public PointTrackerKltPyramid(ConfigKlt config, double toleranceFB, int templateRadius, boolean performPruneClose, PyramidDiscrete<I> pyramid, GeneralFeatureDetector<I,D> detector, ImageGradient<I,D> gradient, InterpolateRectangle<I> interpInput, InterpolateRectangle<D> interpDeriv, Class<D> derivType)
      Constructor which specified the KLT track manager and how the image pyramids are computed.
      Parameters:
      config - KLT tracker configuration
      toleranceFB - Tolerance in pixels for right to left validation. Disable with a value less than 0.
      templateRadius - Radius of square templates that are tracked
      performPruneClose - If true it will prune tracks that are within the detection radius
      pyramid - The image pyramid which KLT is tracking inside of
      detector - Feature detector. If null then no feature detector will be available and spawn won't work.
      gradient - Computes gradient image pyramid.
      interpInput - Interpolation used on input image
      interpDeriv - Interpolation used on gradient images
      derivType - Type of image the gradient is
  • Method Details

    • addTrack

      @Nullable public @Nullable PointTrack addTrack(double x, double y)
      Creates a new feature track at the specified location. Must only be called after process(ImageGray) has been called. It can fail if there is insufficient texture
      Parameters:
      x - x-coordinate
      y - y-coordinate
      Returns:
      the new track if successful or null if no new track could be created
    • getUnusedTrack

      protected PyramidKltFeature getUnusedTrack()
      Checks to see if there's an unused track that can be recycled. if not it will create a new one
    • spawnTracks

      public void spawnTracks()
      Description copied from interface: PointTracker
      Automatically selects new features in the image to track. Returned tracks must be unique and not duplicates of any existing tracks. This includes both active and inactive tracks. NOTE: This function may or may not also modify the active and inactive lists.
      Specified by:
      spawnTracks in interface PointTracker<I extends ImageGray<I>>
    • getImageType

      public ImageType<I> getImageType()
      Description copied from interface: PointTracker
      Input image type
      Specified by:
      getImageType in interface PointTracker<I extends ImageGray<I>>
    • addToTracks

      protected void addToTracks(float scaleBottom, QueueCorner found)
    • checkValidSpawn

      protected boolean checkValidSpawn(PointTrack p)
      Returns true if a new track can be spawned here. Intended to be overloaded
    • dropAllTracks

      public void dropAllTracks()
      Description copied from interface: PointTracker
      Drops all feature to be dropped and will no longer be tracked.

      NOTE: Tracks dropped using this function will not appear in the dropped list.

      Specified by:
      dropAllTracks in interface PointTracker<I extends ImageGray<I>>
    • getMaxSpawn

      public int getMaxSpawn()
      Description copied from interface: PointTracker
      Returns the maximum total number of tracks that it can spawn in a single frame. This number is reduced by the number of active tracks. So if the maximum number of tracks it can spawn is 200 and 50 tracks are active then it will spawn at most 150 tracks. If there is no limit then a number ≤ 0 is returned.
      Specified by:
      getMaxSpawn in interface PointTracker<I extends ImageGray<I>>
    • process

      public void process(I image)
      Description copied from interface: PointTracker
      Process input image and perform tracking.
      Specified by:
      process in interface PointTracker<I extends ImageGray<I>>
      Parameters:
      image - Next image in the sequence
    • trackFeatures

      protected void trackFeatures(I image)
      Tracks features in the forward direction
    • pruneCloseTracks

      protected void pruneCloseTracks()
      Prune tracks which are too close and adds them to the dropped list
    • backwardsTrackValidate

      protected void backwardsTrackValidate()
      Track back to the previous frame and see if the original coordinate is found again. This assumes that all tracks in active list existed in the previous frame and were not spawned.
    • dropTrack

      public boolean dropTrack(PointTrack track)
      Description copied from interface: PointTracker
      Manually forces a track to be dropped. New requests to all and active lists will not include the track after it has been dropped using this function. If request is made to drop a track that is not being tracked (in the internal all list), then the request is ignored.

      NOTE: Tracks dropped using this function will not appear in the dropped list.

      Specified by:
      dropTrack in interface PointTracker<I extends ImageGray<I>>
      Parameters:
      track - The track which is to be dropped
      Returns:
      true if the request to drop the track was done or if it was ignored because the track wasn't being tracked
    • dropTracks

      public void dropTracks(PointTracker.Dropper dropper)
      Description copied from interface: PointTracker
      Used to drop multiple tracks using a rule. This can be more efficient than dropping them one at a time.

      NOTE: Tracks dropped using this function will not appear in the dropped list.

      Specified by:
      dropTracks in interface PointTracker<I extends ImageGray<I>>
      Parameters:
      dropper - Rule for dropping the tracks
    • getActiveTracks

      public List<PointTrack> getActiveTracks(@Nullable @Nullable List<PointTrack> list)
      Description copied from interface: PointTracker
      Returns a list of active tracks. An active track is defined as a track which was found in the most recently processed image.
      Specified by:
      getActiveTracks in interface PointTracker<I extends ImageGray<I>>
      Parameters:
      list - Optional storage for the list of tracks. List is cleared before tracks are added. If null a new list will be declared internally.
      Returns:
      List of tracks.
    • getInactiveTracks

      public List<PointTrack> getInactiveTracks(@Nullable @Nullable List<PointTrack> list)
      KLT does not have inactive tracks since all tracks are dropped if a problem occurs.
      Specified by:
      getInactiveTracks in interface PointTracker<I extends ImageGray<I>>
      Parameters:
      list - Optional storage for the list of tracks. List is cleared before tracks are added. If null a new list will be declared internally.
      Returns:
      List of tracks.
    • getDroppedTracks

      public List<PointTrack> getDroppedTracks(@Nullable @Nullable List<PointTrack> list)
      Description copied from interface: PointTracker
      Returns a list of tracks dropped by the tracker during the most recent update. Tracks dropped by user request are not included in this list.
      Specified by:
      getDroppedTracks in interface PointTracker<I extends ImageGray<I>>
      Parameters:
      list - Optional storage for the list of tracks. List is cleared before tracks are added. If null a new list will be declared internally.
      Returns:
      List of tracks.
    • getNewTracks

      public List<PointTrack> getNewTracks(@Nullable @Nullable List<PointTrack> list)
      Description copied from interface: PointTracker
      Returns a list of tracks that have been added since process was called.
      Specified by:
      getNewTracks in interface PointTracker<I extends ImageGray<I>>
      Parameters:
      list - Optional storage for the list of tracks. List is cleared before tracks are added. If null a new list will be declared internally.
      Returns:
      List of tracks.
    • getAllTracks

      public List<PointTrack> getAllTracks(@Nullable @Nullable List<PointTrack> list)
      Description copied from interface: PointTracker
      Returns a list of all features that are currently being tracked
      Specified by:
      getAllTracks in interface PointTracker<I extends ImageGray<I>>
      Parameters:
      list - Optional storage for the list of tracks. List is cleared before tracks are added. If null a new list will be declared internally.
      Returns:
      List of tracks.
    • addToList

      protected void addToList(List<PyramidKltFeature> in, List<PointTrack> out)
    • reset

      public void reset()
      Description copied from interface: PointTracker
      Discard memory of all current and past tracks. Growing buffered might not be reset to their initial size by this method.
      Specified by:
      reset in interface PointTracker<I extends ImageGray<I>>
    • getFrameID

      public long getFrameID()
      Description copied from interface: PointTracker
      Returns the ID of the most recently processed frame. Frames start at 0 and increment by one each time process is called. After reset or before any frames have been processed -1 is returned.
      Specified by:
      getFrameID in interface PointTracker<I extends ImageGray<I>>
    • getTotalActive

      public int getTotalActive()
      Description copied from interface: PointTracker
      Returns the total number of active tracks
      Specified by:
      getTotalActive in interface PointTracker<I extends ImageGray<I>>
    • getTotalInactive

      public int getTotalInactive()
      Description copied from interface: PointTracker
      Returns total number of inactive tracks
      Specified by:
      getTotalInactive in interface PointTracker<I extends ImageGray<I>>