Smart DeNoise FX (CRT)
An edge-aware smoothing filter (not the sampler's denoise)
- image
- IMAGE
Worth getting out of the way first, because the name invites the mix-up: this has nothing to do with your sampler's denoise parameter. That controls how much a diffusion model changes a latent during generation. This is a straightforward post-process image filter - it smooths out visual noise and grain in a finished image while trying to preserve edges, the way a bilateral filter or a smart-blur tool in a photo editor does. Different job, same word.
How it works
The technique this node implements is a well-known one in real-time graphics - a smart, edge-preserving blur that samples nearby pixels but weights the contribution of each by how different it is from the center pixel, so it smooths flat, noisy areas (skin, sky, out-of-focus backgrounds) heavily while leaving actual edges and detail largely alone. That's the trick that separates it from a plain Gaussian blur, which smooths everything uniformly and turns edges to mush right along with the noise.
Three parameters control it: sigma sets how wide the blur's influence spreads, threshold sets how different two pixels need to be before the filter treats them as "different regions" (an edge) rather than continuous noise, and radius_multiplier scales the sampling kernel size. Together they let you dial in anything from a subtle grain-reduction pass to a much stronger surface-smoothing effect, without the "everything looks like a watercolor painting" result you get from cranking a naive blur too far.
The inputs and output that matter
image- required.sigma(0.001-8, default 1.25) - blur spread. Higher values smooth more aggressively.threshold(0.001-0.25, default 0.05) - edge sensitivity. Lower values preserve more detail as "edges"; higher values let the filter treat more variation as noise and smooth over it.radius_multiplier(0-3, default 1.5) - kernel size scaling.
Output is a single IMAGE.
Worth noting: this pack ships the opposite effect too - Film Grain FX, elsewhere in the same FX category - which adds noise back in for a stylized film look. It's not a contradiction; smoothing unwanted diffusion artifacts and then deliberately reintroducing controlled, film-style grain is a completely normal two-step in a post-process chain.
How to install it
Part of CRT-Nodes. Via ComfyUI Manager, search CRT-Nodes and install. Manually: git clone https://github.com/PGCRT/CRT-Nodes.git into custom_nodes, pip install -r requirements.txt, restart.
Common issues & troubleshooting
Image looks smeared or loses fine detail. sigma or radius_multiplier is too high for your image - back both down, sigma first since it has the biggest visual impact, and check whether threshold is high enough that real detail is being treated as noise.
No visible smoothing at all. sigma near its low end (close to 0.001) will barely do anything - push it up meaningfully, and confirm threshold isn't set so low that almost nothing qualifies as noise to smooth.
Effect looks patchy or blotchy rather than smooth. Usually a threshold set too aggressively low, causing the filter to treat genuine texture as a series of hard edges and smooth unevenly around them rather than uniformly. Nudge threshold up slightly.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| sigma | FLOAT | 1.2500.001–8 | — |
| threshold | FLOAT | 0.0500.001–0.25 | — |
| radius_multiplier | FLOAT | 1.5000–3 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |