One tumour, hundreds of candidate features
Tonight · ~25 min · read · energy: low · setup: none
Run PyRadiomics on one tumour and you get hundreds of numbers with names like
original_glcm_ClusterShade or wavelet-LLH_glrlm_LongRunEmphasis. They look like
a vocabulary to memorise. They are not. They are a small number of ideas — first
order, shape, texture — instantiated many times. This lesson gives you the intuition
behind the families, so the names stop being intimidating and start being
diagnosable.
The anchor: three ideas, many numbers
PyRadiomics documents eight feature classes (counting shape-3D and shape-2D separately): first-order, shape (3D), shape (2D), GLCM, GLRLM, GLSZM, GLDM, NGTDM. You do not need to derive each feature; you need to recognise the family and its failure mode. All of radiomics reduces to three questions about the ROI:
- What are the intensity values inside it? → first-order.
- What is its shape? → shape.
- How are the intensities arranged spatially? → texture (five matrix families).
That is the whole taxonomy. Everything else is variations and filters.
First-order — intensity statistics within the ROI
Mean, median, variance, skewness, kurtosis, energy, entropy, percentiles, min/max. Conceptually simple; already diagnostic — a necrotic tumour (low mean HU, high variance) looks different from a solid one in the first-order statistics alone. These are sensitive to discretisation and intensity windowing, so they inherit all of step 5’s variability.
Shape — ROI morphology, independent of intensities
Volume, surface area, sphericity, elongation, flatness, maximum 3D diameter, surface-to-volume ratio, least/major axis. Shape is extracted from the mask and is independent of grey values. Two consequences worth holding:
- Shape is generally among the more reproducible feature classes across software implementations, because it does not depend on the texture machinery.
- But it depends entirely on the segmentation and on how volume is defined, so it
inherits all of segmentation variability (Ch. 2).
COMMON PRACTICEto over-interpret shape features biologically; treat them as morphology, not destiny.
Recall the asymmetry from Chapter 1: shape is largely kernel-independent; texture is not. That single rule explains a lot of which features survive a reconstruction change.
Texture — spatial relationships between grey levels
Five matrix families. All are computed on the discretised image within the ROI (discretisation is lesson 4; the matrices are lesson 3). For intuition only, here is what each counts:
| Family | What it counts | Intuition |
|---|---|---|
| GLCM (Grey-Level Co-occurrence) | how often grey-level pairs occur at an offset/direction | local joint-intensity structure; Joint Entropy ≈ texture disorder |
| GLRLM (Grey-Level Run Length) | runs of consecutive equal-grey-level voxels along a direction | coarse vs fine striation; long-run emphasis = coarse texture |
| GLSZM (Grey-Level Size Zone) | 3D zones of connected equal-grey-level voxels | homogeneous regions; size-zone heterogeneity |
| GLDM (Grey-Level Dependence) | dependence of a voxel’s grey level on its neighbours within a distance | subtle neighbourhood dependence |
| NGTDM (Neighbourhood Grey-Tone Difference) | difference between a voxel’s grey level and the local average | coarseness / busyness / contrast / complexity / strength |
The families overlap conceptually. A paper reporting “50 texture features” almost always has heavy redundancy: several are transforms of the same underlying matrix. Feature names are not self-explanatory biomarkers — “Cluster Shade” is a GLCM feature (a third-order moment of the co-occurrence matrix), not a biological property and not a GLSZM feature. Treat the whole battery as correlated, unstable candidates until robustness-filtered (lesson 6).
Filtered features (LoG and wavelet)
The intensity-based classes above (first-order, the five texture families), recomputed on a filtered image. Shape is excluded — it is a property of the mask, so it is never recomputed on a filtered image:
- LoG (Laplacian-of-Gaussian) — band-pass filter at a chosen sigma; highlights structures of a given scale. Different sigmas give different “texture scales”.
- Wavelet — decomposes the image into frequency bands (HHH, LLL, HLH, …); features per band. Wavelet features are the least reproducible across software (IBSI 2 addresses this — reference).
- Square / square-root / logarithm / gradient / exponential — simple intensity transforms, occasionally used.
Filtered features multiply the feature count (and the multiple-testing burden, Ch. 4) and are the least reproducible. Use sparingly; report exactly.
2D vs 3D computation
Texture matrices can be computed in 2D (per slice, then aggregated) or 3D (across the whole volume). This is a feature-determining choice: a 2D-GLCM and a 3D-GLCM of the same ROI are different numbers. IBSI defines both; report which.
Stop and think — then reveal
A paper reports 107 features: 14 shape, 18 first-order, and 75 texture (GLCM + wavelet bands). Roughly how many independent ideas does that likely represent, and what does that imply for modelling?
Far fewer than 107 — the shape features share a common mask, the first-order
features share a common intensity distribution, and the 75 texture features are
heavily correlated (many are transforms of overlapping matrices, and the wavelet
bands are correlated frequency views of the same image). This is the p >> n
problem of Chapter 4:
you have many more correlated features than patients, so unfiltered modelling will
overfit. The implication is that robustness filtering and regularisation are not
optional polish — they are the only thing standing between the table and an
unstable, unreproducible model.
What to retain
- Three ideas — first-order (intensities), shape (morphology), texture (spatial arrangement) — instantiated many times. The names are variations, not a vocabulary to memorise.
- Shape is reproducible-across-software but segmentation-dependent, and is kernel-independent; texture is kernel-sensitive. That asymmetry recurs everywhere.
- Texture features are heavily correlated and unstable; treat the battery as candidates until robustness-filtered.
- Filtered (LoG/wavelet) features multiply the count and are the least reproducible; 2D vs 3D is a feature-determining choice. Report both.
Next: how texture is actually computed — discretisation first, then a worked GLCM.