pytomography.projections#

This module contains classes/functionality for operators that map between distinct vector spaces. One (very important) operator of this form is the system matrix \(H:\mathbb{U} \to \mathbb{V}\), which maps from object space \(\mathbb{U}\) to image space \(\mathbb{V}\)

Submodules#

Package Contents#

Classes#

SystemMatrix

The system matrix \(H:\mathbb{U} \to \mathbb{V}\) simulates an imaging system; it takes in an object \(f \in \mathbb{U}\) and maps it to a corresponding image \(g \in \mathbb{V}\) that would be produced by the imaging system. A system matrix consists of sequences of object-to-object and image-to-image transforms that model various characteristics of the imaging system, such as attenuation and blurring. While the class implements the operator \(H:\mathbb{U} \to \mathbb{V}\) through the forward method, it also implements \(H^T:\mathbb{V} \to \mathbb{U}\) through the backward method, required during iterative reconstruction algorithms such as OSEM.

SystemMatrixMaskedSegments

Update this

class pytomography.projections.SystemMatrix(obj2obj_transforms, im2im_transforms, object_meta, image_meta, n_parallel=15)[source]#

The system matrix \(H:\mathbb{U} \to \mathbb{V}\) simulates an imaging system; it takes in an object \(f \in \mathbb{U}\) and maps it to a corresponding image \(g \in \mathbb{V}\) that would be produced by the imaging system. A system matrix consists of sequences of object-to-object and image-to-image transforms that model various characteristics of the imaging system, such as attenuation and blurring. While the class implements the operator \(H:\mathbb{U} \to \mathbb{V}\) through the forward method, it also implements \(H^T:\mathbb{V} \to \mathbb{U}\) through the backward method, required during iterative reconstruction algorithms such as OSEM.

Parameters:
  • obj2obj_transforms (Sequence[Transform]) – Sequence of object mappings that occur before forward projection.

  • im2im_transforms (Sequence[Transform]) – Sequence of image mappings that occur after forward projection.

  • object_meta (ObjectMeta) – Object metadata.

  • image_meta (ImageMeta) – Image metadata.

initialize_transforms()#

Initializes all transforms used to build the system matrix

forward(object, angle_subset=None)#

Implements forward projection \(Hf\) on an object \(f\).

Parameters:
  • object (torch.tensor[batch_size, Lx, Ly, Lz]) – The object to be forward projected

  • angle_subset (list, optional) – Only uses a subset of angles (i.e. only certain values of \(j\) in formula above) when back projecting. Useful for ordered-subset reconstructions. Defaults to None, which assumes all angles are used.

Returns:

Forward projected image where Ltheta is specified by self.image_meta and angle_subset.

Return type:

torch.tensor[batch_size, Ltheta, Lx, Lz]

backward(image, angle_subset=None, prior=None, normalize=False, return_norm_constant=False)#

Implements back projection \(H^T g\) on an image \(g\).

Parameters:
  • image (torch.tensor[batch_size, Ltheta, Lr, Lz]) – image which is to be back projected

  • angle_subset (list, optional) – Only uses a subset of angles (i.e. only certain values of \(j\) in formula above) when back projecting. Useful for ordered-subset reconstructions. Defaults to None, which assumes all angles are used.

  • prior (Prior, optional) – If included, modifes normalizing factor to \(\frac{1}{\sum_j H_{ij} + P_i}\) where \(P_i\) is given by the prior. Used, for example, during in MAP OSEM. Defaults to None.

  • normalize (bool) – Whether or not to divide result by \(\sum_j H_{ij}\)

  • return_norm_constant (bool) – Whether or not to return \(1/\sum_j H_{ij}\) along with back projection. Defaults to ‘False’.

Returns:

the object obtained from back projection.

Return type:

torch.tensor[batch_size, Lr, Lr, Lz]

class pytomography.projections.SystemMatrixMaskedSegments(obj2obj_transforms, im2im_transforms, object_meta, image_meta, masks)[source]#

Bases: SystemMatrix

Update this

Parameters:
  • obj2obj_transforms (Sequence[Transform]) – Sequence of object mappings that occur before forward projection.

  • im2im_transforms (Sequence[Transform]) – Sequence of image mappings that occur after forward projection.

  • object_meta (ObjectMeta) – Object metadata.

  • image_meta (ImageMeta) – Image metadata.

  • masks (torch.Tensor) – Masks corresponding to each segmented region.

forward(activities, angle_subset=None)#

Implements forward projection \(HUa\) on a vector of activities \(a\) corresponding to self.masks.

Parameters:
  • activities (torch.tensor[batch_size, n_masks]) – Activities in each mask region.

  • angle_subset (list, optional) – Only uses a subset of angles (i.e. only certain values of \(j\) in formula above) when back projecting. Useful for ordered-subset reconstructions. Defaults to None, which assumes all angles are used.

Returns:

Forward projected image where Ltheta is specified by self.image_meta and angle_subset.

Return type:

torch.tensor[batch_size, Ltheta, Lx, Lz]

backward(image, angle_subset=None, prior=None, normalize=False, return_norm_constant=False, delta=1e-06)#

Implements back projection \(U^T H^T g\) on an image \(g\), returning a vector of activities for each mask region.

Args:

image (torch.tensor[batch_size, Ltheta, Lr, Lz]): image which is to be back projected angle_subset (list, optional): Only uses a subset of angles (i.e. only certain values of \(j\) in formula above) when back projecting. Useful for ordered-subset reconstructions. Defaults to None, which assumes all angles are used. prior (Prior, optional): If included, modifes normalizing factor to :math:`

rac{1}{sum_j H_{ij} + P_i}` where \(P_i\) is given by the prior. Used, for example, during in MAP OSEM. Defaults to None.

normalize (bool): Whether or not to divide result by \(\sum_j H_{ij}\) return_norm_constant (bool): Whether or not to return \(1/\sum_j H_{ij}\) along with back projection. Defaults to ‘False’. delta (float, optional): Prevents division by zero when dividing by normalizing constant. Defaults to 1e-11.

Returns:

torch.tensor[batch_size, n_masks]: the activities in each mask region.

Parameters:
  • image (torch.Tensor) –

  • angle_subset (list | None) –

  • prior (Prior | None) –

  • normalize (bool) –

  • return_norm_constant (bool) –

  • delta (float) –

Return type:

torch.Tensor