モンテカルロ法を用いた光子伝搬のモデリングは、光子輸送をシミュレートするための柔軟かつ厳密なアプローチです。この方法では、光子輸送の局所的な規則は、光子と物質の相互作用点間の光子の移動ステップサイズと、散乱事象が発生したときの光子の軌道の偏向角を記述する確率分布として表現されます。これは、微分方程式を用いて光子の運動を記述する放射伝達方程式(RTE)によって光子輸送を解析的にモデル化することと同等です。しかし、RTEの閉形式解は多くの場合得られません。一部の形状では、拡散近似を用いてRTEを簡略化できますが、これは特に光源や境界付近で多くの不正確さを生じさせます。これに対し、モンテカルロシミュレーションでは、追跡する光子の数を増やすことで、任意の精度を実現できます。例えば、映画を見てみると、半無限媒質に入射するペンシルビームのモンテカルロシミュレーションによって、初期の弾道的な光子の流れと、その後の拡散伝播の両方がモデル化されている。
モンテカルロ法は必然的に統計的な手法であるため、精度を達成するには相当な計算時間を要する。さらに、モンテカルロシミュレーションでは、複数の物理量を同時に、かつ任意の空間的・時間的解像度で追跡できる。この柔軟性により、モンテカルロモデリングは強力なツールとなる。したがって、計算効率は低いものの、モンテカルロ法は多くの生物医学分野における光子輸送のシミュレーション測定の標準手法として広く用いられている。

生体組織の光学的特性は、生物医学イメージングへのアプローチを提供します。血液やメラニンによる吸収、神経細胞や癌細胞核による散乱など、多くの内因性コントラストが存在します。さらに、蛍光プローブはさまざまな組織に標的化できます。顕微鏡技術(共焦点顕微鏡、二光子顕微鏡、光コヒーレンストモグラフィーなど)は、これらの特性を高空間分解能で画像化できますが、弾道光子に依存するため、深部への浸透は数ミリメートルに制限されます。光子が多重散乱される組織の深部を画像化するには、そのような環境における多数の光子の統計的挙動をより深く理解する必要があります。モンテカルロ法は、組織深部の光学的特性を再構築するためにさまざまな技術で使用されてきた柔軟なフレームワークを提供します。ここでは、これらの技術のいくつかについて簡単に紹介します。
放射線治療の目的は、周囲の正常組織を温存しながら、一般的には電離放射線の形でエネルギーを癌組織に照射することです。モンテカルロ法は、放射線治療において、患者組織からの散乱と、リニアアクセラレータの上流にあるコリメータからの散乱の両方によって患者が受ける周辺線量を決定するために一般的に用いられます。
光線力学療法(PDT)では、光を用いて化学療法剤を活性化します。PDTの特性上、化学療法剤を活性化するために適切な量の光が照射されるように、組織内での散乱と吸収をモデル化するためにモンテカルロ法を用いることが有効です。
ここでは、均質な無限媒質における光子モンテカルロ法のモデルを示します。ただし、このモデルは多層媒質にも容易に拡張できます。不均質な媒質の場合、境界を考慮する必要があります。また、半無限媒質(光子が上側の境界から出ると失われるとみなされる)の場合、特別な考慮が必要です。詳細については、ページ下部のリンクを参照してください。この問題は、無限に小さな点光源(空間と時間におけるディラックのデルタ関数として解析的に表現される)を使用して解きます。任意の光源形状に対する応答は、グリーン関数法(または、十分な空間対称性がある場合は畳み込み)を使用して構築できます。必要なパラメータは、吸収係数、散乱係数、および散乱位相関数です。(境界を考慮する場合は、各媒質の屈折率も提供する必要があります。)時間分解応答は、光路長を使用して光子の飛行の総経過時間を追跡することによって求められます。任意の時間プロファイルを持つ音源に対する応答は、時間方向の畳み込みによってモデル化することができる。
簡略化されたモデルでは、計算時間を短縮するために、以下の分散低減手法を使用します。光子を個別に伝播させる代わりに、特定の重み(通常は1に初期化)を持つ光子パケットを作成します。光子が混濁媒体内で相互作用すると、吸収によって重みが蓄積され、残りの重みは媒体の他の部分に散乱されます。特定のアプリケーションの関心に応じて、途中で任意の数の変数を記録できます。各光子パケットは、終了、反射、または送信されるまで、以下の番号付きステップを繰り返し実行します。このプロセスは、右側の概略図に示されています。結果として得られるシミュレーション測定値が所望の信号対雑音比を持つまで、任意の数の光子パケットを発射してモデル化できます。モンテカルロモデリングは乱数を含む統計的プロセスであるため、多くの計算で変数ξを擬似乱数として使用することに注意してください。

本モデルでは、屈折率が一致しない媒質に入射する際の初期鏡面反射は無視します。そのため、光子パケットの初期位置と初期方向を設定するだけで済みます。グローバル座標系を用いると便利です。位置を決定するために3つの直交座標を用い、伝搬方向を決定するために3つの方向余弦を用います。初期開始条件は用途によって異なりますが、原点で初期化されたペンシルビームの場合、初期位置と方向余弦を次のように設定できます(等方性光源は、各パケットの初期方向をランダム化することで容易にモデル化できます)。
ステップサイズsは、光子パケットが相互作用サイト間を移動する距離です。ステップサイズの選択にはさまざまな方法があります。以下は、光子ステップサイズ選択の基本形式(逆分布法とベール・ランバートの法則を用いて導出)であり、これを均質モデルに使用します。
どこは乱数であり、は全相互作用係数(すなわち、吸収係数と散乱係数の合計)です。
ステップサイズが選択されると、光子パケットは方向余弦で定義される方向に距離sだけ伝播されます。これは、座標を次のように更新するだけで簡単に実現できます。
光子の重みの一部は、各相互作用部位で吸収される。この重みの割合は、次のように決定される。
どこは吸収係数です。
吸収分布が特定の研究にとって重要な場合、重量分率は配列に記録することができます。その後、光子パケットの重量は次のように更新する必要があります。
吸収後、光子パケットは散乱されます。光子散乱角のコサインの加重平均は散乱異方性 ( g ) と呼ばれ、その値は-1から 1 の間です。光学異方性が 0 の場合、これは一般的に散乱が等方的であることを示します。g の値が 1 に近づくと、これは散乱が主に前方方向であることを示します。光子パケットの新しい方向 (したがって光子方向コサイン) を決定するには、散乱位相関数を知る必要があります。多くの場合、Henyey-Greenstein 位相関数が使用されます。次に、散乱角 θ は次の式を使用して決定されます。
また、極角φは一般的に0から100の間で一様に分布していると仮定される。この仮定に基づき、以下のように設定できます。
Based on these angles and the original direction cosines, we can find a new set of direction cosines. The new propagation direction can be represented in the global coordinate system as follows:
For a special case
use
or
use
C-code:
/*********************** Indicatrix ********************* *New direction cosines after scattering by angle theta, fi. * mux new=(sin(theta)*(mux*muz*cos(fi)-muy*sin(fi)))/sqrt(1-muz^2)+mux*cos(theta) * muy new=(sin(theta)*(muy*muz*cos(fi)+mux*sin(fi)))/sqrt(1-muz^2)+muy*cos(theta) * muz new= - sqrt(1-muz^2)*sin(theta)*cos(fi)+muz*cos(theta) *--------------------------------------------------------- *Input: * muxs,muys,muzs - direction cosine before collision * mutheta, fi - cosine of polar angle and the azimuthal angle *--------------------------------------------------------- *Output: * muxd,muyd,muzd - direction cosine after collision *--------------------------------------------------------- */ void Indicatrix (double muxs, double muys, double muzs, double mutheta, double fi, double *muxd, double *muyd, double *muzd) { double costheta = mutheta; double sintheta = sqrt(1.0-costheta*costheta); // sin(theta) double sinfi = sin(fi); double cosfi = cos(fi); if (muzs == 1.0) { *muxd = sintheta*cosfi; *muyd = sintheta*sinfi; *muzd = costheta; } elseif (muzs == -1.0) { *muxd = sintheta*cosfi; *muyd = -sintheta*sinfi; *muzd = -costheta; } else { double denom = sqrt(1.0-muzs*muzs); double muzcosfi = muzs*cosfi; *muxd = sintheta*(muxs*muzcosfi-muys*sinfi)/denom + muxs*costheta; *muyd = sintheta*(muys*muzcosfi+muxs*sinfi)/denom + muys*costheta; *muzd = -denom*sintheta*cosfi + muzs*costheta; } }If a photon packet has experienced many interactions, for most applications the weight left in the packet is of little consequence. As a result, it is necessary to determine a means for terminating photon packets of sufficiently small weight. A simple method would use a threshold, and if the weight of the photon packet is below the threshold, the packet is considered dead. The aforementioned method is limited as it does not conserve energy. To keep total energy constant, a Russian roulette technique is often employed for photons below a certain weight threshold. This technique uses a roulette constant m to determine whether or not the photon will survive. The photon packet has one chance in m to survive, in which case it will be given a new weight of mW where W is the initial weight (this new weight, on average, conserves energy). All other times, the photon weight is set to 0 and the photon is terminated. This is expressed mathematically below:
混濁媒体における光子移動のモンテカルロシミュレーションは、多数の光子が独立して伝播するものの、同一の規則と異なる乱数列に従うため、非常に並列化可能な問題です。この特殊なタイプのモンテカルロシミュレーションの並列性により、グラフィックス処理ユニット(GPU)での実行に非常に適しています。プログラマブルGPUのリリースによりこのような開発が始まり、2008年以降、光子移動の高速モンテカルロシミュレーションにGPUを使用することに関する報告がいくつかあります。[ 1 ] [ 2 ] [ 3 ] [ 4 ]
この基本的なアプローチは、複数のGPUを連結することで並列化できます。一例として、「GPU Cluster MCML」があり、著者らのウェブサイト(GPUクラスタに基づく多層混濁媒体における光輸送のモンテカルロシミュレーション)からダウンロードできます。http: //bmp.hust.edu.cn/GPU_Cluster/GPU_Cluster_MCML.HTM