FreeSurferで画像解析をしていると、「他の画像解析ソフトで解析した画像をFreeSurferで表示できないだろうか?」という疑問が湧いてきます。
今回、慶応大の上田亮先生が、その方法を見出してくださいましたので、上田先生の了解を得て、その方法を説明します。
FSLで作成したFA画像を、FreeSurferのSurface画像に投影してみます。
実際にデータがあるとわかりやすいと思いますので、サンプルデータを準備しました。
- サンプルデータの入手と配置
- SUBJECTS_DIRの設定
- データ構造
- D_Subj001.nii.gz がDTIファイルです。
- D_Subj001_FA.nii.gz がFSLのdtifitを用いて作成したFA画像です
- B0画像の取り出し
- b0画像のskull-stripping
- bbregisterを用いたDTI画像とT1画像の位置合わせパラメータの取得
- FA画像のFreeSurfer空間への合わせこみ
- Surface画像への投影
- Freeviewでの表示
- bbregister で位置合わせのパラメータを取得
- mri_vol2vol でFreeSurfer空間に移動
- mri_vol2surf でSurface画像に投影
ホームディレクトリにある Downloads ディレクトリの中に “subjects” というディレクトリを作成し、その下にサンプルデータをダウンロードするとします。
サンプルデータは tar.gz 形式ですので、tar を用いて展開します。
以下でダウンロードおよび展開ができます。
cd $HOME/Downloads mkdir subjects cd subjects curl -O http://www.nemotos.net/resources/Subj001.tar.gz tar xvzf Subj001.tar.gz
FreeSurferでは、SUBJECTS_DIRを設定することが重要になります。
今、Downloads/subjectsをSUBJECTS_DIRに設定しましょう。
すでにいるディレクトリですので、変数 $PWD を用いて簡単に設定できます。
export SUBJECTS_DIR=$PWD
FreeSurferの通常のデータに加えて、dtiというディレクトリを追加してあります。
また、FreeSurferの結果をすべて圧縮するとデータ量が大きくなるため、必要なファイルのみ残してあります。
treeコマンドを用いてデータを確認しましょう。
tree . ├── Subj001 │ ├── dti │ │ ├── D_Subj001.bval │ │ ├── D_Subj001.bvec │ │ ├── D_Subj001.nii.gz │ │ └── D_Subj001_FA.nii.gz │ ├── label │ │ ├── aparc.annot.ctab │ │ ├── lh.aparc.annot │ │ ├── lh.cortex.label │ │ ├── rh.aparc.annot │ │ └── rh.cortex.label │ ├── mri │ │ ├── brainmask.mgz │ │ └── orig.mgz │ ├── scripts │ ├── stats │ ├── surf │ │ ├── lh.inflated │ │ ├── lh.pial │ │ ├── lh.thickness │ │ ├── lh.white │ │ ├── rh.inflated │ │ ├── rh.pial │ │ ├── rh.thickness │ │ └── rh.white │ ├── tmp │ ├── touch │ └── trash └── Subj001.tar.gz
ここで、
まず、DTI画像からB0画像を取り出します。このためにFSLのコマンドである fslroi を用います。
fslroiの書式は
fslroi <入力画像> <出力画像> <取り出す画像のインデックス> <いくつ取り出すか>
となっています。インデックスは0からはじまります。
今は、最初の画像を1ボリュームだけ取り出したいです。
出力画像はわかりやすく、D_Subj001_b0 とします。
今、~/Downloads/subjects にいるはずですので、さらに下に移動します。
cd Subj001/dti fslroi D_Subj001.nii.gz D_Subj001_b0.nii.gz 0 1
次に、今作成した b0 画像の skull-stripping を行います。ファイル名は D_Subj001_b0_brain とします。これもFSLの bet を使います。-f パラメータは0.3ぐらいがうまくいくことが多いです。
bet D_Subj001_b0.nii.gz D_Subj001_b0_brain.nii.gz -f 0.3 -R
ようやくここからFreeSurferのコマンドがはじまります。
FreeSurferのコマンドのひとつに bbregister というコマンドがあります。このコマンドは、個人間でモダリティが違う画像を boundary-based コスト関数を用いて位置合わせを行います。bbregister の書式は
bbregister --s <FreeSurfer ID> --mov <移動する画像> --reg <出力する位置合わせパラメータファイル> --<コントラスト>
となっています。このプログラムのポイントは、パラメータファイルを出力させることです。コントラストは t1, t2, bold, dti の4つから選びますが、実際は、bold, dtiはt2と同じなので、実質は2つでしかすぎません。
先ほど作成したD_Subj001_b0_brain.nii.gzの位置合わせを行いましょう。パラメータファイルはdtiをt1にあわせるパラメータということで、 dti2t1.dat とします。
次のようにタイプします。
bbregister --s Subj001 --mov D_Subj001_b0_brain.nii.gz --reg dti2t1.dat --dti
そうすると数分かけて位置合わせが行われます。
最後に次のように表示されます。
bbregister Done To check results, run: tkregisterfv --mov D_Subj001_b0_brain.nii.gz --reg dti2t1.dat --surfs
結果を確認したかったら次のコマンドを打ちなさいと書いてあります。
そのとおりしてみましょう。
tkregisterfv --mov D_Subj001_b0_brain.nii.gz --reg dti2t1.dat --surfs
いい感じですね。
今回は、FA画像をSurface画像に投影したいのでした。なので、まずは、FA画像を先ほど得られたパラメータ dti2t1.dat を用いてFreeSurfer空間にあわせこみます。
このために必要なコマンドは、mri_vol2vol です。MRI画像をvolumeから(FreeSurfer空間の)volに移動すると考えるとわかりやすいですね。
コマンドの基本的な書式は以下になります。
mri_vol2vol --mov <入力画像> --targ <あわせこむ画像> --reg <あわせこむためのパラメータファイル> --o <出力画像>
入力画像は D_Subj001_FA.nii.gz あわせこむ画像は、mriディレクトリにある orig.mgz にします。パラメータファイルは前の段階でできた dti2t1.dat です。出力画像は、FS空間に移動したということで、D_Subj001_FA_FS.nii.gzとしましょう。
mri_vol2vol --mov D_Subj001_FA.nii.gz --targ ../mri/orig.mgz --reg dti2t1.dat --o D_Subj001_FA_FS.nii.gz
こうすることで、FA画像がFreeSurferの統一スペースに変換されました。ここまで来るとあともう一歩です。
最後にこの画像をSurface画像に投影します。このコマンドは、 mri_vol2surf です。このコマンドの書式は以下になります。
mri_vol2surf --mov <入力画像> --regheader <FreeSurfer ID> --hemi <lh/rh> --surf <white/pial> --interp <補完方法> --o <出力画像>
–surf は引数のデフォルトは white で、inflatedは使わない!となっています。
それでは、以下をタイプして左半球への投影図を生成してみましょう。補完方法は trilinear で、出力画像は、lh.white.fa.mgz としてみます。
mri_vol2surf --mov D_Subj001_FA_FS.nii.gz --regheader Subj001 --hemi lh --surf white --interp trilinear --o lh.white.fa.mgz
最後にFreeviewで表示してみます。surf/lh.whiteをベースに、今生成された lh.white.fa.mgz をオーバーレイしてみます。表示範囲はFAですから、0,1としましょう。カラースケールは colorwheel とし、スケールの向きを inverse で反転します。反転しないとどうなるかは自分で確認してみてください。
freeview -f ../surf/lh.white:overlay=lh.white.fa.mgz:overlay_threshold=0,1:name=lh.white.fa:overlay_color=colorwheel,inverse \ --viewport 3d
その結果、以下のよううな画面が得られます。脳梁のFA値が高いことを示すために、脳は回転してあります。
このような感じで表示できます。
まとめると、以下の3点がポイントということになります。
ピングバック: SPMの結果をFreeSurferの脳表画面に投影する方法
広島共立病院の吉川です。今回のFREESURFER講習会の練習用に使用したmy brain (3D-T1,DTI)で、DTIデータ上へのaparc+aseg のmapping を確認出来ました。ありがとう御在ます。今後ともよろしくお願い致します。
吉川先生
よかったです。ご報告ありがとうございました。
根本清貴
広島共立病院リハビリ科の、吉川正三です。FA画像by FSL to FREESURFER_SURFACEのscript、素晴らしいです。-viewport 3d ⇒ –viewport 3d で、上手く行きました。この3年間、こんなscript があれば、と夢見たものの一つです。非常に基本的な質問ですが、FA を、aparc+asegにmapping する方法を御教示頂けましたら幸甚と存じます。このscript と、コマンドライン版のqdec が自由に使えるよう、精進したいと思います。
吉川先生
ご指摘ありがとうございます。最後のところは、なぜか html のタグがおかしかったので修正いたしました。
FAをaparc+aseg.mgzにマッピングする方法ですが、
記事の中にある
D_Subj001_FA_FS.nii.gz
を使っていただければいいかと思いますがいかがでしょうか。
Freeviewは .nii.gz を直接読めます。
今回の配布データには入れませんでしたが、aparc_aseg.mgzは mri の下にありますので、
freeview -v D_Subj001_FA_FS.mgz ../mri/aparc+aseg.mgz:colormap=lut:opacity=0.2 &
で、DTIデータのうえに aprc+asegをマッピングすることができます。
ご自身のデータでお試しいただけたらと思います。