前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rtips:RBioFormats包读取和处理ome-tiff图片

Rtips:RBioFormats包读取和处理ome-tiff图片

作者头像
生信菜鸟团
发布2022-10-31 10:27:07
1.3K0
发布2022-10-31 10:27:07
举报
文章被收录于专栏:生信菜鸟团

使用显微镜对大样本进行全片扫描并导出图片是一个很常见的需求,但是导出的图片往往会非常大,动辄是几个Gb的大小,常规的看图软件根本无法打开,更别提对它进行后续的编辑操作了。

那么要想在R中处理这种图片似乎也是一个更加难办的问题了,最大的问题是内存不足,其次在读入图片后,也会需要较高的CPU运算力来进行大图片的运算。

不过现在有一个可行的解决方案,那就是使用RBioFormats。这个包是R通过rJava的接口调用的Java工具包BioFormats进行的图片处理。由于需要和java做交互,所以这里的环境搭建和包安装就会有坑,本文后面会详述。

大多数情况下,生物全片扫描的图片导出的都是tiff格式,确切说是ome-tiff格式,这种图片格式是一个层次结构,保存了同一张图片的多个分辨率的备份,实际处理时,根据机器的性能,可以将合适的分辨率读入到R中。

安装RBioFormats

RBioFormats依赖rJava,rJava需要本机安装java。

安装java

请注意下载之后,要配置好java是可用的状态,一般是需要配置环境变量PATH和JAVA_HOME。可以自行百度。验证方法就是在命令行中键入“java -version”, 如果正确返回了java的版本就代表java可以使用。

安装rJava

使用R的常规安装方法安装即可:install.packages('rJava')。

安装RBioFormats

RBioFormats的https://github.com/aoles/RBioFormats/tree/Bio-Formats_6.10.1。建议大家的安装方式是手动安装,先下载安装包,然后源码安装。

下载安装包

https://github.com/aoles/RBioFormats/archive/refs/tags/Bio-Formats_6.1.0.tar.gz

安装RBioFormats

一定要选择和Java一样的R版本,java是32位,R就选32位,java是64位,R就选64位。源码安装的时候,第一个参数是刚才下载的安装包的路径, type = "source"代表源码安装。

记得一定要加INSTALL_opts = "--no-multiarch",不然R默认会32和64位都安装,但是由于java的版本不同,会导致安装失败。

代码语言:javascript
复制
install.packages("RBioFormats-Bio-Formats_6.1.0.tar.gz", repos = NULL, type = "source", INSTALL_opts = "--no-multiarch")  

另外RBioFormats是基于EBImage包构建的,所以也需要依赖EBImage,如果没有安装请先安装。

RBioFormats的使用

使用的注意事项

我的机器上rJava默认的内存大概500Mb,在做大图片读入时,明显太小了,可以设置内存大小,但是必须如下方式处理,比如设置rJava最大可用内存为10G:

必须在载入rJava前先设置好内存限制,如果已经载入了rJava,则内存设置无效,重新将rJava做library处理也不行,必须重新启动R。

载入RBioFormats前必须先载入rJava,不能让RBioFormats自动载入rJava,否则内存限制也不会生效,需要重新启动R。

代码语言:javascript
复制
options(java.parameters = '-Xmx10g')
library(rJava)
library(RBioFormats)

可以通过如下命令查看rJava的可用内存是多少,如下可以看到可用内存是9000+Mb。

代码语言:javascript
复制
RBioFormats::checkJavaMemory()
[1] 9102.5

如何导入ome-tiff

由于omr-tiff非常大,载入图片之前,应该先使用read.metadata先读取一下meta信息,看一下图片包括几个分辨率,每个分辨率的图片是多大。

如下所示,分辨率res为6时,图片大小是1024*1024的,这个分辨率的图片一般机器读取都没有问题。

代码语言:javascript
复制
ome_pic  <- "tissue-pic/pic.ome.tiff" # <- 自己的ome-tiff文件路径

RBioFormats::read.metadata(ome_pic)
# ImageMetadata list of length 8 
# 
# series res sizeX sizeY sizeC sizeZ sizeT total
# 1      1   32768 32768 3     1     1     3    
# 1      2   16384 16384 3     1     1     3    
# 1      3   8192  8192  3     1     1     3    
# 1      4   4096  4096  3     1     1     3    
# 1      5   2048  2048  3     1     1     3    
# 1      6   1024  1024  3     1     1     3    
# 1      7   512   512   3     1     1     3    
# 1      8   256   256   3     1     1     3 

然后使用read.image读入图片

代码语言:javascript
复制
image <- RBioFormats::read.image(ome_pic, res = 6)

这个图片是基于EBImage的Image对象进行封装的图片对象AnnotatedImage,所以兼容EBImage包的各种图形操作。

可以通过EBImage的display进行展示,由于图片太暗,可以提高一下亮度:

代码语言:javascript
复制
EBImage::display(image)

# 提高亮度
EBImage::display(image * 5)

参考:

OME-TIFF: https://docs.openmicroscopy.org/ome-files-cpp/0.5.0/ome-model/manual/html/ome-tiff/specification.html

RBioFormats: https://github.com/aoles/RBioFormats

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装RBioFormats
  • RBioFormats的使用
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档