priors.InfimalConvolutionTGV

priors.InfimalConvolutionTGV#

class bartorch.priors.InfimalConvolutionTGV#

Bases: Regularizer

Infimal convolution of total generalized variation over axes (BART’s V).

The image is split into two components as for InfimalConvolutionTV, each penalized by second-order TGV with its own auxiliary vector field:

\[\min_{z, u, w} \; \lambda \Bigl[ \gamma_1 \bigl( \alpha_1 \| \nabla (x + z) + u \|_1 + \alpha_0 \| \mathcal{E} u \|_1 \bigr) + \gamma_2 \bigl( \alpha_1 \| \nabla z + w \|_1 + \alpha_0 \| \mathcal{E} w \|_1 \bigr) \Bigr]\]

(BART’s ictgv_reg), with the same gradient for both components.

Accepted by bartorch.apps.pics(), bartorch.optim.ADMM and bartorch.optim.PRIDU only: the auxiliary variables extend the optimization variable, and BART counts them across the whole set of terms, so the term cannot be built alone.

axes must include at least one of the image’s last three axes (BART’s spatial axes) and at least one before them, such as 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) – \(\lambda\).

  • joint_axes (int or tuple of int, default=()) – Axes along which entries are thresholded jointly.

  • alpha (tuple of float, default=(1.0, sqrt(3))) – \((\alpha_1, \alpha_0)\).

  • gamma (tuple of float, default=(1.0, 1.0)) – \((\gamma_1, \gamma_2)\).

Raises:

ValueError – axes lacks a spatial or a non-spatial axis (raised when the term is used in a solve).

Also has the methods and properties of Regularizer.