/** * @param pseudocolor * @param center * @return * @throws ALDOperatorException */ public MTBImage create2DTrajectoryImage(boolean pseudocolor, boolean center) throws ALDOperatorException { MTBImage trajectoryImg; if (pseudocolor) { trajectoryImg = MTBImage.createMTBImage(sizeX, sizeY, 1, 1, 1, MTBImage.MTBImageType.MTB_RGB); } else { trajectoryImg = MTBImage.createMTBImage(sizeX, sizeY, 1, 1, 1, MTBImage.MTBImageType.MTB_BYTE); } trajectoryImg.fillBlack(); trajectoryImg.setTitle("trajectories"); int centerX = sizeX / 2; int centerY = sizeY / 2; int tx = 0; int ty = 0; 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(); for (int j = 1; j < points.size(); j++) { Point2D.Double start = points.elementAt(j - 1); Point2D.Double end = points.elementAt(j); if (center) { if (j == 1) // calculate translation vector { tx = centerX - (int) start.x; ty = centerY - (int) start.y; } trajectoryImg.drawLine2D( (int) start.x + tx, (int) start.y + ty, (int) end.x + tx, (int) end.y + ty, color); } else { trajectoryImg.drawLine2D((int) start.x, (int) start.y, (int) end.x, (int) end.y, color); } } } return trajectoryImg; }
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; }
/** * @param pseudocolor * @return * @throws ALDOperatorException */ public MTBImage create3DTrajectoryImage(boolean pseudocolor) throws ALDOperatorException { MTBImage trajectoryImg; if (pseudocolor) { trajectoryImg = MTBImage.createMTBImage(sizeX, sizeY, sizeT, 1, 1, MTBImage.MTBImageType.MTB_RGB); } else { trajectoryImg = MTBImage.createMTBImage(sizeX, sizeY, sizeT, 1, 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++) { Point2D.Double p = points.elementAt(j); trajectoryImg.putValueInt((int) p.x, (int) p.y, startFrame + j, color); } } return trajectoryImg; }