Nodes/ComfyUI-Purz/Blur Image (Purz)
ComfyUI Node

Blur Image (Purz)

Gaussian, box, or motion — pick your poison

By purzbeats·Created about a year ago·Updated 3 months ago· 24
Blur Image (Purz)
  • image
  • image
blur_typegaussian
blur_radius5.0

Blur is one of those operations you don't think about until you need it mid-workflow, and then you need it now. PurzImageBlur is the version that gets out of your way: drop in an IMAGE, pick gaussian, box, or motion blur, set a radius, and out comes a blurred IMAGE you can feed anywhere a normal image goes. It's from purzbeats' ComfyUI-Purz pack - a tidy utility drawer by a Comfy Org staffer (the same username behind the official ComfyUI-Manager announcement and the Comfy upscaling handbook). Nothing fancy, nothing heavy.

Why you'll actually use it

The most common jobs are boring and important: softening a background before a compositing pass, feathering the edge of a mask region you're about to inpaint, or smearing an image before img2img so the sampler has more freedom. If you're doing photo work, a gaussian blur before sharpening is also how you kill noise without a dedicated denoise pass. The nice part is that all three blur flavors live in one node, so you don't need three different extensions to switch between them.

How it works

It's plain OpenCV under the hood, looped over the batch so it handles multiple frames in one call. The important detail: the kernel size is derived from blur_radius, and OpenCV needs odd kernel sizes, so the node forces that for you. Gaussian uses a standard GaussianBlur where the radius doubles as the sigma. Box blur is the cheap mean filter - faster, slightly blockier. Motion blur builds a directional kernel and gives that streaky smear look.

The inputs that matter

There are exactly three, which is the whole appeal:

  • image - the IMAGE tensor to blur. Batches work fine.
  • blur_type - gaussian, box, or motion. Defaults to gaussian, which is what you want 90% of the time.
  • blur_radius - a float from 0.1 to 50, default 5. This is your intensity knob. Small values (1–3) do gentle softening; double digits start looking like a dream sequence.

Output is a single image (IMAGE), same dimensions, ready to wire into whatever comes next.

One honest caveat: the motion blur has no direction or angle parameter. You get a smear, but you can't aim it. If you need directional motion blur (say, matching a panning shot), you'll still want a dedicated node for that - this one is a quick-and-dirty option, not a replacement.

Installing it

ComfyUI Manager is the easy path - search for ComfyUI-Purz and install the pack. Or go manual:

cd ComfyUI/custom_nodes/
git clone https://github.com/purzbeats/ComfyUI-Purz.git
cd ComfyUI-Purz
pip install -r requirements.txt

Then restart ComfyUI. The requirements are opencv-python, Pillow, torch, and numpy - you almost certainly already have all four, and there are no model files to download. On a modern ComfyUI the node shows up with V3 slider widgets for the radius; on older builds it falls back to the classic number input. It's the kind of install that just works.

Where people get burned

Mostly by expecting too much from a single radius value. A radius that's perfect for a 512×512 preview will look like Vaseline on a 2K render, so tune it per resolution. And if you're blurring a big batch of high-res frames, expect it to take a moment - it's fast, but it's still a real convolution per image.

CategoryPurz/Image/Effects

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
blur_typeCOMBOgaussian3 options: gaussian, box, motion
blur_radiusFLOAT5.00.1–50

Outputs (1)

NameTypeDescription
imageIMAGE