DTI及MRI数据预处理

一 处理步骤
因为我多了一个去除小脑的步骤所以,首先有两个模板文件:
标准化空间模板是FSL自带的,在其安装路径中
标准小脑mask模板是需要软件wfu pickaltas,里面可以找到各种脑影像模板

ref="/home/wangcong/software/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz" # 标准化空间模板
mask_ref="/home/wangcong/ADNI_data/model/cerebellar_mask.nii" #标准小脑mask模板

这里主要介绍DTI的处理。MRI的处理包含在其中了
1)dcm转Nii
dcm2nii -o $temp_dti $input_dti #dcm转Nii格式,输出到temp_dti

2)涡流矫正

                cd $temp_dti		
                raw_dti=`ls *.nii.gz` 
                bval=`ls *.bval`
                bvec=`ls *.bvec`
                echo "涡流矫正"
                eddy_dti="eddy_dti"
                eddy_correct $raw_dti $eddy_dti 0  #涡流矫正

3)提取b0

echo "提取b0图像"
b0="b0"
fslroi $raw_dti $b0 0 1  #提取b0图像

4)提出大脑

echo "提取大脑mask"
brain_dti="brain_dti" 
bet ${b0}.nii.gz $brain_dti -m -R  #提取大脑mask

5)拟合张量

                fit_dit="fit_dti"
                mask_dti=${brain_dti}_mask
                dtifit -k ${eddy_dti}.nii.gz -m ${mask_dti}.nii.gz -r $bvec -b $bval -o $fit_dit #拟合张量

                md_dti=${fit_dit}_MD.nii.gz #DTI数据的MD文件

6)空间标准化

                echo "空间标准化"
                norm_dti="norm_dti"
                flirt -in $md_dti -ref $ref -out $norm_dti  #标准化

7)配准到对应MRI

                echo "配准到相应MRI"
                reg_to_mri='reg_to_mri'
                flirt -in ${norm_dti}.nii.gz -ref $temp_mri/${norm_mri}.nii.gz -out $reg_to_mri

8)移除小脑

                echo "移除小脑"
                cere_dti="nocere_dti"
                fslmaths ${reg_to_mri}.nii.gz -mul $mask_ref $cere_dti  #移除小脑

9)提取ROI
去除旁边的黑色像素
x轴:20-140
y轴:10-180
z轴:5-150

                echo "提取ROI"
                roi_dti="roi_dti"
                fslroi ${cere_dti}.nii.gz $roi_dti 20 140 10 180 5 150
                echo "DTI复制转移"

所有代码包括了MRI和DTI的处理

#!/bin/bash

ref="*****/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz" # 标准化空间模板
mask_ref="*****/model/cerebellar_mask.nii" #标准小脑mask模板

precessing(){
                input_dti=$1/dti 
                temp_dti=$2/dti
                output_dti=$3/dti
                input_mri=$1/mri
                temp_mri=$2/mri
                output_mri=$3/mri
                mkdir -p $temp_dti
                mkdir -p $output_dti
                mkdir -p $temp_mri
                mkdir -p $output_mri
                echo "*****************开始处理MRI数据*************************"
                echo "dcm转Nii格式"
                dcm2nii -o $temp_mri $input_mri		#dcm转Nii格式,输出到temp_dti
                cd $temp_mri	
                raw_mri=`ls co*.nii.gz` 
                echo "提取大脑"
                brain_mri="brain_mri"
                bet $raw_mri $brain_mri -R   #提取大脑
                echo "空间标准化"
                norm_mri="norm_mri"
                flirt -in ${brain_mri}.nii.gz -ref $ref -out $norm_mri  #空间标准化
                echo "移除小脑"
                cere_mri="nocere_mri"
                fslmaths ${norm_mri}.nii.gz -mul $mask_ref $cere_mri  #移除小脑

                echo "提取ROI"
                roi_mri="roi_mri"
                fslroi ${cere_mri}.nii.gz $roi_mri 20 140 10 180 5 150

                echo "MRI复制转移"
                out_mri=${subject}_${time}_mri
                cp ${roi_mri}.nii.gz $output_mri/${out_mri}.nii.gz


                echo "*****************开始处理DTI数据*************************"
                echo "dcm转Nii格式"
                dcm2nii -o $temp_dti $input_dti 		#dcm转Nii格式,输出到temp_dti
                cd $temp_dti		
                raw_dti=`ls *.nii.gz` 
                bval=`ls *.bval`
                bvec=`ls *.bvec`
                echo "涡流矫正"
                eddy_dti="eddy_dti"
                eddy_correct $raw_dti $eddy_dti 0  #涡流矫正
                echo "提取b0图像"
                b0="b0"
                fslroi $raw_dti $b0 0 1  #提取b0图像

                echo "提取大脑mask"
                brain_dti="brain_dti" 
                bet ${b0}.nii.gz $brain_dti -m -R  #提取大脑mask

                echo "拟合张量"
                fit_dit="fit_dti"
                mask_dti=${brain_dti}_mask
                dtifit -k ${eddy_dti}.nii.gz -m ${mask_dti}.nii.gz -r $bvec -b $bval -o $fit_dit #拟合张量

                md_dti=${fit_dit}_MD.nii.gz #DTI数据的MD文件
               

                echo "空间标准化"
                norm_dti="norm_dti"
                flirt -in $md_dti -ref $ref -out $norm_dti  #标准化
                
                echo "配准到相应MRI"
                reg_to_mri='reg_to_mri'
                flirt -in ${norm_dti}.nii.gz -ref $temp_mri/${norm_mri}.nii.gz -out $reg_to_mri
                
                echo "移除小脑"
                cere_dti="nocere_dti"
                fslmaths ${reg_to_mri}.nii.gz -mul $mask_ref $cere_dti  #移除小脑

                echo "提取ROI"
                roi_dti="roi_dti"
                fslroi ${cere_dti}.nii.gz $roi_dti 20 140 10 180 5 150
                echo "DTI复制转移"
                out_dti=${subject}_${time}_dti
                cp ${roi_dti}.nii.gz $output_dti/${out_dti}.nii.gz  #复制到结果文件


}
single_input="*****/raw_data/016_S_4638/2012-02"  #原始文件夹
single_temp="*****/temp/016_S_4638/2012-02" #临时文件夹
single_output="*****/precessed/016_S_4638/2012-02" #结果文件夹
precessing $single_input $single_temp $single_output

二 python查看各步骤的结果

import numpy as np
import nibabel as nib
import matplotlib.pyplot as plt

def load_nii(data_path):
    img = nib.load(data_path).get_data()  
    return img[:,:,60]
   

img_path=["co20120203_132150SawyerADNI220110825Ls002a1001.nii.gz",
          "brain_mri.nii.gz",
          "norm_mri.nii.gz",
          "nocere_mri.nii.gz",
          "roi_mri.nii.gz",
          ]
plt.figure(figsize=(15, 3))

for i,path in enumerate(img_path):
    plt.subplot(1,5,i+1)
    img_z_60=load_nii(path)
    plt.imshow(img_z_60.T,cmap='gray')
    plt.xticks([])
    plt.yticks([])

打个码嘻嘻
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值