MRI多序列,多中心数据集预处理--使用FSL-Flirt 配准数据

Posted Tina姐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MRI多序列,多中心数据集预处理--使用FSL-Flirt 配准数据相关的知识,希望对你有一定的参考价值。

FLIRT(FMRIB 的线性图像配准工具)是用于线性(仿射)模态内和模态间脑图像配准的全自动稳健且准确的工具。

文章目录

什么是配准


在这两张图片上,很容易看出它们没有对齐,左边相对右边倾斜,虽然我们人类视觉系统还是能把对应的解剖关系连系在一起,但是我们使用计算机分析时确不能够

因此,我们希望相同的解剖结构对齐,用坐标表示的话,希望他们在相同的坐标上。如下图

对齐这些解剖结构的过程就叫做配准(register)

因此,配准的目的也是使相同的解剖结构在同一个位置,便于分析。可以将CT和MRI配准,看同一结构在两个模态上的变化,更易于疾病的诊断。同理PET-MRI等也可以进行配准。不同的MRI序列之间也可以配准。同一个MRI序列,前后做的两次图像也可以配准。等等。

注意,如果是配准脑部,最好先去头骨等组织。因为我们只希望配准脑组织,并不关心鼻子,眼睛是否配准,而他们会干扰配准的速度和准确性。可使用 fsl-bet去头骨

MRI数据预处理–使用FSL-BET轻松去头骨,提取脑组织

配准需要了解4个基本的概念:

  • image space(图像空间),
  • spatial transformation (空间变换),
  • cost functions(代价函数),
  • interpolation(插值)

接下来会简单了解4个概念,如果想直接上手,可以跳到后面

image space

图像空间包含3种:标准空间,结构空间,功能空间

每个空间又可以有不同的分辨率,比如标准空间模板MNI152,就有1mm,2mm,0.5mm的分辨率。

常用的标准空间(MNI152)模板在/usr/local/fsl/data/standard下,方便使用。

提供了各种分辨率,各种需求的模板。我们可以将自己的数据配准到标准空间上,作为预处理的一部分。

更多模板参考atlases

图像从一个空间到另一个空间的转换就叫空间变换。

空间变换

当我们进行配准时,必须要选择配准的空间变换方式,不同的方式,对大脑的形状和大小改变不一样。常用的有:

  • 刚体变换(Rigid-Body Transformations): 6个自由度(3转动,3平动)
  • 仿射变换(Affine Transformations): 12个自由度(3转动,3平动,3缩放, 3偏斜/剪切。
  • 非线性变换(Non-Linear Transformations):多于12个自由度
    这里的3是指有3个方向(x, y, z)

cost functions

cost functions,即代价函数用于评判配准的好坏。

  • correlation ratio(相关比):默认,常用于MRI模态之间
  • mutual information(互信息):常用于不同影像模态之间,如CT和MRI
  • least squares(最小二乘法):用于相同模态
  • normalized correlation(标准化相关):用于相同模态,改变亮度,对比度
  • normalized mutual information(标准化互信息):用于不同模态插值

fsl flirt 中的插值方法

  • trilinear(三线性插值):默认,快速
  • nearest neighbour(最近邻插值):用于离散化标签影像
  • spline(样条法):较慢,会产生范围外的值
  • sinc函数法

这4个概念会在配准的时候遇到,建议初步了解一下。

接下来我们开始配准


1.数据预处理

对图像进行一些初始处理有助于使 FSL 中的工作更加可靠和准确。

  • DICOM 数据转换为 NII 数据,可以使用工具:mricron/dicom2nii、freesurfer/mri_convert
  • 检查转换的数据是否良好,且不存在伪影。
  • 使用 fslreorient2std使图像的方向是一个标准方向
  • 对于结构数据,裁剪掉颈部和脑组织下面,可使用工具:robustfov(自动菜)或 fslroi(手动定位裁)
  • 大脑结构数据配准前,最后去颅骨(【添加链接】)
  • 采集数据注意事项:对于 T1w 结构,在 T1w 序列中有一些脂肪饱和度非常有帮助,以避免在分割和配准时将骨髓/脑膜误认为脑组织

数据预处理参考

这里我们学习使用FSL-Flirt配准,您可以使用图形界面,也可以使用命令行(MacOS 或 Ubuntu Linux 上的终端应用程序)。本操作指南假定您已安装 FSL。

【安装教程】

2.同一个患者不同序列之间的配准


现在讨论一个场景:我们有两个不同的图像,它们来自同一个患者,其中一个是t1加权图像,一个是t2加权图像,因此我们需要考虑如何设置配准参数

我们要使这两个序列的图像对齐,有两种方法。一个是把T2w配到T1w上(T1w作为参考图像,T2w作为输入图像);另一种就是反过来,T1w配到T2w.

一般原则是,把分辨率好的,对比度好的作为参考图像。

这个情况下,来自同一次检查的不同序列,可以视为一个刚体(rigid body), 因为病人只能够旋转和平移头部,这是几何上的唯一区别。

因此,我们可以选择刚体变换,6个自由度;代价函数可以选择 相关比或者互信息, 二者都适用于不同模态之间的转换。

  • 使用图像界面配准如下:

    先打开fsl > 点击B按钮,出现CD区,在C中输入 reference image(我的T2w对比度好些,用它做参考图像), DOF(自由度)选择刚体变换,6个自由度。设置输入输出图像地址。D区中的高级选项可以设置代价函数和插值方式,这里我用默认的就行。

  • 使用命令行

flirt [options] -in <inputvol> -ref <refvol> -out <outputvol>
flirt [options] -in <inputvol> -ref <refvol> -omat <outputmatrix>
flirt [options] -in <inputvol> -ref <refvol> -applyxfm -init <matrix> -out <outputvol>

这里提供了三种方式,终端输入 flirt 可以查看使用说明

我们首先使用第一种
flirt -in T1W_brain.nii.gz -ref T2W_brain.nii.gz -out register1.nii.gz -dof 6 -cost corratio

红色是配准后的T1w,和T2w还是没有对的很齐

我们这种从图像直接配准到参考空间,只需要一步配准,因此可以叫 single_stage registration(单阶段配准)。

对此,还有多阶段配准。

功能成像或扩散成像,然后我们也有一个特定的t1加权结构扫描主题,我们还需要将东西放入标准空间,因此我们现在有三个不同的空间,我们将进行多阶段配准,既可以在我们想要的任何空间组合之间移动,也可以让我们更好地配准

如图,我们先把epi功能像配到同一个病人的T1w上,只需要用自由度为6,线性配准进行,再把T1W配到标准空间。这时由于是不同个体,解剖差异较大,使用自由度12,非线性配准(FNIRT

为什么这么做?参考视频里的解释。(gzh)

3.把图像配到标准空间

我在使用多个数据集进行训练网络时,每个数据集都有不同的分辨率,大小。而我希望所有数据集都有相同的分辨率,并且可以指定它的分辨率应该怎么做?

比如brain MRI 数据集,有Brats(240x240x155), IXI(256x256xz,z=28-136), 这两个数据集要用在同一个网络训练,肯定要统一分辨率和大小。

最好的方法就是把他们配到同一个标准空间(如 MNI152)

配准方法同上面代码一样,只是把参考图像改为MNI152对应的分辨率(PS:官方只提供了3种分辨率,0.5mm, 1mm and 2mm).假设想要5mm的分辨率,那就把标准空间重采样到5mm(使用resample), 再配准。

flirt -in brats.nii.gz -ref MNI152_1mm_brain.nii.gz -out register.nii.gz -dof 12 -cost corratio
注意:MNI152_1mm_brain.nii.gz需要给对这个图像的地址(一般在/usr/local/fsl/data/standard),可以把他从原始库中拷贝到当前文件夹

这里还需要注意一点,我们把图像配准了,但是它的ground truth(标签)还是原来的分辨率,做分割的话,那就不对了。因此,ground truth也要配准。

而ground truth像图像那样配,多半是有问题的。因为它严格来说不是MRI图像。

推荐以下做法:

flirt -in brats.nii.gz -ref MNI152_T1_1mm_brain.nii.gz  -out brats_register.nii.gz -omat affine.mat
flirt -in brats_seg.nii.gz -ref MNI152_T1_1mm_brain.nii.gz -out seg_register.nii.gz -applyxfm -init affine.mat

大概意思就是获取图像配准的affine.mat矩阵,将它用于ground truth的配准。因为图像的配准就是根据这个仿射矩阵来的。有了仿射矩阵,就知道怎么变换了(不专业的理解,我也仅是用过,研究不深入)

配准是一个非常专业的领域,今天也只是讲了些可能跟我们平常使用MRI图像训练可能用到的配准需求。对于专业领域,还需要学习更多。

B站解释

fsl wiki

fsl tutorial

文章持续更新,可以关注微信公众号【医学图像人工智能实战营】获取最新动态,一个关注于医学图像处理领域前沿科技的公众号。坚持已实践为主,手把手带你做项目,打比赛,写论文。凡原创文章皆提供理论讲解,实验代码,实验数据。只有实践才能成长的更快,关注我们,一起学习进步~

我是Tina, 我们下篇博客见~

白天工作晚上写文,呕心沥血

觉得写的不错的话最后,求点赞,评论,收藏。或者一键三连

以上是关于MRI多序列,多中心数据集预处理--使用FSL-Flirt 配准数据的主要内容,如果未能解决你的问题,请参考以下文章

影像数据(CT & MRI)处理万能包使用指南--FSLutils宝典

介绍一款 MRI&CT 图像预处理强大工具--FSL

影像数据(CT & MRI)处理万能包使用指南--FSLutils宝典

如何为 LSTM 重塑数据 - 时间序列多类分类

图像分割基于FCM+KFCM MRI图像分割matlab源码含GUI

教你搭建多变量时间序列预测模型LSTM(附代码数据集)