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のインストール
pip3 install dipy
2.2. 使用データ
データを次のフォルダ構造で用意する。
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. 必要なパッケージをインポート
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軸情報の読み込み
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を渡す。
maskdata, mask = median_otsu(data, vol_idx=np.where(bvals == 0)[0])
3.4. モデルフィッティング
以下のコマンドで、DTIのモデルフィッティングを実行。
tenmodel = dti.TensorModel(gtab) tenfit = tenmodel.fit(maskdata)
3.5. 拡散定量値の計算
モデルフィッティングができたら、拡散定量値を算出する。
FA = tenfit.fa MD = tenfit.md AD = tenfit.ad RD = tenfit.rd colour_FA = tenfit.color_fa
脳周囲の背景では、フィッティングミスをしてnan
となる場合があるため、そのようなnan
を0に置き換える。
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形式で保存する。
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によって算出された定量値画像は、以下の通り。