Search in sources :

Example 6 with RoiManager

use of ij.plugin.frame.RoiManager in project imagej1 by imagej.

the class OverlayCommands method fromRoiManager.

void fromRoiManager() {
    ImagePlus imp = IJ.getImage();
    RoiManager rm = RoiManager.getInstance2();
    if (rm == null) {
        IJ.error("ROI Manager is not open");
        return;
    }
    Roi[] rois = rm.getRoisAsArray();
    if (rois.length == 0) {
        IJ.error("ROI Manager is empty");
        return;
    }
    rm.moveRoisToOverlay(imp);
    imp.deleteRoi();
}
Also used : RoiManager(ij.plugin.frame.RoiManager)

Example 7 with RoiManager

use of ij.plugin.frame.RoiManager in project bioformats by openmicroscopy.

the class ROIHandler method openROIs.

/**
 * Opens the rois and converts them into ImageJ Rois.
 *
 * @param retrieve The OMEXML store.
 * @param images The imageJ object.
 * @param isOMERO <code>true</code> if data stored in OMERO,
 *        <code>false</code> otherwise.
 * @param roisMode Determines whether to import Rois to overlay or RoiManager
 */
public static void openROIs(IMetadata retrieve, ImagePlus[] images, boolean isOMERO, String roisMode) {
    if (!(retrieve instanceof OMEXMLMetadata))
        return;
    int nextRoi = 0;
    RoiManager manager = RoiManager.getInstance();
    OME root = (OME) retrieve.getRoot();
    Roi roi;
    Float sw;
    Color sc;
    Color fc;
    int imageCount = images.length;
    for (int imageNum = 0; imageNum < imageCount; imageNum++) {
        int roiCount = root.sizeOfROIList();
        if (roiCount > 0 && manager == null && roisMode.equals(ImporterOptions.ROIS_MODE_MANAGER)) {
            manager = new RoiManager();
        }
        for (int roiNum = 0; roiNum < roiCount; roiNum++) {
            Union shapeSet = root.getROI(roiNum).getUnion();
            int shapeCount = shapeSet.sizeOfShapeList();
            for (int shape = 0; shape < shapeCount; shape++) {
                Shape shapeObject = shapeSet.getShape(shape);
                roi = null;
                sw = null;
                sc = null;
                fc = null;
                int c = 0;
                int z = 0;
                int t = 0;
                if (shapeObject instanceof Ellipse) {
                    Ellipse ellipse = (Ellipse) shapeObject;
                    int cx = ellipse.getX().intValue();
                    int cy = ellipse.getY().intValue();
                    int rx = ellipse.getRadiusX().intValue();
                    int ry = ellipse.getRadiusY().intValue();
                    roi = new OvalRoi(cx - rx, cy - ry, rx * 2, ry * 2);
                    if (ellipse.getStrokeColor() != null) {
                        ome.xml.model.primitives.Color StrokeColor = ellipse.getStrokeColor();
                        sc = new Color(StrokeColor.getRed(), StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha());
                        if (isOMERO) {
                            sc = new Color(StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha(), StrokeColor.getRed());
                        }
                    }
                    if (ellipse.getFillColor() != null) {
                        ome.xml.model.primitives.Color FillColor = ellipse.getFillColor();
                        fc = new Color(FillColor.getRed(), FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha());
                        if (isOMERO) {
                            fc = new Color(FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha(), FillColor.getRed());
                        }
                    }
                    if (ellipse.getStrokeWidth() != null) {
                        sw = ellipse.getStrokeWidth().value().floatValue();
                    }
                } else if (shapeObject instanceof ome.xml.model.Line) {
                    ome.xml.model.Line line = (ome.xml.model.Line) shapeObject;
                    int x1 = line.getX1().intValue();
                    int x2 = line.getX2().intValue();
                    int y1 = line.getY1().intValue();
                    int y2 = line.getY2().intValue();
                    roi = new Line(x1, y1, x2, y2);
                    if (line.getStrokeColor() != null) {
                        ome.xml.model.primitives.Color StrokeColor = line.getStrokeColor();
                        sc = new Color(StrokeColor.getRed(), StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha());
                        if (isOMERO) {
                            sc = new Color(StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha(), StrokeColor.getRed());
                        }
                    }
                    if (line.getFillColor() != null) {
                        ome.xml.model.primitives.Color FillColor = line.getFillColor();
                        fc = new Color(FillColor.getRed(), FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha());
                        if (isOMERO) {
                            fc = new Color(FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha(), FillColor.getRed());
                        }
                    }
                    if (line.getStrokeWidth() != null) {
                        sw = line.getStrokeWidth().value().floatValue();
                    }
                } else if (shapeObject instanceof Point) {
                    Point point = (Point) shapeObject;
                    int x = point.getX().intValue();
                    int y = point.getY().intValue();
                    roi = new PointRoi(x, y);
                    if (point.getStrokeColor() != null) {
                        ome.xml.model.primitives.Color StrokeColor = point.getStrokeColor();
                        sc = new Color(StrokeColor.getRed(), StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha());
                        if (isOMERO) {
                            sc = new Color(StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha(), StrokeColor.getRed());
                        }
                    }
                    if (point.getFillColor() != null) {
                        ome.xml.model.primitives.Color FillColor = point.getFillColor();
                        fc = new Color(FillColor.getRed(), FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha());
                        if (isOMERO) {
                            fc = new Color(FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha(), FillColor.getRed());
                        }
                    }
                    if (point.getStrokeWidth() != null) {
                        sw = point.getStrokeWidth().value().floatValue();
                    }
                } else if (shapeObject instanceof Polyline) {
                    Polyline polyline = (Polyline) shapeObject;
                    String points = polyline.getPoints();
                    int[][] coordinates = parsePoints(points);
                    roi = new PolygonRoi(coordinates[0], coordinates[1], coordinates[0].length, Roi.POLYLINE);
                    if (polyline.getStrokeColor() != null) {
                        ome.xml.model.primitives.Color StrokeColor = polyline.getStrokeColor();
                        sc = new Color(StrokeColor.getRed(), StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha());
                        if (isOMERO) {
                            sc = new Color(StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha(), StrokeColor.getRed());
                        }
                    }
                    if (polyline.getFillColor() != null) {
                        ome.xml.model.primitives.Color FillColor = polyline.getFillColor();
                        fc = new Color(FillColor.getRed(), FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha());
                        if (isOMERO) {
                            fc = new Color(FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha(), FillColor.getRed());
                        }
                    }
                    if (polyline.getStrokeWidth() != null) {
                        sw = polyline.getStrokeWidth().value().floatValue();
                    }
                } else if (shapeObject instanceof Polygon) {
                    Polygon polygon = (Polygon) shapeObject;
                    String points = polygon.getPoints();
                    int[][] coordinates = parsePoints(points);
                    roi = new PolygonRoi(coordinates[0], coordinates[1], coordinates[0].length, Roi.POLYGON);
                    if (polygon.getStrokeColor() != null) {
                        ome.xml.model.primitives.Color StrokeColor = polygon.getStrokeColor();
                        sc = new Color(StrokeColor.getRed(), StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha());
                        if (isOMERO) {
                            sc = new Color(StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha(), StrokeColor.getRed());
                        }
                    }
                    if (polygon.getFillColor() != null) {
                        ome.xml.model.primitives.Color FillColor = polygon.getFillColor();
                        fc = new Color(FillColor.getRed(), FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha());
                        if (isOMERO) {
                            fc = new Color(FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha(), FillColor.getRed());
                        }
                    }
                    if (polygon.getStrokeWidth() != null) {
                        sw = polygon.getStrokeWidth().value().floatValue();
                    }
                } else if (shapeObject instanceof ome.xml.model.Label) {
                    // add support for TextROI's
                    ome.xml.model.Label label = (ome.xml.model.Label) shapeObject;
                    double x = label.getX().doubleValue();
                    double y = label.getY().doubleValue();
                    String labelText = label.getText();
                    int size = label.getFontSize().value().intValue();
                    Font font = new Font(labelText, Font.PLAIN, size);
                    roi = new TextRoi((int) x, (int) y, labelText, font);
                    if (label.getStrokeColor() != null) {
                        ome.xml.model.primitives.Color StrokeColor = label.getStrokeColor();
                        sc = new Color(StrokeColor.getRed(), StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha());
                        if (isOMERO) {
                            sc = new Color(StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha(), StrokeColor.getRed());
                        }
                    }
                    if (label.getFillColor() != null) {
                        ome.xml.model.primitives.Color FillColor = label.getFillColor();
                        fc = new Color(FillColor.getRed(), FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha());
                        if (isOMERO) {
                            fc = new Color(FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha(), FillColor.getRed());
                        }
                    }
                    if (label.getStrokeWidth() != null) {
                        sw = label.getStrokeWidth().value().floatValue();
                    }
                } else if (shapeObject instanceof ome.xml.model.Rectangle) {
                    ome.xml.model.Rectangle rectangle = (ome.xml.model.Rectangle) shapeObject;
                    int x = rectangle.getX().intValue();
                    int y = rectangle.getY().intValue();
                    int w = rectangle.getWidth().intValue();
                    int h = rectangle.getHeight().intValue();
                    roi = new Roi(x, y, w, h);
                    if (rectangle.getStrokeColor() != null) {
                        ome.xml.model.primitives.Color StrokeColor = rectangle.getStrokeColor();
                        sc = new Color(StrokeColor.getRed(), StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha());
                        if (isOMERO) {
                            sc = new Color(StrokeColor.getGreen(), StrokeColor.getBlue(), StrokeColor.getAlpha(), StrokeColor.getRed());
                        }
                    }
                    if (rectangle.getFillColor() != null) {
                        ome.xml.model.primitives.Color FillColor = rectangle.getFillColor();
                        fc = new Color(FillColor.getRed(), FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha());
                        if (isOMERO) {
                            fc = new Color(FillColor.getGreen(), FillColor.getBlue(), FillColor.getAlpha(), FillColor.getRed());
                        }
                    }
                    if (rectangle.getStrokeWidth() != null) {
                        sw = rectangle.getStrokeWidth().value().floatValue();
                    }
                }
                if (roi != null) {
                    String roiLabel = shapeObject.getText();
                    if (roiLabel == null) {
                        roiLabel = shapeObject.getID();
                    }
                    roi.setName(roiLabel);
                    if (Prefs.showAllSliceOnly) {
                        if (shapeObject.getTheC() != null) {
                            c = shapeObject.getTheC().getValue();
                        }
                        if (shapeObject.getTheZ() != null) {
                            z = shapeObject.getTheZ().getValue();
                        }
                        if (shapeObject.getTheT() != null) {
                            t = shapeObject.getTheT().getValue();
                        }
                        // ImageJ expects 1-based indexing, opposed to
                        // 0-based indexing in OME
                        // Roi positions differ between hyperstacks and normal stacks
                        ImagePlus imp = images[imageNum];
                        if (imp.getNChannels() > 1) {
                            c++;
                        }
                        if (imp.getNSlices() > 1) {
                            z++;
                        }
                        if (imp.getNFrames() > 1) {
                            t++;
                        }
                        if (c == 0)
                            c = 1;
                        if (t == 0)
                            t = 1;
                        if (z == 0)
                            z = 1;
                        if (imp.getNChannels() == 1 && imp.getNSlices() == 1) {
                            roi.setPosition(t);
                        } else if (imp.getNChannels() == 1 && imp.getNFrames() == 1) {
                            roi.setPosition(z);
                        } else if (imp.getNSlices() == 1 && imp.getNFrames() == 1) {
                            roi.setPosition(c);
                        } else if (imp.isHyperStack()) {
                            roi.setPosition(c, z, t);
                        }
                    }
                    if (sw == null) {
                        roi.setStrokeWidth((float) 1);
                    }
                    if (sw != null) {
                        if (sw == 0) {
                            sw = (float) 1;
                        }
                        roi.setStrokeWidth(sw);
                    }
                    if (sc != null) {
                        roi.setStrokeColor(sc);
                    }
                    if (roisMode.equals(ImporterOptions.ROIS_MODE_MANAGER)) {
                        manager.add(images[imageNum], roi, nextRoi++);
                    } else if (roisMode.equals(ImporterOptions.ROIS_MODE_OVERLAY)) {
                        Overlay overlay = images[imageNum].getOverlay();
                        if (overlay == null) {
                            overlay = new Overlay(roi);
                            images[imageNum].setOverlay(overlay);
                        } else {
                            overlay.add(roi);
                        }
                    }
                }
            }
        }
        if (roiCount > 0 && manager != null) {
            manager.setAlwaysOnTop(true);
            manager.runCommand("show all with labels");
        }
    }
}
Also used : Ellipse(ome.xml.model.Ellipse) Shape(ome.xml.model.Shape) Rectangle(java.awt.Rectangle) TextRoi(ij.gui.TextRoi) OvalRoi(ij.gui.OvalRoi) Union(ome.xml.model.Union) Font(java.awt.Font) PolygonRoi(ij.gui.PolygonRoi) Polygon(ome.xml.model.Polygon) Overlay(ij.gui.Overlay) PointRoi(ij.gui.PointRoi) OME(ome.xml.model.OME) Color(java.awt.Color) Point(ome.xml.model.Point) PolygonRoi(ij.gui.PolygonRoi) TextRoi(ij.gui.TextRoi) OvalRoi(ij.gui.OvalRoi) PointRoi(ij.gui.PointRoi) EllipseRoi(ij.gui.EllipseRoi) ShapeRoi(ij.gui.ShapeRoi) Roi(ij.gui.Roi) ImagePlus(ij.ImagePlus) Point(ome.xml.model.Point) RoiManager(ij.plugin.frame.RoiManager) Line(ij.gui.Line) OMEXMLMetadata(loci.formats.ome.OMEXMLMetadata) Polyline(ome.xml.model.Polyline)

Example 8 with RoiManager

use of ij.plugin.frame.RoiManager in project mcib3d-core by mcib3d.

the class ManualSpot method segmentSpots.

// End of variables declaration//GEN-END:variables
private void segmentSpots() {
    Roi roi;
    RoiManager manager = RoiManager.getInstance();
    Roi[] rois = manager.getRoisAsArray();
    if ((manager == null) || (rois.length == 0)) {
        IJ.showMessage("Put rois in the RoiManager");
        return;
    }
    if (objs == null) {
        objs = new Object3D[rois.length];
    }
    String text = "";
    for (int r = 0; r < rois.length; r++) {
        roi = rois[r];
        Rectangle rect = roi.getBounds();
        int x = rect.x;
        int y = rect.y;
        int z = manager.getSliceNumber(manager.getName(r));
        text = text.concat("\nx=" + x + " " + y + " " + z);
        jTextFieldLog.setText(text);
        Segment3DSpots segSpots = new Segment3DSpots(spot3DImage, null);
        segSpots.setLabelImage(labelImage);
        segSpots.show = true;
        // find local maximum
        Voxel3D v = segSpots.getLocalMaximum(x, y, z, 2, 2, 2);
        if (v != null) {
            text = text.concat("\nMax local " + v.getX() + " " + v.getY() + " " + v.getZ() + " " + v.getValue());
            jTextFieldLog.setText(text);
            x = v.getRoundX();
            y = v.getRoundY();
            z = v.getRoundZ();
        }
        // set parameter
        if (threshold_method == 0) {
            segSpots.setMethodLocal(Segment3DSpots.LOCAL_CONSTANT);
        } else if (threshold_method == 1) {
            segSpots.setMethodLocal(Segment3DSpots.LOCAL_MEAN);
        } else {
            segSpots.setMethodLocal(Segment3DSpots.LOCAL_GAUSS);
        }
        if (spot_method == 0) {
            segSpots.setMethodSeg(Segment3DSpots.SEG_CLASSICAL);
        } else if (spot_method == 0) {
            segSpots.setMethodSeg(Segment3DSpots.SEG_MAX);
        } else {
            segSpots.setMethodSeg(Segment3DSpots.SEG_BLOCK);
        }
        segSpots.setLocalThreshold(threshold_constant);
        segSpots.setGaussMaxr(rad_gauss);
        segSpots.setGaussPc(sd_gauss / 10.0);
        segSpots.setRadiusLocalMean(r0, r1, r2, weight);
        segSpots.setWatershed(false);
        // reset labelimage
        if (objs[r] != null) {
            objs[r].draw(labelImage, 0);
        // IJ.log("deleting old spot " + r);
        }
        // redraw population (in case spot has erased objects)
        popOrig.draw(labelImage);
        segSpots.setLabelImage(labelImage);
        ArrayList<Voxel3D> spot = segSpots.segmentOneSpot(x, y, z, col);
        // IJ.log("spot " + r + " at " + x + " " + y + " " + z + " : " + spot);
        if (spot != null) {
            // IJ.log("spot found, size " + spot.size());
            if (spot.size() > 0) {
                objs[r] = new Object3DVoxels(spot);
                objs[r].draw(labelImage, col);
            }
            if (plusres == null) {
                plusres = labelImage.getImagePlus();
                plusres.show();
                IJ.run(plusres, "3-3-2 RGB", "");
            }
            IJ.setMinAndMax(plusres, 0, col);
            plusres.setSlice((int) objs[r].getCenterZ() + 1);
            plusres.updateAndDraw();
        } else {
            jTextFieldLog.setText(jTextFieldLog.getText() + "\nno spot found !");
        }
    }
    labelImage.updateDisplay();
}
Also used : Rectangle(java.awt.Rectangle) Object3DVoxels(mcib3d.geom.Object3DVoxels) Voxel3D(mcib3d.geom.Voxel3D) Roi(ij.gui.Roi) RoiManager(ij.plugin.frame.RoiManager)

Example 9 with RoiManager

use of ij.plugin.frame.RoiManager in project mcib3d-core by mcib3d.

the class ManualSpot method initInterface.

private void initInterface() {
    // adjust slider threshold
    jSliderConstant.setMaximum((int) spot3DImage.getMax());
    jSliderConstant.setMinimum(0);
    ArrayUtil hist = new ArrayUtil(spot3DImage.getHistogram(new BlankMask(spot3DImage)));
    int pcHigh = hist.indexOfSumPercent(0.999);
    jSliderConstant.setValue(pcHigh);
    // set tool point and open RoiManager
    IJ.setTool(Toolbar.POINT);
    RoiManager manager = RoiManager.getInstance();
    if (manager == null) {
        manager = new RoiManager();
    }
}
Also used : RoiManager(ij.plugin.frame.RoiManager) ArrayUtil(mcib3d.utils.ArrayUtil)

Aggregations

RoiManager (ij.plugin.frame.RoiManager)9 Roi (ij.gui.Roi)3 Rectangle (java.awt.Rectangle)3 ImagePlus (ij.ImagePlus)2 ImageStack (ij.ImageStack)1 EllipseRoi (ij.gui.EllipseRoi)1 Line (ij.gui.Line)1 OvalRoi (ij.gui.OvalRoi)1 Overlay (ij.gui.Overlay)1 PointRoi (ij.gui.PointRoi)1 PolygonRoi (ij.gui.PolygonRoi)1 ShapeRoi (ij.gui.ShapeRoi)1 TextRoi (ij.gui.TextRoi)1 ThresholdToSelection (ij.plugin.filter.ThresholdToSelection)1 Color (java.awt.Color)1 Font (java.awt.Font)1 ArrayList (java.util.ArrayList)1 OMEXMLMetadata (loci.formats.ome.OMEXMLMetadata)1 Object3DVoxels (mcib3d.geom.Object3DVoxels)1 Voxel3D (mcib3d.geom.Voxel3D)1