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();
}
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");
}
}
}
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();
}
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();
}
}
Aggregations