Class TrackerMeanShiftLikelihood<T extends ImageBase<T>>


public class TrackerMeanShiftLikelihood<T extends ImageBase<T>>
extends Object

Mean-shift [1] based tracker which tracks the target inside a likelihood image using a flat rectangular kernel of fixed size. The likelihood for each pixel is computed using SparseImageSample_F32. How that model is computed is not specified by this class, but is often based on color. For sake of efficiency, the likelihood for a pixel is only computed as needed.

This algorithm can run very fast and works well when the target being tracked is visually distinctive from the background and largely composed of one color. It can't handle changes in scale or shape of the target, which does limit its applications.

[1] Yizong Chen, "Mean Shift, Mode Seeking, and Clustering" IEEE Trans. Pattern Analysis and Machine Intelligence, VOL. 17, NO. 8, August 1995

  • Constructor Details

    • TrackerMeanShiftLikelihood

      public TrackerMeanShiftLikelihood​(PixelLikelihood<T> targetModel, int maxIterations, float minFractionDrop)
      Configures tracker
      targetModel - Target used to model the target's likelihood
      maxIterations - Maximum number of iterations. try 20
      minFractionDrop - If the likelihood drops below its initial value by this fraction the track is assumed to be lost
  • Method Details

    • initialize

      public void initialize​(T image, RectangleLength2D_I32 initial)
      Specifies the initial target location so that it can learn its description
      image - Image
      initial - Initial target location and the mean-shift bandwidth
    • setTrackLocation

      public void setTrackLocation​(RectangleLength2D_I32 location)
      Used to set the location of the track without changing any appearance history.
      location - new location
    • process

      public boolean process​(T image)
      Updates the target's location in the image by performing a mean-shift search. Returns if it was successful at finding the target or not. If it fails once it will need to be re-initialized
      image - Most recent image in the sequence
      true for success or false if it failed
    • updatePdfImage

      protected void updatePdfImage​(int x0, int y0, int x1, int y1)
      Computes the PDF only inside the image as needed amd update the dirty rectangle
    • getLocation

      public RectangleLength2D_I32 getLocation()
      Current location of target in the image
      rectangle containing the target
    • isFailed

      public boolean isFailed()
      If true the tracker has filed