Lead Field Matrix (磁場導出行列)
Lead Field行列は字義通りとれば、電場や磁場などを導き出す行列です。
電流双極子dがN個あるとき、Mヶ所のセンサーで検出される電位Φの大きさ、 もしくは電流双極子qがN個あるとき、Mヶ所のセンサーで検出される磁場Bの大きさ(但しある一定の方向成分) は
で示されます。行列で書くと
となります。この
L
が電位導出行列 or 磁場導出行列です。 計測された脳波や脳磁図データから電流源を推定するときに使われます。
肝心の
L
ij
はどうやって計算するのか?
実はこれが大問題(順問題といいます)です。たぶん
簡易版
Biot-Savart
位置情報のみ
臨床現場
脳波:3層球モデル
脳磁図:球モデル(Sarvas)
球の作成
研究者用
境界要素法
有限要素法
メッシュ作成
に基づいてLead Filed行列を用いていると思います。 私はまだ境界要素法や有限要素法を理解してないので、これに基づいたLead Field行列を作ったことはありません。
脳磁図の現場ではほとんどがSarvasの式に基づいた磁場導出行列を用いていると思います。 そこでSarvasの式に基づいたVectorView用の磁場導出行列を作成するSCEファイルを作ることにしました。
algorithmは
任意の点の法線ベクトル算出
z軸方向の接平面のベクトル算出
1と2のベクトルの外積からもう一つの接平面のベクトル算出
Sarvasの式に基づいて任意の点における磁場導出行列を算出
です。
2のベクトルの求め方ですが、 半径1の球面上の点(x,y,z)を球座標に変換して
とし、接平面のφ方向のベクトルを
としました。
1と2のベクトルが平行である場合には、3の接平面方向のベクトルを(1,0,0)としました。
CalcLFM.sce
は
CalcLFM
CalcVectorViewLFM
CalcTangentialVectors
ConversionCoordination
Sarvas
の5つの関数を1つのSCEファイルにまとめたものです。 Matlabの関数Mファイルのサブ関数と異なり、 Scilabでは5つの別個の関数として認識されます。
関数
CalcLFM
は下の4つの関数をまとめたものです。
関数
Sarvas
は、今まで用いてきたSarvas.sceと同一ですが、複素数を出力しないようにしています。
関数
ConversionCoordination
はVectorViewのcoilの位置、向きの座標を device座標から頭座標に変換する関数です。
関数
CalcTangentialVectors
は任意の点における、 法線方向の単位ベクトルと接平面方向の2つの単位ベクトルを計算する関数です。 法線方向が(0,0,1)の接平面方向のベクトルは(1,0,0)と(0,0,1)にしています。
関数
CalcVectorViewLFM
は最終的なVectorViewの磁場導出行列を作成する関数です。 wmという変数がありますが、magnetometerとgradiometerの重み付けに用います。
VectorViewの各チャンネルにおける信号の強さは以下の式で求めます。
ここで
b
k
はk番目のチャンネルの磁場信号、
N
k
はk番目のチャンネルの計算点総数、
w
kp
はk番目のチャンネルのp番目の計算点の重み付け、
B
(
r
kp
)はk番目のチャンネルのp番目の計算点の磁場ベクトル、
n
kp
はk番目のチャンネルのp番目の計算点の法線ベクトル、
です。
ここでは下記の表を用いています。
coil
N
k
position r/mm
w
kp
magnetometer
4
±12.9,±12.9,0.3
1/4
gradiometer
2
±8.4, 0,0.3
±1/1.68cm