Highlights
- SF backprojection rewritten in LEAP chord-weighted form. The three analytical SF gather kernels (
_fan_2d_sf_fbp_backproject_kernel,_cone_3d_sf_tr_fdk_backproject_kernel,_cone_3d_sf_tt_fdk_backproject_kernel) now use the per-voxel chord through the unit voxel plus asqrt(1+(v/sdd)^2)axial chord correction on the cone side, matched directly to LEAP'sprojectors_SF.cu. Amplitude is calibrated against the Siddon VD path at nominal, 0.64× / 0.40× sub-nominal, and supra-nominal voxel / detector ratios via the newdet_spacing/(voxel·2π)fan scale and(du·dv·sid)/(2π·sdd·voxel²)cone scale. - Real-data walnut FDK example at
examples/realdata_walnut_fdk.py, running the full analytical FDK pipeline on a preprocessed subset of the Helsinki walnut cone-beam CT dataset (Meaney 2022, Zenodo 10.5281/zenodo.6986012, CC-BY 4.0). The 241-view, 256×256-per-view sinogram is shipped atexamples/data/walnut_cone.npz(~25 MB, float16) with a regenerator script, attributionNOTICE, and awalnut_reco.pngsample montage. Reconstructs at half the nominal voxel size on a 512³ grid withbackend=\"sf_tr\"+ Hamming ramp window. - Chinese README at
README.zh.mdmirroring the English one, plus a Core Algorithm section in both READMEs explaining the Siddon + bilinear/trilinear interpolation design choice.
Changed
- Honest README on SF vs VD. The 1.3.0 claims of "SF lowers MSE by ~17%" and "SF is measurably sharper at sub-nominal voxel sizes" are walked back. On Shepp-Logan and the walnut dataset, LEAP-form SF and Siddon VD produce visually indistinguishable edge profiles at typical CBCT magnifications; MSE differences are fractions of a percent. SF's real value is its mass-conserving cell-integrated forward model for iterative reconstruction, learned priors, and sinogram-level losses — not a drop-in sharpness knob on analytical FBP / FDK.
- Synthetic real-data pipeline examples for all three geometries (
examples/realdata_fbp_parallel.py,realdata_fbp_fan.py,realdata_fdk_cone.py) that run Beer-Lambert + Poisson +-logforward before the analytical reconstruction. - All shipped
fbp_fan.py,fdk_cone.py, andrealdata_walnut_fdk.pyexample comments are updated to match the new honest scope.
Fixed
- SF FBP / FDK weight normalization. The 1.3.0 SF backprojection kernels used `fdk_w / (u_span · v_span)` (bounding-box area) which under-amplified oblique views by up to 2× per axis and produced a dim, angularly-modulated reconstruction. Corrected first to `fdk_w / ((span+plateau)/2 · v_span)` (true trapezoid area), then fully replaced by the LEAP chord-weighted matched-adjoint form above.
Acknowledgements
- LEAP (LLNL / Hyojin Kim et al.) added to the READMEs as the reference implementation for the three new analytical SF backprojection kernels. Apache 2.0 — big thanks to the LEAP team.
Install
```bash
pip install diffct==1.3.1
```
Full Changelog: v1.3.0...v1.3.1