<a id="physics"></a>

# Operators & Noise

<a id="physics-list"></a>

## 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 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](https://deepinv.org/auto_examples/basics/demo_custom_physics.html.md#sphx-glr-auto-examples-basics-demo-custom-physics-py) for how to implement your own physics operator.

#### Operators, Definitions, and Generators

| **Family**                       | **Operators**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | **Generators**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Pixelwise                        | [`deepinv.physics.Denoising`](https://deepinv.org/api/stubs/deepinv.physics.Denoising.html.md#deepinv.physics.Denoising)<br/><br/><br/>[`deepinv.physics.Inpainting`](https://deepinv.org/api/stubs/deepinv.physics.Inpainting.html.md#deepinv.physics.Inpainting)<br/><br/><br/>[`deepinv.physics.Demosaicing`](https://deepinv.org/api/stubs/deepinv.physics.Demosaicing.html.md#deepinv.physics.Demosaicing)<br/><br/><br/>[`deepinv.physics.Decolorize`](https://deepinv.org/api/stubs/deepinv.physics.Decolorize.html.md#deepinv.physics.Decolorize)<br/><br/><br/>[`deepinv.physics.SpatialUnwrapping`](https://deepinv.org/api/stubs/deepinv.physics.SpatialUnwrapping.html.md#deepinv.physics.SpatialUnwrapping)<br/><br/>                                                                                                                                                                                                                                                                 | [`BernoulliSplittingMaskGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.BernoulliSplittingMaskGenerator.html.md#deepinv.physics.generator.BernoulliSplittingMaskGenerator)<br/><br/><br/>[`GaussianSplittingMaskGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.GaussianSplittingMaskGenerator.html.md#deepinv.physics.generator.GaussianSplittingMaskGenerator)<br/><br/><br/>[`MultiplicativeSplittingMaskGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.MultiplicativeSplittingMaskGenerator.html.md#deepinv.physics.generator.MultiplicativeSplittingMaskGenerator)<br/><br/><br/>[`Phase2PhaseSplittingMaskGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.Phase2PhaseSplittingMaskGenerator.html.md#deepinv.physics.generator.Phase2PhaseSplittingMaskGenerator)<br/><br/><br/>[`Artifact2ArtifactSplittingMaskGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.Artifact2ArtifactSplittingMaskGenerator.html.md#deepinv.physics.generator.Artifact2ArtifactSplittingMaskGenerator)<br/><br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Blur & Super-Resolution          | [`deepinv.physics.Blur`](https://deepinv.org/api/stubs/deepinv.physics.Blur.html.md#deepinv.physics.Blur)<br/><br/><br/>[`deepinv.physics.BlurFFT`](https://deepinv.org/api/stubs/deepinv.physics.BlurFFT.html.md#deepinv.physics.BlurFFT)<br/><br/><br/>[`deepinv.physics.SpaceVaryingBlur`](https://deepinv.org/api/stubs/deepinv.physics.SpaceVaryingBlur.html.md#deepinv.physics.SpaceVaryingBlur)<br/><br/><br/>[`deepinv.physics.TiledSpaceVaryingBlur`](https://deepinv.org/api/stubs/deepinv.physics.TiledSpaceVaryingBlur.html.md#deepinv.physics.TiledSpaceVaryingBlur)<br/><br/><br/>[`deepinv.physics.Downsampling`](https://deepinv.org/api/stubs/deepinv.physics.Downsampling.html.md#deepinv.physics.Downsampling)<br/><br/><br/>[`deepinv.physics.Upsampling`](https://deepinv.org/api/stubs/deepinv.physics.Upsampling.html.md#deepinv.physics.Upsampling)<br/><br/><br/>[`deepinv.physics.DownsamplingMatlab`](https://deepinv.org/api/stubs/deepinv.physics.DownsamplingMatlab.html.md#deepinv.physics.DownsamplingMatlab)<br/><br/> | [`GaussianBlurGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.GaussianBlurGenerator.html.md#deepinv.physics.generator.GaussianBlurGenerator)<br/><br/><br/>[`MotionBlurGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.MotionBlurGenerator.html.md#deepinv.physics.generator.MotionBlurGenerator)<br/><br/><br/>[`DownsamplingGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.DownsamplingGenerator.html.md#deepinv.physics.generator.DownsamplingGenerator)<br/><br/><br/>[`DiffractionBlurGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.DiffractionBlurGenerator.html.md#deepinv.physics.generator.DiffractionBlurGenerator)<br/><br/><br/>[`ProductConvolutionBlurGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.ProductConvolutionBlurGenerator.html.md#deepinv.physics.generator.ProductConvolutionBlurGenerator)<br/><br/><br/>[`TiledBlurGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.TiledBlurGenerator.html.md#deepinv.physics.generator.TiledBlurGenerator)<br/><br/><br/>[`ConfocalBlurGenerator3D`](https://deepinv.org/api/stubs/deepinv.physics.generator.ConfocalBlurGenerator3D.html.md#deepinv.physics.generator.ConfocalBlurGenerator3D)<br/><br/><br/>[`gaussian_blur`](https://deepinv.org/api/stubs/deepinv.physics.functional.gaussian_blur.html.md#deepinv.physics.functional.gaussian_blur), [`sinc_filter`](https://deepinv.org/api/stubs/deepinv.physics.functional.sinc_filter.html.md#deepinv.physics.functional.sinc_filter)<br/><br/><br/>[`bilinear_filter`](https://deepinv.org/api/stubs/deepinv.physics.functional.bilinear_filter.html.md#deepinv.physics.functional.bilinear_filter), [`bicubic_filter`](https://deepinv.org/api/stubs/deepinv.physics.functional.bicubic_filter.html.md#deepinv.physics.functional.bicubic_filter)<br/><br/><br/>[`Zernike`](https://deepinv.org/api/stubs/deepinv.physics.generator.Zernike.html.md#deepinv.physics.generator.Zernike)<br/><br/> |
| Magnetic Resonance Imaging (MRI) | [`deepinv.physics.MRI`](https://deepinv.org/api/stubs/deepinv.physics.MRI.html.md#deepinv.physics.MRI)<br/><br/><br/>[`deepinv.physics.MultiCoilMRI`](https://deepinv.org/api/stubs/deepinv.physics.MultiCoilMRI.html.md#deepinv.physics.MultiCoilMRI)<br/><br/><br/>[`deepinv.physics.DynamicMRI`](https://deepinv.org/api/stubs/deepinv.physics.DynamicMRI.html.md#deepinv.physics.DynamicMRI)<br/><br/><br/>[`deepinv.physics.SequentialMRI`](https://deepinv.org/api/stubs/deepinv.physics.SequentialMRI.html.md#deepinv.physics.SequentialMRI)<br/><br/><br/>The above all also natively support 3D MRI.<br/><br/><br/>[`deepinv.physics.NonCartesianMRI`](https://deepinv.org/api/stubs/deepinv.physics.NonCartesianMRI.html.md#deepinv.physics.NonCartesianMRI)<br/><br/>                                                                                                                                                                                                               | [`GaussianMaskGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.GaussianMaskGenerator.html.md#deepinv.physics.generator.GaussianMaskGenerator)<br/><br/><br/>[`RandomMaskGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.RandomMaskGenerator.html.md#deepinv.physics.generator.RandomMaskGenerator)<br/><br/><br/>[`EquispacedMaskGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.EquispacedMaskGenerator.html.md#deepinv.physics.generator.EquispacedMaskGenerator)<br/><br/><br/>[`PolyOrderMaskGenerator`](https://deepinv.org/api/stubs/deepinv.physics.generator.PolyOrderMaskGenerator.html.md#deepinv.physics.generator.PolyOrderMaskGenerator)<br/><br/><br/>The above all also support k+t dynamic sampling.<br/><br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Tomography                       | [`deepinv.physics.Tomography`](https://deepinv.org/api/stubs/deepinv.physics.Tomography.html.md#deepinv.physics.Tomography)<br/><br/><br/>[`deepinv.physics.TomographyWithAstra`](https://deepinv.org/api/stubs/deepinv.physics.TomographyWithAstra.html.md#deepinv.physics.TomographyWithAstra)<br/><br/><br/>[`deepinv.physics.PET`](https://deepinv.org/api/stubs/deepinv.physics.PET.html.md#deepinv.physics.PET)<br/><br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Ultrasound                       | [`deepinv.physics.UltrasoundPlaneWave`](https://deepinv.org/api/stubs/deepinv.physics.UltrasoundPlaneWave.html.md#deepinv.physics.UltrasoundPlaneWave)<br/><br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Remote Sensing & Multispectral   | [`deepinv.physics.Pansharpen`](https://deepinv.org/api/stubs/deepinv.physics.Pansharpen.html.md#deepinv.physics.Pansharpen)<br/><br/><br/>[`deepinv.physics.HyperSpectralUnmixing`](https://deepinv.org/api/stubs/deepinv.physics.HyperSpectralUnmixing.html.md#deepinv.physics.HyperSpectralUnmixing)<br/><br/><br/>[`deepinv.physics.CompressiveSpectralImaging`](https://deepinv.org/api/stubs/deepinv.physics.CompressiveSpectralImaging.html.md#deepinv.physics.CompressiveSpectralImaging)<br/><br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Compressive                      | [`deepinv.physics.CompressedSensing`](https://deepinv.org/api/stubs/deepinv.physics.CompressedSensing.html.md#deepinv.physics.CompressedSensing)<br/><br/><br/>[`deepinv.physics.StructuredRandom`](https://deepinv.org/api/stubs/deepinv.physics.StructuredRandom.html.md#deepinv.physics.StructuredRandom)<br/><br/><br/>[`deepinv.physics.SinglePixelCamera`](https://deepinv.org/api/stubs/deepinv.physics.SinglePixelCamera.html.md#deepinv.physics.SinglePixelCamera)<br/><br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Radio Interferometric Imaging    | [`deepinv.physics.RadioInterferometry`](https://deepinv.org/api/stubs/deepinv.physics.RadioInterferometry.html.md#deepinv.physics.RadioInterferometry)<br/><br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Single-Photon Lidar              | [`deepinv.physics.SinglePhotonLidar`](https://deepinv.org/api/stubs/deepinv.physics.SinglePhotonLidar.html.md#deepinv.physics.SinglePhotonLidar)<br/><br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Dehazing                         | [`deepinv.physics.Haze`](https://deepinv.org/api/stubs/deepinv.physics.Haze.html.md#deepinv.physics.Haze)<br/><br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Phase Retrieval                  | [`deepinv.physics.PhaseRetrieval`](https://deepinv.org/api/stubs/deepinv.physics.PhaseRetrieval.html.md#deepinv.physics.PhaseRetrieval)<br/><br/><br/>[`RandomPhaseRetrieval`](https://deepinv.org/api/stubs/deepinv.physics.RandomPhaseRetrieval.html.md#deepinv.physics.RandomPhaseRetrieval)<br/><br/><br/>[`StructuredRandomPhaseRetrieval`](https://deepinv.org/api/stubs/deepinv.physics.StructuredRandomPhaseRetrieval.html.md#deepinv.physics.StructuredRandomPhaseRetrieval)<br/><br/><br/>[`Ptychography`](https://deepinv.org/api/stubs/deepinv.physics.Ptychography.html.md#deepinv.physics.Ptychography)<br/><br/><br/>[`PtychographyLinearOperator`](https://deepinv.org/api/stubs/deepinv.physics.PtychographyLinearOperator.html.md#deepinv.physics.PtychographyLinearOperator)<br/><br/>                                                                                                                                                                                                                                       | [`build_probe`](https://deepinv.org/api/stubs/deepinv.physics.phase_retrieval.build_probe.html.md#deepinv.physics.phase_retrieval.build_probe)<br/><br/><br/>[`generate_shifts`](https://deepinv.org/api/stubs/deepinv.physics.phase_retrieval.generate_shifts.html.md#deepinv.physics.phase_retrieval.generate_shifts)<br/><br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Inverse Scattering               | [`deepinv.physics.Scattering`](https://deepinv.org/api/stubs/deepinv.physics.Scattering.html.md#deepinv.physics.Scattering)<br/><br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |

<a id="wrapper-list"></a>

## Wrappers

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

#### Wrappers

| **Family**       | **Operators**                                                                                                                                                                                                                                                                     |
|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Multiscale       | [`deepinv.physics.PhysicsMultiScaler`](https://deepinv.org/api/stubs/deepinv.physics.PhysicsMultiScaler.html.md#deepinv.physics.PhysicsMultiScaler)<br/><br/><br/>[`deepinv.physics.LinearPhysicsMultiScaler`](https://deepinv.org/api/stubs/deepinv.physics.LinearPhysicsMultiScaler.html.md#deepinv.physics.LinearPhysicsMultiScaler)<br/><br/> |
| Padding/Cropping | [`deepinv.physics.PhysicsCropper`](https://deepinv.org/api/stubs/deepinv.physics.PhysicsCropper.html.md#deepinv.physics.PhysicsCropper)<br/><br/>                                                                                                                                                          |

<a id="noise-list"></a>

## 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`](https://deepinv.org/api/stubs/deepinv.physics.Physics.html.md#deepinv.physics.Physics.set_noise_model) attribute at initialization.
By default, the noise model is set to [`ZeroNoise`](https://deepinv.org/api/stubs/deepinv.physics.ZeroNoise.html.md#deepinv.physics.ZeroNoise).

#### Noise Distributions and Their Probability Distributions

| **Noise**                                                                                                                  | $y|z$                                                                                                                                       |
|----------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|
| [`deepinv.physics.ZeroNoise`](https://deepinv.org/api/stubs/deepinv.physics.ZeroNoise.html.md#deepinv.physics.ZeroNoise)                       | $y=z$                                                                                                                                       |
| [`deepinv.physics.GaussianNoise`](https://deepinv.org/api/stubs/deepinv.physics.GaussianNoise.html.md#deepinv.physics.GaussianNoise)               | $y\sim \mathcal{N}(z, I\sigma^2)$                                                                                                           |
| [`deepinv.physics.PoissonNoise`](https://deepinv.org/api/stubs/deepinv.physics.PoissonNoise.html.md#deepinv.physics.PoissonNoise)                 | $y \sim \mathcal{P}(z/\gamma)$                                                                                                              |
| [`deepinv.physics.PoissonGaussianNoise`](https://deepinv.org/api/stubs/deepinv.physics.PoissonGaussianNoise.html.md#deepinv.physics.PoissonGaussianNoise) | $y = \gamma z + \epsilon$, $z\sim\mathcal{P}(\frac{z}{\gamma})$, $\epsilon\sim\mathcal{N}(0, I \sigma^2)$                                   |
| [`deepinv.physics.LaplaceNoise`](https://deepinv.org/api/stubs/deepinv.physics.LaplaceNoise.html.md#deepinv.physics.LaplaceNoise)                 | $y\sim\text{Laplace}(z, b)$                                                                                                                 |
| [`deepinv.physics.LogPoissonNoise`](https://deepinv.org/api/stubs/deepinv.physics.LogPoissonNoise.html.md#deepinv.physics.LogPoissonNoise)           | $y = -\frac{1}{\mu} \log(\frac{\mathcal{P}(\exp(-\mu z) N_0)}{N_0})$                                                                        |
| [`deepinv.physics.UniformNoise`](https://deepinv.org/api/stubs/deepinv.physics.UniformNoise.html.md#deepinv.physics.UniformNoise)                 | $y\sim \mathcal{U}(z-a, z+b)$                                                                                                               |
| [`deepinv.physics.SaltPepperNoise`](https://deepinv.org/api/stubs/deepinv.physics.SaltPepperNoise.html.md#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.GammaNoise`](https://deepinv.org/api/stubs/deepinv.physics.GammaNoise.html.md#deepinv.physics.GammaNoise)                     | $y = \mathcal{G}(\ell, x/\ell)$                                                                                                             |
| [`deepinv.physics.FisherTippettNoise`](https://deepinv.org/api/stubs/deepinv.physics.FisherTippettNoise.html.md#deepinv.physics.FisherTippettNoise)     | $p(y\vert x) = \frac{\ell^{\ell}}{\Gamma(\ell)}\mathrm{e}^{\ell(y-x)}\mathrm{e}^{-\ell\mathrm{e}^{(y-x)}}$                                  |
| [`deepinv.physics.RicianNoise`](https://deepinv.org/api/stubs/deepinv.physics.RicianNoise.html.md#deepinv.physics.RicianNoise)                   | $y = \sqrt{(x + \sigma \epsilon_1)^2 + (\sigma \epsilon_2)^2}$, $\epsilon_1\sim\mathcal{N}(0,I)$, $\epsilon_2\sim\mathcal{N}(0,I)$          |
