Submitted:
21 May 2026
Posted:
21 May 2026
You are already at the latest version
Abstract
Keywords:
1. Introduction
Code and availability.
2. Related Work
3. Branch Lineage and Scope
3.1. Why the Report Is Centered on dev
- ParallelProjectorFunction / ParallelBackprojectorFunction,
- FanProjectorFunction / FanBackprojectorFunction,
- ConeProjectorFunction / ConeBackprojectorFunction,
- geometry generators for parallel, fan, and cone beam scanning,
- analytical helpers for FBP/FDK pipelines adapted to trajectory arrays.
3.2. Main Versus Dev
4. Unified Geometry Model
4.1. Discrete Detector Coordinates
4.2. Parallel-Beam Parameterization
4.3. Fan-Beam Parameterization
4.4. Cone-Beam Parameterization
4.5. Non-Circular Trajectories

5. Differentiable Forward and Adjoint Operators
5.1. Continuous Forward Model
5.2. Siddon Traversal with Cell-Constant Integration
5.3. Adjoint Identity and Autograd
| Algorithm 1 Autograd contract of the diffct projector wrappers |
|

6. Analytical Reconstruction in diffct
6.1. Detector Coordinates and Angular Weights
6.2. Ramp Filter and Apodization
6.3. Parallel-Beam FBP
6.4. Fan-Beam FBP
6.5. Cone-Beam FDK
6.6. Main-Branch Separable-Footprint Family
7. Software Architecture and CUDA Realization
| Algorithm 2 Shared analytical preprocessing and the branch-specific backprojection stage used in diffct |
|
7.1. PyTorch and Numba Execution Model
7.2. Kernel Families and Decorators
- Siddon projector and pure adjoint kernels are decorated with cuda.jit(cache=True, fastmath=True) to maximize throughput for ray traversal and the cell-constant segment accumulation.
- Analytical FBP/FDK gather kernels are decorated with cuda.jit(cache=True, fastmath=False) because the Fourier-convention constants and the geometry-dependent magnification weights amplify round-off errors more strongly than the projector kernels do.
7.3. Gradient Transport and Atomic Accumulation
8. Experimental Protocol and Repository Validation
8.1. Reference Phantoms and Example Setups
- parallel-beam FBP on a phantom with 360 views and 512 detectors,
- fan-beam FBP on a phantom with 360 views, 600 detectors, , and ,
- cone-beam FDK on a phantom with 360 views, a detector, , and .
8.2. Circular Analytical Reconstructions
8.3. Iterative and Arbitrary-Trajectory Reconstructions
8.4. Correctness Tests
8.5. Performance Benchmarking
9. Discussion
10. Conclusions
Appendix A. Implementation Formula Reference
Detector coordinates.
Forward operators.
Siddon discretization.
Adjoint relation and inverse problem.
Angular weights and ramp filter.
Cosine weights.
Weighted analytical backprojection.
Separable-footprint backprojection on main.
| Report object | Code object |
|---|---|
| ParallelProjectorFunction, FanProjectorFunction, ConeProjectorFunction | |
| ParallelBackprojectorFunction, FanBackprojectorFunction, ConeBackprojectorFunction | |
| Circular trajectories | circular_trajectory_2d_parallel, circular_trajectory_2d_fan, circular_trajectory_3d |
| Non-circular trajectories | spiral_trajectory_3d, sinusoidal_trajectory_*, saddle_trajectory_3d, random_trajectory_3d, custom_trajectory_* |
| detector coordinates | detector_coordinates_1d |
| angular weights | angular_integration_weights |
| fan_cosine_weights, cone_cosine_weights | |
| Parker window | parker_weights |
| Ramp filter q | ramp_filter_1d |
| parallel_weighted_backproject, fan_weighted_backproject, cone_weighted_backproject | |
| Main-branch SF backend selectors | backend="sf" for fan beam, backend="sf_tr" and backend="sf_tt" for cone beam |
References
- Kak, A.C.; Slaney, M. Principles of Computerized Tomographic Imaging; Society for Industrial and Applied Mathematics: Philadelphia, PA, 2001. [Google Scholar] [CrossRef]
- Sun, Y. diffct: Differentiable Computed Tomography Reconstruction with CUDA. https://doi.org/10.5281/zenodo.14999333, 2025. Zenodo software release. [CrossRef]
- Paszke, A.; Gross, S.; Massa, F.; Lerer, A.; Bradbury, J.; Chanan, G.; Killeen, T.; Lin, Z.; Gimelshein, N.; Antiga, L.; et al. PyTorch: An Imperative Style, High-Performance Deep Learning Library. Adv. Neural Inf. Process. Syst. 2019, 32, 8024–8035. [Google Scholar]
- Siddon, R.L. Fast Calculation of the Exact Radiological Path for a Three-Dimensional CT Array. Med. Phys. 1985, 12, 252–255. [Google Scholar] [CrossRef] [PubMed]
- Feldkamp, L.A.; Davis, L.C.; Kress, J.W. Practical Cone-Beam Algorithm. J. Opt. Soc. Am. A 1984, 1, 612–619. [Google Scholar] [CrossRef]
- Parker, D.L. Optimal Short Scan Convolution Reconstruction for Fanbeam CT. Med. Phys. 1982, 9, 254–257. [Google Scholar] [CrossRef] [PubMed]
- Syben, C.; Michen, M.; Stimpel, B.; Seitz, S.; Ploner, S.; Maier, A.K. Technical Note: PYRO-NN: Python Reconstruction Operators in Neural Networks. Med. Phys. 2019, 46, 5110–5115. [Google Scholar] [CrossRef] [PubMed]
- Thies, M.; Wagner, F.; Maul, N.; Folle, L.; Meier, M.; Rohleder, M.; Schneider, L.S.; Pfaff, L.; Gu, M.; Utz, J.; et al. Gradient-Based Geometry Learning for Fan-Beam CT Reconstruction. Phys. Med. Biol. 2023, 68, 205004. [Google Scholar] [CrossRef] [PubMed]
- Long, Y.; Fessler, J.A.; Balter, J.M. 3D Forward and Back-Projection for X-Ray CT Using Separable Footprints. IEEE Trans. Med. Imaging 2010, 29, 1839–1850. [Google Scholar] [CrossRef] [PubMed]
- Kim, H.; Champley, K. Differentiable Forward Projector for X-ray Computed Tomography, 2023, [arXiv:eess.IV/2307.05801].
- Champley, K.; Kim, H. LivermorE AI Projector for Computed Tomography Tasks (LEAP). 2023. Software release. [CrossRef]
- Tuy, H.K. An Inversion Formula for Cone-Beam Reconstruction. SIAM J. Appl. Math. 1983, 43, 546–552. [Google Scholar] [CrossRef]
- Smith, B.D. Image Reconstruction from Cone-Beam Projections: Necessary and Sufficient Conditions and Reconstruction Methods. IEEE Trans. Med. Imaging 1985, 4, 14–25. [Google Scholar] [CrossRef] [PubMed]
- Ye, C.; Schneider, L.S.; Sun, Y.; Thies, M.; Mei, S.; Maier, A.K. DRACO: Differentiable Reconstruction for Arbitrary CBCT Orbits. Phys. Med. Biol. 2025, 70, 075005. [Google Scholar] [CrossRef] [PubMed]
- Lam, S.K.; Pitrou, A.; Seibert, S. Numba: A LLVM-Based Python JIT Compiler. In Proceedings of the Proceedings of the Second Workshop on the LLVM Compiler Infrastructure in HPC, 2015; pp. 1–6. [Google Scholar] [CrossRef]
| Aspect | main branch | dev branch |
|---|---|---|
| Release status | Stable, versioned, published on PyPI | Development branch, source install only |
| Geometry API | Circular-orbit closed-form parameters | Explicit per-view arrays for arbitrary trajectories |
| Supported scan families | Parallel, fan, cone on circular orbits | Parallel, fan, cone on circular and non-circular trajectories |
| Projector backends | Siddon plus SF variants (sf, sf_tr, sf_tt) | Siddon family generalized to arbitrary trajectories |
| Analytical pipeline | Current stable circular pipeline on the 1.3.4 release line | Trajectory-array adaptation of the main 1.2.10/1.2.11 analytical overhaul |
| Testing focus | Circular-orbit reference behavior | Circular plus arbitrary-trajectory correctness and parity |
| Deferred feature | Separable-footprint backends available | Separable-footprint backends not yet generalized |
| Example | Raw MSE | Reported reconstruction range |
|---|---|---|
| circular_trajectory/fbp_parallel.py | ||
| circular_trajectory/fbp_fan.py | ||
| circular_trajectory/fdk_cone.py |
| Test group | What it protects |
|---|---|
| test_adjoint_inner_product.py | Verifies for parallel, fan, and cone operators |
| test_gradcheck.py | Confirms that CUDA backward kernels match finite-difference Jacobians for all projector classes |
| test_cuda_smoke.py | Checks end-to-end execution of projector, adjoint, and analytical helper paths |
| test_weights.py | Verifies detector coordinates, angular weights, cosine weights, and Parker weights |
| test_ramp_filter_windows.py | Verifies ramp-filter windows, DC behavior, FFT parity, and detector-spacing scaling |
| test_fbp_*_accuracy.py, test_fdk_cone_accuracy.py | Bound RMSE and amplitude for analytical circular reconstructions |
| test_fbp_fan_offsets.py, test_fdk_cone_offsets.py | Checks that shifted trajectory arrays are reconstructed correctly |
| test_cone_projector_autograd.py | Guards cone-projector gradient finiteness and consistency under circular and spiral trajectories |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2026 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).