当前位置: 代码迷 >> 综合 >> DWI_preprocessing DTI_reduce commands
  详细解决方案

DWI_preprocessing DTI_reduce commands

热度:68   发布时间:2023-12-28 04:48:49.0

文章目录

  • 数据预处理
    • BET
  • 弥散像数据处理
  • whole brain tractography
  • 补充:关于gcc版本切换

官方教程链接: https://fsl.fmrib.ox.ac.uk/fslcourse/online_materials.html
用户指导:
https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FDT/UserGuide
关于DTI的处理正好是以下目录中的,可以看到先check data,然后有一个扭曲矫正(是因为DWI数据存在失真现象)
在这里插入图片描述
运行命令的pipeline:
https://git.fmrib.ox.ac.uk/falmagro/UK_biobank_pipeline_v_1/-/tree/master
直接点击Fork就行,但是这个pipeline里的环境、文件命名方式,得自己改。如果只是拿一两个数据进行测验的话,就用命令行处理就行,一两个数据命令行处理还是很舒服的,以下是命令行进行处理的方法。

数据预处理

BET

在进行图像格式转化后,有bvecs和bvals文件(注意:得到是xxx.bvec和xxx.bval,要将这两文件改名为bvecs和bvals)我这里命名dwi_data.nii.gz。其中bval表示施加的强度,bvals文件一共就一行,有多少个数字就表示采集了多少张图片,这里是35张。第一个b-val是0,就施加的强度为0:
在这里插入图片描述
这是bvec文件,表示施加的方向,我这里一共是3*35,猜测是往x y z 三个方向施加场强,每次施加场强的这三个方向进行记录:
在这里插入图片描述

弥散像数据处理

注:-force表示强制覆盖重名文件,除此之外无其它作用。
1、将数据转化为MRtrix建议的文件格式:.mif。.mif是将.nii bval
bvec三个文件组合而成的新的文件格式,将.nii转化为.mif格式。使用mrinfo命令可以查看二者的区别:

生成mask

dwi2mask dwi.mif - | maskfilter - dilate preproc_mask.mif -npass 3 -force

这个命令是两个命令的结合,dwi2mask和maskfillter,第一个 – 表示第一个输出,| 将两个命令分割开, - 表示第一个的输出作为第二个命令的输入。
生成的preproc_mask.mif文件:

3、因为原始DWI数据具有噪声和失真现象,需要进行降噪处理,这里的处理需要使用上面生成的掩膜文件:

dwidenoise dwi.mif denoise.mif -noise noiselevel.mif -mask preproc_mask.mif -force

输入文件:dwi.mif -mask preproc_mask.mif
输出文件:denoise.mif -noise noiselevel.mif
其中输出文件,我们只需要看denoise.mif就可以,而noiselevel.mif文件只是为了看到底降噪进行降噪了什么东西。
生成的文件:
denoise.mif:

noiselevel.mif:

4、(gibbs)伪影矫正/去除伪影
例子:下图第一行是原始数据,第二行是进行过gibbs伪影矫正。相关论文:
Kellner, E., Dhital, B., Kiselev, V. G., & Reisert, M. (2016). Gibbs-ringing artifact removal based on local subvoxel-shifts. Magnetic Resonance in Medicine, 76(5), 1574–1581. https://doi.org/10.1002/mrm.26054

命令

mrdegibbs denoise.mif degibbs.mif -force

输入文件:denoise.mif
输出文件:degibbs.mif
degibbs.mif:

5、这里使用的是eddy_correct进行涡流矫正,具体命令为:

eddy_correct degibbs.nii.gz eddy_unwarped_images.nii.gz 0

输入文件:原始的dwi文件
输出文件:eddy_unwarped_images.nii.gz

6、将eddy_unwarped_images.nii.gz转为data.mif

mrconvert -fslgrad 02.bvec 02.bval eddy_unwarped_images.nii.gz data.mif -force

7、dwi在脑成像数据收集时会遇到biasfiled, 是低频的、不均匀的场,即:

需要做biascorrect,也是为了后面得出的结果更准确。
命令:

dwibiascorrect ants degibbs.mif biascorr.mif -bias biasfiled.mif -force

dwibiascorrect提供了两种算法:ants和fsl

为了得到更好的结果一般选择ants的算法
输入文件:degibbs.mif
输出文件:biascorr.mif
biasfiled 长什么样子:biasfiled.mif
到此弥散像的处理已经完成
三、配准
注:
aparc.2009是freesurfer里的分区,只要是在同一个空间下,使用aparc.2009生成白质纤维束和使用AAL2模板做脑网络是没问题的。

1、将弥散像配准到结构像上:
空间配准:就是把来源不同的像匹配到一起。就好比我们有一组受试者,这组受试者每个人的大脑结构都是不同的,需要去比较他们组之间的一些水平,把功能像/弥散像配准到各自的结构像,结构像配准到标准空间,这样每个不同的大脑都在同一个空间下,就可以做平均或者比较;或者是有一个基于MNI空间的atlas,想利用里面的ROI,可是处理数据的流程都是在个体空间完成的,这时通过空间配准的方法计算MNI空间到个体空间的转化,然后将这个转化矩阵应用到atlas上面,就会得到一个基于个体空间的atlas
配准分类两种:
1、线性配准(linear / affine):四种类型(平移 旋转 缩放 shear(扭曲?)),每个类型都有3个维度即x,t,z。所以线性配准是一个长度为12的矩阵,每个体素都会应用到这个上面。线性配准主要是同一个受试者不同的像配准,比如fMRI配准到T1W -dof 6
2、非线性配准:配准不同空间的像,每个体素都有自己的转化方式,即非线性配准的变化不是一个矩阵而是一个类似于结构图的.nii.gz格式 -dof 7/9/12
学习ants进行配准:ants不同命令的算法不同,同时ants也得过多种比赛的奖,配准效果上要比flirt要好一些。
附:我们是将MNI空间配准到受试者空间,所以不动(-f)的是受试者的结构像,需要去转化去移动(-m)的是MNI空间下的模板。
命令:antsRegistrationSyN.sh 运行时间比较长,工作站上需要运行好几个小时

命令:

antsRegistrationSyN.sh -d 3 -f 02-T1w.nii.gz -m b0.nii -t r -o antsConvertTransformFile 3 ants0GenericAffine.mat ants0GenericAffine.txttransformconvert ants0GenericAffine.txt itk_import dwi2anatalign_mrtrix.txt -forcemrtransform -linear dwi2anatalign_mrtrix.txt biascorr.mif align.mif $common -force

这时得到的align.mif就是配准好的图像,查看方法:mrview->File->02-T1w.nii.gz tool->overlay->file->align.mif

2、recon-all 命令 需要运行好几个小时,不过不用担心,clinica的t1-freesurfer命令就是recon-all,直接将CAPS/subjects/…/recon-all文件copy过来就可以,大概这么多文件:

3、5ttsegmentation,5tt:5种组织:皮层灰质,皮层下灰质(丘脑),白质,脑脊液,病理组织 这步是为了给做白质纤维束提供信息。
命令:

Mrconvert recon-all/mri/aparc.a2009s+aseg.mgz aparc.a2009s+aseg.nii.gz5ttgen freesurfer aparc.a2009s+aseg.nii.gz 5ttseg.mif -force5tt2gmwmi 5ttseg.mif 5tt_gmwmi.mif -force

四、DTI
1、首先生成弥散张量图像

dwi2mask align.mif - | maskfilter - dilate dwi_mask.mif -forcedwi2tensor -mask dwi_mask.mif align.mif dt.mif -force

2、计算FA的值

tensor2metric dt.mif -fa dt_fa.mif -ad dt_ad.mif -force

3、计算CSD
constrained spherical deconvolution (CSD)

dwi2response msmt_5tt align.mif 5ttseg.mif ms_5tt_wm.txt ms_5tt_gm.txt ms_5tt_csf.txt -voxels ms_5tt_voxels.mif -force

4、计算FOD

dwi2fod msmt_csd align.mif \ms_5tt_wm.txt dwi_wmCsd.mif \ms_5tt_gm.txt dwi_gmCsd.mif \ms_5tt_csf.txt dwi_csfCsd.mif -force

5、生成白质纤维束追踪

mrthreshold -abs 0.2 dt_fa.mif - | mrcalc - dwi_mask.mif -mult dwi_wmMask.mif -force

全脑追踪命令

whole brain tractography

tckgen -algo iFOD2 -act 5ttseg.mif -backtrack -crop_at_gmwmi \-cutoff 0.05 -angle 45 -minlength 20 -maxlength 200 \-seed_image dwi_wmMask.mif -select 200k \dwi_wmCsd.mif \fibs_200k_angle45_maxlen200_act.tck

在这里插入图片描述

补充:关于gcc版本切换

ubuntu自带的是7.5.0版本的gcc和g++,但有的时候有些软件需要5.0版本的gcc和g++,这里提供一个7.5.0版本和5.0版本之间进行切换的办法。

# 查看gcc和g++版本
gcc --version
g++ --version# 安装5.0版本的gcc和g++ 
sudo apt-get install gcc-5 g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7
# 选择gcc版本
sudo update-alternatives --config gcc