Quantitative imaging and radiomics — reference
Reference · Dense lookup material — the feature-family table, standardisation citations, tools, and failure modes. Teaching versions live in the lessons.
Three terms
- Quantitative imaging — objective, reproducible measurements (volumes, diameters, attenuation). Broadest, most defensible.
- Radiomics — large battery of (mostly texture/shape) features, then modelling.
- Imaging biomarker — a feature validated against a biological/clinical reference. Most radiomic features are not biomarkers.
The pipeline (chain of choices)
acquisition/reconstruction → segmentation → preprocessing → resampling → discretisation → extraction → robustness → modelPin and report every arrow. TRACE-CT commits configs/pyradiomics_params.yaml
(binWidth 25, original, 3D, label 1) + HU clip [-1000, +400] + 1 mm B-spline
image / NN mask.
Feature classes (PyRadiomics, eight counting shape-2D/3D)
first-order · shape (3D) · shape (2D) · GLCM · GLRLM · GLSZM · GLDM · NGTDM. Shape from the mask (grey-value independent); the rest from the discretised image.
Texture families
| Family | Counts | Intuition |
|---|---|---|
| GLCM | grey-level pairs at an offset/direction | joint-intensity structure; Joint Entropy ≈ disorder |
| GLRLM | runs of equal grey level along a direction | coarse vs fine striation |
| GLSZM | 3D zones of connected equal grey level | homogeneous regions; size-zone heterogeneity |
| GLDM | dependence on neighbours within a distance | neighbourhood dependence |
| NGTDM | voxel grey level vs local average | coarseness/busyness/contrast/complexity/strength |
Filtered features
LoG (band-pass at a sigma) and wavelet (frequency bands HHH/LLL/…), recomputed on the filtered image. Shape is excluded (it is a mask property). Wavelet is the least reproducible (IBSI 2 addresses this). Square/sqrt/log/gradient/exponential are occasionally used. 2D vs 3D computation is feature-determining — report which.
Discretisation
X_b = floor(HU / binWidth) - floor(min(HU_ROI) / binWidth) + 1 (PyRadiomics
fixed-bin-width: floor division, bins equally spaced from 0, shifted so ROI min = 1;
differs from IBSI FBS, which uses ceiling and spaces from the minimum). PyRadiomics
default binWidth = 25. Smaller → more levels → higher entropy/finer contrast;
larger → coarser → lower. Pin and report; never tune to a metric.
Dependence map (what changes a feature)
(image, mask, geometry, preprocessing): interpolation/resampling, discretisation, segmentation, voxel size, reconstruction/scanner/protocol.
Robustness
- Repeatability (same scanner/session) vs reproducibility (across scanners/sites). RIDER same-day repeats measure repeatability.
- ICC / CCC for agreement; keep ≥ ~0.85 as a convention (report the distribution). Filter inside CV.
- Perturbation — nudge mask/params; unstable features are not biomarkers.
Harmonisation — ComBat limits
Assumes batch effects independent of outcome; fit on training only (else leakage); harmonises distributions, not physics; variants differ. Must be inside CV along with scaling/feature-selection/robustness-filter.
Standardisation stack
- IBSI 1 — Zwanenburg et al., Radiology 2020;295(2):328-338, PMID
32154773, doi:10.1148/radiol.2020191145. 169 standardized features + reference processing workflow. - IBSI 2 — Whybra et al., Radiology 2024, doi:10.1148/radiol.231319. Standardised filters (LoG, wavelet, Riesz).
- QIBA (RSNA, est. 2007; rsna.org/QIBA) — measurement-value framework: a Profile makes a performance Claim (bias + repeatability) for a biomarker under a protocol.
- CLEAR — Kocak et al., Insights Imaging 2023;14:75, PMID
37142815. Radiomics reporting (58 items, ESR/EuSoMII-endorsed; CLEAR-E3 + METRICS).
Relationship: QIBA (measurement value) → IBSI 1/2 (computation) → CLEAR (reporting).
Tools
- PyRadiomics — the implementation (image type, binWidth, resampling, feature classes, filter params via YAML). IBSI-style, with documented deviations — read the feature notes when strict cross-software reproducibility matters.
- SlicerRadiomics — PyRadiomics as a 3D Slicer extension (build intuition interactively).
- IBSI — the standardisation layer (not software).
- TRACE-CT uses a committed PyRadiomics YAML.
What usually goes wrong
- Calling features biomarkers; unreported
binWidth/spacing/interpolation; pooling reconstructions; linear-interpolated masks (Ch. 2); feature selection before splitting; trustingp >> nbecause CV looks good; confusing stable with predictive; applying ComBat globally (leakage) or when batch correlates with outcome.
TRACE-CT connection (read-only)
- Extraction:
scripts/rider_radiomics_extraction.py(CT → SEG decode → 1 mm B-spline → NN mask → HU clip → PyRadiomicsoriginal_glcm_JointEntropy). - Params:
configs/pyradiomics_params.yaml. - Determinism:
check_determinism=True(feature agrees to1e-6);compare_radiomics_runs.py. - Reconstruction as a variable:
classify_source_role()tagslung_1_25mmvsstandard_5_0mm. - Test–retest: RIDER same-day repeats paired in preflight → CCC stability.
Go deeper
- IBSI 1 (PMID
32154773), IBSI 2 (doi:10.1148/radiol.231319), QIBA (rsna.org/QIBA), CLEAR (PMID37142815). - PyRadiomics docs (image types, feature classes, the parameter file, IBSI compliance).
- Lambin et al. (radiomics origin) + a modern reproducibility critique, read together.
What to retain (chapter summary)
- Pipeline = chain of choices; pin and report each (binWidth, spacing, interpolation, kernel, 2D/3D).
- Feature classes: first-order, shape, GLCM/GLRLM/GLSZM/GLDM/NGTDM, + filtered (LoG/wavelet). Names ≠ biomarkers; the battery is correlated and unstable.
- Discretisation is the texture feature; wavelet is least reproducible (IBSI 2).
- Repeatability (same scan) vs reproducibility (across scanners); ICC/CCC; robustness-filter inside CV.
- ComBat harmonises distributions, not physics — mind its assumptions and leakage.
- Standardisation stack: QIBA (value) → IBSI 1/2 (computation) → CLEAR (reporting).