【初心者向け】基礎&実践プログラミング

初心者がつまづきやすいところ、最短で実力が身につく方法をお伝えします。

【FSL】Affine変換(平行移動+線形変換)

f:id:AIProgrammer:20200617201522p:plain

目的

  • 異なる画像(NIFITI形式)の位置合わせをAffine変換(平行移動+線形変換)を用いて実行する。

FSLを用いて実装します。

必要なファイル

  • T1WI: t1.nii.gz
  • QSMの元画像: qsm_raw.nii.gz
  • QSMの定量マップ: qsm_map.nii.gz
  • 大脳基底核のROI: basalganglia_roi.nii.gz

MRIで撮像したT1WIをquantitative susceptibility mapping(QSM)に位置合わせします。
QSMの撮像で得られた画像(QSMの元画像)をもとにQSMの定量マップが計算されます。
basalganglia_roi.nii.gzは、T1WIから作られた大脳基底核のROIです。

処理手順

1. 撮像した全ての画像をTemplate画像(MNI152)の座標系に合わせる。

fslreorient2std <input> <output>
ex. fslreorient2std t1 std_t1

2. T1WIをQSMの元画像に位置合わせ(Affine変換、自由度12)

flirt -in std_t1 -ref qsm_raw_1 -out t12qsm -omat t12qsm.mat

3. 2.で作成した変換matrixを使ってT1WI spaceにある大脳基底核のROIをQSM spaceに移動(ただし、interpolationはnearestneighbour

flirt -in basalganglia_roi -ref qsm_raw_1 -out basalganglia_roi_in_qsm -init t12qsm.mat -applyxfm -interp nearestneighbour

複数被験者がいる場合

次のフォルダ構造にならって各被験者のフォルダを作成し、その中に必要なファイルを入れておけば以下のコードを実行するだけですべて自動的に位置合わせを実行します。

フォルダ構造

.
├── sub001
│   ├── basalganglia_roi.nii.gz
│   ├── qsm_map.nii.gz
│   ├── qsm_raw.nii.gz
│   └── t1.nii.gz
├── sub002
│   ├── basalganglia_roi.nii.gz
│   ├── qsm_map.nii.gz
│   ├── qsm_raw.nii.gz
│   └── t1.nii.gz
└── sub003
    ├── basalganglia_roi.nii.gz
    ├── qsm_map.nii.gz
    ├── qsm_raw.nii.gz
    └── t1.nii.gz

ソースコード

# Adjust basal ganglia roi to QSM map.
t1="t1"
qsmraw="qsm_raw"
qsmmap="qsm_map"
roi="basalganglia_roi"

for k in *;do
    echo $k
    # reorient to standard
    fslreorient2std $k/$t1 $k/std_${t1}
    fslreorient2std $k/$qsmraw $k/std_${qsmraw}
    fslreorient2std $k/$qsmmap $k/std_${qsmmap}
    fslreorient2std $k/$roi $k/std_${roi}

    # affine ROI in T1 space to QSM space.
    fslroi $k/std_${qsmraw} $k/qsm_raw_1 0 1
    flirt -in $k/std_${t1} -ref $k/qsm_raw_1 -out $k/t12qsm -omat $k/t12qsm.mat
    flirt -in $k/std_${roi} -ref $k/qsm_raw_1 -out $k/${roi}_in_qsm -init $k/t12qsm.mat -applyxfm -interp nearestneighbour
done



頑張れ!喝!!の代わりにB!ブックマークを押していただけるとただただうれしいです(^^)! ↓