GeometricMedicalPhantoms.jl

GeometricMedicalPhantoms provides tools for generating realistic medical imaging phantoms. These synthetic images are essential for testing reconstruction algorithms, validating imaging methods, and developing new acquisition strategies without requiring real patient data.

Why Use Phantoms?

Phantoms are useful for:

  • Algorithm validation: Test reconstruction methods with known ground truth
  • Method comparison: Benchmark different imaging techniques
  • Quality assurance: Verify scanner performance and image processing pipelines
  • Teaching and learning: Understand MRI physics and acquisition concepts interactively
  • Research: Prototype new acquisition strategies and reconstruction approaches

Available Phantoms

The package provides three distinct phantom types suited to different needs:

PhantomPurposeDimensionsFeatures
Shepp-LoganClassic test phantom2D slices or 3D volumeMultiple intensity options, tissue masking
TorsoAnatomical realism2D slices of 3D anatomyHeart, lungs, liver, vessels, physiological motion
TubesValidation & QC2D or 3DGeometric precision, customizable configuration

Quick Start

Here's a typical workflow:

# Create a Shepp-Logan phantom (2D axial slice)
phantom_2d = create_shepp_logan_phantom(256, 256, :axial)

# Visualize it
jim(phantom_2d; title="Shepp-Logan Phantom", clim=(0.95, 1.05), yflip=false)

index_shepp_logan.png

# Create a Torso phantom with anatomical details
torso = create_torso_phantom(128, 128, :coronal)

jim(torso; title="Torso (Coronal)", yflip=false)

index_torso.png

# Create a validation phantom
tubes = create_tubes_phantom(256, 256, 256)

jim(tubes[:, :, div(end, 2)]; title="Tubes Phantom (Middle Slice)")

index_tubes.png

Next Steps