ToepNufft

class ToepNufft[source]

Forward/backward NUFFT with Toeplitz embedding.

This module applies \(Tx\), where \(T\) is a matrix such that \(T \approx A'A\), where \(A\) is a NUFFT matrix. Using Toeplitz embedding, this module approximates the \(A'A\) operation without interpolations, which is extremely fast.

The module is intended to be used in combination with an FFT kernel computed as frequency response of an embedded Toeplitz matrix. You can use calc_toeplitz_kernel() to calculate the kernel.

The FFT kernel should be passed to this module’s forward operation, which applies a (zero-padded) FFT filter using the kernel.

Examples

>>> image = torch.randn(1, 1, 8, 8) + 1j * torch.randn(1, 1, 8, 8)
>>> omega = torch.rand(2, 12) * 2 * np.pi - np.pi
>>> toep_ob = tkbn.ToepNufft()
>>> kernel = tkbn.calc_toeplitz_kernel(omega, im_size=(8, 8))
>>> image = toep_ob(image, kernel)
forward(image, kernel, smaps=None, norm='ortho')[source]

Toeplitz NUFFT forward function.

Parameters
  • image (Tensor) – The image to apply the forward/backward Toeplitz-embedded NUFFT to.

  • kernel (Tensor) – The filter response taking into account Toeplitz embedding.

  • norm (Optional[str]) – Whether to apply normalization with the FFT operation. Options are "ortho" or None.

Return type

Tensor

Returns

image after applying the Toeplitz forward/backward NUFFT.