public void generateTestSet() { List<ImageDisplay> displays = imageDisplayService.getImageDisplays(); imgDatasets = new ArrayList<>(displays.size()); List<Dataset> labeledDs = new ArrayList<>(displays.size()); List<List<Overlay>> overlaySet = new ArrayList<>(); displays .stream() .forEach( id -> { imgDatasets.add(imageDisplayService.getActiveDataset(id)); overlaySet.add(overlayService.getOverlays(id)); }); List<List<Point2D>> seeds = seeding(); int numProfiles = 0; for (int ds = 0; ds < imgDatasets.size(); ds++) { List<Point2D> centers = seeds.get(ds); ProfilesSet profiles = new DefaultProfilesSet(centers, searchRadius.getValue(), context); numProfiles += profiles.size(); testData.add(profiles); } eventService.publish(new ProfileEvent(ProfileType.TEST, numProfiles)); }
public List<List<Point2D>> seeding() { // TODO seeding algorithm. Temp manual alternative List<List<Point2D>> seeds = new ArrayList(); List<ImageDisplay> displays = imageDisplayService.getImageDisplays(); imgDatasets = new ArrayList<>(displays.size()); List<List<Overlay>> overlaySet = new ArrayList<>(); displays .stream() .forEach( id -> { imgDatasets.add(imageDisplayService.getActiveDataset(id)); overlaySet.add(overlayService.getOverlays(id)); }); for (int ds = 0; ds < imgDatasets.size(); ds++) { List<Point2D> currSeeds = new ArrayList(); for (Overlay o : overlaySet.get(ds)) { if (o instanceof PointOverlay) { double[] point = ((PointOverlay) o).getPoints().get(0); Point2D point2D = new Point2D(point[0], point[1]); currSeeds.add(point2D); } } seeds.add(currSeeds); } return seeds; }
/** Generate the different intensity profiles from drawn objects for each ImageDisplay */ public void generateTrainingSet() { double maxDiameter = 0.0; List<ImageDisplay> displays = imageDisplayService.getImageDisplays(); imgDatasets = new ArrayList<>(displays.size()); List<Dataset> labeledDs = new ArrayList<>(displays.size()); List<List<Overlay>> overlaySet = new ArrayList<>(); displays .stream() .forEach( id -> { imgDatasets.add(imageDisplayService.getActiveDataset(id)); overlaySet.add(overlayService.getOverlays(id)); }); int numProfiles = 0; for (int ds = 0; ds < imgDatasets.size(); ds++) { labeledDs.add(imagePlaneService.createEmptyPlaneDataset(imgDatasets.get(ds))); ArrayList<Point2D> centers = new ArrayList<>(); for (Overlay o : overlaySet.get(ds)) { OverlayShapeStatistics stats = overlayStatService.getShapeStatistics(o); centers.add(stats.getCenterOfGravity()); if (stats.getFeretDiameter() > maxDiameter) maxDiameter = stats.getFeretDiameter(); overlayDrawingService.drawOverlay( o, OverlayDrawingService.OUTLINER, labeledDs.get(ds), COLOR); } // uis.show(labeledDs.get(ds)); ProfilesSet profiles = new DefaultProfilesSet(centers, (int) maxDiameter, context); generateConfirmationSet(profiles, labeledDs.get(ds)); numProfiles += profiles.size(); trainingData.add(profiles); } eventService.publish(new ProfileEvent(ProfileType.TRAIN, numProfiles)); }