Beispiel #1
0
  /**
   * Starts tracking the rectangular region.
   *
   * @param image First image in the sequence.
   * @param x0 Top-left corner of rectangle. x-axis
   * @param y0 Top-left corner of rectangle. y-axis
   * @param x1 Bottom-right corner of rectangle. x-axis
   * @param y1 Bottom-right corner of rectangle. y-axis
   */
  public void initialize(T image, int x0, int y0, int x1, int y1) {

    if (imagePyramid == null
        || imagePyramid.getInputWidth() != image.width
        || imagePyramid.getInputHeight() != image.height) {
      int minSize = (config.trackerFeatureRadius * 2 + 1) * 5;
      int scales[] = selectPyramidScale(image.width, image.height, minSize);
      imagePyramid =
          FactoryPyramid.discreteGaussian(scales, -1, 1, true, (Class<T>) image.getClass());
    }
    imagePyramid.process(image);

    reacquiring = false;

    targetRegion.set(x0, y0, x1, y1);
    createCascadeRegion(image.width, image.height);

    template.reset();
    fern.reset();

    tracking.initialize(imagePyramid);
    variance.setImage(image);
    template.setImage(image);
    fern.setImage(image);
    adjustRegion.init(image.width, image.height);

    learning.initialLearning(targetRegion, cascadeRegions);
    strongMatch = true;
    previousTrackArea = targetRegion.area();
  }