Mingyang Song

Parametric Gaussian Noise Mixer

One small, explicit model for camera noise and film grain, fitted straight from photo pairs.

Patent application in progress. No commercial use. The code, presets and report are released for non-commercial use only, under CC BY-NC-ND 4.0.

Playground

Every photograph holds two pictures: the scene, and the noise on top of it. PGNM describes the noise with two arrays and two lines of math, and both arrays are measured from pairs of clean and noisy photos, with no neural network and no model of the camera. The playground below takes the two lines apart one knob at a time.

tc = ∑i Aci ∗ zimix: nine 25×25 filters turn independent static z into a correlated field t

yc = clip(xc + gc(xc, tc), 0, 1)shape: a lookup g turns each field value into the residual a real camera leaves at that brightness

From static to camera noise

Loading the playground…
    clean x
    –dark
    –mid
    –bright
    noise strength (8-bit codes) in the dark, mid and bright thirds
    A: rows are the output colour, columns the input colour. Red weights add, blue subtract; shown as signed square roots so the faint outer taps stay visible.

    The lookup is a quantile machine

    The field value t is a percentile in disguise: t = 1 means “brighter than 84 % of draws”. The lookup reads the same percentile off the residuals measured at this brightness, so a symmetric bell comes out as whatever the camera really does: lopsided, heavy-tailed, or squashed against black. Drag the brightness down and watch the pile hit the wall.

    Mix your own noise

    Every fitted preset is a point in one space. Seen through its first two principal components, camera noise and film grain fall on opposite sides, and ISO or grain size climbs upward. Click a dot to load that preset, then drag to wander between them: the noise is rebuilt live from the PGNM Designer's 6 filter and 12 lookup components.

    camera presets (SIDD), film grain (Newson), larger for higher ISO or radius.
    Scroll here to start the mixer.

    Want it on your own photos, at full resolution? Open the studio. Film presets were fitted on Newson's renderer, which also blurs the image; the studio applies that blur, the playground leaves it out.

    Earlier work

    PGNM grew out of A Generative Model for Digital Camera Noise Synthesis (arXiv:2303.09199), by Mingyang Song, Yang Zhang, Tunç O. Aydın, Elham Amin Mansour and Christopher Schroers (ETH Zürich and DisneyResearch|Studios).

    Citation

    📄 Parametric Gaussian Noise Mixer (PGNM): Unified Synthesis of Camera Noise and Film Grain
    Technical report, ETH Zürich · arXiv:2610.39868 [cs.CV], October 2026 · Code and presets

    Reference format
    Mingyang Song. 2026. Parametric Gaussian Noise Mixer (PGNM): Unified Synthesis of Camera Noise and Film Grain. arXiv:2610.39868 [cs.CV]. https://arxiv.org/abs/2610.39868
    BibTeX
    @misc{song2026pgnm,
      title         = {Parametric Gaussian Noise Mixer ({PGNM}): Unified Synthesis of Camera Noise and Film Grain},
      author        = {Song, Mingyang},
      year          = {2026},
      eprint        = {2610.39868},
      archivePrefix = {arXiv},
      primaryClass  = {cs.CV},
      url           = {https://arxiv.org/abs/2610.39868}
    }

    Datasets & credits

    SIDD — camera presets are fitted on the Smartphone Image Denoising Dataset. Abdelrahman Abdelhamed, Stephen Lin and Michael S. Brown. A High-Quality Denoising Dataset for Smartphone Cameras. CVPR 2018.

    Newson film grain — film presets are fitted on grain rendered by the model of Alasdair Newson, Julie Delon and Bruno Galerne. A Stochastic Film Grain Model for Resolution-Independent Rendering. Computer Graphics Forum 36(8), 2017; training pairs from GrainNet: Gwilherm Lesné, Yann Gousseau, Saïd Ladjal and Alasdair Newson. Neural Film Grain Rendering. Computer Graphics Forum 44(2), 2025.

    Nocturne — the colour grain preset is fitted on Netflix's Nocturne, Netflix Open Content, licensed CC BY 4.0.