栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【影像组学】基于 atlas 感兴趣区提取 (3D slicer)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【影像组学】基于 atlas 感兴趣区提取 (3D slicer)

文章目录
  • 1、加载配准模块(新安装时)
  • 2、导入数据
  • 3、配准
  • 4、提取感兴趣区
  • 5、用 Python 挑选脑区


  • 软件:3D slicer 不好用,但支持 Windows。(好用的软件只支持 Linux 或 MacOS,如 FSL,配准效果更好,且是文章中用到的主流软件)
1、加载配准模块(新安装时)

View → extension manager → install extensions → 搜索 registration → 选择 SlicerElastix 安装(凌晨下载快)。

2、导入数据

DATA → Choose Files to Add → 选择文件(如图) → 勾选 Show Options,对 atlas 模板文件勾选 Labal Map,Centered 也都勾上,否则对不准。
◆ atlas 模板:HarvardOxford-cort-maxprob-thr50-2mm.nii
◆ 标准图像:mni152.nii.gz,与 atlas 模板相匹配
◆ 个体影像:BraTS19_TCIA10_106_1_t1.nii.gz


3、配准
  1. 切换模块:Welcome to Slicer → Registration → General Registration (Elastix)

  2. 设置参数:
    Fixed volume: MNI152(标准文件)
    Moving volume: BraTS19_TCIA10_106_1_t1 (个体影像文件)
    Output volume: BraTS19_TCIA10_106_1_t1(个体影像文件)

  3. Apply 开始配准,配准完成后,右侧图像显示个体图像和标准图像匹配成功。

  4. 保存配准文件:SAVE → 只保存配准后的个体文件(修改文件名,后加_reg)

  5. 查看配准文件:将配准后的个体文件载入 MRIcroGL,Add Overlay 加入 atlas 模板,可看到各脑区与模板对应上了。

4、提取感兴趣区
  1. 3Dslicer 中选择另一个模块 Segmentation → Segment Editor 对 atlas 文件操作。

  2. Master volume 选 HarvardOxford-cort-maxprob-thr50-2mm, 点 Add 增加图层。

  3. 点击 Threshold 图标,Threshold Range 填写要挑选的脑区,如 30(左上限,右下限都填 30),此时右边所选脑区闪烁,Apply。

  4. 保存:SAVE → 选择 Segmentation.seg.nrrd 文件保存。

  5. 查看:载入 MRIcroGL,Add Overlay 加入 Segmentation.seg.nrrd。

5、用 Python 挑选脑区
  • 配准也可以用 python 实现,但需要在 linux 或 Mac 系统实现。
import SimpleITK as sitk

maskFilePath = 'C:/Users/HUAWEI/Desktop/file3/HarvardOxford-cort-maxprob-thr50-2mm.nii'
reader = sitk.ImageFileReader()
reader.SetFileName(maskFilePath)
mask = reader.Execute()
size = mask.GetSize()  # order: x, y,z 像素点的个数
origin = mask.GetOrigin()  # order: x, y,z
spacing = mask.GetSpacing()  # order:x, y,z
direction = mask.GetDirection()  # order: x,y,z

maskArr = sitk.GetArrayFromImage(mask)  # order:z,y,x  从影响上得到矩阵(顺序与其他不一样)
maskArr_new = maskArr
maskArr_new[maskArr != 31] = 0
maskArr_new[maskArr == 31] = 1   # 只显示 31 脑区

# 提取新 mask 的矩阵
mask_new = sitk.GetImageFromArray(maskArr_new)
# 设置新 mask 的参数
mask_new.SetDirection(direction)
mask_new.SetSpacing(spacing)
mask_new.SetOrigin(origin)
# 保存 mask 文件
sitk.WriteImage(mask_new, 'C:/Users/HUAWEI/Desktop/file3/mask_new.nii.gz')
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/969340.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号