Nodes/ComfyTV/Blur / Sharpen
ComfyUI Node

Blur / Sharpen

The blur/sharpen node that knows gaussian and bilateral are not the same thing

By jtydhr88·Created 3 months ago·Updated about 17 hours ago· 725
Blur / Sharpen
  • video
  • video
force_run_token0
project_id
parent_output_id0
modegaussian
amount2.0
size5
edge_preserve0.10

"Blur / Sharpen" sounds like the kind of node you use once and forget. It's actually the one place most people pick the wrong tool, because there are two kinds of blur and they do opposite jobs. Gaussian smears everything, edges included - good for softening, for a glow pass, or as the reference for an unsharp mask. Bilateral smooths flat regions while keeping boundaries crisp - that's your skin-smoothing and gentle denoise. This ComfyTV stage gives you both, plus box blur and actual sharpening, in one node.

It's a VideoFX stage in the ComfyTV canvas: wire a video in, hit its own Run button, and the result flows downstream as a snapshot. Because it's part of the pack's FX-chain system, it doesn't force a re-encode every time you tweak it - the effect rides along as a spec and the whole chain renders once when you actually need a file.

The inputs that matter

  • mode - gaussian, box, bilateral, or sharpen. Default gaussian.
  • amount (0–20, default 2) - blur radius/sigma, or sharpen strength depending on mode.
  • size (3–13, odd) - the kernel size for unsharp/box modes. The node auto-rounds it to odd, so don't fight it.
  • edge_preserve (0.01–1, default 0.1) - only used by bilateral; it's the sigmaR, and lower keeps edges harder. This is the knob that decides whether your "smooth skin" looks like skin or like a 2015 Instagram filter.

The project_id / parent_output_id / force_run_token inputs are internal frontend plumbing - ignore them.

How it works

Under the hood each mode maps to a standard FFmpeg filter: gblur, avgblur, bilateral, and unsharp. The sharpening is unsharp masking, which is exactly the recipe from the post-processing playbook: blur a copy, subtract it to isolate high-frequency detail, add that detail back scaled by amount. Knowing that tells you why cranking amount in sharpen mode produces halos - you're adding too much of the detail layer back. Gaussian requires amount > 0 or the node errors out.

Install

ComfyTV ships ~190 stages in one pack, so installing the pack covers this node.

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI fully (not just a browser refresh) and look under ComfyTV → VideoFX. ComfyUI Manager also finds it by searching "ComfyTV". Zero model downloads, zero Python dependencies declared by the pack - the filter runs directly on the clip, no AI involved. On ComfyUI Desktop or macOS, the README warns the relative cd can hit the wrong install; clone into the running instance's absolute path from the startup log instead.

Troubleshooting

  • "Blur: amount must be > 0" in gaussian mode - that's expected; give it a positive radius.
  • The image turns to mush when smoothing a face. You grabbed gaussian when you wanted bilateral. Switch modes and drop edge_preserve toward 0.05–0.1 to keep features from smearing.
  • Halos around edges in sharpen mode. Dial amount down; unsharp halos are an amount problem, not a size problem.
  • No output. Wire a video into the video input first - the stage errors cleanly if there's no upstream.

The one to reach for when you just want to soften an AI render or punch up a soft clip, and the least surprising of ComfyTV's FX suite. Just remember which blur is which.

CategoryComfyTV/VideoFX

Inputs (8)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
modeCOMBOgaussian4 options: gaussian, box, bilateral, sharpen
amountFLOAT2.00–20
sizeINT53–13unsharp/box kernel size (odd)
edge_preserveFLOAT0.100.01–1bilateral sigmaR — lower keeps edges harder
videooptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO