product_convolution2d

class deepinv.physics.functional.product_convolution2d(x: Tensor, w: Tensor, h: Tensor, padding: str = 'valid')[source]

Bases:

Product-convolution operator in 2d. Details available in the following paper:

Escande, P., & Weiss, P. (2017). Approximation of integral operators using product-convolution expansions. Journal of Mathematical Imaging and Vision, 58, 333-348.

This forward operator performs

\[y = \sum_{k=1}^K h_k \star (w_k \odot x)\]

where \(\star\) is a convolution, \(\odot\) is a Hadamard product, \(w_k\) are multipliers \(h_k\) are filters.

Parameters:
  • x (torch.Tensor) – Tensor of size (B, C, H, W)

  • w (torch.Tensor) – Tensor of size (b, c, K, H, W). b in {1, B} and c in {1, C}

  • h (torch.Tensor) – Tensor of size (b, c, K, h, w). b in {1, B} and c in {1, C}, h<=H and w<=W

  • padding – ( options = valid, circular, replicate, reflect. If padding = ‘valid’ the blurred output is smaller than the image (no padding), otherwise the blurred output has the same size as the image.

Returns:

torch.Tensor y

Return type:

tuple