public void process(final SimpleImageSequence<T> sequence) {

    if (!sequence.hasNext()) throw new IllegalArgumentException("Empty sequence");

    image = sequence.next();
    gui.setFrame((BufferedImage) sequence.getGuiImage());
    ShowImages.showWindow(gui, "Circulant Tracker");

    //		tracker.initialize(image,273,156,358-273,293-156);

    paused = true;

    while (paused) {
      Thread.yield();
    }

    int totalFrames = 0;
    long totalTime = 0;

    while (sequence.hasNext()) {
      totalFrames++;

      image = sequence.next();
      gui.setFrame((BufferedImage) sequence.getGuiImage());

      long before = System.nanoTime();
      tracker.performTracking(image);
      long after = System.nanoTime();

      totalTime += after - before;
      System.out.println("FPS = " + (totalFrames) / (totalTime / 2e9));

      gui.update(tracker);

      Rectangle2D_F32 r = tracker.getTargetLocation();
      System.out.println("Target: " + r);
      gui.repaint();

      while (paused) {
        Thread.yield();
      }
    }
    System.out.println("DONE");
  }
 @Override
 public void startTracking(int x0, int y0, int x1, int y1) {
   System.out.println(x0 + "," + y0 + "," + x1 + "," + y1);
   tracker.initialize(image, x0, y0, x1 - x0, y1 - y0);
   paused = false;
 }