Quantitative imaging and radiomics — reference
Reference · Dense lookup material — the frozen M1-09 numbers, the feature-family table, standardisation citations, tools, and failure modes. Teaching versions live in the chapter; the 107 feature names live in the manifest appendix.
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 measurement layer (the chapter’s central model)
biological reality → acquisition physics → reconstruction → segmentation/ROI → geometry + preprocessing → feature implementation → MEASUREMENT → statistical inference → predictive model → clinical claimA model can exploit kernel, site, scanner, segmentation style, or preprocessing instead of biology; a high AUROC/C-index does not repair a bad measurement layer. Measurement validity/stability · statistical association · prediction · clinical utility are four different questions. Full treatment: The measurement layer.
The pipeline (chain of choices)
acquisition/reconstruction → segmentation → preprocessing → resampling → discretisation → extraction → robustness → modelPin and report every arrow. The frozen TRACE-CT M1-09 order:
DICOM pixels → HU (RescaleSlope/Intercept) → external 1 mm isotropic
resampling (B-spline image, NN mask) → clip [-1000, +400] HU → PyRadiomics
(binWidth 25, Original only, true 3D, label 1, no normalization).
- Operation order is feature-determining:
resample → clip≠clip → resample(interpolation sees different inputs). TRACE-CT froze resample→clip as its implemented, validated order; changing order changes the measured quantity — it is part of the measurement definition, not a style choice (Chapter 4). - No double resampling: external resampling means PyRadiomics
resampledPixelSpacingmust stayNone; two interpolation operators = a different measurement. - Clipping ≠ resegmentation: clip revalues image voxels (mask untouched);
resegmentRangeremoves voxels from the mask (intensity vs morphologic mask). TRACE-CT: external clip,resegmentRange = None.
The M1-09 six-setting matrix (reconstruction variable)
TCIA RIDER Lung CT v3 (DOI 10.7937/K9/TCIA.2015.U1X8A5NR, CC BY 4.0; 32
NSCLC patients, two same-day scans, six settings per scan; all six settings are
current v3 content — v2 held only 1.25L):
| lung kernel (L) | standard kernel (S) | |
|---|---|---|
| 1.25 mm | 1.25L | 1.25S |
| 2.5 mm | 2.5L | 2.5S |
| 5 mm | 5L | 5S |
- Primary analysis: Scan 1 1.25L vs Scan 2 1.25L = test–retest repeatability — measurement variability under near-identical conditions, with negligible expected tumour-biological evolution over the interval.
- Secondary: all C(6,2) = 15 same-scan setting pairs = reconstruction robustness/agreement (reconstruction only varies).
- Distinct analyses; never collapsed into one generic “reproducibility” number.
- A 5 mm series has already lost high-frequency z information; later 1 mm upsampling creates samples, not anatomy.
Feature classes (PyRadiomics, eight counting shape-2D/3D)
first-order · shape (3D) · shape (2D) · GLCM · GLRLM · GLSZM · GLDM · NGTDM.
Inputs, precisely: shape from the mask geometry (grey-value independent —
but mask-dependent: kernel only through the mask); first-order from the ROI
voxel-intensity distribution (raw-value statistics for Mean/Median/Min/Max/
Variance/percentiles; discretised-histogram statistics for Entropy/Uniformity —
verified in pinned firstorder.py: targetVoxelArray vs p_i); the texture
families from matrices built on the discretised ROI.
The frozen M1-09 manifest — 107 non-deprecated Original 3D features
| Family | Count | Starts from |
|---|---|---|
| firstorder | 18 | ROI voxel-intensity distribution (raw values for Mean/Variance/…; discretised histogram for Entropy/Uniformity) |
| shape | 14 | mask only |
| glcm | 24 | co-occurrence matrix |
| glrlm | 16 | run-length matrix |
| glszm | 16 | size-zone matrix |
| gldm | 14 | dependence matrix |
| ngtdm | 5 | neighbourhood grey-tone differences |
| total | 107 |
Original-only by design: shape2D, Wavelet/LoG/Square/SquareRoot/Logarithm/
Exponential/Gradient/LBP, voxel maps, deprecated features, and diagnostics all
excluded (baseline measurement design; filters would be their own frozen
experiment). Equals the pinned build’s default-enabled non-deprecated 3D set.
Canonical names original_<class>_<Feature>; full listing:
manifest appendix. A generic “107 features incl.
wavelet” in a paper is a different battery — always ask which 107.
Filtered features (not in M1-09)
LoG (band-pass at a sigma) and wavelet (frequency bands HHH/LLL/…), recomputed on the filtered image. Shape is excluded (mask property). Filtered features add another implementation-sensitive transformation — exact filter semantics must match across software before values agree, the gap IBSI 2’s filter standardisation addresses; pin and report filter type and parameters. 2D vs 3D computation is feature-determining — report which.
Discretisation
X_b = floor((X - L) / w) + 1, with w > 0 and a declared lower-bound/anchor
L (IBSI fixed-bin-size, FBS). The ROI minimum is one possible declared anchor in
a bounded convention, not the sole general IBSI choice. PyRadiomics instead uses
floor(X / w) - floor(min(X_ROI) / w) + 1: zero-aligned bins plus a constant
relabelling so the observed ROI minimum is 1. The formulas may coincide in special
cases, but are not universally numerically identical. PyRadiomics default
binWidth = 25. Changing bin width changes the discretisation contract and can
change feature values. The direction and magnitude depend on the data, the declared
discretisation contract, the feature definition, matrix, and aggregation; no
universal direction follows from bin width alone. Pin and report; never tune to a
metric.
PyRadiomics semantics (what “feature X” operationally means)
Name + library version/commit + image type (Original vs derived) + enabled classes +
exact feature lists + label + 2D/3D (force2D false) + input geometry +
resampling (resampledPixelSpacing None) + interpolator + normalization
(disabled) + clip/resegmentation distinction + binWidth + matrix aggregation
(default GLCM: per-angle feature values averaged; with distance weighting,
matrices weighted+summed first — feature(average(matrices)) ≠
average(feature(matrices)) for nonlinear features).
Config text ≠ effective configuration: omitted values are defaults; the only
trustworthy check loads the file through the pinned extractor and inspects the
effective configuration. Manifest SHA-256
makes “which 107?” machine-checkable. Wording: IBSI-aligned definitions with
documented PyRadiomics implementation semantics — never blanket “IBSI
compliant”. Full treatment: A feature name is not an operational definition.
Agreement statistics
Pearson r measures linear association, not agreement — for at least two finite
paired observations with nonconstant X and exact Y = a + bX, b > 0 gives
r = +1, b < 0 gives r = -1, and b = 0 or zero variance makes r undefined.
Correlation is blind to calibration.
Lin’s CCC (frozen M1-09 primary metric; Lin 1989, DOI 10.2307/2532051):
2·cov(X,Y)CCC = ──────────────────────────────────── var(X) + var(Y) + (mean(X)−mean(Y))²- Agreement against the line of identity y = x: precision × accuracy (denominator = spread of X + spread of Y + squared mean bias).
- Worked case:
X=[1,2,3],Y=[2,4,6]→ r = 1, CCC = 4/11 ≈ 0.36 (mean shift contributes 4 of denominator 22/3).Y=X→ CCC = 1;Y=2μ−X→ CCC = −1 (perfect discordance). - Population moments: frozen estimator uses 1/N moments over the observed paired vector (Lin’s form). Not a casual preference — with unequal means, N vs N−1 changes the CCC value (4/11 vs 4/9 in the worked case); the estimator definition belongs to the frozen statistical contract.
- Degenerate cases: < 2 finite pairs, or zero denominator (both vectors constant and equal) → CCC undefined, recorded with exact reason, never substituted 0/1. Constant-but-different vectors → well-defined CCC = 0.
- Eligible-N semantics: cohort eligibility from qualification metadata only;
extraction failures (NaN/Inf) reduce
n_finite_pairs, nevern_eligible_paired_subjects. No imputation of feature values. - Full treatment: Correlation, concordance, and agreement.
Paired bootstrap + seed (frozen CI contract)
10,000 replicates · sampling unit = subject pair (both scans travel
together; independent Scan1/Scan2 resampling destroys pairing) · seed 1729 ·
CI = 2.5/97.5 percentiles of valid replicate CCCs · CI reported only when
valid fraction ≥ 0.95 · invalid (undefined-CCC) replicates counted, never
substituted · NOT_RUN (point CCC not reportable; counts 0, fraction null) vs
RUN explicit provenance. Bootstrap estimates uncertainty; it creates no new
biological data (a defensible, frozen choice — not the only interval-estimation
method). Seed: replay requires same seed and same PRNG implementation and
pinned environment (seed = one part of provenance, not the whole
reproducibility contract); 42 vs 1729 has no statistical meaning —
pre-specification blocks result-shopping; frozen provenance means no casual
change after inspection. Full treatment:
Paired uncertainty and reproducibility.
Reportability + benchmark (frozen)
REPORTABLE requires ≥ 25 finite valid test–retest pairs (existing RIDER
qualification convention) AND mathematically defined CCC; the exact
NOT_REPORTABLE reasons are part of the project’s qualification metadata.
CCC ≥ 0.90 is a pre-specified
descriptive benchmark (“high repeatability”) reported as counts/fractions —
NOT a pass/fail criterion, NOT feature selection; poor CCC is valid evidence;
features are never silently dropped. Thresholds in the literature (ICC/CCC bands
~0.75/0.85/0.90) are context-dependent conventions — report distributions.
Robustness (three tiers)
- Repeatability (same scanner/session) — RIDER same-day repeats, same setting.
- Reconstruction robustness/agreement (same acquisition, different reconstruction) — the 15 setting pairs.
- Reproducibility (across scanners/sites/protocols) — the hardest bar.
- Perturbation (nudge mask/params) = the always-available cousin. Filter inside validation if stability is ever used for selection.
Negative controls & baselines (falsifying the claimed signal)
Baseline ladder: clinical → volume → shape → first-order → texture → full.
Increment over volume is the bar most texture claims never clear. Distinctions:
label permutation (pipeline sanity) · representation negative control
(validity — e.g. shuffle ROI voxels: preserves mask/volume/shape/histogram,
destroys spatial organisation) · ablation (component attribution). Verified
anchors: Welch et al., Radiother Oncol 2019;130:2-9, PMID 30416044
(Aerts-style signature = volume surrogate under shuffling; peer-reviewed);
READII-2-ROQC, arXiv:2607.28423 (preprint; 9 control configs, 3,552
tumours, foundation-model background confounding). Failing a control
falsifies the texture interpretation; passing does not prove causality
(acquisition physics is spatially organised too). Full treatment:
Falsification, baselines, and negative controls.
Region definition (intra- / peri- / multi-region)
feature = f(image, region definition, geometry, preprocessing, implementation). Rings in mm on a defined grid (never voxel counts); dilation − tumour = ring; erosion = core; clip rings to anatomically meaningful tissue and report exclusions. Region changes amplify segmentation and spacing sensitivity and interact with lesion size. Ring-width sweeps (2/3/5/7 mm …) = multiplicity: “optimal width” is study-specific (verified peer-reviewed NSCLC examples chose 3 mm in one cohort/endpoint and 6 mm in another). Full treatment: Where measurement happens, Chapter 4.
Delta radiomics (longitudinal)
Delta = derived measurement: absolute / relative / log-ratio, chosen pre-results; interval + treatment context are part of the definition. Repeatability (test–retest) = the noise floor — change below the floor is uninterpretable, above it still a candidate pending confounders; no universal threshold. Two-timepoint moving parts: protocol consistency (exclude inconsistent pairs), segmentation at both timepoints, ROI composition change, registration (for voxelwise only), identical preprocessing. Statistical unit = the patient pair; baseline-in-train/follow-up-in-test = leakage. Verified examples: prospective PDAC NALIRIFOX (Transl Oncol 2026, doi:10.1016/j.tranon.2026.102900; 107→55, bootstrap; Δ-volume strongest predictor); externally validated PDAC deltas (Ann Surg Oncol 2024;31:2608-2620; combined clinical+delta best). Full treatment: Longitudinal change and absolute measurement error.
Raw robustness vs harmonisation — ordering
Measure raw reconstruction sensitivity first; harmonisation is an intervention after the baseline exists, as a separately frozen experiment. ComBat limits (Johnson 2007; radiomics guide Orlhac 2022): adjusts feature distributions, cannot recreate physics lost in acquisition/reconstruction; assumes batch effects independent of outcome; fit on training only (else leakage); documented cases where assumptions fail. Full treatment: Harmonisation and the model handoff, Case study: measure before intervening.
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. Defines the feature computation. - 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. Defines what a measurement is worth.
- CLEAR — Kocak et al., Insights Imaging 2023;14:75, PMID
37142815, PMCIDPMC10160267. Radiomics reporting (58 items, ESR/EuSoMII-endorsed; CLEAR-E3 + METRICS). Defines what a study must report.
Relationship: QIBA (measurement value) → IBSI 1/2 (computation) → PyRadiomics (one implementation, IBSI-aligned with documented semantics) → CLEAR (reporting). Different layers, complementary; a paper does not override a standard, and an implementation is not the standard.
Tools
- PyRadiomics — the implementation (image types, binWidth, resampling, feature classes, filter params via YAML; effective-settings verification). Pin version and commit; read the per-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, hashed PyRadiomics YAML + manifest.
What usually goes wrong
- Calling features biomarkers; unreported
binWidth/spacing/interpolation/ reconstruction; pooling reconstructions; passing an explicitly binary mask onward as fractional after linear interpolation without declared thresholding/re-binarisation (Ch. 4); double resampling; clip/resegment confusion; reporting Pearson r as “repeatability”; feature selection before splitting or disguised as a “stability filter”; applying ComBat globally (leakage), before baseline measurement, or when batch correlates with outcome; trustingp >> nbecause CV looks good; confusing stable with predictive with clinically useful. - No volume/clinical baseline before a texture claim; “optimal” ring width swept post hoc; delta features interpreted with no repeatability floor; baseline and follow-up rows split across train/test.
TRACE-CT connection (read-only)
The extraction, frozen-configuration, verification, statistics, and determinism tooling behind the frozen M1-09 protocol values above is inventoried in the TRACE-CT learning map, together with the project’s execution status. The measured project results are bounded to their cohorts and protocols, not a universal feature-family claim.
Go deeper
- IBSI 1 (PMID
32154773), IBSI 2 (doi:10.1148/radiol.231319), QIBA (rsna.org/QIBA), CLEAR (PMID37142815). - PyRadiomics docs (features, customization).
- Lin LI. CCC. Biometrics 1989;45(1):255-268 (PMID
2720055, doi:10.2307/2532051); Efron B. Bootstrap. Ann Statist 1979;7(1):1-26 (doi:10.1214/aos/1176344552). - TCIA RIDER Lung CT v3
(collection page,
DOI
10.7937/K9/TCIA.2015.U1X8A5NR); Zhao B et al., Radiology 2009;252(1):263-272 (same-day repeat design; PMID19561260, doi:10.1148/radiol.2522081593). - 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, operation order, version).
- The measurement layer sits between biology and models; robust ≠ predictive ≠ clinically useful; models exploit pipeline shortcuts.
- M1-09 frozen design: six-setting matrix; 107 Original 3D features (hashed manifest); CCC (population moments, line of identity); paired-subject bootstrap (10,000, seed 1729, ≥0.95 valid, percentile CI); CCC ≥ 0.90 descriptive only; no selection/harmonisation/modelling by design.
- Repeatability ≠ reconstruction agreement ≠ reproducibility; measure raw baseline before any intervention; ComBat changes distributions, not physics.
- Standardisation stack: QIBA (value) → IBSI 1/2 (computation) → PyRadiomics (implementation) → CLEAR (reporting).
© 2026 Adrian Tkacz · BioMedical-IT
Original text and figures are licensed under the Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0), unless otherwise noted. Please credit Adrian Tkacz / BioMedical-IT and link to the original source. Third-party materials retain their respective rights and licenses.