ProtonCT: Difference between revisions
SimonJolly (talk | contribs) (Created page with "Improvements to Proton CT imaging using X-ray CT priors. * Code * Some code * More Code * Some more code") |
(Replace placeholder with project overview, GitHub repo links (pct-sim, pct-tools, pct-recon), summary of TV vs dTV results, and some figures) |
||
| (One intermediate revision by one other user not shown) | |||
| Line 1: | Line 1: | ||
Development of software tools for improving proton CT imaging using X-ray CT priors. | |||
== Overview == | |||
Proton CT (pCT) images the relative stopping power (RSP) of tissue directly, by | |||
measuring the energy lost by protons transmitted through the patient. RSP governs | |||
proton range, so pCT could reduce the range uncertainties that arise when RSP is | |||
estimated from X-ray CT. Multiple Coulomb scattering, however, blurs the proton | |||
paths and hence the images. | |||
This project (PhD, Matthieu Hentz, 2026) investigated iterative list-mode pCT | |||
reconstruction with a structural prior: directional total variation (dTV), in which | |||
a co-registered X-ray CT image guides the regularisation, compared against standard | |||
total variation (TV). Reconstructions used a FISTA-type algorithm on Geant4-simulated | |||
acquisitions of three phantoms (Gammex-type RSP phantom, Catphan CTP528 line-pair | |||
module, and a spiral phantom of circular inserts), in an idealised regime and in a | |||
realistic regime with clinically motivated detector geometry and measurement | |||
uncertainties. | |||
[[File:PCT_sim_setup_ctp528.png|thumb|500px|Geant4 visualisation of the simulated single-proton-tracking set-up: entry and exit trackers (blue) around the CTP528 module in the realistic configuration, with 200 MeV proton tracks in red.]] | |||
== Code == | |||
All software is on GitHub under [https://github.com/mhentz mhentz]: | |||
* [https://github.com/mhentz/pct-sim pct-sim] (C++, Geant4 11): simulates a pCT acquisition. Records position, direction and energy of each proton on entry and exit trackers, one Geant4 run per projection angle; writes ROOT ntuples plus dose and fluence scoring. Includes several phantoms, "ideal" and "realistic" set-ups, and Sun Grid Engine submission scripts. Documentation is in its <code>docs/</code> folder. | |||
* [https://github.com/mhentz/pct-tools pct-tools] (Python/C++, [https://pypi.org/project/pct-tools/ on PyPI]): building blocks for list-mode reconstruction with system matrices too large for memory. Most-likely-path (MLP) estimation, chord-length system-matrix blocks stored compressed on disk, gradient steps and Lipschitz estimates looping over blocks with OpenMP. [https://mhentz.github.io/pct-tools/ API reference]. | |||
* [https://github.com/mhentz/pct-recon pct-recon] (Python): the full reconstruction and analysis pipeline. Preprocessing of the simulated data, system-matrix construction, FISTA with TV and dTV proximal operators (CCPi Regularisation Toolkit), FBP baseline, cluster job scripts, and the analysis producing L-curves, SSIM, RSP accuracy and MTF figures. | |||
Suggested workflow: <code>pct-sim</code> to generate data, then | |||
<code>pct-recon</code> (which depends on <code>pct-tools</code>) to reconstruct. | |||
== Results == | |||
Across both regimes, all doses (0.2 to 5 mGy) and both projection counts | |||
(45 and 720), dTV improved on TV in every metric considered: | |||
* '''RSP accuracy''': lower mean absolute percentage error in the Gammex inserts, with the largest gains at low dose; the advantage narrows but persists with realistic measurement uncertainties. | |||
* '''Spatial resolution''': higher MTF-based resolution in the spiral phantom and more uniform resolution across the field of view; better line-pair visibility in the CTP528 module. | |||
* '''Uniformity''': smoother homogeneous regions, without the staircase artefacts of TV. | |||
[[File:PCT_gammex_gt_xct.png|thumb|500px|Gammex-type phantom: RSP ground truth (left) and the simulated X-ray CT reference image used by dTV (right).]] | |||
[[File:PCT_ctp528_tv_vs_dtv_realistic.png|thumb|500px|CTP528 module, realistic data, 720 projections at 5 mGy: TV (left) versus dTV (right), with close-ups of the 0.3, 0.4 and 0.5 lp/mm segments.]] | |||
== Further reading == | |||
* M. Hentz, ''Iterative Reconstruction using Structural Priors in Proton Computed Tomography'', PhD thesis, University College London, 2026. <!-- add UCL Discovery link once deposited --> | |||
Latest revision as of 13:55, 27 October 2026
Development of software tools for improving proton CT imaging using X-ray CT priors.
Overview
Proton CT (pCT) images the relative stopping power (RSP) of tissue directly, by measuring the energy lost by protons transmitted through the patient. RSP governs proton range, so pCT could reduce the range uncertainties that arise when RSP is estimated from X-ray CT. Multiple Coulomb scattering, however, blurs the proton paths and hence the images.
This project (PhD, Matthieu Hentz, 2026) investigated iterative list-mode pCT reconstruction with a structural prior: directional total variation (dTV), in which a co-registered X-ray CT image guides the regularisation, compared against standard total variation (TV). Reconstructions used a FISTA-type algorithm on Geant4-simulated acquisitions of three phantoms (Gammex-type RSP phantom, Catphan CTP528 line-pair module, and a spiral phantom of circular inserts), in an idealised regime and in a realistic regime with clinically motivated detector geometry and measurement uncertainties.

Code
All software is on GitHub under mhentz:
- pct-sim (C++, Geant4 11): simulates a pCT acquisition. Records position, direction and energy of each proton on entry and exit trackers, one Geant4 run per projection angle; writes ROOT ntuples plus dose and fluence scoring. Includes several phantoms, "ideal" and "realistic" set-ups, and Sun Grid Engine submission scripts. Documentation is in its
docs/folder. - pct-tools (Python/C++, on PyPI): building blocks for list-mode reconstruction with system matrices too large for memory. Most-likely-path (MLP) estimation, chord-length system-matrix blocks stored compressed on disk, gradient steps and Lipschitz estimates looping over blocks with OpenMP. API reference.
- pct-recon (Python): the full reconstruction and analysis pipeline. Preprocessing of the simulated data, system-matrix construction, FISTA with TV and dTV proximal operators (CCPi Regularisation Toolkit), FBP baseline, cluster job scripts, and the analysis producing L-curves, SSIM, RSP accuracy and MTF figures.
Suggested workflow: pct-sim to generate data, then
pct-recon (which depends on pct-tools) to reconstruct.
Results
Across both regimes, all doses (0.2 to 5 mGy) and both projection counts (45 and 720), dTV improved on TV in every metric considered:
- RSP accuracy: lower mean absolute percentage error in the Gammex inserts, with the largest gains at low dose; the advantage narrows but persists with realistic measurement uncertainties.
- Spatial resolution: higher MTF-based resolution in the spiral phantom and more uniform resolution across the field of view; better line-pair visibility in the CTP528 module.
- Uniformity: smoother homogeneous regions, without the staircase artefacts of TV.


Further reading
- M. Hentz, Iterative Reconstruction using Structural Priors in Proton Computed Tomography, PhD thesis, University College London, 2026.