libparallelproj docs

libparallelproj is a high-performance library for 3D forward and backward projection, supporting both CUDA and non-CUDA builds with a minimal Python interface.

The library implements the Joseph 3D ray-driven projection algorithm [Jos82] with support for:

  • Non-TOF projections: Standard forward and back projection

  • TOF sinogram projections: Time-Of-Flight sinogram-based projections

  • TOF listmode projections: Time-Of-Flight listmode (event-by-event) projections

github repository: https://github.com/KUL-recon-lab/libparallelproj

Important

Key Features:

  • C API: Direct support for host arrays, CUDA managed arrays, and device arrays, enabling seamless integration with different memory models

  • Python API: Direct support for Python Array API compliant frameworks (e.g., NumPy, CuPy, PyTorch in CPU or GPU mode), providing flexibility and easy adoption

Important

If you are using libparallelproj, we highly recommend reading and appreciate citing our publication [ST23]

    1. Schramm, K. Thielemans: “PARALLELPROJ - An open-source framework for fast calculation of projections in tomography”, Front. Nucl. Med., Volume 3 - 2023, doi: 10.3389/fnume.2023.1324562, link to paper, link to arxiv version

Note

libparallelproj and parallelproj-core` are minimal APIs for the core projection operations, and do not include higher-level reconstruction algorithms or utilities. However, they can be easily integrated into existing reconstruction frameworks.

Content

References

[Jos82]

Peter Joseph. An Improved Algorithm for Reprojecting Rays Through Pixel Images. IEEE Transactions on Medical Imaging, 1(3):192–196, 1982. doi:10.1109/TMI.1982.4307572.

[ST23]

Georg Schramm and Kris Thielemans. Parallelproj—an open-source framework for fast calculation of projections in tomography. Frontiers in Nuclear Medicine, 2023. doi:10.3389/fnume.2023.1324562.