pyxu_xrt
provides Pyxu operators to compute samples of the X-Ray Transform in 2D and 3D.
The X-Ray Transform (XRT) of a function f : ℝD → ℝ is defined as
𝒫[f](n, t) = ∫ℝf(t + nα)dα,
where n ∈ 𝕊D − 1 and t ∈ n⊥. 𝒫[f] hence denotes the set of line integrals of f.
Two class of algorithms exist to evaluate the XRT:
- Fourier methods leverage the Fourier Slice Theorem (FST) to efficiently evaluate the XRT when multiple values of t are desired for each n.
- Ray methods compute estimates of the XRT via quadrature rules by assuming f is piecewise constant on short intervals.
The operators in pyxu_xrt
allow one to efficiently evaluate samples of the XRT assuming f is a pixelized image/volume where:
- the lower-left element of f is located at o ∈ ℝD,
- pixel dimensions are Δ ∈ ℝ+D, i.e.
f(r) = ∑{q} ⊂ ℕDαq1[0, Δ](r − q ⊙ Δ − o), αq ∈ ℝ.
In the 2D case, the parametrization is best explained by the figure below:
You can install pyxu_xrt
via pip:
pip install pyxu_xrt
The host system must have CUDA 11.x or 12.x installed to use the GPU. Similarly, using drjit-backed operators on the CPU requires LLVM. If problems arise, we provide Docker receipes to easily create Pyxu developer environments.
Distributed under the terms of the MIT license, pyxu_xrt
is free and open source software.
If you encounter any problems, please file an issue along with a detailed description.