使用 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--
希望对您有所帮助
菲利克斯
我正在使用 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--
希望对您有所帮助
菲利克斯