首页 > 解决方案 > 如何在 R 的文件夹中打开和存储一系列图像?

问题描述

所以我有一个文件夹,里面有一些我想用 readImage 函数打开和保存的图像。现在一位同事写了类似的东西来打开和存储图像的名称。我想做以下事情:

setwd("~/ABC/One_Folder_Up")

img_src <- "FolderOfInterest"

image_list <- list.files(路径=img_src,模式=“^关闭”)

但是使用实际的 .tif 图像命名例如: closed100, closed101,....closed201

上面的代码非常适合获取名称。但是我怎样才能得到这种类型的图案,而不是打开并保存图像呢?输出是每个图像的大矩阵。

所以对于 n = 1 到 n,我想执行以下操作:

关闭175 <- readImage(“关闭175.tif”)

ave175 <- 平均值(关闭 175)

SD175 <- SD(关闭175)

我假设第一部分中显示的图像列表可以在所需的循环中使用?

然后,在将图像保存为自己的矩阵并计算所有平均值和 SD 之后,我想将平均值和 SD 放在一个矩阵中,如下所示:

imavelist <- c(ave175, ave176,......ave200)

对不起,不是专家编码器。谢谢!

编辑:也许 lapply?

编辑2:如果我使用这个建议

需要(成像器)

closed_images <- lapply(closed_im_list, readImage)

closed_im_matrix = do.call('cbind', lapply(closed_images, as.numeric))

然后我需要一个循环来将图像堆栈矩阵的每个元素保存为它自己的单个图像。

标签: rimagesetseries

解决方案


setwd("~/ABC/One_Folder_Up/FolderOfInterest/")
#for .tif format
image_list=list.files(path=getwd(), pattern = "*.tif")
# for other formats replace tif with appropriate format. 
f=function(x){
y=readImage(x)
mve=mean(y)
sd=sd(y)
c(mve,sd)
}

results=data.frame(t(sapply(image_list,f)))
colnames(results)=c("average","sd")

3张图片的结果:

> results
                average        sd
Untitled.tif  0.9761128 0.1451167
Untitled2.tif 0.9604224 0.1861798
Untitled3.tif 0.9782997 0.1457034
> 

推荐阅读