R语言--SimpleITK

SimpleITK 是 Insight 工具包(ITK)算法和数据结构的简化编程接口。它支持多种编程语言的接口,包括 C++、Python、R、Java、C#、Lua、Ruby 和 TCL。这些绑定使科学家能够用他们最熟悉的编程语言开发图像分析工作流。该工具包支持 15 种以上不同的图像文件格式,提供 280 多种图像分析过滤器,并为 ITK 基于强度的配准框架实现了统一接口。

特点

使用 Python、R、Java、C#、Lua、Ruby、TCL 和 C++ 进行开源多维图像分析。由 Insight 工具包社区为生物医学科学及其他领域开发。

  • 被视为空间对象而非像素阵列的图像。计算在二维或三维物理空间中进行。
  • 利用刚性或可变形变换快速配准二维和三维模内和模间图像的配准框架。
  • 从经典的Otsu thresholding到水平集(level sets) 和分水岭(watersheds),为图像分割工作流程提供了丰富的过滤器。
  • 评估分割结果(豪斯多夫距离、雅卡德值和骰子值、表面距离等<Hausdorff distance, Jaccard and Dice values, surface distances etc.> )和分析分割形状特征(定向边界框、主矩、周长、伸长率、费雷特直径等<oriented bounding box, principal moments, perimeter, elongation, Feret diameter etc.>)的工具。
  • 图像文件输入/输出,支持 20 多种图像文件格式(jpg、png、DICOM、TIFF 等),并可在不同格式间轻松转换。
  • 通过基于进程和线程的并行化,可随时集成到集群或台式机的并行处理框架中。

安装R包-SimpleITKRInstaller

devtools::install_github("SimpleITK/SimpleITKRInstaller")

Fiji

SimpleITK 有一个内置函数 itk::simple::Show(),可用于在交互会话中查看图像。默认情况下,该 Show 函数会搜索已安装的 Fiji 来显示图像。如果找不到 Fiji,则会搜索 ImageJ。选择 Fiji/ImageJ 是因为它们可以处理 SimpleITK 支持的所有图像类型,包括每像素有 n 个分量的 3D 矢量图像。 Show 函数会在多个标准位置搜索 Fiji/ImageJ。具体位置取决于系统类型(Linux、Mac 或 Windows)。启用 "Show "的 "debugOn "选项后,用户可以看到 SimpleITK 正在搜索 Fiji(或其他查看应用程序)的位置,以及用于启动查看应用程序的实际命令。 Show 是 ImageViewer 类的功能接口。可以使用 ImageViewer 对象配置其他查看应用程序.


图片导入和导出

1
2
3
4
5
6
7
8
9
10
library(SimpleITK)

reader <- ImageFileReader()
reader$SetImageIO("PNGImageIO")
reader$SetFileName(inputImageFileName)
image <- reader$Execute()

writer <- ImageFileWriter()
writer$SetFileName(outputImageFileName)
writer$Execute(image)

上面的示例指定使用 PNGImageIO 来读取文件。如果省略该行,SimpleITK 将根据文件名的后缀和/或文件头自动确定要使用哪个 IO。

1
2
image <- ReadImage(inputImageFileName)
WriteImage(image, outputImageFileName)