Torchio学习随笔(1)-Image

1.Image

Image类,代表一个储存着

  • 4D张量(信号强度,分割标签)
  • 仿射变换

的医学影像
Image类有两种子类:ScalarImageLabelMap

上图显示了Image的两个子类的实例,其中ScalarImage包含了一个shape为(4,128,128,94)的4D张量、一个仿射矩阵、梯度强度和梯度方向,代表一个dMRI;而下面LableMap包含了ScalarImage中同一受试者的大脑剖析图、仿射矩阵、大脑结构标签和颜色。

Image的实例可以通过
1.文件路径
2.Pytorch张量
3.Numpy张量来创建

1.1 torchio.ScalarImage类

一种图像,其像素值代表标量

1.1.1 实例的创建

import numpy as np
import torch
import torchio as tio

#从文件中创建ScalarImage实例
smri = tio.ScalarImage('../数据/someones_anatomy.nii.gz')
#从张量中创建实例
dmri = tio.ScalarImage(tensor=torch.rand(32, 128, 128, 88))
#从numpy中创建实例
test = tio.ScalarImage(tensor = np.random.rand(32, 128, 128, 88))

1.1.2 实例的调用

上面提到过每个ScalarImage包含了多种信息

#直接输出实例信息,包含了shape,spacing,orientation,type,memory信息
print(smri)
#实例的仿射矩阵
smri.affine
#实例的数据
smri.data

1.2 torchio.LabelMap类

一种图像,其像素值代表分类标签

1.2.1 实例的创建

#定义一个布尔值张量
booltensor = torch.rand(1, 128, 128, 68) > 0.5
#从张量中创建
labels = tio.LabelMap(tensor=booltensor)

1.2.2 实例的调用

labels.affine
labels.data

1.3 torchio.Image类

1.3.1 参数

  • path - SimpleITK 或 nibabel 可以读取的文件路径或文件路径序列,或包含 DICOM 文件的目录。如果给定tensor,则不会读取路径中的数据。如果给出了一系列路径,则数据将在通道维匹配
  • type - 图像的类型,torchio.INTENSITY or torchio.LABEL等
  • tensor - 4D torch.Tensor或Numpy array shape为 (C,W,H,D)
  • affine - 4x4的仿射矩阵,将体素坐标转换至标准参考空间

1.3.2 方法

#转换为PIL实例
#转换为sitk实例
smri_sitk = smri.as_sitk
#获取图像中心坐标
smri.get_center()
(-1.0, -0.25, -15.375)
#from_sitk()从sitk图像中创建
import torchio as tio
import SimpleITK as sitk
sitk_image = sitk.Image(20, 30, 40, sitk.sitkUInt16)
i1 = tio.LabelMap.from_sitk(sitk_image)
sitk_image = sitk.Image((224, 224), sitk.sitkVectorFloat32, 3)
i2 = tio.ScalarImage.from_sitk(sitk_image)
#save()保存一个image
data = dmri.data*2
two_dmri = tio.ScalarImage(tensor=data)
two_dmri.save('two_test.nii.gz')
#获得包含图像数据的numpy 数组
dmri.numpy()
#获取影像的方向
dmri.orientation
('R', 'A', 'S')
#获取图像的通道数
dmri.num_channels
32
#展示图像
smri.plot()

#返回图像尺寸(C,W,H,D)
dmri.shape
(32, 128, 128, 88)
#返回(W,H,D)
dmri.spatial_shape
(128, 128, 88)
#每个体素素的物理长度(mm)
smri.spacing
(2.75, 2.75, 2.75)

posted @ 2022-10-28 15:56  等一轮明月yue  阅读(146)  评论(0)    收藏  举报