pytomography.mappings#

Subpackages#

Submodules#

Package Contents#

Classes#

MapNet

MapNet is the parent class for all mappings used in reconstruction (obj2obj, im2im, obj2im). Subclasses must implement the forward method.

SPECTAttenuationNet

obj2obj mapping used to model the effects of attenuation in SPECT.

SPECTPSFNet

obj2obj network used to model the effects of PSF blurring in SPECT. The smoothing kernel used to apply PSF modeling uses a Gaussian kernel with width \(\sigma\) dependent on the distance of the point to the detector; that information is specified in the PSFMeta parameter.

class pytomography.mappings.MapNet(device='cpu')#

Bases: torch.nn.Module

MapNet is the parent class for all mappings used in reconstruction (obj2obj, im2im, obj2im). Subclasses must implement the forward method.

Parameters:

device (str) – Pytorch device used for computation

initialize_network(object_meta, image_meta)#

Initalizes the correction network using the object/image metadata

Parameters:
Return type:

None

abstract forward(x)#

Abstract method; must be implemented in subclasses to apply a correction to an object/image and return it

Parameters:

x (torch.tensor) –

class pytomography.mappings.SPECTAttenuationNet(CT, device='cpu')#

Bases: pytomography.mappings.MapNet

obj2obj mapping used to model the effects of attenuation in SPECT.

Parameters:
  • CT (torch.tensor) – Tensor of size [batch_size, Lx, Ly, Lz] corresponding to the attenuation coefficient in \({\text{cm}^{-1}}\) at the photon energy corresponding to the particular scan

  • device (str, optional) – Pytorch computation device. Defaults to ‘cpu’.

forward(object_i, i, norm_constant=None)#

Applies attenuation modeling to an object that’s being detected on the right of its first axis.

Parameters:
  • object_i (torch.tensor) – Tensor of size [batch_size, Lx, Ly, Lz] being projected along axis=1.

  • i (int) – The projection index: used to find the corresponding angle in image space corresponding to object_i. In particular, the x axis (tensor axis=1) of the object is aligned with the detector at angle i.

  • norm_constant (torch.tensor, optional) – A tensor used to normalize the output during back projection. Defaults to None.

Returns:

Tensor of size [batch_size, Lx, Ly, Lz] such that projection of this tensor along the first axis corresponds to an attenuation corrected projection.

Return type:

torch.tensor

class pytomography.mappings.SPECTPSFNet(psf_meta, device='cpu')#

Bases: pytomography.mappings.MapNet

obj2obj network used to model the effects of PSF blurring in SPECT. The smoothing kernel used to apply PSF modeling uses a Gaussian kernel with width \(\sigma\) dependent on the distance of the point to the detector; that information is specified in the PSFMeta parameter.

Parameters:
  • psf_meta (PSFMeta) – Metadata corresponding to the parameters of PSF blurring

  • device (str, optional) – Pytorch device used for computation. Defaults to ‘cpu’.

initialize_network(object_meta, image_meta)#

Function used to initalize the mapping network using corresponding object and image metadata

Parameters:
Return type:

None

compute_kernel_size()#

Function used to compute the kernel size used for PSF blurring. In particular, uses the max_sigmas attribute of PSFMeta to determine what the kernel size should be such that the kernel encompasses at least max_sigmas at all points in the object.

Returns:

The corresponding kernel size used for PSF blurring.

Return type:

int

get_sigma(radius, dx, shape, collimator_slope, collimator_intercept)#

Uses PSF Meta data information to get blurring \(\sigma\) as a function of distance from detector. It is assumed that sigma=collimator_slope*d + collimator_intercept where \(d\) is the distance from the detector.

Parameters:
  • radius (float) – The distance from the detector

  • dx (float) – Transaxial plane pixel spacing

  • shape (tuple) – Tuple containing (Lx, Ly, Lz): dimensions of object space

  • collimator_slope (float) – See collimator intercept

  • collimator_intercept (float) – Collimator slope and collimator intercept are defined such that sigma(d) = collimator_slope*d + collimator_intercept

  • detector. (where sigma corresponds to sigma of a Gaussian function that characterizes blurring as a function of distance from the) –

Returns:

An array of length Lx corresponding to blurring at each point along the 1st axis in object space

Return type:

array

forward(object_i, i, norm_constant=None)#

Applies PSF modeling for the situation where an object is being detector by a detector at the \(+x\) axis.

Parameters:
  • object_i (torch.tensor) – Tensor of size [batch_size, Lx, Ly, Lz] being projected along its first axis i (int): The projection index: used to find the corresponding angle in image space corresponding to object i norm_constant (torch.tensor, optional): A tensor used to normalize the output during back projection. Defaults to None.

  • i (int) –

  • norm_constant (torch.Tensor | None) –

Returns:

Tensor of size [batch_size, Lx, Ly, Lz] such that projection of this tensor along the first axis corresponds to

an PSF corrected projection.

Return type:

torch.tensor