Reconstruction API

Reconstruction algorithms and solvers.

Forward Projection

Project a 3D volume onto 2D detector plane.

template<typename T>
Array2D<T> forward(
    const Array3D<T>& volume,
    const PolarGrid<T>& grid,
    T angle,
    T gamma = 0.0
);
Parameters:
  • volume: 3D reconstruction volume

  • grid: Polar grid geometry

  • angle: Projection angle (radians)

  • gamma: Sample tilt angle (radians)

Returns:

2D projection image

Backward Projection

Backproject 2D projections into 3D volume.

template<typename T>
Array3D<T> backward(
    const std::vector<Array2D<T>>& projections,
    const PolarGrid<T>& grid,
    const std::vector<T>& angles,
    const std::array<size_t, 3>& volume_dims,
    T gamma = 0.0
);
Parameters:
  • projections: Vector of 2D projection images

  • grid: Polar grid geometry

  • angles: Projection angles (radians)

  • volume_dims: Output volume dimensions [z, y, x]

  • gamma: Sample tilt angle (radians)

Returns:

3D reconstructed volume

MBIR Reconstruction

Model-Based Iterative Reconstruction.

template<typename T>
Array3D<T> MBIR(
    const std::vector<Array2D<T>>& projections,
    const std::vector<T>& angles,
    const std::array<size_t, 3>& recon_dims,
    size_t max_iterations,
    T sigma,
    T p,
    T lambda = 0.0,
    T gamma = 0.0
);
Parameters:
  • projections: Input projection images

  • angles: Projection angles

  • recon_dims: Reconstruction dimensions [z, y, x]

  • max_iterations: Maximum iterations

  • sigma: qGGMRF scale parameter

  • p: qGGMRF shape parameter (1.0-2.0)

  • lambda: Regularization weight

  • gamma: Sample tilt angle

Returns:

Reconstructed 3D volume

Conjugate Gradient

Conjugate gradient solver.

template<typename T>
Array3D<T> conjugate_gradient(
    const std::function<Array3D<T>(const Array3D<T>&)>& A,
    const Array3D<T>& b,
    const Array3D<T>& x0,
    size_t max_iterations,
    T tolerance
);
Parameters:
  • A: Linear operator (function)

  • b: Right-hand side

  • x0: Initial guess

  • max_iterations: Maximum CG iterations

  • tolerance: Convergence tolerance

Returns:

Solution vector

Split Bregman

Split Bregman algorithm for TV regularization.

template<typename T>
Array3D<T> split_bregman(
    const std::function<Array3D<T>(const Array3D<T>&)>& A,
    const std::function<Array3D<T>(const Array3D<T>&)>& AT,
    const Array3D<T>& b,
    T lambda,
    T mu,
    size_t max_outer_iters,
    size_t max_inner_iters,
    T tolerance
);
Parameters:
  • A: Forward operator

  • AT: Adjoint operator

  • b: Measurement data

  • lambda: TV regularization parameter

  • mu: Penalty parameter

  • max_outer_iters: Outer iterations

  • max_inner_iters: Inner CG iterations

  • tolerance: Convergence tolerance

Returns:

Reconstructed volume