ProductConvolutionBlurGenerator#

class deepinv.physics.generator.ProductConvolutionBlurGenerator(psf_generator: PSFGenerator, img_size: Tuple[int], n_eigen_psf: int = 10, spacing: Tuple[int] | None = None, padding: str = 'valid', **kwargs)[source]#

Bases: PhysicsGenerator

Generates parameters of space-varying blurs.

The parameters generated are {'filters' : torch.tensor(...), 'multipliers': torch.tensor(...), 'padding': str} see deepinv.physics.SpaceVaryingBlur() for more details.

Parameters:
  • psf_generator (deepinv.physics.generator.PSFGenerator) – A psf generator (e.g. generator = DiffractionBlurGenerator((1, psf_size, psf_size), fc=0.25))

  • img_size (tuple) – image size H x W.

  • n_eigen_psf (int) – each psf in the field of view will be a linear combination of n_eigen_psf eigen psf grids. Defaults to 10.

  • spacing (tuple) – steps between the psf grids used for interpolation (defaults (H//8, W//8)).

  • padding (str) – boundary conditions in (options = 'valid', 'circular', 'replicate', 'reflect'). Defaults to 'valid'.


Examples:

>>> from deepinv.physics.generator import DiffractionBlurGenerator
>>> from deepinv.physics.generator import ProductConvolutionBlurGenerator
>>> psf_size = 7
>>> psf_generator = DiffractionBlurGenerator((psf_size, psf_size), fc=0.25)
>>> pc_generator = ProductConvolutionBlurGenerator(psf_generator, img_size=(64, 64), n_eigen_psf=8)
>>> params = pc_generator.step(1)
>>> print(params.keys())
dict_keys(['filters', 'multipliers', 'padding'])
step(batch_size: int = 1, seed: int | None = None, **kwargs)[source]#

Generates a random set of filters and multipliers for space-varying blurs.

Parameters:
  • batch_size (int) – number of space-varying blur parameters to generate.

  • seed (int) – the seed for the random number generator.

Returns:

a dictionary containing filters, multipliers and paddings. filters: a tensor of shape (B, C, n_eigen_psf, psf_size, psf_size). multipliers: a tensor of shape (B, C, n_eigen_psf, H, W).

Examples using ProductConvolutionBlurGenerator:#

A tour of blur operators

A tour of blur operators