User Rating 0.0
Total Usage 7 times
Configuration
Source Material
Base Color
Emulation Preset
Grain Physics
0
1.0x
0%
Prevents noise in pure black/white
Chromaticity
Compositing
100%
800 x 600 • Generated
Is this tool helpful?

Your feedback helps us improve.

About

In high-fidelity digital imaging, the absence of noise is often a defect, not a feature. Pure digital gradients suffer from color banding due to bit-depth quantization. Furthermore, sterile images lack the "organic glue" that film grain provides, which helps integrate composites and creates perceived sharpness through acutance. This tool is a spectral synthesis engine designed for professional retouchers and frontend engineers who require mathematically precise noise generation.

Unlike simple random overlays, this architecture utilizes the Box-Muller transform to generate noise with a Gaussian distribution, accurately mimicking the physical randomness of silver halide crystals in film emulsion or photon shot noise in CMOS sensors. It offers granular control over luminance targeting, channel separation, and grain scale, allowing for the simulation of specific archival stocks or the technical correction of dithering artifacts in web graphics.

film grain emulator gaussian noise generator dithering engine texture synthesizer iso simulation gradient banding fix

Formulas

The core engine utilizes the Box-Muller transform to convert uniformly distributed random numbers into a standard normal distribution. This is critical for naturalistic results.

{
R = 2 ln(u1)z0 = R cos(2πu2)z1 = R sin(2πu2)

For luminance masking (preserving deep blacks and pure whites), the noise intensity I is modulated by the pixel luminance L using a parabolic attenuation function:

Ifinal = Ibase × (1 |2L 1|k)

Where k controls the hardness of the highlight/shadow protection rollover.

Reference Data

Film / Sensor ProfileISO RatingGrain Structure (RMS)Spectral CharacteristicRec. Usage
Kodak Portra 40040010.5Fine, Chromatic BalancedPortraiture, Skin Tones
Ilford HP5 Plus40012.0Medium, MonochromaticB&W Street Photography
Cinestill 800T80016.2Coarse, Halation-proneNight Scenes, Neon
Fuji Velvia 50508.0Micro-fine, High SaturationLandscape, Nature
Kodak Tri-X40014.5Gritty, High ContrastDocumentary, Journalism
Arri Alexa (High Gain)3200UniformDigital, Fixed PatternModern Cinema Emulation
Sony A7S III (High ISO)12800ChromaColor Speckle ArtifactsLow Light Simulation
16mm ArchivalN/A25.0Heavy, ClusteredVintage Aesthetic
Dithering (Web)N/A1.0Uniform High-FreqGradient Banding Fix
Thermal SensorVariablePoissonLong-exposure Hot PixelsScientific Visualization

Frequently Asked Questions

Generating high-quality Gaussian noise requires complex mathematical operations (logarithms, square roots, trigonometry) for every single pixel. For a 4K image (8.3 million pixels), this can freeze the browser interface for several seconds. We use Web Workers to offload this processing to a separate CPU thread, keeping the interface responsive and allowing for complex algorithms without UI lag.
Intensity (or Opacity) refers to how distinct the noise pixels are from the background color. Grain Scale refers to the physical size of the noise clusters. Digital noise is typically 1 pixel in size. Film grain, however, varies based on the size of the silver halide crystals. Increasing the Scale parameter mimics larger film formats (like 8mm vs 35mm) by clustering the noise.
In real film photography, grain is most visible in the mid-tones. Pure blacks (unexposed emulsion) and pure whites (fully dense emulsion) tend to show less grain structure. Luminance masking simulates this physical characteristic by fading the noise effect in the darkest and brightest areas of the image, preventing the "washed out" look common in cheap filters.
Yes. For dithering (fixing color banding in gradients), select the "Uniform" distribution, set Scale to 1.0, and keep Intensity low (around 5-10%). This introduces just enough random variance to break up quantization steps without adding visible texture.
The HTML5 Canvas API currently operates primarily in 8-bit per channel (RGBA 0-255). While internal calculations use high-precision floating-point math, the final export will be 8-bit PNG or JPG. This is sufficient for virtually all web and screen applications.