使用 ImageJ 从多个 ROI 获取 ImagePlus 对象

Get ImagePlus objects from multiple ROIs using ImageJ

我正在使用 ImageJ 的 Java API 并且需要根据多个选定的 ROI(感兴趣区域)计算一些数据。

首先,我使用

获取当前 ROI 管理器的实例
RoiManager roiMng = RoiManager.getInstance();

然后,我使用 Roi[] rois = roiMng.getRoisAsArray(); 获得管理器中的所有 ROI。

从这里开始,我需要获取 ROI 中的图像并从中获取一些数据。但是,我似乎只在 ROI 上调用 getImage() 时返回 Null。

做类似的事情,

Roi roi = rois[0];
ImagePlus foo = roi.getImage();
int height = foo.getHeight();

foo.getHeight() 行给我 'java.lang.NullPointerException'。

有人知道这里会发生什么吗?

谢谢!

您需要在 ImagePlus 上设置 roi。然后您可以通过调用 duplicate() 方法复制活动 ROI 定义的图像部分。

ImagePlus imp = IJ.getImage(); // get the (current) image from the active/selected window
...
imp.setRoi(rois[0]);
ImagePlus roiImp = imp.duplicate();

这样您将获得由 ROI 边界框定义的图像。如果设置了 ROI,重复方法会创建整个图像或 roi-image 的副本。

如果您不需要像素数据,但需要获取基于 ROI 的统计数据,您可能想看看 https://imagej.nih.gov/ij/developer/api/ij/ImagePlus.html#getStatistics--https://imagej.nih.gov/ij/developer/api/ij/gui/Roi.html#getStatistics--

希望对您有所帮助

菲利克斯