priors.InfimalConvolutionTV

priors.InfimalConvolutionTV#

class bartorch.priors.InfimalConvolutionTV#

Bases: Regularizer

Infimal convolution of total variation over axes.

The image is split into two components, each penalized by total variation with its own weight and its own derivative scaling:

\[\min_{x, z} \; \gamma_1 \| \nabla_1 (x + z) \|_1 + \gamma_2 \| \nabla_2 z \|_1\]

with gamma giving \((\gamma_1, \gamma_2)\) (BART’s ictv_reg).

Only bartorch.apps.pics(), bartorch.optim.ADMM and bartorch.optim.PRIDU accept this term; the auxiliary variables extend the optimization variable and BART counts that extension across the whole set of terms, so the term cannot be built in isolation.

The infimal convolution decomposes the image into a component smooth over one set of axes and a component 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 subspace coefficients or the frames of a time 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, default=())

  • gamma (tuple of float, default=(1.0, 1.0)) – The pair \((\gamma_1, \gamma_2)\) in the objective above.

Also has the methods and properties of Regularizer.