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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ImageJ从多个ROI获取ImagePlus对象相关的知识,希望对你有一定的参考价值。

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

首先,我使用了获得当前ROI Manager的实例

RoiManager roiMng = RoiManager.getInstance();

然后,我通过使用Roi[] rois = roiMng.getRoisAsArray();获得经理的所有投资回报率。

从这里开始,我需要在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图像。

如果您不需要像素数据,但需要获得基于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从多个ROI获取ImagePlus对象的主要内容,如果未能解决你的问题,请参考以下文章

使用opencv python从图像中提取多个ROI

OpenCV_复制一个或多个ROI图像区域

如何使用倾斜的线在openCV中获取矩阵(ROI)

从图像中删除区域 - ImageJ

Java:ImageJ 替代品

opencv中使用ROI获取感兴趣区域时,如何获取一幅图像中相应的坐标,比如: