linop.Sobolev

Contents

linop.Sobolev#

class bartorch.linop.Sobolev#

Bases: LinearOperator

A smooth image from weighted k-space coefficients, BART’s linop_noir_weights.

The coefficients are multiplied by c (1 + a |k|^2)^(-b/2) and taken onto the grid by the centred unitary inverse FFT along axes, where k_i is the frequency index along axis i, from -n_i // 2, divided by n_i. Solving for the coefficients rather than the image weights the penalty on each frequency by the inverse square of its weight: the Sobolev norm NLINV puts on coil sensitivities and moba on B1 and B0 maps.

Parameters:
  • shape (tuple of int) – The grid, C order. The coefficients have the same shape.

  • axes (int or tuple of int) – The axes weighted and transformed.

  • a (float) – Width and order of the weighting.

  • b (float) – Width and order of the weighting.

  • c (float, default=1.0) – The weight at the centre of k-space.

Examples

A map on a 64x64 grid under moba’s B1 weighting, started from a constant:

>>> W = Real((64, 64)) @ Sobolev((64, 64), (0, 1), 440.0, 20.0)
>>> coefficients = W.H(torch.ones(64, 64, dtype=torch.complex64))

Also has the methods and properties of LinearOperator.