bartorch.prox.InfimalConvolutionTV

bartorch.prox.InfimalConvolutionTV#

class bartorch.prox.InfimalConvolutionTV(axes, weight, joint_axes=(), *, gamma=(1.0, 1.0))#

Infimal convolution of total variation over axes (pics -R C).

Adds unknowns to the optimization: bartorch.tools.pics(), bartorch.optim.ADMM and bartorch.optim.PRIDU take it, and nothing else does. See the module’s introduction.

The infimal convolution separates what is smooth over one set of axes from what is smooth over the other, so axes must name at least one of the image’s last three – BART’s spatial axes – and at least one before them, typically the coefficients of a subspace or the frames of a series.

Parameters:
  • axes (int or tuple of int) – Axes to differentiate, as indices into the image’s shape.

  • weight (float)

  • joint_axes (int or tuple of int, optional)

  • gamma (tuple of float) – BART’s gamma1:gamma2 pair (pics --gamma).

__init__(axes, weight, joint_axes=(), *, gamma=(1.0, 1.0))#

Methods

__init__(axes, weight[, joint_axes, gamma])

apply_transform(x[, image_shape, mode])

This term's transform applied to x, without making an operator of it.

build(shape)

The BART operator for this term over an image of C-order shape.

prox(x[, gamma, image_shape])

prox_{gamma f}(x), the operator BART's solvers call.

prox_shape(image_shape)

The C-order shape this term's proximal operator works on.

rewind(image_shape)

Put this term's own random generator back to where it started.

transform(image_shape)

The operator BART puts in front of this term's proximal operator.

transform_is_identity(image_shape)

Whether that transform is the identity, as BART decides it.

Attributes

axes

count

joint_axes

kind

weight