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, 我们下篇博客见~
白天工作晚上写文,呕心沥血
觉得写的不错的话最后,求点赞,评论,收藏。或者一键三连
版权归原作者 Tina姐 所有, 如有侵权,请联系我们删除。