Skip to content

diffct 1.3.1

Latest

Choose a tag to compare

@github-actions github-actions released this 15 Apr 01:50
· 1 commit to main since this release

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 a sqrt(1+(v/sdd)^2) axial chord correction on the cone side, matched directly to LEAP's projectors_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 new det_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 at examples/data/walnut_cone.npz (~25 MB, float16) with a regenerator script, attribution NOTICE, and a walnut_reco.png sample montage. Reconstructs at half the nominal voxel size on a 512³ grid with backend=\"sf_tr\" + Hamming ramp window.
  • Chinese README at README.zh.md mirroring 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 + -log forward before the analytical reconstruction.
  • All shipped fbp_fan.py, fdk_cone.py, and realdata_walnut_fdk.py example 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