spyrit.core.recon.TikhonovMeasurementPriorDiag

class spyrit.core.recon.TikhonovMeasurementPriorDiag(sigma: tensor, M: int)[source]

Bases: Module

Tikhonov regularisation with prior in the measurement domain.

Considering linear measurements \(m = Hx \in\mathbb{R}^M\), where \(H = GF\) is the measurement matrix and \(x\in\mathbb{R}^N\) is a vectorized image, it estimates \(x\) from \(m\) by approximately minimizing

\[\|m - GFx \|^2_{\Sigma^{-1}_\alpha} + \|F(x - x_0)\|^2_{\Sigma^{-1}}\]

where \(x_0\in\mathbb{R}^N\) is a mean image prior, \(\Sigma\in\mathbb{R}^{N\times N}\) is a covariance prior, and \(\Sigma_\alpha\in\mathbb{R}^{M\times M}\) is the measurement noise covariance. The matrix \(G\in\mathbb{R}^{M\times N}\) is a subsampling matrix.

Note

The class is instantiated from \(\Sigma\), which represents the covariance of \(Fx\).

Args:
  • sigma: covariance prior with shape \(N\) x \(N\)

  • M: number of measurements \(M\)

Attributes:

comp: The learnable completion layer initialized as \(\Sigma_1 \Sigma_{21}^{-1}\). This layer is a nn.Linear

denoi: The learnable denoising layer initialized from \(\Sigma_1\).

Example:
>>> sigma = torch.rand([32*32, 32*32])
>>> recon_op = TikhonovMeasurementPriorDiag(sigma, 400)

Methods

forward(x, x_0, var, meas_op)

Computes the Tikhonov regularization with prior in the measurement domain.