KuwaharaBlur
Smoothing without melting the edges
- image
- IMAGE
A Gaussian blur smooths everything - including the edges you wanted to keep. Kuwahara doesn't. It's the edge-preserving blur: it averages each pixel over the surrounding region that is most uniform, which smooths flat areas like skin and sky while leaving sharp boundaries intact. That makes it the pack author's favorite and the right tool when you want a painterly, oil-painting softness without turning your render into a smudge. It's the difference between "blurred" and "smoothed."
How it works
For every pixel, the filter looks at four quadrant neighborhoods around it - top-left, top-right, bottom-left, bottom-right. It computes the mean and variance of each, then keeps the mean of the quadrant with the lowest variance - the most uniform region. Flat areas have one low-variance quadrant that wins, so they average out into softness; across an edge, the quadrant staying on one side has much lower variance than the one crossing it, so the edge survives. That's the entire trick, and it's a good one.
- blur_radius (0–31, default 3) - the neighborhood size. 0 returns the image unchanged. This is your "how painterly" dial; big radii get very impressionistic fast.
- method -
mean(flat average) orgaussian(weighted average). Gaussian smooths a touch more gently; mean gives the crisper, more stylized posterized look.
Output is a single IMAGE.
Install
KuwaharaBlur is one of ~22 nodes in ComfyUI-post-processing-nodes.
- ComfyUI Manager: search "post processing nodes", install, restart.
- Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/EllangoK/ComfyUI-post-processing-nodes
Restart after. No requirements.txt, no downloads - the implementation is OpenCV separable filters, so cv2 is the only dependency and stock ComfyUI has it. It's under postprocessing → Filters in the node menu.
Why you'll actually use it
Two jobs. First: skin. AI faces are over-smooth already, so this is more for the opposite - taking a harshly detailed render and softening the noise in flat regions while keeping eyes, brows and lip lines crisp. Radius 2–5 on a portrait is the sweet spot. Second: stylization. Crank the radius and a photo starts reading as a painting; it's the classic filter for "make this look illustrated." The cost: it's computed per-frame in numpy on the CPU, so it's slower than a Gaussian - fine for stills, budget it for video. And don't blur at radius 1 expecting much; the effect needs room to work.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| blur_radius | INT | 30–31 | — |
| method | COMBO | 2 options: mean, gaussian |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |