仅打开图像的一部分(JPEG/TIFF等)在R中 [英] Open only part of an image (JPEG/TIFF etc.) in R

查看:0
本文介绍了仅打开图像的一部分(JPEG/TIFF等)在R中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在分析R中非常大的图像,大约是数万个像素的正方形。不幸的是,即使有64 GB的内存,这些图像有时也无法装入内存,而当它们装入内存时,我一次只能打开一个,这就排除了并行化的可能性。

我目前的策略是使用JPEG或TIFF包加载它们。例如:

image <- readJPEG('image.jpg')

但是,因为我只执行简单的数学运算(求和、阈值等)。这可以逐块执行,是否可以通过指定要加载的尺寸一次只能打开图像的一部分?如果是这样的话,我可以编写一个循环来打开1024x1024大小的瓷砖。JPEG和TIFF包不提供执行此操作的选项。

推荐答案

结果是,有一个R包--RBioFormats--允许您指定要打开的图像的一部分(尽管它在CRAN上不可用)。可以从Git安装它,如下所示:

source("https://bioconductor.org/biocLite.R")
biocLite("aoles/RBioFormats") # You might need to first run `install.packages("devtools")`
library(RBioFormats)

无需打开图像即可从元数据中读取图像的尺寸:

metadata <- read.metadata('image.tiff')
xdim <- metadata@.Data[[1]]$sizeX
ydim <- metadata@.Data[[1]]$sizeY

假设我们要加载左上角的512 x 512像素,我们使用subset函数:

image <- read.image('image.tiff', subset = list(X = 1:512, y = 1:512))
因此,编写循环来迭代处理整个大图像是微不足道的。RBioFormats是Java BioFormats库的R接口,将打开TIFF、PNG、JPEG以及许多专有的图像格式。

这篇关于仅打开图像的一部分(JPEG/TIFF等)在R中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆