public MTBImage createProgressionImage(boolean pseudocolor) throws ALDOperatorException {
    MTBImage trajectoryImg;

    if (pseudocolor) {
      trajectoryImg =
          MTBImage.createMTBImage(sizeX, sizeY, 1, sizeT, 1, MTBImage.MTBImageType.MTB_RGB);
    } else {
      trajectoryImg =
          MTBImage.createMTBImage(sizeX, sizeY, 1, sizeT, 1, MTBImage.MTBImageType.MTB_BYTE);
    }

    trajectoryImg.fillBlack();
    trajectoryImg.setTitle("trajectories");

    Random r = new Random();

    for (int i = 0; i < trajectories.size(); i++) {
      Trajectory2D trajectory = trajectories.elementAt(i);

      int color = trajectory.getID();

      if (pseudocolor) {
        color = r.nextInt((int) Math.pow(2, 32));
      }

      Vector<Point2D.Double> points = trajectory.getPoints();
      int startFrame = trajectory.getStartFrame();

      for (int j = 0; j < points.size(); j++) {
        MTBImage currSlice = trajectoryImg.getSlice(0, startFrame + j, 0);

        // TODO: draw point in starting frame

        for (int k = 1; k <= j; k++) {
          Point2D.Double start = points.elementAt(k - 1);
          Point2D.Double end = points.elementAt(k);

          currSlice.drawLine2D((int) start.x, (int) start.y, (int) end.x, (int) end.y, color);
        }

        trajectoryImg.setCurrentSliceIndex(startFrame + j);
        trajectoryImg.setCurrentSlice(currSlice);
      }
    }

    return trajectoryImg;
  }