Nodes/ComfyUI-UtilsCollection/Image Color Noise
ComfyUI Node

Image Color Noise

Grain, on demand, in whatever color you want

By silveroxides·Created 2 months ago·Updated about 7 hours ago· 24
Image Color Noise
    • Image
    width512
    height512
    frequency0.50
    attenuation0.50
    noise_type
    seed0

    The name is slightly wrong, and it's worth knowing before you wire it up: this node doesn't add noise to an image. It generates a noise image from scratch - a standalone grain texture at whatever size you ask for. If you've ever wanted film grain you can composite over a frame, or a colored-noise texture to use as a conditioning map or a VAE noise experiment, this is the generator.

    That's more useful than it sounds. Real film grain is colored noise, not random sparkle - and a generator means you can make a seamless, seedable, reproducible texture without hunting down an asset. ComfyUI's own VAE noise lives in latent space; this one is plain pixels you can preview, blend, or feed anywhere.

    How it works

    It builds a "power noise" texture: noise whose spectral profile is shaped by frequency and attenuation rather than being uniform static. noise_type picks the color of the noise - grey (single-channel luminance, the classic grain look), white (equal power everywhere, the static you'd rather avoid for film), and the colored families red, pink, green, blue - where the colors are about power distribution across frequencies, not the hue of the pixels. red noise is the heavy, rumbling low-frequency stuff; pink is the familiar 1/f falloff that reads as organic; mix blends the types.

    • width / height - texture dimensions (64–4096, default 512).
    • frequency (default 0.5) and attenuation (default 0.5) - shape the power spectrum. Higher attenuation means more energy in low frequencies, i.e. chunkier, slower-varying grain.
    • seed - a plain integer, so the same settings always reproduce the same grain. That's the whole reproducibility story in one widget.

    The result is normalized to 8-bit, so you get a clean 0–255 texture. Single output: Image.

    Using it

    The obvious wiring is composite: generate grain at your frame size and blend it with screen (lighten) or soft_light at low opacity for an analog feel. Or use a low-frequency red noise at small size as a smooth, tileable variation map. Because it's seeded, the same grain returns every run - which is what you want for a consistent look, and mildly annoying if you forget to randomize and wonder why every frame has the identical film grain.

    Installing it

    ComfyUI Manager → search "ComfyUI-UtilsCollection", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/silveroxides/ComfyUI-UtilsCollection
    

    Restart. Light deps (opencv-python, typing-extensions), no models. Newer-extension-API pack, so keep ComfyUI current.

    One honest gotcha: it's a generator, so if you dropped it into a workflow expecting an "add grain to my photo" node with an image input, you'll find there's no image socket at all. Composite the output yourself - this is the ingredient, not the recipe.

    Categoryutils

    Inputs (6)

    NameTypeDefaultDescription
    widthINT51264–4096
    heightINT51264–4096
    frequencyFLOAT0.500–100
    attenuationFLOAT0.500–100
    noise_typeCOMBO7 options: grey, white, red, pink, green, blue, +1
    seedINT00–18446744073709550000

    Outputs (1)

    NameTypeDescription
    ImageIMAGE