Nodes/ComfyUI-Darkroom/Noise Reduction
ComfyUI Node

Noise Reduction

A denoise that doesn't turn your image to wax

By jeremieLouvaert·Created 5 months ago·Updated 2 days ago· 101
Noise Reduction
  • image
  • image
presetMedium — general purpose
luminance_amount55
luminance_detail45
luminance_contrast50
color_amount55
color_detail40
strength1.00

You upscaled a generation and it came back with a familiar mess: grain everywhere, chroma noise splotches in the shadows, and any denoise that actually removes it leaves faces looking airbrushed. Noise Reduction is the Darkroom pack's take on fixing this without the wax-skin side effect. It's a multi-pass guided filter - the edge-preserving kind - which is exactly what you want when the thing you're cleaning up has real texture you'd like to keep.

How it works

The node splits the image into luminance and chrominance (YCbCr) and treats them differently:

  • Luminance gets a guided filter. That's an edge-aware smoothing: it averages flat areas hard while respecting edges, so a jawline or a strand of hair survives while sensor-style noise in smooth regions gets crushed. That's the mechanism behind the luminance_detail slider - higher keeps more fine detail.
  • Color gets gaussian chrominance smoothing. Chroma noise lives in low-resolution color channels, so you can blur it heavily without touching detail at all.

You get seven presets plus a Custom mode: Light, Medium (the default), Heavy, Color only, Luminance only, Portrait (smooth skin, keep detail), and High ISO (aggressive). The preset names genuinely match their behavior, and the "Portrait" preset is the one to start with on faces.

The inputs that matter

  • preset - the quick way in. Pick one, get a result.
  • luminance_amount / color_amount - the two strengths, in case you want to denoise brightness but leave chroma alone (or vice versa).
  • luminance_detail - detail preservation. Higher keeps fine texture; too low is where the "wax" look comes from.
  • luminance_contrast - preserves tonal transitions. Think of it as the antidote to "everything smoothed to a single tone."
  • strength - the global blend between the original (0) and the denoised result (1). The classic Darkroom safety valve that every node in the pack carries.

One gotcha: presets override the sliders. The manual luminance_* and color_* controls only apply when preset is set to "Custom". If you've dialed in something perfect and then switch presets, your sliders quietly stop mattering - switch back to Custom to restore them.

Where it fits in the workflow

Run it early in the Raw subcategory chain - after exposure and white balance, before sharpening or any film grain. Grain and denoise are natural enemies, so grain (Film Grain or Film Grain Pro) goes after this node in the final pass.

It's a spatial filter, which means it's one of the nodes the pack's README explicitly excludes from LUT bake chains. A .cube LUT is per-pixel; denoise needs to look at neighbors, so it can't be baked. If you're exporting a LUT grade, apply denoise to the photo after extraction, not inside the chain.

Also worth knowing: this is a classic algorithmic denoise, not a neural one. It won't hallucinate detail that isn't there - no AI upscaler magic. What it does is remove real noise while preserving what's genuinely in the image, deterministically, in a fraction of a second. For most ComfyUI finishing work that's the right trade.

Installing it

Part of the full ComfyUI-Darkroom pack, installed once:

cd ComfyUI/custom_nodes
git clone https://github.com/jeremieLouvaert/ComfyUI-Darkroom.git
pip install -r ComfyUI-Darkroom/requirements.txt

Or find "Darkroom" in ComfyUI Manager. It needs scipy, opensimplex, rawpy, exifread, Pillow; restarts after install; shows up under AKURATE/Darkroom/Raw. Pure numpy/scipy, no GPU needed, no model downloads.

If your "noise" is actually a structural artifact - tiling, banding, or compression - no denoise will fix that; it's not that kind of tool. For real high-ISO-style grain and chroma splotches, it's the one you'll reach for.

CategoryAKURATE/Darkroom/Raw

Inputs (8)

NameTypeDefaultDescription
imageIMAGE
presetCOMBOMedium — general purposeQuick presets. Select 'Custom' to use manual sliders
luminance_amountoptFLOAT550–100Luminance noise reduction strength (only used with Custom preset)
luminance_detailoptFLOAT450–100Detail preservation. Higher = keep more fine detail
luminance_contrastoptFLOAT500–100Local contrast preservation. Higher = keep more tonal transitions
color_amountoptFLOAT550–100Color noise reduction (chrominance smoothing)
color_detailoptFLOAT400–100Color detail preservation. Higher = keep more chromatic edges
strengthoptFLOAT1.000–1Blend between original (0) and denoised (1)

Outputs (1)

NameTypeDescription
imageIMAGE