1. 目的
2. 準備
2.1. DIPYのインストール
2.2. 使用データ
2.3. 前処理
3. 拡散テンソルイメージング(DTI)
3.1. 必要なパッケージをインポート
3.2. 画像およびMPG軸情報の読み込み
3.3. マスク画像の生成
3.4. モデルフィッティング
3.5. 拡散定量値の計算
3.6. NIfTI形式で保存
3.7. 結果
1. 目的
- DIPYを用いた拡散テンソルイメージング: DTI
2. 準備
2.1. DIPYのインストール
1 | pip3 install dipy |
2.2. 使用データ
データを次のフォルダ構造で用意する。
1 2 3 4 5 6 | Study/ └── Subject ├── DWI.nii.gz # 拡散MRI ├── DWI_mask.nii.gz # 拡散MRIマスク画像 ├── bvals # b-values └── bvecs # b-vectors |
2.3. 前処理
DTI(Diffusion Tensor Imaging)前に、拡散MRIの前処理をする。
- 拡散MRIのノイズ除去(Software: MRtrix, DIPY)
- ギブズのリンギングアーチファクト(Gibbs ringing)の除去(Software: MRtrix, DIPY)
- 拡散MRIのバイアス(信号ムラ)補正(Software: MRtrix)
- 拡散MRIの前処理 ~歪み・頭の動き・渦電流の補正(Software: FSL, MRtrix)
3. 拡散テンソルイメージング(DTI)
Pythonで以下のコマンドを実行。
3.1. 必要なパッケージをインポート
1 2 3 4 5 6 | from dipy.segment.mask import median_otsu import numpy as np from dipy.io.image import load_nifti, save_nifti from dipy.io.gradients import read_bvals_bvecs from dipy.core.gradients import gradient_table import dipy.reconst.dti as dti |
3.2. 画像およびMPG軸情報の読み込み
1 2 3 4 5 6 7 | DWI_FILE = 'DWI.nii.gz' BVALS_FILE = 'bvals' BVECS_FILE = 'bvecs' data, affine = load_nifti(DWI_FILE) bvals, bvecs = read_bvals_bvecs(BVALS_FILE, BVECS_FILE) gtab = gradient_table(bvals, bvecs) |
3.3. マスク画像の生成
median_otsu
関数を用いて、b=0画像からマスク画像を生成する。vol_idx
には、b0 volumeのvolume indexを渡す。
1 | maskdata, mask = median_otsu(data, vol_idx = np.where(bvals = = 0 )[ 0 ]) |
3.4. モデルフィッティング
以下のコマンドで、DTIのモデルフィッティングを実行。
1 2 | tenmodel = dti.TensorModel(gtab) tenfit = tenmodel.fit(maskdata) |
3.5. 拡散定量値の計算
モデルフィッティングができたら、拡散定量値を算出する。
1 2 3 4 5 | FA = tenfit.fa MD = tenfit.md AD = tenfit.ad RD = tenfit.rd colour_FA = tenfit.color_fa |
脳周囲の背景では、フィッティングミスをしてnan
となる場合があるため、そのようなnan
を0に置き換える。
1 2 3 4 5 | FA[np.isnan(FA)] = 0 MD[np.isnan(MD)] = 0 AD[np.isnan(AD)] = 0 RD[np.isnan(RD)] = 0 colour_FA[np.isnan(colour_FA)] = 0 |
3.6. NIfTI形式で保存
save_nifti
関数で、画像をNIfTI形式で保存する。
1 2 3 4 5 6 7 | save_nifti( 'DWI_masked.nii.gz' , maskdata.astype(np.float32), affine) save_nifti( 'DWI_mask.nii.gz' , mask.astype(np.float32), affine) save_nifti( 'FA.nii.gz' , FA.astype(np.float32), affine) save_nifti( 'MD.nii.gz' , MD.astype(np.float32), affine) save_nifti( 'AD.nii.gz' , AD.astype(np.float32), affine) save_nifti( 'RD.nii.gz' , RD.astype(np.float32), affine) save_nifti( 'colour_FA.nii.gz' , colour_FA.astype(np.float32), affine) |
3.7. 結果
DTIによって算出された定量値画像は、以下の通り。