ComfyUI Node

Sensor Dust

The dead-pixel fuzz on your camera sensor, emulated honestly

By TrophiHunter·Created about a year ago·Updated about a year ago· 5
Sensor Dust
  • image
  • IMAGE
max_dust_factor0
minimum_number_spots3
intensity0.500
brightness_threshold0.450
red_intensity0.500
green_intensity0.500
blue_intensity0.500

Every camera owner knows the feeling: tiny dark specks on a blue sky that turn out to be dust on the sensor. This node emulates exactly that - and it's weirdly specific about it. The author literally wrote in the description that they counted the spots on their own camera and wanted to replicate them: real sensor dust is a 3x3 grid of desaturated red, green, or blue micro-spots, not the vague smudges most "dust" filters paint on. That specificity is the whole appeal. Applied lightly, it's the kind of imperfection that makes a synthetic image read as captured.

How it works

It scatters dust spots across the image at a density controlled by max_dust_factor, a tiny number (default 5e-7) that scales with total pixel count - the author notes 5e-7 lands roughly a dozen spots on a 6000x4000 photo. Each spot is a small cluster with a "bleed channel" picked from red/green/blue (weighted by the three *_intensity inputs), added at partial saturation, which matches how real hot/dead pixels and dust show up on a Bayer sensor. brightness_threshold changes how the spots land: in darker regions they're more visible, in bright ones subtler - the implementation literally scales dust strength down in bright areas. And per the description, images with any dimension ≥ 2000px take a different, denser 2x2-grid path that's calibrated for high-res output, so the effect doesn't vanish or blob on big renders.

minimum_number_spots (default 3) guarantees you don't get a clean frame when the random draw comes up near-zero.

Inputs that matter

  • max_dust_factor - the density dial. Leave near default; this number is tiny by design
  • minimum_number_spots - safety floor so a roll of the dice doesn't give you a dust-free image
  • intensity - how visible each spot is
  • red/green/blue_intensity - which color cast dominates the spots

One IMAGE in, one IMAGE out.

Install

Ships in Photography Nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/TrophiHunter/ComfyUI_Photography_Nodes

Restart, find it under TrophiHunter/Photography (ComfyUI Manager: "Photography Nodes"). No requirements, no models.

Where people get burned

Two things. First, it's randomized - every run scatters spots differently, so if you need consistency across a batch, this node is not deterministic the way the color nodes are; expect variation and decide if that's a feature (it is, for realism). Second, max_dust_factor looks like it should be a percentage, and it isn't - treating it as 0.5 instead of 5e-7 gives you a blizzard of dust. Set it low, set intensity low, and trust the author's calibration. In the author's capture-degradation chain (Lens Distortion → CA → Noise → Sensor Dust), it's the last sensor artifact before vignette, and it reads best when it's barely there.

CategoryTrophiHunter/Photography

Inputs (8)

NameTypeDefaultDescription
imageIMAGE
max_dust_factorFLOAT00–0.002
minimum_number_spotsINT31–100
intensityFLOAT0.5000–1
brightness_thresholdFLOAT0.4500–1
red_intensityFLOAT0.5000–1
green_intensityFLOAT0.5000–1
blue_intensityFLOAT0.5000–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE