Questions on Normalization Factor Calculation (Annular Phantom Chord Length & Attenuation) & Reconstruction Speed (List-mode vs. Histogram) for Dedicated Brain PET

Dear CASToR Team and Community,

First of all, thank you very much for developing and maintaining this comprehensive open-source reconstruction framework.

I am an R&D engineer working on a dedicated brain PET scanner. We are currently evaluating CASToR to obtain high-quality clinical and research reconstructions. As we are relatively new to CASToR, we have encountered several critical questions regarding normalization factor generation with an annular phantom and reconstruction computation time. Any guidance or insights from the developers and community would be immensely appreciated.


1. System & Acquisition Setup

  • Scanner geometry: Dedicated Brain PET, 61,440 crystal elements in total.
  • LOR space: Approximately 1.6 billion (1.6 \times 10^9) LORs within the transaxial and axial acceptance angle.
  • Reconstructed image matrix: 256 \times 256 \times 264 voxels.
  • Normalization Phantom: A physical hollow annular phantom (outer diameter: 300 mm, inner diameter: 280 mm, axial length: 300 mm). Note that the emission source region lies outside the primary brain reconstructed FOV.
  • Normalization Statistics: Due to FDG isotope decay and system dead-time/count-rate constraints, a total of ~3.0 billion (3.0 \times 10^9) coincidence events were acquired during the normalization scan. Consequently, many LORs have 0 counts (sparse histogram).

2. Question 1: Normalization Factor Calculation, Annular Phantom Modeling & Extreme Edge Divergence (10^{21})

Currently, we attempted a simple ad-hoc direct calculation for the normalization factors:

\text{NormFactor}_i = \frac{1}{1 + \text{LOR\_Counts}_i}

We then generated the normalization CDF file and provided it to castor-recon with the -norm option. However, we encountered the following severe issues:

  1. Extreme Edge Artifacts: Voxels located at the boundary/edge of the reconstructed FOV explode with abnormally huge values—up to 10^{21} times higher than the central brain region.
  2. Current Workaround: We currently have to manually apply a spatial binary mask or zero out the voxels outside/at the border of the FOV. After masking, standard phantom images (e.g., 3D Hoffman and NEMA IQ phantoms) show no obvious ring artifacts, but the overall contrast and image quality are still noticeably inferior to mature commercial algorithms.

Specific questions regarding normalization:

  • Chord Length & Activity Modeling: When using an annular phantom, is it essential to explicitly account for the geometric path length (the intersection chord thickness through the annular active volume) for each LOR?
  • Self-Attenuation: Does the calculation of normalization factors need to incorporate the self-attenuation of the annular phantom (attenuation of 511 keV photons through water and the acrylic walls)?
  • Edge Divergence: Is our naive \frac{1}{1 + \text{count}} formula the primary cause of the 10^{21} edge explosion (e.g., due to the lack of forward-projection weighting and sensitivity backprojection boundary issues)?
  • Reference Workflow/Tools: Does CASToR have an official recommended pipeline, script, or tool (such as castor-norm or forward-projecting an analytical phantom image) to compute proper normalization factors from experimental annular phantom data? If so, are there any reference documentation or papers you would recommend for this geometry?
  • Zero-count LOR Handling: What is the recommended practice in CASToR for handling zero-count LORs in high-granularity systems to prevent numerical instabilities during reconstruction?

3. Question 2: Reconstruction Speed (List-mode vs. Histogram Mode)

In another benchmark using the 3D Hoffman brain phantom:

  • Dataset size: ~2.5 billion (2.5 \times 10^9) prompt events, ~0.9 billion (0.9 \times 10^9) delayed coincidence events.
  • Algorithm: List-mode reconstruction with 3 iterations and 15 subsets (only Normalization and Randoms correction enabled; no Attenuation or Scatter correction yet).
  • Observed performance: It currently takes approximately 20 minutes to complete a single subset update (meaning a full 3-iteration run requires ~15 hours).

Specific questions regarding performance:

  • Given our high-statistics dataset (2.5B prompts vs. 1.6B possible LORs), would converting and reconstructing in histogram mode yield a significant speedup compared to list-mode mode? Roughly what order of magnitude improvement can we expect?
  • If real-time or dynamic list-mode reconstruction is not strictly required, is histogram-based reconstruction generally the recommended standard in CASToR for static high-count acquisitions?

Thank you very much in advance for your time, expertise, and support!

Best regards,

Your Name / Team Name

Brain PET System R&D Engineer