0

在R中,我有一个等于图像的矩阵,其中每个单元格如果是背景则为0,如果是ROI则> 0。每个 ROI 都有其不同的编号,因此如果它跨越多个矩阵单元,所有这些单元将具有相同的编号。我想从中生成可由 ImageJ 读取的 ROI 文件。

例子:

mx <- matrix(data=c(1,1,0,0,0,1,0,2,2,2,0,0,2,2,0,0,0,0,0,0,3,3,0,0,0), ncol=5, nrow=5)
# now some function to save the first, second and third ROI, each as a separate file

EBImage 包是我用来从我的图像中获取这些数据的包,但它不提供编写 ROI 的函数。

编辑:ROI 名称必须与矩阵中的名称完全相同。实现此目的的一种方法是标记图像(如果有人知道如何生成此图像,请告诉我),甚至更好地直接导出 ROI(更灵活)。

4

1 回答 1

0

我不知道如何在 R 中编写一个可由 ImageJ 读取的 roiset,但您的矩阵本质上是一个分段图像。因此,您可以将矩阵作为图像导入 ImageJ,然后使用简单的宏来创建选择。

R中的第一个:

mx <- matrix(data=c(1,1,0,0,0,1,0,2,2,2,0,0,2,2,0,0,0,0,0,0,3,3,0,0,0), ncol=5, nrow=5)
# scale matrix for 8-bit export
mxn <- mx/255
EBImage::writeImage(mxn,"mxn.tif", type = "tiff", bits.per.sample = 8)

现在在 ImageJ 中,加载mxn.tif然后:

roiManager("reset");
getStatistics(area, mean, min, max);
for(i = 1; i <= max; i ++) {
    setThreshold(i - 0.1, i + 0.1);
    run("Create Selection");
    // do whatever you would like here
    getStatistics(area);
    // and/or...
    roiManager("Add");
    roiManager("select", i-1);
    roiManager("Rename", i);
}
于 2022-01-18T13:47:46.820 回答