【TorchIO】基本介绍、图像数据读取、图像数据结构、仿射变换、数据集

TorchIO

背景介绍

深度学习用于医学图像分析,如MRI、CT等面临着多种挑战:

  1. 计算量巨大;2. 数据量少; 3. 需考虑空间数据。

基本介绍

开源Python库,沿用Pytorch风格,开拓Pytorch的应用至医学图像计算领域

TorchIO:https://torchio.readthedocs.io/
TorchIO-github:https://github.com/fepegar/torchio/
Pytorch:https://pytorch.org/

Image图像数据

参考:Torchio学习随笔(1)-Image

Image类存储医学影像: 4D张量(信号强度、分割标签)+仿射变换
子类:ScalarImage和LabelMap

  • ScalarImage包含一个shape为(4,128,128,94)的4D张量、一个仿射矩阵、梯度强度和梯度方向,代表一个dMRI;
  • LableMap包含ScalarImage中同一受试者的大脑剖析图、仿射矩阵、大脑结构标签和颜色

参考:Torchio的图像数据结构

数据读取

数据读取方式:

  1. 直接读取图像文件路径;
  2. pytorch张量:从torch.tensor中转换;
  3. numpy张量:从numpy.array中转换。

附:

  1. 张量的理解:一个多维数组,形成更高维度的矩阵、向量。
    参考:什么是张量(tensor)& 深度学习
  2. 仿射变换的理解:“线性变换”+“平移”
    参考:如何通俗地讲解「仿射变换」?
读取数据集

读取nii数据集示例

ScalarImage标量图像

  • 像素值代表标量
  • 无论是以何种方式读取,转换成ScalarImage后,需要从ScalarImage.data中获取图像实际矩阵的内容。
ScalarImage.affine

ScalarImage类封装的affine对象是一个4x4的仿射矩阵,表示从图像坐标转换成世界坐标的变换矩阵。

  1. 如果是从文件中读取ScalarImage,通常图像文件在获取时会包含这个affine矩阵;
  2. 如果是从tensor或array中转换,则affine矩阵默认会被置为4x4的单位阵。
举例
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))

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

LabelMap标签图像

  • 像素值代表分类标签
  1. 在分割任务中,通常ScalarImage和LabelMap是成对组成一个对象并进行预处理变换
  2. 所有强度变换对LabelMap均无效
  3. 对于插值操作,尽管在变换过程中用户可能指定其他插值方式,但对于LabelMap插值方式一定被置为最近邻插值
#定义一个布尔值张量
booltensor = torch.rand(1, 128, 128, 68) > 0.5
#从张量中创建
labels = tio.LabelMap(tensor=booltensor)
#实例的调用
labels.affine
labels.data

随机仿射变换

随机仿射变换命令解析

数据集

https://github.com/TorchIO-project/torchio-data

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值