Blur / Sharpen
The blur/sharpen node that knows gaussian and bilateral are not the same thing
- video
- video
"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, orsharpen. 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_preservetoward 0.05–0.1 to keep features from smearing. - Halos around edges in sharpen mode. Dial
amountdown; unsharp halos are an amount problem, not a size problem. - No output. Wire a video into the
videoinput 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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| mode | COMBO | gaussian | 4 options: gaussian, box, bilateral, sharpen |
| amount | FLOAT | 2.00–20 | — |
| size | INT | 53–13 | unsharp/box kernel size (odd) |
| edge_preserve | FLOAT | 0.100.01–1 | bilateral sigmaR — lower keeps edges harder |
| videoopt | COMFYTV_VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | COMFYTV_VIDEO | — |