Skip to content

Upstream package that provides an interface to the ITK I/O functions in Julia and a bunch of medical imaging analysis workflows

License

Notifications You must be signed in to change notification settings

JuliaHealth/MedImages.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MedImages.jl

Stable Dev Build Status

A comprehensive Julia library for GPU-accelerated, differentiable medical image processing.


Table of Contents

The Challenge The Solution Architecture Data Structure Type Enums File I/O Spatial System Orientations Transforms Interpolation Resampling Registration GPU Backend GPU Usage Differentiability Gradients Pipeline API Reference Docker Contributing References


The Challenge

Concept: The Challenge


The Solution

Concept: The Solution


Architecture Overview

Architecture: Overview


MedImage Data Structure

Architecture: MedImage Data Structure


Type Enumerations

Implementation: Type Enumerations


File I/O Operations

Implementation: File I/O Operations


Spatial Coordinate System

Concept: Spatial Coordinate System


Orientation Codes

Architecture: Orientation Codes


Basic Transformations

Implementation: Basic Transformations


Interpolation Methods

Architecture: Interpolation Methods


Resampling Operations

Implementation: Resampling Operations


Cross-Modal Registration

Example: Cross-Modal Registration


GPU Backend

Architecture: GPU Backend


GPU Usage

Example: GPU Usage


Differentiability

Concept: Differentiability


Gradient Computation

Implementation: Gradient Computation


Complete Pipeline

Example: Complete Pipeline


API Quick Reference

Result: API Quick Reference


Quick Start with Docker

The easiest way to get started is using Docker with GPU support for benchmarks.

Prerequisites

  • Docker with NVIDIA GPU support (for GPU benchmarks)
  • Or Docker without GPU (CPU-only mode available)

Build and Run

# Build the Docker image
make build

# Start interactive Julia REPL (with GPU)
make shell

# Start interactive Julia REPL (CPU only)
make shell-cpu

Run Tests

# Run the full test suite
make test

# Run tests in CPU-only mode
make test-cpu

Run Benchmarks

# Run GPU benchmarks (uses synthetic data)
make benchmark

# Run CPU-only benchmarks
make benchmark-cpu

# Custom benchmark options
make benchmark-custom ARGS="--size 64 --iterations 5"

Verify Setup

# Check CUDA/GPU availability
make check-cuda

# Check Python/SimpleITK setup
make check-python

# Run quick start verification
./scripts/quick-start.sh

Test Data

Test data files are expected in test_data/:

  • volume-0.nii.gz - Primary NIfTI test file
  • synthethic_small.nii.gz - Synthetic test file
  • ScalarVolume_0/ - DICOM test directory
# Check test data availability
./scripts/check-test-data.sh

# Download benchmark data from TCIA
make download-data

# Convert DICOM to NIfTI for benchmarks
make convert-data

Note: Benchmarks use synthetic data by default (make benchmark). Real data download is only needed for make benchmark-full.

All Make Commands

make help  # Show all available commands

Contributing

Contributions are welcome! If you have expertise in medical imaging, particularly ultrasonography, or experience with the technical challenges described above, please consider getting involved.


References

[1] Gorgolewski, K.J., Auer, T., Calhoun, V.D. et al. The brain imaging data structure, a format for organizing and describing outputs of neuroimaging experiments. Sci Data 3, 160044 (2016). https://www.nature.com/articles/sdata201644

About

Upstream package that provides an interface to the ITK I/O functions in Julia and a bunch of medical imaging analysis workflows

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5