3D Slicer companion — Jan Witowski course bridge
A companion, not a button-by-button tutorial. For each verified Witowski lesson it links the Slicer action to the imaging concept in our chapters, says what to notice, what can go wrong, and gives a small exercise on real RIDER/ TRACE-CT data. Use it alongside courses & videos and the official 3D Slicer Training Compendium (training.slicer.org).
Course: 3D Slicer Tutorial by Jan Witowski — YouTube playlist (11 videos, recorded on Slicer 4.10.2, ~2019; titles verified 2026-08-10): https://www.youtube.com/playlist?list=PLeaIM0zUlEqswa6Pskg9uMq15LiWWYP39
Note the playlist’s actual scope: it covers basics, manual/threshold/grow-from- seeds segmentation, smoothing, export, segment volume, surface vs volume rendering, 2D measurements, navigation/cropping, and DICOM anonymization. It does not include dedicated lessons on transforms/registration, segment statistics, or PyRadiomics — for those, use the official docs and Training Compendium (below) and Ch. 2–3. Slicer’s UI has evolved since 4.10; concepts are unchanged, some buttons have moved.
Lesson-by-lesson bridge
#1 Basics
- Slicer action: load the Welcome/sample data, navigate the layout, mouse controls (slice scrolling, zoom, window/level).
- Concept: the viewer renders a located volume (Ch. 2 — physical space); window/level maps HU→display (Ch. 1 — HU).
- Notice: how axial/coronal/sagittal reformats are computed from one geometry.
- Can go wrong: confusing display window with stored HU; zoom ≠ resolution.
- Exercise (RIDER): load a RIDER CT, set a lung window (W≈1500, L≈−600), confirm
parenchyma; cross-check the displayed spacing against
pydicom(Ch. 1 Task 4).
#2 Manual segmentation. Thresholding. (opens with the DICOM Browser)
- Slicer action: import a DICOM study (DICOM Browser), then Segment Editor → Threshold (HU-range selection) + manual paint/erase.
- Concept: a mask with a reference geometry (Ch. 2 — segmentation representations); thresholding on
HU (Ch. 1). The import groups files by
SeriesInstanceUIDand resolves the frame of reference (Ch. 1 hierarchy, Ch. 2 — FoR). - Notice: a threshold is an HU interval — it bakes in your slope/intercept assumption; the mask inherits the volume’s geometry.
- Can go wrong: threshold leaking into adjacent similar-HU tissue; mask on the wrong reference volume.
- Exercise (RIDER): threshold a bony or contrasted structure; then inspect the Segmentations module’s reference geometry. Complementary: Training Compendium STC-DICOM-101 (DICOM and Slicer) and STC-VIS-101 (Data Loading & Visualization).
#3 Scissors. Grow from seeds.
- Slicer action: Scissors (cut in 2D/3D) and Grow from seeds (region-growing from placed foreground/background seeds).
- Concept: semi-automatic segmentation; the “reference geometry + discrete label” model (Ch. 2 — segmentation representations); grow-from-seeds is a label-propagation that still must sit on the CT grid.
- Notice: how a small seed change can flip a boundary — segmentation instability (Ch. 3 — robustness).
- Can go wrong: growing across a leak into neighbouring anatomy; seeds on the wrong slice.
- Exercise (RIDER): segment the tumour with grow-from-seeds; nudge one seed and watch the mask change — a felt demo of segmentation dependence (Ch. 3).
#4 Smoothing. Plugins.
- Slicer action: smoothing effects (e.g. Gaussian/median) and Segment Editor plugins/effects.
- Concept: mask post-processing changes shape features (Ch. 3) and boundary quality (Ch. 2 — segmentation).
- Notice: smoothing removes small protrusions — helpful for display, but it alters volume/surface metrics.
- Can go wrong: over-smoothing erasing real anatomy or changing the measurement.
- Exercise (RIDER): measure segment volume before/after a smoothing pass (use #6); note the change.
#5 Exporting and saving
- Slicer action: save the scene/segmentation (
.seg.nrrd,.nrrd, scene MRB); export a labelmap volume. - Concept: the round-trip between a segmentation object and a binary mask (Ch. 2
segmentation reps);
.nrrdcarries geometry (SimpleITK/NRRD), DICOM SEG is the structured exchange form. - Notice: which format preserves the reference geometry and segment identity.
- Can go wrong: exporting a bare array without geometry; losing the source-image reference.
- Exercise (RIDER): export the mask as
.seg.nrrdand load it in Python with SimpleITK; confirm spacing/origin/direction match the CT (Ch. 2 — resampling).
#6 Computing segment volume
- Slicer action: Segment Statistics / segment volume computation.
- Concept: segmentation → measurement → quantitative phenotype (Ch. 3, notes
§2); volume = Σ voxels × voxel volume, where voxel volume = sx × sy × sz
(only
sx³if spacing is isotropic — do not writespacing³for anisotropic data). - Notice: volume depends on spacing and the mask boundary — record both.
- Can go wrong: reporting volume without the spacing it was computed at.
- Exercise (RIDER): compute tumour volume; resample to a different spacing (Ch. 2 — resampling) and recompute — note the change.
#7 Surface vs Volume Rendering
- Slicer action: 3D surface model (marching cubes) vs volume rendering (ray casting).
- Concept: surface = an extracted mesh of the mask (shape display); volume rendering = direct intensity projection. Both visualise, neither changes the data.
- Notice: a surface model’s jaggedness reveals partial-volume/label noise (Ch. 2 partial volume/resampling); volume rendering shows HU, surface shows the mask.
- Can go wrong: mistaking a pretty surface for measurement accuracy.
- Exercise (RIDER): toggle surface vs volume of the tumour mask; look for boundary shimmer (partial volume) and slab artefacts (slice thickness).
#8a 2D Measurements
- Slicer action: line/angle/region measurements on slices.
- Concept: manual quantitative imaging (Ch. 3); the basis of RECIST-style and morphometric measurements.
- Notice: a 2D line ignores out-of-plane extent; inter-reader line placement varies (Ch. 6 — reader variability).
- Can go wrong: reporting a single diameter as if it summarises 3D extent.
#8b Navigation, Location and Cropping
- Slicer action: cross-reference slice intersection, go-to coordinate, crop/ROI.
- Concept: navigating in physical patient (LPS) coordinates (Ch. 2 — physical space).
- Notice / can go wrong: distinguish two very different operations.
- A pure extent crop / subvolume (e.g. Crop Volume with isotropic output spacing disabled, or saving a bounding-box subvolume) can preserve the spacing and direction while changing only the origin (the new subvolume’s corner).
- But Slicer’s Crop Volume module is usually configured with a reference
ROI and an output spacing, in which case it resamples the data — the
output spacing/interpolation differ from the source, and the geometry has
changed. Never assume preservation: after any crop, print the output’s
spacing/origin/directionand check whether resampling occurred and which interpolator was used (Ch. 2 — resampling).
- Exercise (RIDER): crop to the tumour region; then confirm — or detect — whether the saved subvolume still shares the original spacing/direction, and if it resampled, record the target spacing and interpolator.
#9 Anonymizing DICOMs
- Slicer action: DICOM anonymization (strip/replace identifiers).
- Concept: the data boundary and de-identification (Ch. 1, Ch. 5 — workflow failures); many DICOM tags and burned-in pixel text carry PHI.
- Notice: anonymization is hard to do completely — private tags and burned-in text survive naïve tag removal.
- Can go wrong: a “de-identified” export that still leaks PHI.
- Exercise: apply anonymization; then inspect the output with
pydicomfor residualPatientID/PatientName/private tags before any sharing. (Never commit patient data —.gitignoreenforces this.)
Topics not in the Witowski playlist — use the official resources
- Transforms / registration — Slicer Transforms and General Registration (BRAIN/Affine/BSpline) modules. Concept: changing direction/origin to align frames of reference (Ch. 2 — physical space/resampling). Training Compendium: Registration tutorials + the Slicer Registration Case Library.
- Segment statistics / SlicerRadiomics — install SlicerRadiomics extension; compute features interactively (Ch. 3). Concept: the radiomics pipeline in the UI.
- DICOM SEG inspection — load a SEG object; Slicer decodes per-frame functional groups (Ch. 2 — SEG reps). Complementary: dcmqi/highdicom for robust decode.
Official 3D Slicer resources
- 3D Slicer Training Compendium — https://training.slicer.org/ (
VERIFIED). Step-by-step tutorials with sample data. Relevant: STC-GEN-101 (Welcome), STC-VIS-101 (Data Loading & Visualization), STC-VIS-102 (Data Loading & 3D Visualization), STC-DICOM-101 (DICOM and Slicer), STC-DICOM-102 (DICOM Image Visualization), STC-SEG-102 (Segmentation for 3D Printing), STC-SEG-103 (AI-Based Segmentation via MONAIAuto3DSeg), STC-DEV-101 (Scripting). Author: Sonia Pujol et al. - Slicer manual — slicer.readthedocs.io (module reference; Segmentations, Segment Editor, DICOM).
- Slicer Segmentation Recipes — lassoan.github.io/SlicerSegmentationRecipes (worked segmentation techniques).
- Slicer Discourse — discourse.slicer.org (Q&A).
Visual QC — the capstone exercise (not in the playlist)
Run TRACE-CT’s real Visual QC process (Ch. 2 — Visual QC): export a QC bundle
(scripts/visual_qc/export_rider_qc.py) and open it with
tools/slicer/open_qc_bundle.py (custom 2×3 layout: source vs processed ×
axial/coronal/sagittal, lung window). Walk source vs processed, confirm the mask
sits on the tumour, check 3D boundary, and record a verdict with
scripts/visual_qc/record_review.py. This turns every concept above into one
auditable QC pass.