---
kind: concept
slug: radiomics
title: Radiomics
summary: >-
  Quantitative features computed from medical images, such as CT tumour outlines. The key question is feature robustness: which features stay stable under acquisition and segmentation changes. Choose between test-retest scans and single-scan image perturbation, and check results on your own cohort.
tags: [medical-imaging, radiomics, feature-robustness, evaluation]
papers: ["1806.06719"]
related: [intraclass-correlation-coefficient, data-augmentation]
status: draft
updated_at: 2026-11-08
---

## Overview

Radiomics turns a medical scan of a region, such as a tumour, into a long list
of numbers describing its size, intensity and texture [arxiv:1806.06719 §1].
A model built on these numbers generalises poorly when some of them change
with patient positioning, acquisition or segmentation [arxiv:1806.06719 §1].
The invariant the variants below try to check is therefore: a feature is only
usable if its value agrees across realistic variations of the same patient's
scan. Only one source card is used here, so this page covers only the
robustness question for CT.

## Variants

### Test-retest robustness

Scan each patient twice, then compute each feature on both scans and measure
agreement with ICC(1,1). A feature with ICC ≥ 0.90 counts as robust
[arxiv:1806.06719 §4.5]. In the paper's cohorts, 73.5% of 4032 features were
robust in NSCLC (31 patients) and 34.0% in HNSCC (19 patients)
[arxiv:1806.06719 §2.1]. This is the reference the other variant is judged
against. Card: [Zwanenburg et al. (radiomic robustness)](/papers/1806.06719).

### Single-scan image perturbation chains

Take one scan and make many altered copies. Each copy goes through a chain of
perturbations: rotation, Gaussian noise, translation, volume change and
contour randomisation [arxiv:1806.06719 §2]. The paper tests 18 chains and
scores each chain against the test-retest result, feature by feature
[arxiv:1806.06719 §2.3]. The chain NTVC (noise, translation, volume change,
contour randomisation) had 3.3% false-positive robust features in NSCLC and
10.0% in HNSCC [arxiv:1806.06719 §2.3]. Card: [Zwanenburg et al. (radiomic robustness)](/papers/1806.06719).

## When to use which

| Situation | Use | Why |
|---|---|---|
| Test-retest scans of the same phenotype are available | Test-retest ICC | It is the reference the paper scores all chains against [arxiv:1806.06719 §2.3]. |
| Only one scan per patient, and you need a robustness estimate | Perturbation chains such as NTVC, checked against any test-retest data you can obtain | The paper reports that chains approximate test-retest results on its two cohorts [arxiv:1806.06719 §2.3]. The results are author-reported on 31 and 19 patients [arxiv:1806.06719 §3]. |
| Choosing among chains | Compare chains only within one cohort | Chains differ in size, from 27 to 40 images each, and the paper compares them within cohort [arxiv:1806.06719 §2.2]. |
| Considering noise alone as the perturbation | Do not rely on it to discriminate features | Noise alone left 96.6% (NSCLC) and 99.3% (HNSCC) of features robust [arxiv:1806.06719 §2.2]. |
| Other modality, or other voxel size or discretisation | Re-check robustness for your setting | The paper is CT-only [arxiv:1806.06719 §3], and the authors note that robustness does not transfer across modalities or computational settings [arxiv:1806.06719 §1]. |

## Implementation sketch

Language-agnostic outline of the robustness check. The paper's chains,
settings and feature extraction are in its supplementary material; this
sketch shows only the structure.

```pseudocode
# Robustness check per feature  [arxiv:1806.06719 §2] [§4.5]
# Input:  test and retest scans with masks; list of perturbation chains
# Output: per chain, per feature: ICC(1,1) and robust flag

def check_robustness(test_scan, retest_scan, chains, icc_threshold=0.90):
    # Reference: test-retest agreement on unperturbed scans  [§2.1]
    reference = icc_test_retest(test_scan, retest_scan)
    results = {}
    for chain in chains:
        # Perturbed copies of the same scan, one set per chain  [§2]
        copies = perturb_all(test_scan, chain)
        # Feature values for every copy  [§4.4]
        values = extract_features(copies)
        # ICC of features across perturbations  [§4.5]
        icc = icc_1_1(values)
        # Robust when ICC reaches the threshold  [§4.5]
        robust = icc >= icc_threshold
        # Compare with the reference to count false positives  [§2.3]
        results[chain.name] = (icc, robust, reference, robust_vs(reference))
    return results
```

## Contradictions

- **Which chain gives the fewest false positives.** The card's summary says NTVC
  gave the fewest false-positive robust features [arxiv:1806.06719 §2.3]. The
  paper's table gives RC (contour randomisation only) 2.6% in NSCLC, below
  NTVC's 3.3% [arxiv:1806.06719 §2.3]. The paper's text notes that RC was
  lowest in NSCLC and that NTVC was low in both cohorts [arxiv:1806.06719 §3].
  In HNSCC, NTVC is lowest at 10.0% [arxiv:1806.06719 §2.3]. Both statements
  stand; which chain is best depends on the cohort.

## Caveats

- Test-retest is itself confounded in the HNSCC cohort: the two scans used
  different PET attenuation-correction protocols [arxiv:1806.06719 §3]. The
  paper suggests this may explain part of the higher false-negative rate in
  NSCLC [arxiv:1806.06719 §3].
- The cohorts are small (31 and 19 patients), and the confidence intervals of
  the ICC are wide, for example 0.35 on average for HNSCC test-retest
  [arxiv:1806.06719 §3].
- Robust fractions depend on the chosen anti-aliasing parameter. In HNSCC, the
  share of robust features moved from 34.0% at β = 0.93 to 43.0% at β = 0.90
  [arxiv:1806.06719 supp. note 2]. Report the choice explicitly.
- The paper does not state the ICC design, and no code is public
  [arxiv:1806.06719 §4.5]. Reimplementations may differ.

## Papers

- [Zwanenburg et al. (radiomic robustness)](/papers/1806.06719): perturbation chains on one CT scan scored against test-retest ICC, on 31 NSCLC and 19 HNSCC patients.
