Monte Carlo method for photon transport

Modeling photon propagation with Monte Carlo methods is a flexible yet rigorous approach to simulate photon transport. In the method, local rules of photon transport are expressed as probability distributions which describe the step size of photon movement between sites of photon-matter interaction and the angles of deflection in a photon's trajectory when a scattering event occurs. This is equivalent to modeling photon transport analytically by the radiative transfer equation (RTE), which describes the motion of photons using a differential equation. However, closed-form solutions of the RTE are often not possible; for some geometries, the diffusion approximation can be used to simplify the RTE, although this, in turn, introduces many inaccuracies, especially near sources and boundaries. In contrast, Monte Carlo simulations can be made arbitrarily accurate by increasing the number of photons traced. For example, see the movie, where a Monte Carlo simulation of a pencil beam incident on a semi-infinite medium models both the initial ballistic photon flow and the later diffuse propagation.

The Monte Carlo method is necessarily statistical and therefore requires significant computation time to achieve precision. In addition Monte Carlo simulations can keep track of multiple physical quantities simultaneously, with any desired spatial and temporal resolution. This flexibility makes Monte Carlo modeling a powerful tool. Thus, while computationally inefficient, Monte Carlo methods are often considered the standard for simulated measurements of photon transport for many biomedical applications.

Biomedical imaging
The optical properties of biological tissue offer an approach to biomedical imaging. There are many endogenous contrasts, including absorption from blood and melanin and scattering from nerve cells and cancer cell nuclei. In addition, fluorescent probes can be targeted to many different tissues. Microscopy techniques (including confocal, two-photon, and optical coherence tomography) have the ability to image these properties with high spatial resolution, but, since they rely on ballistic photons, their depth penetration is limited to a few millimeters. Imaging deeper into tissues, where photons have been multiply scattered, requires a deeper understanding of the statistical behavior of large numbers of photons in such an environment. Monte Carlo methods provide a flexible framework that has been used by different techniques to reconstruct optical properties deep within tissue. A brief introduction to a few of these techniques is presented here.
 * Photoacoustic tomography In PAT, diffuse laser light is absorbed which generates a local temperature rise. This local temperature variation in turn generates ultrasound waves via thermoelastic expansion which are detected via an ultrasonic transducer.  In practice, a variety of setup parameters are varied (i.e. light wavelength, transducer numerical aperture) and as a result Monte Carlo modeling is a valuable tool for predicting tissue response prior to experimental methods.
 * Diffuse optical tomography DOT is an imaging technique that uses an array of near-infrared light sources and detectors to measure optical properties of biological tissues. A variety of contrasts can be measured including the absorption due to oxy- and deoxy-hemoglobin (for functional neuro-imaging or cancer detection) and the concentration of fluorescent probes.  In order to reconstruct an image, one must know the manner in which light traveled from a given source to a given detector and how the measurement depends on the distribution and changes in the optical properties (known as the forward model).  Due to the highly scattering nature of biological tissue, such paths are complicated and the sensitivity functions are diffuse.  The forward model is often generated using Monte Carlo methods.

Radiation therapy
The goal of radiation therapy is to deliver energy, generally in the form of ionizing radiation, to cancerous tissue while sparing the surrounding normal tissue. Monte Carlo modeling is commonly employed in radiation therapy to determine the peripheral dose the patient will experience due to scattering, both from the patient tissue as well as scattering from collimation upstream in the linear accelerator.

Photodynamic therapy
In Photodynamic therapy (PDT) light is used to activate chemotherapy agents. Due to the nature of PDT, it is useful to use Monte Carlo methods for modeling scattering and absorption in the tissue in order to ensure appropriate levels of light are delivered to activate chemotherapy agents.

Implementation of photon transport in a scattering medium
Presented here is a model of a photon Monte Carlo method in a homogeneous infinite medium. The model is easily extended for multi-layered media, however. For an inhomogeneous medium, boundaries must be considered. In addition for a semi-infinite medium (in which photons are considered lost if they exit the top boundary), special consideration must be taken. For more information, please visit the links at the bottom of the page. We will solve the problem using an infinitely small point source (represented analytically as a Dirac delta function in space and time). Responses to arbitrary source geometries can be constructed using the method of Green's functions (or convolution, if enough spatial symmetry exists). The required parameters are the absorption coefficient, the scattering coefficient, and the scattering phase function. (If boundaries are considered the index of refraction for each medium must also be provided.) Time-resolved responses are found by keeping track of the total elapsed time of the photon's flight using the optical path length. Responses to sources with arbitrary time profiles can then be modeled through convolution in time.

In our simplified model we use the following variance reduction technique to reduce computational time. Instead of propagating photons individually, we create a photon packet with a specific weight (generally initialized as unity). As the photon interacts in the turbid medium, it will deposit weight due to absorption and the remaining weight will be scattered to other parts of the medium. Any number of variables can be logged along the way, depending on the interest of a particular application. Each photon packet will repeatedly undergo the following numbered steps until it is either terminated, reflected, or transmitted. The process is diagrammed in the schematic to the right. Any number of photon packets can be launched and modeled, until the resulting simulated measurements have the desired signal-to-noise ratio. Note that as Monte Carlo modeling is a statistical process involving random numbers, we will be using the variable ξ throughout as a pseudo-random number for many calculations.

Step 1: Launching a photon packet
In our model, we are ignoring initial specular reflectance associated with entering a medium that is not refractive index matched. With this in mind, we simply need to set the initial position of the photon packet as well as the initial direction. It is convenient to use a global coordinate system. We will use three Cartesian coordinates to determine position, along with three direction cosines to determine the direction of propagation. The initial start conditions will vary based on application, however for a pencil beam initialized at the origin, we can set the initial position and direction cosines as follows (isotropic sources can easily be modeled by randomizing the initial direction of each packet):



\begin{align} x & = 0 \\ \text{Position: }y & = 0 \\ z & = 0 \\ \\ \mu_x & = 0 \\ \text{Direction cosines: } \mu_y & = 0 \\ \mu_z & = 1 \end{align} $$

Step 2: Step size selection and photon packet movement
The step size, s, is the distance the photon packet travels between interaction sites. There are a variety of methods for step size selection. Below is a basic form of photon step size selection (derived using the inverse distribution method and the Beer–Lambert law) from which we use for our homogeneous model:


 * $$s = -\frac{\ln\xi}{\mu_t}$$

where $$\xi$$ is a random number and $${\mu_t}$$ is the total interaction coefficient (i.e., the sum of the absorption and scattering coefficients).

Once a step size is selected, the photon packet is propagated by a distance s in a direction defined by the direction cosines. This is easily accomplished by simply updating the coordinates as follows:



\begin{align} x & \leftarrow x + \mu_x s \\ y & \leftarrow y + \mu_y s \\ z & \leftarrow z + \mu_z s \end{align} $$

Step 3: Absorption and scattering
A portion of the photon weight is absorbed at each interaction site. This fraction of the weight is determined as follows:


 * $$\Delta W = \frac{\mu_a}{\mu_t} W$$

where $${\mu_a}$$ is the absorption coefficient.

The weight fraction can then be recorded in an array if an absorption distribution is of interest for the particular study. The weight of the photon packet must then be updated as follows:


 * $$W \leftarrow W - \Delta W \, $$

Following absorption, the photon packet is scattered. The weighted average of the cosine of the photon scattering angle is known as scattering anisotropy (g), which has a value between &minus;1 and 1. If the optical anisotropy is 0, this generally indicates that the scattering is isotropic. If g approaches a value of 1 this indicates that the scattering is primarily in the forward direction. In order to determine the new direction of the photon packet (and hence the photon direction cosines), we need to know the scattering phase function. Often the Henyey-Greenstein phase function is used. Then the scattering angle, θ, is determined using the following formula.


 * $$\cos\theta =

\begin{cases} \frac{1}{2g} \left[ 1 + g^2 - \left(\frac{1-g^2}{1-g+2g\xi}\right)^2\right]&\text{ if }g\ne 0 \\ 1-2\xi&\text{ if }g= 0 \end{cases} $$

And, the polar angle &phi; is generally assumed to be uniformly distributed between 0 and $$ 2\pi $$. Based on this assumption, we can set:



\varphi = 2\pi\xi\frac{}{} $$

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:



\begin{align} \mu'_x & = \frac{\sin\theta(\mu_x \mu_z \cos\varphi - \mu_y \sin\varphi)}{\sqrt{1-\mu_z^2}}+ \mu_x \cos\theta \\ \mu'_y & = \frac{\sin\theta(\mu_y \mu_z \cos\varphi + \mu_x \sin\varphi)}{\sqrt{1-\mu_z^2}}+ \mu_y \cos\theta \\ \mu'_z & = -\sqrt{1-\mu_z^2}\sin\theta\cos\varphi + \mu_z\cos\theta \\ \end{align} $$

For a special case

\begin{align} \mu_z=1 \end{align} $$

use



\begin{align} \mu'_x & = \sin\theta\cos\varphi \\ \mu'_y & = \sin\theta\sin\varphi \\ \mu'_z & = \cos\theta \\ \end{align} $$

or



\begin{align} \mu_z=-1 \end{align} $$

use



\begin{align} \mu'_x & = \sin\theta\cos\varphi \\ \mu'_y & = -\sin\theta\sin\varphi \\ \mu'_z & = -\cos\theta \\ \end{align} $$ 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; } }

Step 4: Photon termination
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:



W = \begin{cases} mW&\xi \leq 1/m \\ 0&\xi > 1/m \end{cases} $$

Graphics Processing Units (GPU) and fast Monte Carlo simulations of photon transport
Monte Carlo simulation of photon migration in turbid media is a highly parallelizable problem, where a large number of photons are propagated independently, but according to identical rules and different random number sequences. The parallel nature of this special type of Monte Carlo simulation renders it highly suitable for execution on a graphics processing unit (GPU). The release of programmable GPUs started such a development, and since 2008 there have been a few reports on the use of GPU for high-speed Monte Carlo simulation of photon migration.

This basic approach can itself be parallelized by using multiple GPUs linked together. One example is the "GPU Cluster MCML," which can be downloaded from the authors' website (Monte Carlo Simulation of Light Transport in Multi-layered Turbid Media Based on GPU Clusters): http://bmp.hust.edu.cn/GPU_Cluster/GPU_Cluster_MCML.HTM

Links to other Monte Carlo resources

 * Optical Imaging Laboratory at Washington University in St. Louis (MCML)
 * Oregon Medical Laser Center
 * Photon migration Monte Carlo research at Lund University, Sweden GPU acceleration of Monte Carlo simulations and scalable Monte Carlo. Open source code for download.
 * Cloud-based Monte Carlo for light transport in turbid scattering medium The tool is free to use in research and non-commercial activities.
 * Light Transport in Tissue as an Example of Monte Carlo Simulation (with C++ source code).