pytomography.transforms#

Subpackages#

Submodules#

Package Contents#

Classes#

Transform

The parent class for all transforms used in reconstruction (obj2obj, im2im, obj2im). Subclasses must implement the __call__ method.

SPECTAttenuationTransform

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

SPECTPSFTransform

obj2obj transform 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.

PETAttenuationTransform

im2im mapping used to model the effects of attenuation in PET.

PETPSFTransform

im2im transform used to model the effects of PSF blurring in PET. The smoothing kernel is assumed to be independent of \(\theta\) and \(z\), but is dependent on \(r\).

class pytomography.transforms.Transform[source]#

The parent class for all transforms used in reconstruction (obj2obj, im2im, obj2im). Subclasses must implement the __call__ method.

Parameters:

device (str) – Pytorch device used for computation

configure(object_meta, image_meta)#

Configures the transform to the object/image metadata. This is done after creating the network so that it can be adjusted to the system matrix.

Parameters:
Return type:

None

abstract __call__(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.transforms.SPECTAttenuationTransform(CT)[source]#

Bases: pytomography.transforms.Transform

obj2obj transform 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

__call__(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.transforms.SPECTPSFTransform(psf_meta)[source]#

Bases: pytomography.transforms.Transform

obj2obj transform 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

configure(object_meta, image_meta)#

Function used to initalize the transform 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

__call__(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. 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 n PSF corrected projection.

Return type:

torch.tensor

class pytomography.transforms.PETAttenuationTransform(CT)[source]#

Bases: pytomography.transforms.Transform

im2im mapping used to model the effects of attenuation in PET.

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

  • device (str, optional) – Pytorch device used for computation. If None, uses the default device pytomography.device Defaults to None.

configure(object_meta, image_meta)#

Function used to initalize the transform using corresponding object and image metadata

Parameters:
Return type:

None

__call__(image, norm_constant=None, mode='forward_project')#

Applies attenuation modeling to a PET image.

Parameters:
  • image (torch.Tensor) – Tensor of size [batch_size, Ltheta, Lr, Lz] which transform is appplied to

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

  • mode (str, optional) – Whether or not this is being used in forward (‘forward_project’) or backward projection (‘back_project’). Defaults to ‘forward_project’.

Returns:

Tensor of size [batch_size, Ltheta, Lr, Lz] corresponding to attenuation-corrected image.

Return type:

torch.tensor

class pytomography.transforms.PETPSFTransform(kerns)[source]#

Bases: pytomography.transforms.Transform

im2im transform used to model the effects of PSF blurring in PET. The smoothing kernel is assumed to be independent of \(\theta\) and \(z\), but is dependent on \(r\).

Parameters:

kerns (Sequence[callable]) – A sequence of PSF kernels applied to the Lr dimension of the image with shape [batch_size, Lr, Ltheta, Lz]

configure(object_meta, image_meta)#

Function used to initalize the transform using corresponding object and image metadata

Parameters:
Return type:

None

construct_matrix()#

Constructs the matrix used to apply PSF blurring.

__call__(image, mode='forward_project')#

Applies PSF modeling to the PET image.

Parameters:
  • image (torch.tensor]) – Tensor of size [batch_size, Ltheta, Lr, Lz] corresponding to the image norm_constant (torch.tensor, optional): A tensor used to normalize the output during back projection. Defaults to None.

  • mode (str) – Whether or not this is being used in forward (‘forward_project’) or backward projection (‘back_project’). Defaults to ‘forward_project’

Returns:

Tensor of size [batch_size, Ltheta, Lr, Lz] corresponding to the PSF corrected image.

Return type:

torch.tensor