Medical imaging · 3D Slicer · DICOM · AI dataset curation

I build the clean, reproducible imaging pipelines that radiologists and AI models agree on.

A decade across 3D Slicer, SimpleITK, MONAI, nnU-Net, and DICOM tooling. Most of my pipelines are scripts, because segmentations you can diff are segmentations you can defend.

Axial, coronal, and sagittal views of a synthetic CT phantom with overlay
Synthetic thoracoabdominal phantom — rendered live from render_figures.py
3D Slicer SimpleITK / ITK MONAI nnU-Net v2 TotalSegmentator DICOM & DICOM-SEG NIfTI / BIDS PS3.15 de-ID PyTorch VTK pydicom OHIF

Selected projects

Five projects that together cover the full medical-imaging-for-AI pipeline — from raw DICOM through de-identified, QC'd, radiologist-approved training data.

Liver segmentation review: ground truth outline vs. SimpleITK prediction

Segmentation · SimpleITK · Slicer SegmentEditor

Multi-organ CT segmentation pipeline

A classical SimpleITK pipeline for body, lungs, bone, and liver — the baseline I run on every new study before handing volumes to nnU-Net or TotalSegmentator. Deterministic, fast, and good enough as a sanity check on AI output.

Dice on synthetic phantom: body 0.97 · lungs 0.81 · bone 1.00 · liver 0.97 · HD95 < 32 mm across the board

Read the case study →
nnU-Net training curves for multi-organ segmentation

nnU-Net · PyTorch · MONAI-compatible

Brain MRI lesion segmentation — nnU-Net playbook

How I train and evaluate a 3D nnU-Net v2 model for MS / glioma lesion segmentation, with 3D Slicer used as the review and correction tool at every step. Includes the metrics that actually matter clinically — lesion-level recall at 3 mm, FP per volume, HD95.

Illustrative validation Dice: liver 0.95 · spleen 0.92 · kidneys 0.92 · pancreas 0.80 · lesion 0.73

Read the case study →

Registration · SimpleITK · BRAINS

CT ↔ MRI registration toolkit

Rigid initialisation plus B-spline deformable refinement against Mattes MI. On the synthetic phantom the pipeline drops mean absolute error from 82 HU to 16 HU — an 80 % reduction.

Case study →

DICOM · PS3.15 · BIDS

AI dataset curation

De-identification to the DICOM PS3.15 Basic profile with deterministic SHA-256 pseudonyms, BIDS conversion, and a QC dashboard that flags motion, coverage, and HU-range outliers before they reach the training set.

Case study →

3D Slicer · Python scripted module

Slicer Python extension

A ScriptedLoadableModule that wraps the SimpleITK pipeline inside Slicer so a radiologist can run it, compute Dice vs. a reference segmentation, and export DICOM-SEG in three clicks.

Case study →

Code you can actually run

Every figure on this page is regenerated by GitHub Actions on every push — never pre-baked. No patient data is required. Clone the repo, run a script, get the same Dice number.

Multi-organ segmentation — SimpleITK

python scripts/python/segmentation_pipeline.py

Runs the full body / lungs / bone / liver pipeline on the synthetic phantom and prints Dice + HD95 per structure.

CT ↔ MRI registration

python scripts/python/registration.py

Centre-of-mass init → rigid multi-res → B-spline deformable. Reports mean-abs-error reduction at each stage.

DICOM de-identification — PS3.15

python scripts/python/deidentify_dicom.py

Runs the Basic Application Confidentiality profile on a synthetic in-memory DICOM and verifies pseudonymisation and UID regeneration.

Regenerate portfolio figures

python scripts/python/render_figures.py

Rebuilds the slice mosaic, segmentation overlay, MIP triptych, and Dice-curve plots that ship in /docs/assets.

Maximum-intensity projections of the synthetic thoracoabdominal phantom
Maximum-intensity projections — coronal, sagittal, axial — of the synthetic thoracoabdominal phantom.

Stack

3D Slicer

Scripted modules (ScriptedLoadableModule), SegmentEditor, Markups, DICOM browser. Custom extensions shipped to radiologist workstations.

Segmentation

nnU-Net v2, MONAI, TotalSegmentator, SimpleITK classical pipelines. Dice + HD95 + lesion-level recall reporting, cross-validated on held-out folds.

Registration

SimpleITK and BRAINS in Slicer. Rigid, affine, B-spline deformable. Mattes MI for multi-modal, NCC for intra-modality.

DICOM & interop

pydicom, dcmqi, dcm2niix. DICOM-SEG, RT-STRUCT, NIfTI, NRRD, BIDS. PS3.15 de-identification, burned-in-text detection.

Dataset curation

QC dashboards, motion scoring, HU-range validation. Deterministic pseudonymisation. HIPAA-aware workflows for multi-site studies.

Code & CI

Python (SimpleITK, numpy, scipy, matplotlib), PyTorch, Docker. Git, GitHub Actions. Every analysis is a script — diffable, reviewable, reproducible.

About

I'm a senior medical-imaging specialist with ten years across DICOM tooling, 3D Slicer extensions, segmentation, and dataset curation for AI research. I care about reproducible pipelines, honest metrics (Dice is necessary but not sufficient), de-identification done right, and scripts that still produce the same number a year from now.

Open to remote and contract engagements in medical imaging, computer-assisted intervention, or radiology AI. The repository linked below is the living portfolio companion to my CV.