当前位置: 首页 > news >正文

TorchIO:超级好用的3D医学图像处理package

TorchIO 是一个非常重要的医学影像深度学习工具包,尤其在 MRI、CT、PET 等三维医学影像数据的预处理、增强和建模中应用广泛。它基于 PyTorch 构建,因此能无缝集成到你的神经网络训练流程中。

文章目录

    • 1. 基础信息介绍
    • 2. TorchIO 的主要功能模块
      • 2.1 图像加载与组织
      • 2.2 数据预处理
      • 2.3 数据增强
      • 2.4 数据加载与批处理
      • 2.5 Patch-based训练✨
    • 3. 安装与基本使用
    • 4. 数据增强使用场景
      • 4.1 CT
      • 4.2 MRI
      • 4.3 PET
      • 4.4 多模态策略(PET/CT或PET/MRI)

1. 基础信息介绍

TorchIO 是一个开源的 Python 库,专为 三维医学影像(3D medical imaging) 的预处理、数据增强(augmentation)和深度学习工作流程而设计。TorchIO 的设计理念是:

“让医学影像能像普通图像那样轻松被 PyTorch 使用。”

项目主页
👉 https://torchio.readthedocs.io
👉 GitHub: https://github.com/fepegar/torchio

2. TorchIO 的主要功能模块

2.1 图像加载与组织

  • 支持格式:NIFTI(.nii/.nii.gz格式),DICOM,Numpy等
  • 核心结构:
    torchio.Image表示单个影像通道(例如一张T1 MRI或PET)
    torchio.Subject表示一个完整的个体数据,可以包含多个模态影像数据和标签
import torchio as tio
subject = tio.Subject(t1=tio.ScalarImage('subj1_T1.nii.gz'),pet=tio.ScalarImage('subj1_PET.nii.gz'),label=tio.LabelMap('subj1_label.nii.gz')
)

2.2 数据预处理

TorchIO 支持一系列常见的医学影像预处理操作:

  • 重采样(Resample):统一体素大小
  • 归一化(ZNormalization, RescaleIntensity)
  • 裁剪或填充(CropOrPad, Pad, Crop)
  • 仿射对齐(Affine)
transform = tio.Compose([tio.Resample((1, 1, 1)),  # 重采样为1mm³体素tio.ZNormalization(),     # z-score标准化tio.CropOrPad((128, 128, 128))  # 统一尺寸
])
processed = transform(subject)

2.3 数据增强

TorchIO 支持各种空间变换与强度变换:

类型示例说明
空间变换RandomAffine,RandomElasticDeformation,RandomFlip随机旋转、弹性形变、翻转
强度变换RandomNoise, RandomBlur, RandomGamma, RandomBiasField模拟噪声、对比度变化
病灶模拟RandomSwap, RandomMotion, RandomSpike, RandomBiasField模拟病灶或扫描伪影
augmentation = tio.Compose([tio.RandomFlip(axes=(0,)),           # 左右翻转tio.RandomAffine(scales=(0.9, 1.1)), # 随机缩放tio.RandomNoise(std=0.01),           # 加噪声
])
augmented = augmentation(subject)

2.4 数据加载与批处理

TorchIO 能与 PyTorch 的 DataLoader 无缝衔接:

subjects = [subject1, subject2, subject3]
dataset = tio.SubjectsDataset(subjects, transform=augmentation)
loader = torch.utils.data.DataLoader(dataset, batch_size=2, shuffle=True)

2.5 Patch-based训练✨

医学影像通常非常大(512×512×512体素),直接输入模型显存会爆。TorchIO 提供 patch-based sampling 工具:

  • tio.data.GridSampler: 自动将3D图像分块
  • tio.data.GridAggregator: 把模型输出的patch拼回原图
sampler = tio.data.GridSampler(subject, patch_size=64)
aggregator = tio.data.GridAggregator(sampler)

→ 用于 patch-based segmentation 或 classification 模型的训练。

3. 安装与基本使用

  • 安装
pip install torchio
  • 测试
import torchio as tio
print(tio.__version__)

基本操作

t1 = tio.ScalarImage('t1.nii.gz')
pet = tio.ScalarImage('pet.nii.gz')
subject = tio.Subject(t1=t1, pet=pet)

4. 数据增强使用场景

模态成像机制增强重点不宜操作
CT组织密度 → 灰度线性关系明显空间变换 + 轻度噪声/伽马调整不能大幅更改强度范围(HU值)
MRIT1/T2等加权,强度非线性空间形变 + 偏置场 + 对比度变化不能直接线性归一化到0–1
PET(如PSMA PET/CT)放射性浓度定量(SUV)保留SUV相对比例 + 噪声增强禁止大幅伽马或bias变换

4.1 CT

增强类型TorchIO 方法说明
空间翻转RandomFlip模拟左右或前后位置差异
仿射变换RandomAffine轻度旋转与缩放
弹性形变RandomElasticDeformation模拟组织弹性差异
噪声增强RandomNoise模拟扫描噪声
对比度增强RandomGamma模拟CT窗宽窗位变化
ct_transform = tio.Compose([tio.RandomFlip(axes=(0, 1)),tio.RandomAffine(scales=(0.9, 1.1), degrees=5),tio.RandomElasticDeformation(max_displacement=4),tio.RandomNoise(std=0.01),tio.RandomGamma(log_gamma=(-0.3, 0.3)),
])

4.2 MRI

增强类型TorchIO 方法说明
空间翻转RandomFlip模拟扫描体位差
仿射变换RandomAffine模拟姿势变化
弹性形变RandomElasticDeformation模拟软组织弹性差
偏置场RandomBiasField模拟MRI强度不均
对比度变化RandomGamma模拟T1/T2扫描差异
噪声RandomNoise模拟设备噪声
运动伪影RandomMotion模拟扫描中头动/体动
模糊伪影RandomBlur模拟低分辨率扫描
mri_transform = tio.Compose([tio.RandomFlip(axes=(0, 1)),tio.RandomAffine(scales=(0.9, 1.1), degrees=10),tio.RandomElasticDeformation(max_displacement=5),tio.RandomBiasField(coefficients=0.3),tio.RandomGamma(log_gamma=(-0.4, 0.4)),tio.RandomNoise(std=0.02),tio.RandomMotion(degrees=5, translation=3),tio.RandomBlur(std=(0, 1)),
])

4.3 PET

增强类型TorchIO 方法说明
空间翻转RandomFlip模拟扫描方向变化
仿射变换RandomAffine模拟轻微配准误差
噪声RandomNoise模拟低统计计数噪声
模糊RandomBlur模拟分辨率差
强度缩放RescaleIntensity归一化SUV值
对比度轻度调整RandomGamma小幅增强对比
弹性形变RandomElasticDeformation模拟小尺度器官位移
pet_transform = tio.Compose([tio.RescaleIntensity(out_min_max=(0, 1)),tio.RandomFlip(axes=(0, 1)),tio.RandomAffine(scales=(0.95, 1.05), degrees=5),tio.RandomElasticDeformation(max_displacement=2),tio.RandomNoise(std=0.03),tio.RandomBlur(std=(0, 1)),tio.RandomGamma(log_gamma=(-0.2, 0.2)),
])

💡 PET增强注意事项:

  • 不能使用 RandomBiasField(会破坏SUV定量)
  • 不建议使用强烈的 RandomGamma 或大范围 Affine
  • 若模型以SUV特征为输入,应保持线性关系(建议仅用噪声、模糊类)

4.4 多模态策略(PET/CT或PET/MRI)

可以使用联合空间增强,模态独立强度增强

shared_spatial = tio.Compose([tio.RandomFlip(axes=(0, 1)),tio.RandomAffine(scales=(0.95, 1.05), degrees=5),tio.RandomElasticDeformation(max_displacement=3),
])
pet_only = tio.Compose([tio.RandomNoise(std=0.03),tio.RandomBlur(std=(0, 1)),
])
mri_only = tio.Compose([tio.RandomBiasField(coefficients=0.3),tio.RandomGamma(log_gamma=(-0.4, 0.4)),
])
ct_only = tio.Compose([tio.RandomGamma(log_gamma=(-0.3, 0.3)),tio.RandomNoise(std=0.01),
])subject_transform = tio.Compose([shared_spatial,tio.OneOf({pet_only: 0.4, mri_only: 0.4, ct_only: 0.2}),
])
http://www.dtcms.com/a/546734.html

相关文章:

  • 大规模微服务系统中的雪崩故障防治
  • wordpress图下一篇seo关键词搜索和优化
  • 【序章】金融量化入门级学习——暨一颗韭菜的茁壮成长
  • 网站搭建哪家好网络营销出来做什么
  • express风格的mcpServer
  • 吴江城乡住房和城乡建设局网站wordpress 打开慢
  • 北京做家教的的网站网站建设费用属于管理费用科目
  • 凉州区住房城乡建设局网站云南住房和城乡建设厅网站首页
  • Auto CAD二次开发——多边形多段线
  • 怎么用腾讯云主机建设网站网站配置域名解析
  • PCIe 5.0 SSD相比PCIe 4.0,体验提升明显吗?Kingston FURY Renegade G5
  • 3.3V系统电源自动切换方案全解析:从二极管到三电源无缝切换
  • 怎样建设旅游网站重庆北碚网站制作
  • 网站代码模板免费嵌入式软件开发和c++软件开发
  • 重庆做网站建设哪家好印度搜索引擎 龙之向导
  • 如何看到网站的制作公司把wordpress变成图床
  • 泉州住房与城乡建设网站帮企业做网站赚钱吗
  • 根据三阶Bezier曲线起点到中间某点的弧长,确定该点的参数u值的方法
  • 网络用户管理系统在线优化网站
  • wordpress站点改名wordpress做社交网站
  • 网站开发协议合作台州网站制作定制
  • 最新网站建设软件搜索引擎营销的缺点
  • 4d网站广告图用什么做的多用户购物商城源码
  • 网站建设需要的公司网页升级紧急通知狼人
  • 莱芜专业做网站的深圳营销网站建设报价
  • 绿联NAS怎么部署Gitlab或Gitea?
  • 个人电脑做网站服务器网站模板网站建站哪家好
  • 色彩 导航网站九千营销工作室介绍
  • 湛江市微信网站建设企业注册资金多少有什么利弊
  • 文山网站开发wordpress 添加语言