EPI distortion correction形变矫正, eddy, fieldmap等五种不同方法

本文介绍了EPI畸变矫正的五种方法,包括使用topup+eddy、fieldmap+eddy、fieldmap+fugue、fieldmap+epi_reg等,这些方法常用于fMRI和dMRI数据的预处理,以消除由于EPI成像方式产生的畸变,确保后续数据分析的准确性。文章详细阐述了每个步骤的关键点,并提到了常用的软件工具如ANTs、FSL和MRtrix3。
摘要由CSDN通过智能技术生成

在快速采集功能核磁共振(fMRI,functional MRI)和弥散核磁共振(dMRI,diffusion MRI)数据时,EPI成像方式使得数据中存在很大的畸变。这种畸变使得额叶、颞叶位置和真实大脑差异巨大,因而无法进行后续的跨模态配准。例如,将dMRI数据中的b0配准到T1项。
因此,在传统的数据预处理流程中,无论是基于PANDA的临床低精度数据预处理流程,还是基于HCP的HARDI高精度数据预处理流程,形变矫正都是一个关键的步骤,决定着后续的数据分析任务的可靠度。

在这里插入图片描述
Fig.1 Distortion correction (eddy) & Coregistration steps

在本文档,将主要介绍EPI数据,也就是fMRI和dMRI的数据的形变矫正(Distortion correction)五种不同的方法。采用这五种方法,基本上可以处理当前在临床和科研场景中绝大多数的数据。本文档将分散于网络各处的文字汇总,并抽取关键的步骤,使得新手可以快速参考上手。

主要使用的软件有ANTs,FSL,MRtrix3

1 topup + eddy

topup+eddy是HCP处理流程中的一个标准步骤。在采集dMRI数据时,需要同时采集两个phase-encoding方向的数据。如Fig.1中的标为AP和PA都图片所示,可以明显发现,AP方向的数据额叶位置被拉长,而PA方向的数据额叶位置被压进去,表现为一个凹陷。

echo "Topuping  $1 data ..."
printf "0 -1 0 0.07176\n0 1 0 0.07176" > $dwi_dir/acqparams.txt
topup --imain=$dwi_dir/ap_pa_b0_mean.nii.gz --datain=$dwi_dir/acqparams.txt --config=b02b0.cnf --out=$dwi_dir/topup_results --iout=$dwi_dir/b0

利用AP和PA数据,topup可以估计出dMRI数据的distortion形变场,为–out的输出,以topup_results为前缀的fieldmap。在上述代码中,0 0.07176是total readout time,它是通过Echo_spacing和EPI-factor计算得到的,具体计算公式为:在这里插入图片描述
然后eddy利用topup生成的fieldmap,作为参数–topup,就可以将被拉长或者凹进去的数据恢复成正常的大脑形状,变得更加圆润和饱满。在下面的代码中,使用的是cuda版本的eddy,能显著加速计算过程。结果如Fig.1所示。

echo "Eddy  $1 data ..."

b_num=`cat bval | wc -w`        
indx=""
for ((iii=1; iii<=$b_num; iii+=1)); 
do 
   indx="$indx 1"; 
done
echo $indx > $dwi_dir/index.txt

eddy_cuda --imain=$dwi_dir/ap.nii.gz --mask=$dwi_dir/mask.nii.gz --acqp=$dwi_dir/acqparams.txt --index=$dwi_dir/index.txt --bvecs=bvec --bvals=bval --topup=$dwi_dir/topup_results --out=$dwi_dir/dwi --repol --data_is_shelled #  --flm=quadratic --mporder=6 --slspec=slspec.txt --s2v_niter=5 --s2v_lambda=1 --s2v_interp=trilinear

在上面生成acqparams.txt的代码中,还需要注意的是0 -1 0中的-1,通常它代表的是在AP方向采集到的数据,而1代表的是PA方向的数据。如果采集到的是其它方向的数据建议阅读FSL的官方文档。
扩展阅读
FSL: topup
FSL:topup-userguide
FSL:eddy
FSL:eddy-userguide

2 fieldmap + eddy

除了可以使用第一种topup方法,eddy还可以使用采集到的fieldmap,做distortion correction。在使用fieldmap前,需要对fieldmap做预处理。在这里,除了dMRI数据以外,还需要同时采集到magnitude数据(mag.nii.gz)和phase数据(phase.nii.gz)。

2.1 对mag做去脑壳

mrconvert mag.nii.gz -coord 3 0 -axes 0,1,2 mag_1volume.nii.gz
bet mag_1volume.nii.gz mag_1volume_bet.nii.gz -R -f 0.2 -m

注:

  1. 在此,mrconvert是MRtrix3库函数,本行代码含义为提取第一个volume。在此步骤,使用fslmaths也可以实现相同功能
  2. 在去脑壳前,mag.nii.gz有两个volume,如果有较大的运动,则需要对mag.nii.gz的两个volumes做一次刚性配准,对齐大脑。

2.2 基于去过脑壳的mag_1volume_bet.nii.gz数据,对fieldmap进行预处理

fsl_prepare_fieldmap SIEMENS phase.nii.gz mag_1volume_bet.nii.gz fieldmap.nii.gz 7.38 
fslmaths fieldmap.nii.gz -div 6.28318 fieldmap_hz.nii.gz -odt float

注:
1.fsl_prepare_fieldmap仅支持SIEMENS采集的数据,单位为rad/s。其他机器型号的处理方式详见官方文档(https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FUGUE/Guide
2. 7.38是回拨时间差(echo time difference),从操作员可以获得此项数据
3. 在eddy中,供使用的fieldmap单位为Hz,需要根据情况进行修正:fsl_prepare_fieldmap生成的fieldmap单位为rad/s,需转换成Hz。公式如下:1 rad/s= 1 /2π Hz

3 fieldmap + fugue

3.1 fieldmap进行预处理
基本上和2.2类似,但由于在fugue中fieldmap单位为rad/s,不需要将其单位从rad/s转为Hz。
3.2 利用fugue完成校正

fugue -i hardi_PA.nii.gz --dwell=0.00069 --loadfmap=fieldmap -u fugue_test.nii.gz

注:
dwell是回拨间隔(echo spacing),且以秒为单位,一般数据记录以ms为单位。如果写错,则报如下错信息:
#ERROR:: dwell time should be in seconds but the value of 0.69is unusually large and maybe incorrectly specified in units of milliseconds.

4 fieldmap + epi_reg

4.1 fieldmap进行预处理
epi_reg 也需要rad/s为单位的,所以喝3.1,2.2类似
4.2 利用epi_reg完成校正

epi_reg --echospacing=0.00095 --wmseg=t1_wmseg.nii.gz --fmap=field_maps_rad.nii.gz --fmapmag=mag_single.nii.gz --fmapmagbrain=mag_brain_single.nii.gz --pedir=y  --epi=b0.nii.gz --t1=t1.nii.gz --t1brain=t1_brain.nii.gz --out=dwi_epi_reg
5. 非线性配准

5 非线性配准

To be continued.

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值