ComfyUI Node

Denoising Filter

Clean the noise before you go hunting for watermarks

By hotpizzatactics·Created 2 years ago·Updated 2 years ago· 0
Denoising Filter
  • image
  • IMAGE
strength8.0
color_strength8.0

Denoising Filter is the cleanup node in a pack that otherwise only amplifies. Watermarks sit in the faint, high-frequency detail of an image - and so does noise. If you enhance a grainy JPEG before you've dealt with the grain, you're just amplifying static. Run this first and the mark you're after stops being buried in the fuzz.

It's also useful after the fact. Some of the pack's own outputs (over-aggressive CLAHE, edge blends) manufacture artifacts, and a quick denoise pass tames them. It's the "do no harm" step in a workflow full of "make it pop" steps.

How it works

Under the hood it's OpenCV's fastNlMeansDenoisingColored - non-local means denoising. Instead of a simple blur that wipes detail along with the noise, it averages each pixel against similar patches from across the whole image, which is how it smooths noise while keeping edges and texture mostly intact. It operates in color, working the luminance and chroma separately.

The two inputs

  • strength (0–20, default 8) - luminance denoising strength. Higher = smoother.
  • color_strength (0–20, default 8) - how aggressively chroma noise is removed.

Output is an IMAGE tensor - same size, same colors, just quieter.

The honest caveats

The defaults are stronger than most people want. 8 is a heavy setting, and on a small image or a clean render it produces that waxy, over-smeared look you can feel guilty about. Drop both to 3–5 and you'll usually keep the detail. Second, non-local means is the slowest of the common denoisers - fine for a single frame, but it's not the node to run over a large batch without testing the timing first. And it's for noise, not compression macro-blocking or real damage; those need a generative restorer, which is a different job entirely (the upscaling/restoration crowd usually reaches for SUPIR or SeedVR2-style models for that).

Where it fits

Watermark workflow, in order: denoise the source → CLAHE or another enhancement to lift the mark → mask and inpaint it away. Denoising first is what keeps the later stages from amplifying garbage. You can also run it inside the pack's ComprehensiveImageEnhancement, which chains a denoise step by default - but there it's one pass among eight and you don't control the ordering, so for serious work you'll often want it as its own first step instead.

Installing

No models, CPU-friendly:

cd ComfyUI/custom_nodes
git clone https://github.com/hotpizzatactics/ComfyUI-WaterMark-Detector

or search ComfyUI-WaterMark-Detector in ComfyUI Manager. The pack's install.py pip-installs torch, numpy, opencv-python, scipy, and PyWavelets; the only heavyweight there is opencv and you almost certainly have it already. Restart ComfyUI after installing.

Categoryimage/watermark

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
strengthFLOAT8.00–20
color_strengthFLOAT8.00–20

Outputs (1)

NameTypeDescription
IMAGEIMAGE