ComfyUI Node

DSLR Camera Noise

The pack's showpiece β€” camera sensor noise modeled on real sensor physics, not a grain filter

By Pirog17000Β·Created about a year agoΒ·Updated 10 months agoΒ· 3
DSLR Camera Noise
  • image
  • IMAGE
β—„iso800β–Ί
β—„profileβ–Ύβ–Ί
β—„temperature25β–Ί
β—„exposure_time0.008β–Ί
β—„overall_strength1.00β–Ί
β—„noise_blur0.00β–Ί
β—„seed0β–Ί

AI images are too clean. Real photographs have sensor noise - a fine, colored, non-uniform texture that your eye reads as "this was shot with a camera." Most "grain" nodes just overlay static. DSLR Camera Noise is different: it simulates the actual physics of a digital sensor - shot noise, read noise, thermal noise, and pixel-to-pixel variation - using published camera-noise models (Emil Martinec's writeup, Cambridge in Colour, ISO 15739). It's the most impressive node in Pirog's Nodes, and for the photorealism crowd it's the difference between a render and a photograph.

How it works

The node converts your image from sRGB to linear light, then models the sensor pipeline:

  • Shot noise - Poisson photon-counting noise, stronger in brighter areas. This is the noise real images have.
  • Read noise - electronic noise from the sensor's amplifier, scaled by ISO gain.
  • Thermal noise - dark current, driven by your temperature setting and exposure_time.
  • PRNU - fixed per-pixel response variation, the subtle pattern you can't see but your brain registers.

A profile picks the sensor's base characteristics: "Pro Full-Frame" (clean, low noise), "APS-C Enthusiast," "Smartphone" (noisy, 10-bit), or "Vintage DSLR" (dirtiest). Everything runs in linear light and gets quantized back through the profile's ADC bit depth, so the result behaves like real sensor data rather than a filter.

The inputs that matter

  • iso - higher ISO, more noise. 800 is a sensible default.
  • profile - the sensor character; this changes the noise texture, not just the amount.
  • temperature / exposure_time - physically honest controls. Long exposures in dark scenes reduce shot noise while thermal and read noise become more prominent, exactly like a real camera.
  • overall_strength - the artistic multiplier. 1.0 is physically accurate, which means subtle. Crank to 2–3 if you want visible filmic grit.
  • noise_blur - softens the noise pattern slightly, simulating the sensor's demosaicing.
  • seed - reproducible noise.

Output: IMAGE.

When to reach for it

As a finishing pass on renders you want to look photographic - especially night scenes, skin close-ups, or anything where "too clean" is the tell. It's the pack's answer to the photorealism insight that authenticity lives in the details, and it composes well with the other realism nodes (bloom, mask-based blending).

Installing it

Part of Pirog's Nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/Pirog17000/Pirogs-Nodes
pip install -r Pirogs-Nodes/requirements.txt

Or search "Pirog's Nodes" in ComfyUI Manager and restart. Needs numpy (pack requirement) - covered.

Gotchas

The honest one: at overall_strength: 1.0 you'll zoom in and wonder if anything happened. That's correct - physically accurate sensor noise on a clean AI image is genuinely subtle, and the visible texture appears when you push strength above 1. It runs on CPU via numpy, so on huge images it's not instant, but it's a one-shot pass, not a loop. And since it's deterministic per seed, you can lock in a noise pattern you like across a batch.

Categorypirog/image

Inputs (8)

NameTypeDefaultDescription
imageIMAGEThe input image to apply noise to.
isoINT80050–12800Higher ISO increases noise, simulating higher light sensitivity.
profileCOMBOSelect a camera sensor profile. Each profile has distinct noise characteristics.
temperatureFLOAT25-20–60Sensor temperature (Celsius). Higher temperatures increase thermal noise.
exposure_timeFLOAT0.0080–30Shutter speed (seconds). Longer exposures increase thermal noise and affect shot noise.
overall_strengthFLOAT1.000–5Artistic multiplier for the final calculated noise. 1.0 is physically accurate.
noise_blurFLOAT0.000–1.5Applies a Gaussian blur to the final noise pattern to simulate softness.
seedINT00–18446744073709550000The random seed for the noise generation, allowing for reproducible patterns.

Outputs (1)

NameTypeDescription
IMAGEIMAGEπŸ“Έ Image with scientifically accurate DSLR camera noise applied using real sensor physics.