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


  • 软件: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 增加图层。

    扫描二维码关注公众号,回复: 15708253 查看本文章
  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')

猜你喜欢

转载自blog.csdn.net/zea408497299/article/details/125251808