Skip to content

jingcjie/CT_Simulation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿฅ Python CT Simulation on Low Dose/ Limited Angle/ Sparse View Reconstruction using CUDA Astra Toolbox

๐Ÿš€ A comprehensive Python toolkit for CT (Computed Tomography) image processing, sinogram generation, and reconstruction with various noise and artifact simulations.

๐Ÿ“‹ Overview

This project provides two main scripts for CT image processing:

  1. ๐Ÿ“Š sino_creation.py - Interactive CT sinogram creation and reconstruction from DICOM IMA files sino

  2. ๐Ÿ”ง noise_reconstruction.py - Advanced CT reconstruction with noise and artifact simulations reconstruction

The toolkit supports various CT reconstruction scenarios including normal FBP reconstruction, low-dose CT (LDCT), limited angle reconstruction, and sparse view reconstruction.

โœจ Features

๐Ÿ“Š Sinogram Creation (sino_creation.py)

  • ๐Ÿ“ Load and process DICOM IMA files
  • ๐ŸŽฏ Generate high-quality sinograms using ASTRA toolbox
  • โœ… Optional FBP reconstruction for verification
  • ๐Ÿ“ˆ Visualization comparing original, sinogram, and reconstructed images
  • ๐Ÿ”„ Batch processing support with glob patterns
  • โš™๏ธ Configurable preprocessing (Gaussian filtering)

๐Ÿ”ง Noise and Artifact Reconstruction (noise_reconstruction.py)

  • ๐Ÿ’‰ Low-Dose CT (LDCT): Simulates reduced radiation dose with Poisson noise
  • ๐Ÿ“ Limited Angle: Reconstruction from constrained angular range (default: 120ยฐ)
  • ๐ŸŽฏ Sparse View: Reconstruction with reduced projection angles
  • โญ Normal FBP: High-quality baseline reconstruction
  • ๐Ÿ“Š Comprehensive visualization comparing all reconstruction types

๐Ÿ› ๏ธ Installation

๐Ÿ’ป System Requirements

  • ๐Ÿ Python 3.7+
  • ๐ŸŽฎ CUDA-compatible GPU (optional, for faster reconstruction)
  • ๐Ÿ’พ Sufficient RAM for processing large CT datasets

๐Ÿ“ฆ Prerequisites

# Install required Python packages
pip install numpy matplotlib scikit-image tqdm pydicom

# Install ASTRA Toolbox (for CT reconstruction)
# Option 1: Using conda (recommended) ๐ŸŒŸ
conda install -c astra-toolbox astra-toolbox

# Option 2: Using pip
pip install astra-toolbox

๐Ÿ“ Project Structure

CT_Simulation/
โ”œโ”€โ”€ ๐Ÿ“Š sino_creation.py          # Sinogram generation script
โ”œโ”€โ”€ ๐Ÿ”ง noise_reconstruction.py   # Noise/artifact reconstruction script
โ”œโ”€โ”€ ๐Ÿ“‚ sample/                   # Sample data directory
โ”‚   โ”œโ”€โ”€ ๐Ÿฅ sample.IMA           # Sample DICOM file
โ”‚   โ””โ”€โ”€ ๐Ÿ–ผ๏ธ *.png                # Sample visualizations
โ”œโ”€โ”€ ๐Ÿ“ค output/                   # Generated outputs
โ”‚   โ”œโ”€โ”€ ๐Ÿ“Š sinograms/           # Generated sinograms (.npy)
โ”‚   โ”œโ”€โ”€ โญ normal/              # Normal reconstructions
โ”‚   โ”œโ”€โ”€ ๐Ÿ’‰ ldct/                # Low-dose reconstructions
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ limited_angle/       # Limited angle reconstructions
โ”‚   โ”œโ”€โ”€ ๐ŸŽฏ sparse_view/         # Sparse view reconstructions
โ”‚   โ””โ”€โ”€ ๐Ÿ“ˆ visualizations/      # Comparison plots
โ”œโ”€โ”€ ๐Ÿ“ฆ archive/                  # Archived/legacy scripts
โ””โ”€โ”€ ๐Ÿ“ *.log                    # Processing logs

๐Ÿš€ Usage

1๏ธโƒฃ Sinogram Creation (sino_creation.py)

Generate sinograms from DICOM IMA files with optional reconstruction and visualization.

๐Ÿ”ฐ Basic Usage

# Process single IMA file
python sino_creation.py sample/sample.IMA --output_dir ./output

# Process multiple files with pattern matching ๐Ÿ”„
python sino_creation.py "sample/*.IMA" --output_dir ./output

# Process with reconstruction verification โœ…
python sino_creation.py sample/sample.IMA --output_dir ./output --reconstruct

# Process with visualization (includes reconstruction) ๐Ÿ“ˆ
python sino_creation.py sample/sample.IMA --output_dir ./output --visualize

๐Ÿ”ง Advanced Options

# Full pipeline with all options ๐Ÿš€
python sino_creation.py "data/*.IMA" \
    --output_dir ./results \
    --reconstruct \
    --visualize \
    --verbose \
    --log_file processing.log

โš™๏ธ Parameters

  • ๐Ÿ“ input: Input IMA file path or glob pattern
  • ๐Ÿ“ค --output_dir, -o: Output directory (default: ./output)
  • โœ… --reconstruct, -r: Perform FBP reconstruction for verification
  • ๐Ÿ“ˆ --visualize, -v: Create comparison visualization
  • ๐Ÿ”Š --verbose: Enable detailed logging (default: True)
  • ๐Ÿ“ --log_file: Custom log file path (default: sino_creation.log)

๐Ÿ“ค Output Files

  • ๐Ÿ“Š Sinograms: output/sinograms/{filename}.npy
  • ๐Ÿ”„ Reconstructions: output/reconstructions/{filename}.npy (if --reconstruct)
  • ๐Ÿ“ˆ Visualizations: output/visualizations/{filename}_comparison.png (if --visualize)

2๏ธโƒฃ Noise and Artifact Reconstruction (noise_reconstruction.py)

Perform various CT reconstruction methods from existing sinogram files.

๐Ÿ”ฐ Basic Usage

# Normal FBP reconstruction only โญ
python noise_reconstruction.py output/sinograms/sample.npy --output_dir ./output

# Enable specific reconstruction types ๐ŸŽฏ
python noise_reconstruction.py output/sinograms/sample.npy \
    --output_dir ./output \
    --ldct \
    --limited_angle \
    --sparse_view

# Process multiple sinograms with visualization ๐Ÿ“Š
python noise_reconstruction.py "output/sinograms/*.npy" \
    --output_dir ./output \
    --ldct \
    --limited_angle \
    --sparse_view \
    --visualize

โš™๏ธ Parameters

  • ๐Ÿ“ input: Input sinogram file (.npy) or glob pattern
  • ๐Ÿ“ค --output_dir, -o: Output directory (default: ./output)
  • ๐Ÿ’‰ --ldct: Enable Low-Dose CT reconstruction
  • ๐Ÿ“ --limited_angle: Enable Limited Angle reconstruction
  • ๐ŸŽฏ --sparse_view: Enable Sparse View reconstruction
  • ๐Ÿ“ˆ --visualize, -v: Create comprehensive comparison visualization
  • ๐Ÿ”Š --verbose: Enable detailed logging (default: True)
  • ๐Ÿ“ --log_file: Custom log file path (default: noise_reconstruction.log)

๐Ÿ”ฌ Reconstruction Types

  1. โญ Normal FBP: High-quality baseline reconstruction (always performed)
  2. ๐Ÿ’‰ Low-Dose CT (LDCT):
    • ๐Ÿ“‰ Dose reduction factor: 50% (configurable)
    • ๐ŸŽฒ Poisson noise simulation for photon counting statistics
  3. ๐Ÿ“ Limited Angle:
    • ๐Ÿ“ Angular range: 120ยฐ (configurable)
    • ๐ŸŽฏ Starting angle: 0ยฐ (configurable)
  4. ๐ŸŽฏ Sparse View:
    • ๐Ÿ“Š Sampling factor: Every 24th angle (configurable)

๐Ÿ“ค Output Files

  • โญ Normal: output/normal/{filename}.npy
  • ๐Ÿ’‰ LDCT: output/ldct/{filename}.npy (if --ldct)
  • ๐Ÿ“ Limited Angle: output/limited_angle/{filename}.npy (if --limited_angle)
  • ๐ŸŽฏ Sparse View: output/sparse_view/{filename}.npy (if --sparse_view)
  • ๐Ÿ“ˆ Visualization: output/visualizations/{filename}_comprehensive.png (if --visualize)

๐Ÿ”„ Complete Workflow Example

Here's a complete workflow from DICOM file to various reconstructions:

# Step 1: Generate sinogram from DICOM file ๐Ÿ“Š
python sino_creation.py sample/sample.IMA \
    --output_dir ./output \
    --visualize

# Step 2: Perform various reconstructions with noise/artifacts ๐Ÿ”ง
python noise_reconstruction.py output/sinograms/sample.npy \
    --output_dir ./output \
    --ldct \
    --limited_angle \
    --sparse_view \
    --visualize

# Results will be available in: ๐Ÿ“
# - output/sinograms/sample.npy (original sinogram)
# - output/normal/sample.npy (normal reconstruction)
# - output/ldct/sample.npy (low-dose reconstruction)
# - output/limited_angle/sample.npy (limited angle reconstruction)
# - output/sparse_view/sample.npy (sparse view reconstruction)
# - output/visualizations/ (comparison plots)

โš™๏ธ Configuration

๐Ÿ”ง Reconstruction Parameters

Key parameters can be modified in the script headers:

๐Ÿ“Š Sinogram Creation (sino_creation.py):

NUM_ANGLES = 2160              # Number of projection angles
ANGLE_RANGE_DEG = (0.0, 360.0) # Angular range
DETECTOR_SPACING = 1.0         # Detector pixel spacing
APPLY_GAUSSIAN_FILTER = False  # Preprocessing filter
GAUSSIAN_SIGMA = 0.4           # Filter parameter

๐Ÿ”ง Noise Reconstruction (noise_reconstruction.py):

# Low-dose parameters ๐Ÿ’‰
DOSE_REDUCTION_FACTOR = 0.5    # 50% dose reduction
POISSON_NOISE_SCALE = 1.0      # Noise scaling

# Limited angle parameters ๐Ÿ“
LIMITED_ANGLE_RANGE_DEG = 120.0  # Angular range
LIMITED_ANGLE_START_DEG = 0.0    # Starting angle

# Sparse view parameters ๐ŸŽฏ
SPARSE_VIEW_FACTOR = 24        # Sampling factor

โšก Performance Notes

  • ๐ŸŽฎ GPU Acceleration: CUDA-enabled GPUs significantly speed up reconstruction
  • ๐Ÿ’พ Memory Usage: Large datasets may require substantial RAM
  • โฑ๏ธ Processing Time: Varies with image size and number of angles
    • ๐Ÿ“Š Sinogram generation: ~1-5 seconds per image
    • ๐Ÿ”„ FBP reconstruction: ~0.1-1 seconds per reconstruction

๐Ÿ“ Logging

Both scripts generate detailed logs:

  • ๐Ÿ“Š sino_creation.log: Sinogram generation process
  • ๐Ÿ”ง noise_reconstruction.log: Reconstruction process

Use --verbose flag for detailed console output. ๐Ÿ”Š

๐Ÿ”ฌ Other Algorithms

I compared lots of algorithms, here are a comparison plot: comparison plot

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿค Contributing

Feel free to reach me (Jie) out if you have any questions or suggestions! This is NOT a very professional project, but I'm happy to improve it. ๐Ÿ˜Š


๐Ÿ’ก Tip: Start with the sample data in the sample/ directory to get familiar with the toolkit before processing your own DICOM files!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages