1. 目的
DICOMからNIfTIに変換した画像をFSLの画像ViewerであるFSLeyesで確認すると、FSLeyesでの表示がおかしい(画像の向きがおかしい)ときがある。
例えば、以下のようになる(上段:正常、下段:異常)。
解析をする際に、データあるいは被験者ごとに向きが異なっていると解析エラーを起こす場合がある(例:同一被験者のT1WIとDWIの向きが異なる、FAとアトラス(関心領域)の向き異なる)。特に、FSLで解析する場合には、この向きの違いが解析結果に影響することが多く、解析前に画像の向きの標準化をしておいた方が無難である。
そこで、この記事では「画像の向きの確認と修正方法」について解析する。
なぜ、画像の向きに違いが出るのか?向きはヘッダーの何にあたるのか?向きとはどのようにして決まるのか?といった詳細については、こちらを参考にするとよい。
2. コマンド
FSLコマンドで画像を確認するには、fsleyes
を用いる。基本的な使い方は、以下の通り。
fsleyeys <入力画像>
向きがおかしい場合は、FSLのfslreorient2std
コマンドを用いる。fslreorient2std
コマンドを実行することで、標準脳(MNI152)と同じ向きに揃えてくれる。基本的な使い方は、以下の通り。
fslreorient2std <入力画像> <出力画像>
3. 使用例
向きがおかしい3D-T1WI(T1_orientation_false.nii.gz)を、fsleyes
で表示してみる。
fsleyes T1_orientation_false.nii.gz
実行すると、次のような画像が表示される。
次に、向きがおかしい3D-T1WI(T1_orientation_false.nii.gz)に対して、fslreorient2std
を実行する。
fslreorient2std T1_orientation_false.nii.gz T1_orientation_corrected.nii.gz
向きを修正した画像(T1_orientation_corrected.nii.gz)を表示して、向きが修正されたことを確認する。
fsleyes T1_orientation_corrected.nii.gz
4. おまけ
画像の向きは、FSLのNIfTIヘッダーを確認するfslhd
コマンドで表示される「qform_?orient」で確認することができる。
画像の向きを修正した画像(T1_orientation_corrected.nii.gz)に、fslhd
コマンドを実行するには、次のようにする。
fslhd T1_orientation_corrected.nii.gz
画像の向きを修正した画像(T1_orientation_corrected.nii.gz)と、向きがおかしい画像(T1_orientation_false.nii.gz)のqform_?orientを比較したものは以下。
# 画像の向きを修正した画像(T1_orientation_corrected.nii.gz) qform_xorient Right-to-Left qform_yorient Posterior-to-Anterior qform_zorient Inferior-to-Superior # 向きがおかしい画像(T1_orientation_false.nii.gz) qform_xorient Posterior-to-Anterior qform_yorient Right-to-Left qform_zorient Inferior-to-Superior
また、MRtrixのNIfTIヘッダーを確認するmrinfo
で出力される「Data strides」でも確認することができる。
画像の向きを修正した画像(T1_orientation_corrected.nii.gz)に、mrinfo
コマンドを実行するには、次のようにする。
mrinfo T1_orientation_corrected.nii.gz
画像の向きを修正した画像(T1_orientation_corrected.nii.gz)と、向きがおかしい画像(T1_orientation_false.nii.gz)のData stridesを比較したものは以下。
# 画像の向きを修正した画像(T1_orientation_corrected.nii.gz) Data strides: [ -1 2 3 ] # 向きがおかしい画像(T1_orientation_false.nii.gz) Data strides: [ -2 1 3 ]
いつもありがとうございます。fslreorient2stdで処理した時にfsleyesでみられる画像は正しくなったのですが、mrinfoで確認すると Data strides: [ 1 2 3 4 ]となっています。これは正しく変換されているのでしょうか。
Data strides は、軸の順序 (order of axes)を意味します。
数値の順序は、データがどの順序で格納されているかを示します。例えば、[1, 2, 3] であれば、1番目の軸(通常X軸)、2番目の軸(Y軸)、3番目の軸(Z軸)の順でデータが格納されていることを意味します。
各数値の正負は、その軸に沿ってデータが増加する方向を示します。正の値は通常の方向、負の値は逆方向を意味します。
例えば、”data strides: -1, 2, 3″ という出力があった場合:
X軸(1番目の軸)のデータは逆方向に格納されている
Y軸(2番目の軸)のデータは通常の方向に格納されている
Z軸(3番目の軸)のデータは通常の方向に格納されている
となります
今回の 4 はfMRIやDWIで4番目の情報である時間軸や印加軸です。
なので、[1 2 3 4] は正しいということになります。