Skip to main content

VBMことはじめ

VBM(voxel-based morphometry)とは各個人の脳画像をテンプレートに当てはめて標準化する自動処理を用いて形態を比較する手法である。用手的に関心領域を入力する従来の手法に比べると、労力が少なく簡便であること、その特徴により多数の被験者を対象にできること、仮説に基づく特定の領域だけでなく全脳を解析対象にできること、客観的であること等の利点がある。

ここでは主にSPM12を使った前処理の方法についてメモしておく。

Workflow#

画像解析の一連の流れは 撮像画像の質を確認匿名化・形式の変換前処理統計解析 のようになる。

ファイル形式#

MRIなどの医用画像撮像装置から出力されるデータはDICOM形式(.dcm)である。DICOMのデータモデルはPatient→Study→Series→Imageのように1対多で階層化されており、原則として1枚のImageごとに1ファイルとなっている。

DICOM形式のままでは扱いにくいのでVBMの解析では一般的にNIfTI(Neuroimaging Informatics Technology Initiative)-1形式(.nii)が用いられる。これは3D(構造)あるいは4D(機能)画像シリーズを1つのファイルで管理することができ、左右情報などのメタデータもヘッダに格納される。ヘッダの仕様はThe NIFTI file formatを参照。

DICOM形式からNIfTI形式に変換するためのツールがいくつかある。

なお、医療現場の慣習では医用画像は下から見上げるように左右を反転して表示される(radiological convention; L is R)が、SPMでは左右は反転しないで表示される(neurological convention; L is L)ことに注意する。

前処理の実際#

前処理(preprocessing)とは画像を被験者間で比較できるようにテンプレートに当てはめる作業である。これにより、各被験者の画像間でそれぞれのvoxelを同一の部位に対応させ、voxelごとに統計解析を行うことができるようになる。

構造画像の解析は以下のような流れで行われるのが一般的である:

  1. 原点合わせ(reorientation):座標系を標準に合わせる
  2. 分割化(segmentation):灰白質、白質等の組織種ごとに画像を分割する
  3. 解剖学的標準化(spatial normalization):テンプレートに合致するよう変形する
  4. 信号値変換(modulation):解剖学的標準化のための変形に伴う膨張・収縮の補正
  5. 平滑化(smoothing):統計処理のために画像をぼかす

Reorientation#

画像の座標系を設定する。とはいえ、後のステップで細かい位置合わせは自動で行われ、ここでの設定はそのためのhintとなるに過ぎないため、この手順を厳密に行う必要はない(テンプレート画像とのズレが距離5cm、角度 15°以内程度なら解析に大きな影響はないと言われている)。

原点(origin)を前交連(anterior commissure; AC)の上端とし、水平線を前交連の上端と後交連(posterior commissure; PC)の下端を結ぶAC-PC lineにする。

SPM12ではDisplayで画像を開き、原点をクリックし、pitch、必要に応じてroll, yawを設定し、Set Originした上でReorientで対象のファイルを選ぶと座標系の情報がNIfTIファイルのヘッダに保存される。この際、複数のファイルを選ぶと同じ座標系をまとめて設定できる。

テンプレート画像とのco-registration(SPMにもともと備わっている機能)を用いて自動化するスクリプトもある。

※前交連の同定方法#

https://www.youtube.com/watch?v=AwNJAUKLhqY

  1. まず、矢状断でfornixのtermination pointを探し、その下にある丸いふくらみがACである。
  2. 冠状断では側脳室を目、第三脳室を口に見立てて、その上にある「口ひげ」のうちの白質部分(信号強度が高い部分)を探すイメージがわかりやすい。
  3. 水平断で、両大脳半球の白質が交差する点を選ぶ。

Segmentation#

分割化(segmentation)とは画像を白質、灰白質、脳脊髄液などの組織種ごとに分割する過程である。

各座標における各組織が存在する事前確率(tissue probability maps; TPM)と、組織種ごとの信号強度のモデルに基づく尤度から事後確率を求めている。各組織種の信号強度についての事前情報(例えば、T1で白質の信号強度はだいたいxxxくらいである等)は利用せず、on-the-flyで組織種ごとの信号強度をモデル化しているので、同じアルゴリズムがT1, T2, PD, FLAIRなど様々な撮像法に対し(もちろん組織種ごとに信号値のコントラストがあることが前提になるが)同様に適応できる。

さてここで、TPMはMNI座標系に標準化されているが、被験者の画像はそうではない点が問題となる。被験者の画像でTPMを適切に利用するためには、被験者の画像もMNI座標系に標準化されていなければならないが、一方で標準化のためにも組織種の分割情報を役立てたい。すなわち、segmentationとspatial normalizationは相互に依存しあっている過程と言える。SPMでは実際、この2つの過程(とバイアス補正)を単一のモデルで統合的に処理している(unified segmentation)。アルゴリズムの詳細はAshburner, J. & Friston, K. J. Unified segmentation. NeuroImage 26, 839–851 (2005).を参照。

なお、各組織種の信号強度をモデル化する場合、単一のGaussianでモデル化するのがシンプルであるが、組織種が現実には単一の組織に対応していないことや、あるvoxelが複数の組織種を含んでいてそれぞれの組織の信号強度の中間の強度になっている場合があること(partial volume effect)などから、複数のGaussianの重ね合わせでモデル化するのが適当と考えられている。Num. Gaussianはこの重ね合わせるGaussianの個数である。

tpm/TPM.niiのチャネル番号と組織種の対応#
Channel #Tissue ClassNum. Gaussians
1灰白質 (gray matter)1
2白質 (white matter)1
3脳脊髄液 (CSF)2
4骨 (bone)3
5軟部組織 (soft tissue)4
6空気 / バックグラウンド2

MR磁場の不均一性に由来する信号強度のバイアスの補正も同時に行われる。これは、バイアス成分は極めて低周波であることを利用している。

Spatial normalization#

解剖学的標準化(spatial normalization)はテンプレート脳画像に合致するように変形する過程である。この位置合わせのことをregistrationと呼ぶこともある。線形変換(Affine変換)と非線形変換を組み合わせており、後者のことをwarpingとも呼ぶ。

前述の通りSPMのSegmentationコマンドはsegmentationと同時にnormalizationも行うunified segmentationモデルを採用しており、segmentationを実行する際にWarped Tissueを出力すると、これが(線形変換だけでなく非線形変換も行った)normalization後の画像であり、modulation・smoothingをかければそのまま解析に用いることができる。

DARTEL#

現時点ではSPMのworkflowにseamlessに統合されていないが、DARTEL(diffeomorphic anatomical registration using exponentiated Lie algebra)というspatial normalizationの手法がある。これは、撮像した画像たちからtemplateを作成して、そのtemplateにマッチさせてから、MNI座標系に標準化する、というもので、従来の手法より被験者間の位置合わせの精度が高められると言われている。アルゴリズムの詳細についてはAshburner, J. A fast diffeomorphic image registration algorithm. Neuroimage 38, 95–113 (2007).を参照。

DARTELを使ったnormalizationの流れは以下のようになる:

  1. template画像の作成:まず平均画像を作り、それをrefineして精緻なgroup-specific templateを作成する
  2. 各画像に対する流れ場の作成:各画像をtemplate画像に対し位置合わせするためのパラメータ(流れ場)を決定する
  3. MNI空間への標準化:まず流れ場を使いtemplate画像に対し位置合わせを行い、template画像をMNI空間にアフィン変換で合わせることで、画像をMNI空間に標準化する。

DARTELを実行するためにはSegmentationの段階でWarped Tissueは出力せず、白質・灰白質の剛体変換(rigid transformation; 距離を保つ変換、すなわち回転、平行移動、反転の組み合わせ)のみを行ったDARTEL用の入力画像を出力する。各被験者ごとのこれらの画像(デフォルトのprefixはrc1, rc2)からテンプレートを作成する。テンプレートは繰り返し回数から0~6まで7ファイル作られる。

Modulation#

Segmentationの結果として得られるのは各voxelごとの各組織種の密度(density, concentration)、すなわち、そのvoxelに含まれる各組織種の割合となる。このsegmentation後の画像をテンプレート脳にnormalizeすると、segmentationやnormalizationの精度が極めて高い理想的な状況では、すべての被験者の画像は同一になってしまうはずである(そうなるように変形しているのだから)。VBMの場合、各voxelに体積の情報を持たせたいので、voxelの信号値としてdensityをnormalizationの際の局所的な変形の膨張率(Jacobian)で割って補正する(これにより、信号値の総和が保存されることになる)。

Smoothing#

平滑化とは統計処理の前を行う前にGaussian kernelを用いてblurをかけることである。カーネルの大きさ(幅)は一般に半値全幅(full-width at half maximum; FWHM)で表現される。これは山型の関数の最大値の半分以上をとる範囲の幅である。(標準偏差σ\sigmaとの対応は、GaussianのPDFが1σ2πexp(12(xμσ)2)\frac{1}{\sigma\sqrt{2\pi}}\exp\left(-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2\right)なので、expが1/2を返す両側のxxを考えればよいから、FWHM = 22ln2σ2.355σ2\sqrt{2\ln 2}\,\sigma \approx 2.355 \,\sigmaとなる。)

ナイーブに考えると空間解像度が低下して情報量が落ちてしまいそうで、どうしてこんなことをするのだろうという感じがしなくもないが、smoothingを行うことのrationaleとして以下のような点が挙げられる:

  • S/N比の向上:検出したいシグナルの空間的広がりと同程度のガウシアンを畳み込むことで、それより小さな広がりのノイズを軽減することができる(信号処理の整合フィルタ(matched filter)と同様の考え方)。
  • 解剖学的標準化のズレの補償:当然のことながら、spatial normalizationの精度は完璧でないので、被験者間で同一ボクセルに対応する部位が多少ズレているはずである。
  • 組織構造の個体差の補償:標準化が完璧に行えたとしても、脳活動や構造の局在には個体差があると言われている。マクロな解剖学的ランドマークとミクロな組織構築との間の対応が不完全であることなどが理由として指摘されている。
  • 多重比較の補償:周囲のボクセルの画素が混合されるため、各ボクセルの比較が独立でなくなるため、多重比較検定の補正基準を緩和できる。

Memo#

スケール#

  • 脳の大きさ(直径):150mm程度
  • MRIの空間解像度:pixel幅 1mm、スライス厚 1mm程度、生画像の解像度の例 256x256x193
  • DARTELではデフォルトでは1.5mmのisometric voxelにresampleされる

SPMにおけるファイル名のconvention#

FilenamesMeaning
c*分割後の画像(in native space)
rc*分割後の画像(in native space, DARTEL解析用に解像度を下げ、剛体変換されている)
u_rc1*DARTELの流れ場(変形のパラメータ;xyzの3チャネルになっている)
Template_[0-6]DARTELのテンプレート(解析対象のデータセットに対して1組作成する)
wc*分割後の画像(標準化後)
mwc*分割後の画像(標準化・モジュレーション後)
m*信号値不均一補正後の画像
BiasField_*信号値不均一補正のパラメータを画像化したもの

SPMの環境構築#

  1. Matlabをインストール(Toolboxは何も入れなくてもSPMの動作には問題ない)

  2. Scriptを入れるディレクトリをクラウドストレージ内に作成しておく

  3. SPM12をそのディレクトリに展開する (公式サイトのフォームを埋めるとダウンロードできる。)

  4. Matlabのスクリプトを入れるディレクトリとその下のspm12ディレクトリにパスを通しておく

>> spm % 動作確認
>> spm_update % updateの確認
Your version of SPM12 is up to date.
(Your version: 7771 - Online version: 7771)
>> spm_update(1) % もしupdateがあれば、自動でアップデートしてくれる
  1. Pathの通ったところにspm_my_defaults.mを作成し、メモリ使用量をマシンに搭載されているメモリ量にあわせて変更する(デフォルトは2GB)
>> edit spm_my_defaults.m
global defaults;
defaults.stats.maxmem = 2^33;
>> spm
___ ____ __ __
/ __)( _ \( \/ )
\__ \ )___/ ) ( Statistical Parametric Mapping
(___/(__) (_/\/\_) SPM12 - https://www.fil.ion.ucl.ac.uk/spm/
SPM12: v7771 12:01:39 - 13/04/2020
========================================================================
Initialising SPM : .Defaults settings have been modified by file(s):
C:\Users\hiro\OneDrive\Matlab\spm_my_defaults.m
Modified fields: stats
......Defaults settings have been modified by file(s):
C:\Users\hiro\OneDrive\Matlab\spm_my_defaults.m
Modified fields: stats
.done

References#