Operators & Noise#

Operators#

Operators describe the forward model \(z = A(x,\theta)\), where \(x\) is the input image and \(\theta\) are the parameters of the operator. The parameters \(\theta\) can be sampled using random generators, which are available for some specific classes. Using automatic differentiation, we can compute derivatives w.r.t to both the input \(x\) or the parameters \(\theta\). This is particular useful when dealing with blind inverse problems or parameter estimation.

Tip

The operator you are looking for is not on this list? See Bring your own physics for how to implement your own physics operator.

Table 1 Operators, Definitions, and Generators#

Family

Operators

Generators

Pixelwise

Blur & Super-Resolution

Magnetic Resonance Imaging (MRI)

Tomography

Remote Sensing & Multispectral

Compressive

Radio Interferometric Imaging

Single-Photon Lidar

Dehazing

Phase Retrieval

Wrappers#

Wrappers are operators that can be used to adapt existing operators to a new problem.

Noise distributions#

Noise distributions describe the noise model \(N\), where \(y = N(z)\) with \(z=A(x)\). The noise models can be assigned to any operator in the list above, by setting the set_noise_model attribute at initialization. By default, the noise model is set to ZeroNoise.

Table 3 Noise Distributions and Their Probability Distributions#

Noise

\(y|z\)

deepinv.physics.ZeroNoise

\(y=z\)

deepinv.physics.GaussianNoise

\(y\sim \mathcal{N}(z, I\sigma^2)\)

deepinv.physics.PoissonNoise

\(y \sim \mathcal{P}(z/\gamma)\)

deepinv.physics.PoissonGaussianNoise

\(y = \gamma z + \epsilon\), \(z\sim\mathcal{P}(\frac{z}{\gamma})\), \(\epsilon\sim\mathcal{N}(0, I \sigma^2)\)

deepinv.physics.LogPoissonNoise

\(y = \frac{1}{\mu} \log(\frac{\mathcal{P}(\exp(-\mu z) N_0)}{N_0})\)

deepinv.physics.UniformNoise

\(y\sim \mathcal{U}(z-a, z+b)\)

deepinv.physics.SaltPepperNoise

\(y = \begin{cases} 0 & \text{if } z < p\\ x & \text{if } z \in [p, 1-s]\\ 1 & \text{if } z > 1 - s\end{cases}\) with \(z\sim\mathcal{U}(0,1)\)

deepinv.physics.ZeroNoise

\(y = z\)

Mixins#

The physics module maximizes code reuse via inheritance. We provide mixin classes to provide specialized methods for certain physics, models, datasets and losses, such as temporal or MRI functionality.

Table 4 Mixins#

Mixin

Description

deepinv.physics.MRIMixin

Utility methods for MRI physics.

deepinv.physics.TimeMixin

Methods for expanding and flattening time dimension for dynamic/video data.