pytomography.mappings
#
Subpackages#
Submodules#
Package Contents#
Classes#
|
|
obj2obj mapping used to model the effects of attenuation in SPECT. |
|
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 |
- 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 theforward
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:
object_meta (ObjectMeta) – Object metadata.
image_meta (ImageMeta) – Image metadata.
- 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:
object_meta (ObjectMeta) – Object metadata.
image_meta (ImageMeta) – Image metadata.
- Return type:
None
- compute_kernel_size()#
Function used to compute the kernel size used for PSF blurring. In particular, uses the
max_sigmas
attribute ofPSFMeta
to determine what the kernel size should be such that the kernel encompasses at leastmax_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