Theory & Algorithms
This page describes the mathematical foundations of Tomocam, including the geometry of laminography, the forward projection model, and the iterative reconstruction algorithms.
Introduction
Laminography is a tomographic imaging technique particularly well-suited for thin samples with preferred orientation. Unlike conventional tomography, laminography uses projection data from limited angles and can achieve reconstruction from undersampled data through mathematical modeling.
Tomocam implements efficient laminography reconstruction using:
NUFFT (Non-Uniform Fast Fourier Transform) for forward and backward projection on polar grids
Conjugate Gradient (CG) method for unconstrained least-squares problems
Split Bregman optimization with total variation (TV) regularization for constrained problems
Geometry

Coordinate Systems
We define two coordinate systems:
Lab frame (detector coordinates):
\(X\): horizontal detector axis
\(Y\): vertical detector axis
\(Z\): X-ray beam direction
Sample frame (material coordinates):
\(x\): rotation axis (sample rotation)
\(y\): in-plane, perpendicular to rotation axis
\(z\): normal to sample surface
Rotation Matrices
The sample is oriented with two angles:
\(\alpha\): tomographic tilt angle (rotation about the \(y\)-axis in sample frame)
\(\gamma\): rotation angle about the \(Z\)-axis in lab frame
The combined rotation matrix is:
where:
Fourier Space Mapping
Projection onto the detector in real space corresponds to a sampling pattern in Fourier space. The detector Fourier coordinates \((q_X, q_Y)\) map to sample Fourier coordinates \((q_x, q_y, q_z)\) via:
This defines a non-uniform sampling pattern in 3D Fourier space, which is efficiently handled by NUFFT.
Forward Projection Model
Projection Operator
Let \(\rho(x, y, z)\) denote the 3D scalar density (reconstructed volume) and \(y(\xi, \eta)\) denote the 2D projections (detector image for a given tilt angle \(\theta\)).
The forward projection operator \(P\) maps the volume to projections:
In the Fourier domain, the projection operator factorizes as:
where:
\(\mathcal{F}_{\text{cal}}\) computes Fourier coefficients at the non-uniform sampling points (NUFFT forward)
\(\mathbb{F}^{-1}\) transforms back to real space (IFFT)
The adjoint operator is:
Least-Squares Problem
The unconstrained tomographic reconstruction problem is:
The gradient of the loss function is:
where:
\(A = \mathcal{P}^T \mathcal{P}\) (Hessian, or normal equations matrix)
\(b = \mathcal{P}^T y\) (right-hand side)
Conjugate Gradient Algorithm
For unconstrained reconstruction (no regularizer in config), Tomocam solves \(A \rho = b\) using the Preconditioned Conjugate Gradient (PCG) method.
Algorithm
Input: A, b, preconditioner M, tolerance tol
Initialize: ρ₀ = 0, r₀ = b, z₀ = M⁻¹r₀, p₀ = z₀
for k = 0, 1, 2, ... do
αₖ = (zₖ · rₖ) / (pₖ · A pₖ)
ρₖ₊₁ = ρₖ + αₖ pₖ
rₖ₊₁ = rₖ - αₖ A pₖ
if ‖rₖ₊₁‖₂ < tol then
return ρₖ₊₁
end if
zₖ₊₁ = M⁻¹ rₖ₊₁
βₖ = (zₖ₊₁ · rₖ₊₁) / (zₖ · rₖ)
pₖ₊₁ = zₖ₊₁ + βₖ pₖ
end for
Notes:
The preconditioner \(M\) accelerates convergence; a common choice is diagonal preconditioning or the inverse of the Laplacian
Convergence is controlled by
tolandmax_itersin the configuration\(\|\cdot\|_2\) denotes the Euclidean norm
Split Bregman for Total Variation Regularization
For regularized reconstruction with total variation, Tomocam solves:
where:
\(\lambda\) is the regularization weight (controls smoothness)
\(\nabla \rho\) is the gradient of the volume (3-component vector field)
\(\|\cdot\|_1\) is the \(\ell^1\) norm (sum of absolute values)
This is solved using Split Bregman iteration, which decouples the smooth data fidelity term from the non-smooth regularization.
Algorithm
Introduce an auxiliary variable \(d = \nabla \rho\) and Bregman variable \(b\):
Input: P, y, λ, μ, max_iters, tol
Initialize: ρ⁰ = 0, d⁰ = 0, b⁰ = 0, k = 0
while k < max_iters do
# u-subproblem: solve linear system
(P^T P + μ ∇^T ∇) ρ^(k+1) = P^T y + μ ∇^T (d^k - b^k)
[solved via Preconditioned Conjugate Gradient]
# d-subproblem: soft thresholding (isotropic TV shrinkage)
d^(k+1) = shrink(∇ ρ^(k+1) + b^k, λ/μ)
# Bregman update
b^(k+1) = b^k + ∇ ρ^(k+1) - d^(k+1)
# Check convergence
if ‖ρ^(k+1) - ρ^k‖₂ < tol then
return ρ^(k+1)
end if
k = k + 1
end while
Shrinkage Operator
The isotropic soft thresholding operator (shrink) applied component-wise:
where \(\|\mathbf{v}\|\) is the Euclidean norm of the 3-vector at each voxel, and the factor \(\tau = \lambda / \mu\) is the shrinkage threshold.
Parameters
lambda: Regularization weight; higher values enforce more smoothnessmu: Augmented Lagrangian penalty; higher values enforce constraints more strictlyinner_iters: Number of CG iterations to solve the u-subproblem in each outer iterationmax_iters: Maximum number of outer (Bregman) iterations
Typical ranges:
lambda: \(0.01\) to \(1.0\) (depends on noise level and image content)mu: \(5\) to \(100\) (higher for noisier data)inner_iters: \(1\) to \(10\) (more inner iterations improve convergence but increase cost)
References
[Marcus et al., 2022] M. A. Marcus. “Information content of and the ability to reconstruct dichroic X-ray tomography and laminography.” Optics Express, 30(22), 2022.
[Myagotin et al., 2013] A. Myagotin, A. Voropaev, L. Helfen, D. Hanschke, and T. Baumbach. “Efficient Volume Reconstruction for Parallel-Beam Computed Laminography by Filtered Back Projection on Multi-Core Clusters.” IEEE Transactions on Image Processing, 22(10), 2013.
[Wikipedia] “Magnetic Circular Dichroism.” https://en.wikipedia.org/wiki/Magnetic_circular_dichroism (accessed 2025)