Multi-Axis Parallel Model#

The MultiAxisParallelModel class implements a geometry and reconstruction model for parallel beam but with the ability to rotate in azimuth and tilt in elevation. Therefore, parallel beam laminography is a special case of this geometry when there is a constant tilt for all views.

This class inherits all behaviors and attributes of the Tomography Model. It also implements multi-axis parallel-beam direct reconstruction methods such as direct_recon and fbp_recon.

For multi-axis parallel beam geometry, the default detector channel spacing is delta_det_channel is 1 ALU, and the voxels are 3D cubes with spacing delta_voxel = delta_det_channel. However, these parameters can be changed by the user using the TomographyModel.set_params() method.

See the API docs for the TomographyModel class for details on a wide range of functions that can be implemented using the MultiAxisParallelModel.

Constructor#

class mbirjax.MultiAxisParallelModel(sinogram_shape, angles)[source]#

Bases: TomographyModel

Parallel beam geometry allowing for a per-view elevation (tilt) angle.

This class extends ParallelBeamModel to support a 2-axis rotation geometry:
  • Azimuth (Theta): Rotation around the object’s Z-axis (standard tomography rotation, analogous to angles in ParallelBeamModel).

  • Elevation (Phi): Tilt of the ray vector out of the XY plane (extension beyond single-axis ParallelBeamModel).

When elevation = 0, this model is mathematically equivalent to ParallelBeamModel (mirroring its behavior exactly).

Novelty/Extension:
  • Parallel beam laminography is a special case of this geometry.

  • Introduces split vertical/horizontal fan projectors (mirrors ConeBeamModel and TranslationModel).

  • Supports arbitrary elevation without assuming slice independence (generalization of ParallelBeamModel).

  • Directional velocity-weighted ramp filter in direct_recon (extension of standard ramp in ParallelBeamModel).

Parameters:
  • sinogram_shape (tuple) – (num_views, num_det_rows, num_det_channels)

  • angles (jnp.ndarray) – (num_views,2) array. - angles[:,0] = Azimuth (radians, analogous to ParallelBeamModel) - angles[:,1] = Elevation (radians, unique extension)

Alternative Reconstruction#

MultiAxisParallelModel.fbp_recon(sinogram, filter_name='ramp', view_batch_size=None)[source]#