PET/CT Brain Phantom Simulator

PET/CT Brain Phantom Simulator

Medical Imaging
PythonJupyter NotebookMedical ImagingPET/CTDuke BME

A physics-based PET/CT brain phantom simulator implementing phantom generation, CT simulation, and PET simulation pipelines in Python and Jupyter Notebook — built for medical imaging education and research at Duke University.

View on GitHub

Overview

The PET/CT Brain Phantom Simulator is a physics-based simulation pipeline that models the full imaging chain for two modalities: Computed Tomography (CT) and Positron Emission Tomography (PET). Built in Python and Jupyter Notebook for BME 303 (Systems & Signals in Biomedical Engineering) at Duke, it demonstrates how each modality acquires and reconstructs brain images from a synthetic phantom.


Simulation Pipeline

The project is structured as three sequential stages:

1. Phantom Generation

A synthetic brain phantom is constructed as a 2D cross-section with anatomically distinct tissue regions — white matter, gray matter, CSF, and skull — each assigned realistic attenuation coefficients (for CT) and tracer uptake values (for PET).

2. CT Simulation

Models the X-ray transmission process:

StepDescription
Forward projectionRadon transform computes sinogram — line integrals of attenuation through the phantom at many angles
Noise modelPoisson noise applied to photon counts to simulate detector statistics
ReconstructionFiltered back-projection (FBP) with a ramp filter recovers the attenuation map from the sinogram

3. PET Simulation

Models the annihilation photon coincidence detection process:

StepDescription
Emission mapTracer activity distribution derived from the phantom’s tissue uptake map
Forward projectionSinogram generated from the emission map via Radon transform
Attenuation correctionCT-derived attenuation map used to correct PET coincidence data for photon absorption
Noise modelPoisson statistics applied to coincidence counts
ReconstructionFBP reconstruction recovers the tracer distribution image

Key Concepts Demonstrated

  • Radon transform as the mathematical basis for both CT and PET forward projection
  • Filtered back-projection as the classical analytic reconstruction algorithm
  • Attenuation correction — why PET alone underestimates deep-tissue activity and how CT fixes it
  • Poisson noise — why medical imaging statistics are shot-noise limited and how dose affects image quality

Running the Simulation

The easiest way is via the Binder link above — it launches a live Jupyter environment in your browser with no local setup required. Open RunME.ipynb and run cells top to bottom to step through phantom generation, CT simulation, and PET simulation with inline visualizations at each stage.

To run locally:

git clone https://github.com/Nick-Trigger/Pet-Scan-Simulator-303-Final-Project
cd Pet-Scan-Simulator-303-Final-Project
pip install -r requirements.txt
jupyter notebook RunME.ipynb

Project Documents

© 2026 Nicholas Trigger