1. 目的
2. 準備
2.1. DIPYのインストール
2.2. 使用データ
3. 拡散MRIのノイズ除去
3.1. 必要なパッケージをインポート
3.2. 画像およびMPG軸情報の読み込み
3.3. マスク画像の作成
3.4. ギブズのリンギングアーチファクト除去
3.5. NIfTI形式で保存
3.6. 結果
- DIPYを用いたギブズのリンギングアーチファクト(Gibbs ringing)の除去
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
3. 拡散MRIのノイズ除去
Pythonで以下のコマンドを実行。
3.1. 必要なパッケージをインポート
from dipy.denoise.gibbs import gibbs_removal import matplotlib.pyplot as plt import numpy as np from dipy.segment.mask import median_otsu from dipy.io.image import load_nifti, save_nifti from dipy.io.gradients import read_bvals_bvecs from dipy.core.gradients import gradient_table
3.2. 画像およびMPG軸情報の読み込み
DWI_FILE = 'DWI.nii.gz' BVALS_FILE = 'bvals' BVECS_FILE = 'bvecs' # Import data 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. ギブズのリンギングアーチファクト除去
gibbs_removal
関数を用いて、リンギングアーチファクトを除去する。
data_corrected = gibbs_removal(maskdata)
3.5. NIfTI形式で保存
save_nifti
関数で、画像をNIfTI形式で保存する。
save_nifti('DWI_degibbs.nii.gz', data_corrected.astype(np.float32), affine)
3.6. 結果
補正前後の画像は、以下の通り。