ConeBeamModel#

The ConeBeamModel extends the functionalities provided by TomographyModel. This class inherits all behaviors and attributes of the TomographyModel and implements projectors specific to cone beam CT.

In addition, ConeBeamModel includes FDK reconstruction as indicated below.

Constructor#

class mbirjax.ConeBeamModel(sinogram_shape, angles, source_detector_dist, source_iso_dist)[source]#

Bases: TomographyModel

A class designed for handling forward and backward projections in a cone beam geometry, extending the TomographyModel. This class offers specialized methods and parameters tailored for cone beam setups.

This class inherits all methods and properties from the TomographyModel and may override some to suit parallel beam geometrical requirements. See the documentation of the parent class for standard methods like setting parameters and performing projections and reconstructions.

Parameters not included in the constructor can be set using the set_params method of TomographyModel. Refer to TomographyModel documentation for a detailed list of possible parameters.

Parameters:
  • sinogram_shape (tuple) – Shape of the sinogram as a tuple in the form (views, rows, channels), where ‘views’ is the number of different projection angles, ‘rows’ correspond to the number of detector rows, and ‘channels’ index columns of the detector that are assumed to be aligned with the rotation axis.

  • angles (ndarray or jax array) – A 1D array of projection angles, in radians, specifying the angle of each projection relative to the origin.

  • source_detector_dist (float) – Distance between the X-ray source and the detector in units of ALU.

  • source_iso_dist (float) – Distance between the X-ray source and the center of rotation in units of ALU.

Note

One additional parameter for ConeBeamModel that can be set using set_params() is

recon_slice_offset (float, default=0) - Vertical offset of the image in ALU. If recon_slice_offset is positive, we reconstruct the region below iso.

FDK Reconstruction#

ConeBeamModel.fdk_recon(sinogram, filter_name='ramp', view_batch_size=None)[source]#

Perform FDK reconstruction on the given sinogram.

Our implementation uses standard filtering of the sinogram, then uses the adjoint of the forward projector to perform the backprojection. This is different from many implementations, in which the backprojection is not exactly the adjoint of the forward projection. For a detailed theoretical derivation of this implementation, see the zip file linked at this page: https://mbirjax.readthedocs.io/en/latest/theory.html

Parameters:
  • sinogram (jax array) – The input sinogram with shape (num_views, num_rows, num_channels).

  • filter_name (string, optional) – Name of the filter to be used. Defaults to “ramp”

  • view_batch_size (int, optional) – Size of view batches (used to limit memory use)

Returns:

recon (jax array) – The reconstructed volume after FDK reconstruction.

Parent Class#

TomographyModel