/** 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)); }
public void dummySegmentation() { List<Dataset> predictDataset = new ArrayList<>(imgDatasets.size()); INDArray predict = dummyClassification(); int currIdx = 0; for (int ds = 0; ds < imgDatasets.size(); ds++) { List<List<int[]>> profilesSet = testData.get(ds).getProfiles(); predictDataset.add(imagePlaneService.createEmptyPlaneDataset(imgDatasets.get(ds))); Dataset currDataset = predictDataset.get(ds); RandomAccess<RealType<?>> randomAccess = currDataset.randomAccess(); for (List<int[]> p : profilesSet) { for (int i = 0; i < p.size(); i++) { randomAccess.setPosition(p.get(i)[0], 0); randomAccess.setPosition(p.get(i)[1], 1); double value = predict.getRow(currIdx).getDouble(i); if (value != 0) randomAccess.get().setReal(value); } } Overlay[] overlays = BinaryToOverlay.transform(context, currDataset, true); // List<Overlay> overlayList = Arrays.asList(BinaryToOverlay.transform(context, // currDataset, true)); overlayStatService.setRandomColor(Arrays.asList(overlays)); ImageDisplay display = new DefaultImageDisplay(); context.inject(display); display.display(currDataset); for (Overlay o : overlays) { display.display(o); } uis.show(display); } }