Nodes/ComfyUI_LC123_nodes/LC Image Denoise
ComfyUI Node

LC Image Denoise

Smooth the flat bits, keep the edges

By lonecatone23·Created 2 months ago·Updated about 8 hours ago· 26
LC Image Denoise
  • image
  • image
  • noise_report
◄blur_strength1.000►
◄edge_preservation0.050►
◄radius_multiplier1.00►
◄strength0.75►
◄modesmart►
◄luma1.00►
◄chroma1.00►
◄keep_detail0.50►

Blurring an image to clean it up has one fatal flaw: the edges you want to keep are exactly the parts the blur destroys. LC Image Denoise (LCImageDenoise) is the LC123 pack's edge-preserving answer - it blurs the flat regions and leaves the boundaries alone, which is the difference between "denoised" and "smudged."

The mechanism is a classic: Gaussian-blur a copy, measure how much detail was lost, and only apply the blur where there wasn't any detail to lose. That's the whole secret, and it's the same family as the bilateral/guided filters the post-processing docs describe - smoothing flat areas while keeping boundaries crisp, which is what you want for cleaning up a render without turning it to mush.

The inputs

Four, all simple:

  • blur_strength (sigma, 0.001–8, default 1) - how strong the Gaussian is. This is the "how much smoothing" knob.
  • edge_preservation (0.001–0.25, default 0.05) - the threshold that decides what counts as an edge. Higher = more detail survives (fewer things treated as noise); lower = more aggressive smoothing.
  • radius_multiplier (0–3, default 1) - scales the kernel radius relative to blur strength. A big radius smooths larger structure, not just pixel noise.
  • strength (0–1, default 0.75) - the blend between original and denoised. 0 is the original, 1 is fully denoised.

One output: image, with the pack's signature on-node before/after wipe when you hover.

How to actually use it

The defaults are sensible (0.75 strength, 1 sigma, 0.05 edge) for a light clean-up. Where it earns its keep:

  • Cleaning up after an aggressive sampler - a slightly crunchy render smooths out without the hair and fabric going plastic.
  • Before a sharpen pass - denoise then sharpen is a classic combo; you kill the noise, then the sharpener only has real edges left to work on, so you get crispness without amplifying grain.
  • On real photos - shot-on-phone noise on flat surfaces (walls, skies, skin) flattens out while text, eyes, and fine detail survive.

It's pixel math - instant, deterministic, no model. Put it after the sampler and before Save Image, and it plays well with the rest of the LC123 FX chain since everything passes IMAGE.

Install

Part of ComfyUI_LC123_nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes

or ComfyUI Manager, then restart. Pure torch - no pip extras, no model files.

Where people get burned

Two failure modes, both understandable. If you crank blur_strength way up expecting a stronger denoise, you'll instead start eating real detail - keep sigma under ~3 and compensate with strength instead. And if you find faces going waxy, your edge_preservation is too low; raise it toward 0.1 and only the flat regions get smoothed. This is a quiet niche pack with no community lore to consult, so those two knobs are the whole tuning story - the source in lc_image_tools.py is short and honest about it.

CategoryLC123/image

Inputs (9)

NameTypeDefaultDescription
imageIMAGE—
blur_strengthFLOAT1.0000.001–8Gaussian blur strength (sigma)
edge_preservationFLOAT0.0500.001–0.25Higher keeps more edges/detail
radius_multiplierFLOAT1.000–3Kernel radius scale relative to blur strength
strengthFLOAT0.750–1Blend between original (0) and denoised (1)
modeCOMBOsmartsmart = measures the noise in each image and cleans brightness and colour noise separately, keeping pores and hair (uses luma / chroma / keep_detail). legacy = the old edge-gated blur (uses blur_strength / edge_preservation / radius_multiplier).
lumaFLOAT1.000–3smart: how hard brightness noise (grain) is cleaned, relative to the noise measured in the image. 1 = tuned default, 0 = leave brightness alone.
chromaFLOAT1.000–3smart: how hard colour noise (blotches, rainbow speckle) is cleaned. Colour edges follow the brightness edges, so they stay sharp. 0 = leave colour alone.
keep_detailFLOAT0.500–1smart: how much of the original texture comes back where it stands clearly above the noise (pores, hair, fabric). Smooth areas stay clean either way.

Outputs (2)

NameTypeDescription
imageIMAGEThe denoised image.
noise_reportSTRINGsmart mode: the noise measured in each image (brightness and colour, out of 255).