FSL处理DTI数据详细流程

18 篇文章 1 订阅
10 篇文章 0 订阅
本文档详述了使用FSL处理扩散张量成像(DTI)数据的完整流程,包括格式转换、b0图像提取、脑提取(BET)以及涡流矫正(eddy)。介绍了每个步骤的命令行用法,如dcm2nii、fslroi、bet2和eddy,以及在处理过程中需要注意的参数设置。最后,提到了张量计算的dtifit命令和输出结果。
摘要由CSDN通过智能技术生成


前言

      最近在学习FSL处理DTI数据,发现网上的几篇博客都写的不太完整,也不太具体。自己花了好几天时间看了FSL的官方指导,才有了一个完整的处理流程方法


一、格式转换和提取b0图像

1.格式转换:
      将后缀名为dcm的原始数据转换为后缀名为nii.gz格式的数据。nii.gz格式的数据不损失原始数据信息,并且能节省大量空间。FSL能够处理的是nii.gz格式的数据。

命令:

dcm2nii *.dcm

   
   
  • 1

生成nii.gz文件,此外还会生成两个文本文件,分别表示磁场梯度施加的强度和方向,这两个文件分别为 .bval 和 .bvec


比如我处理这个数据,bval共1行36列,表示总共采集了36个图像,第1个图像的b-value是 0,后面图像的b-value有1000和2

在这里插入图片描述
.bvec共有3行36列,表示在每个图像上所施加的梯度方向


2.提取b0图像
需处理的文件为:.nii.gz格式的DTI数据
命令:

fslroi dti_data.nii.gz b0.nii.gz 0 1

   
   
  • 1

后面的0 1代表从0个图像开始,提取出1张
所以输出文件:b0.nii.gz,包含了第一张图像b值为0的图像


二、脑提取BET

脑提取的目的就是为了获得一个去除颅骨后脑的掩模
基本用法是:
bet [options]
-o 生成覆盖在原始图像上的脑表面轮廓
-m 生成二进制脑掩码
-S 生成粗糙的头骨图像
-n 不生成默认的脑图像输出
-f 分数强度阈值(0,1);默认为0.5;较小的值给出更大的脑轮廓估计
-g 分数强度阈值的垂直梯度(-1,1);默认为0;正值在底部给出更大的
脑轮廓,在顶部给出更小的脑轮廓。
-r 头部半径(毫米)
-c 初始网格表面的重心(体素)。
-t 分割的脑图像和掩模中的应用阈值
-e 以.vtk格式生成大脑表面
-R 该选项运行更“稳健”的大脑中心估计;反复调用BET,每次使用相同的输入图像和相同的主要选项,但-c选项(设置大脑估计的起始中心)每次都被设置为先前估计的大脑提取的重心。通过这样的迭代,重心每次都应该上升到真正的中心,从而得到一个更好的最终估计。
-S 清除残留的眼睛和视神经体素,在运行Siena或SIENAX时有用
-B 减少图像的偏倚,和残留的颈部体素,在运行Siena或SIENAX时有用
-Z 如果数据中只有几个切片,这可以改善大脑的提取。这是通过在两个方向填充结束切片,多次 复制结束切片,运行bet2,然后删除添加的切片来实现的。
-F 这主要用于fMRI数据,例如移除眼球。使用Bet2根据4D数据集中的第一个卷确定大脑掩膜,并将其应用于整个数据集。
-A2 还将t2注册到t1输入图像


命令:

bet2 b0.nii.gz b0_brain.nii.gz -R -m -f 0.3

   
   
  • 1

经过我测试-f设为0.3比较好,0.5有点把脑组织也剥了
在这里插入图片描述

输出:去除颅骨后脑图像b0_brain.nii.gz和掩码b0_brain_mask.nii.gz


三、涡流矫正eddy

     纠正涡流引起的扭曲和主体的运动,它可以处理比eddy_correct(早期版本)更高的b值数据

–imain一个图像文件。
–mask用1和0指定大脑(1)和非大脑(0)的单个卷图像文件。通过在第一个b=0的图像上运行BET获得。
–acqp描述imain中不同图像的采集参数的文本文件
–index一个文本文件,它决定acqp和imain两者之间的关系
–bvecs描述扩散加权的方向的文本文件。
–bvals具有b-values的文本文件
–repol 删除任何被认为是异常值的切片,并用高斯过程的预测来替换它们。默认情况下不做异常值替换。
–topup 运行topup的——out参数。
–field 运行topup的——fout参数。

–acqp
acqp用来告诉eddy什么方向的畸变可能进入。
每行首先由一个向量(三个值)组成,它指定相位编码(PE)轴是什么,以及沿着该轴意味着更高频率的方向。比如向量[0 1 0]和[0 -1 0]暗示PE是沿y方向
(0 1 0)表明以更高的频率向着更高的位置 (即正向信号)
(0 -1 0)表明以更低的频率向着更高的位置 (即负面信号)
每行中的第四个元素是从读取第一个echo的中心到读取最后一个echo的中心之间的时间(以秒为单位)。
根据官方文档,他告诉我们如果没有扫描仪制造商足够的经验,使用中几乎不需要去设置真的该参数,只需要对topup和eddy使用相同的文件:
Does the brain jump up and down?使用
0 1 0 0.05
0 -1 0 0.05
Does the brain bounce from side to side? 使用
1 0 0 0.05
-1 0 0 0.05

-topup
对于两个不同的获取,b=0扫描的形状是不同的。使用topup来计算磁化引起的非共振场(the susceptibility induced off-resonance field),然后将结果场将应用于所有图像。
通常输入的图像是从原始b=0和扩散加权图像组合中提取一组b=0的扫描。

-index
它决定acqp和imain两者之间的关系
acqp只有1行 0 1 0 0.05

所以我用以下代码生成index

indx="" 
for ((i=1; i<=36; i+=1)) do 
indx="$indx 1"; done 
echo $indx > index.txt

   
   
  • 1
  • 2
  • 3
  • 4

最后的命令:

eddy_openmp       --imain=dti_data.nii.gz 
                  --mask=b0_brain_mask.nii.gz
                  --acqp=acqparams.txt 
                  --index=index.txt 
                  --bvecs=bvec 
                  --bvals=bval 
                  --out=eddy_corrected_data

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

四、张量计算

输入:
-k,–data dti 数据
-o,–out 输出的名字
-m,–mask BET二进制掩码文件
-r,–bvecs b vectors file
-b,–bvals b values file
其他选项:
–sse 输出误差的平方和
-w,–wls 用加权最小二乘法拟合张量
–kurt 输出平均峰度图
–kurtdir 输出平行/垂直峰度图


输出:
• _V1 - 1st eigenvector第一特征向量
• _V2 - 2nd eigenvector
• _V3 - 3rd eigenvector
• _L1 - 1st eigenvalue第一特征值
• _L2 - 2nd eigenvalue
• _L3 - 3rd eigenvalue
• _MD - mean diffusivity平均扩散率
• _FA - fractional anisotropy 分数各向异性
• _MO - mode of the anisotropy (oblate ~ -1; isotropic ~ 0; prolate ~ 1) 各向异性的模式(扁形~ -1;各向同性~ 0;扁长的~ 1)
• _S0 - raw T2 signal with no diffusion weighting无扩散加权的原始T2信号
在这里插入图片描述

写出的命令

dtifit 
--data=eddy_corrected_data.nii.gz 
--out=dti
--mask=b0_brain_mask.nii.gz 
--bvecs=bvec --bvals=bval

   
   
  • 1
  • 2
  • 3
  • 4
  • 5

总结

以上就是我的整个处理流程,以后有后续再补充

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值