Projectors¶
The projector performs the transformation from target or object space \(X\) to projection or sinogram space \(Y\) or vice versa. Specifically, forward projection refers to the transformation from object space to projection space and backward projection (or back projection) refers to the transformation from projection space to object space.
Forward projection \(A: X \rightarrow Y\) can be written as
where \(b\) is the projection, \(x\) is the object, and \(A\) is the forward projector. The backward projection \(A^*: Y \rightarrow X\) is the adjoint of the forward projector and can be written as
where \(A^*\) is the back projector.
The projectors currently available in the toolbox make some assumptions about the light propagation in CAL. First, because they use
Matlab’s radon() and iradon() functions, they assume the light rays are travelling parallel and there is no convergence and
divergence of the image. For projection systems with long focal length relative to the print container diameter, this assumption is valid. Second,
they assume light intensity decay due to absorption is negligible. This is only valid if the penetration depth of the resin-photoinitiator formulation
(\(d=1/\alpha\) where \(\alpha\) is the absorption coefficient of the resin-photoinitiator formulation) is somewhat large relative to the print
container radius. Good print results have been acheived with \(d \geq\) ~1-10 \(R\) where \(R\) is the print container radius.
Constructor¶
-
CALProjectorConstructor(target_obj, proj_params, parallel)¶ Constructs a
ProjectorObjfor performing forward and back projection. The projector used will depend on the dimension of thetarget_objinput.- Parameters
target_obj -
TargetObjcontaining the target (output fromCALPrepTarget())- proj_params - structure of projection parameters defining the projection configuration
proj_params.angles - vector of angles at which to perform forward and back projection
proj_params.CUDA - en/disables usage of Astra toolbox GPU accelerated projector
proj_params.inclination_angle - angle of elevation from normal tomographic plane
proj_params.cone_angle - angle of maximum ray divergence along rotation axis in cone beam geometry
parallel - whether or not to use parallel processing when performing forward and back projection
- Returns
ProjectorObj -
ProjectorObjthat links to the correct projector depending on the target dimensions
3D (Matlab)¶
-
class
Projector3DParallel(proj_params, parallel)¶ Constructs a
Projector3DParallelobject for performing 3D forward and back projection with parallel ray geometry using Matlab’sradonandiradonfunctions.- Parameters
- proj_params - structure of projection parameters defining the projection configuration
proj_params.angles - vector of angles at which to perform forward and back projection
parallel - whether or not to use parallel processing when performing forward and back projection
- Returns
obj -
Projector3DParallel
-
classmethod
forward(x)¶ Performs 3D forward projection using Matlab’s
radon(). NOTE: this assumes parallel projection.- Parameters
x - 3D matrix of target
- Returns
b - 3D matrix of sinograms. Dimensions will be
[nT,nTheta,nZ]wherenTis the number of elements in the transverse/radial direction,nThetais the number of angles, andnZis the number of z-slices
-
classmethod
backward(b)¶ Performs 3D back projection using Matlab’s
iradon(). NOTE: this assumes parallel projection.- Parameters
b - 3D matrix of sinograms
- Returns
x - 3D matrix of reconstruction. Dimensions will be
[nT,nT,nZ]wherenTis the number of elements in the transverse/radial direction andnZis the number of z-slices
3D (Astra)¶
-
class
Projector3DCUDA(proj_params)¶ Constructs a
Projector3DCUDAobject for performing 3D forward and back projection with parallel and cone beam geometry using Astra Toolbox GPU accelerated projectors.- Parameters
proj_params - structure of projection parameters defining the projection configuration
proj_params.angles - vector of angles at which to perform forward and back projection
proj_params.CUDA - en/disables usage of Astra toolbox GPU accelerated projector
proj_params.inclination_angle - angle of elevation from normal tomographic plane
proj_params.cone_angle - angle of maximum ray divergence along rotation axis in cone beam geometry
- Returns
obj -
Projector3DCUDA
-
classmethod
forward(x)¶ Performs 3D forward projection using Astra’s GPU accelerated 3D projectors.
- Parameters
x - 3D matrix of target
- Returns
b - 3D matrix of sinograms. Dimensions will be
[nT,nTheta,nZ]wherenTis the number of elements in the transverse/radial direction,nThetais the number of angles, andnZis the number of z-slices
-
classmethod
backward(b)¶ Performs 3D back projection using Astra’s GPU accelerated 3D projectors.
- Parameters
b - 3D matrix of sinograms
- Returns
x - 3D matrix of reconstruction. Dimensions will be
[nT,nT,nZ]wherenTis the number of elements in the transverse/radial direction andnZis the number of z-slices
2D (Matlab)¶
-
class
Projector2DParallel(proj_params)¶ Constructs a
Projector2DParallelobject for performing 2D forward and back projection with parallel beam geometry using Matlab’sradon()andiradon()functions.- Parameters
proj_params - structure of projection parameters defining the projection configuration
proj_params.angles - vector of angles at which to perform forward and back projection
- Returns
obj -
Projector2DParallel
-
classmethod
forward(x)¶ Performs 2D forward projection using Matlab’s
radon(). NOTE: this assumes parallel projection.- Parameters
x - 2D matrix of target
- Returns
b - 2D matrix of sinograms. Dimensions will be
[nT,nTheta,nZ]wherenTis the number of elements in the transverse/radial direction,nThetais the number of angles, andnZis the number of z-slices
-
classmethod
backward(b)¶ Performs 2D back projection using Matlab’s
iradon(). NOTE: this assumes parallel projection.- Parameters
b - 2D matrix of sinograms
- Returns
x - 2D matrix of reconstruction. Dimensions will be
[nT,nT]wherenTis the number of elements in the transverse/radial direction