Nodes/ComfyUI-Majoor-ImageOps/〽️ Image Ops Blur
ComfyUI Node

〽️ Image Ops Blur

Surface

By MajoorWaldi·Created 8 months ago·Updated 8 days ago· 11
〽️ Image Ops Blur
  • image
  • mask
  • image
  • mask
bypassfalse
blur_typegaussian
radius3
sigma0.00
invert_maskfalse

A blur node is a blur node, right? Not quite. ImageOps Blur bundles four blur types behind one clean interface and - the part that makes it worth a look - a "surface" mode that softens noise while leaving edges alone. That's the one you'll keep coming back to. It comes from the ComfyUI-Majoor-ImageOps pack, and like everything there it processes batches of frames natively and shows a live preview right on the node, no queueing required.

The four blur types

  • gaussian - the classic. radius sets the blur extent, sigma the spread. Leave sigma at 0 and it's derived automatically (radius / 3), which is almost always what you want.
  • box - a flat box blur. Fast, cheap, a bit crunchy. Good for big soft feathered regions where you don't need gaussian quality.
  • defocus - modeled on lens defocus rather than a plain kernel. Reach for it when you want that background-blur/out-of-focus feel on a depth pass instead of a generic smudge.
  • surface - the interesting one. It blurs based on colour similarity: pixels within a similar colour range get smoothed, hard edges don't. Think of it as the practical cousin of a bilateral filter. Set sigma to the similarity threshold (0–1; 0 = auto, roughly 0.15) and you can clean up a noisy flat area - grain, compression, banding - without melting the linework. This is the mode I'd point a beginner at first for "make it less crunchy without losing the edges."

A couple of semantics to get straight: radius is in pixels (0–128) and sigma in pixels for gaussian (0–64). And radius of 0 means no blur at all - it disables every type, so a 0 radius is your "off" switch, not a "tiny blur" switch.

Masking

Like most nodes in this pack, it takes an optional mask and an invert_mask toggle, and it returns a mask output as well as the blurred image. So you can blur a specific region - say, a face, a license plate, or a background - and the same node hands you the matte it used, ready to feed into a merge. That's the workflow-friendly detail: the mask comes out aligned with the image, no guesswork about coordinates.

Install

ComfyUI Manager (search "ComfyUI-Majoor-ImageOps"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/MajoorWaldi/ComfyUI-Majoor-ImageOps

Restart, then hard-refresh the browser (Ctrl+F5 / Cmd+Shift+R) - the live preview is frontend JS and a stale cache is the #1 reason the panel doesn't show. No model downloads, no extra pip packages; it's plain torch on top of ComfyUI's own install.

Where it gets fiddly

The defocus and surface modes are the ones people under-use, but their parameters behave differently from gaussian - sigma means something else in each. If you throw the same sigma value across all four modes you'll get confused fast; read the tooltip per mode. For video, remember this pack is batch-first, so a blurred clip just works frame-by-frame - but a heavy radius across a long batch will slow the graph, so keep the radius honest and only blur the frames that need it.

Categoryimage/imageops

Inputs (7)

NameTypeDefaultDescription
bypassBOOLEANfalse
blur_typeCOMBOgaussian4 options: gaussian, box, defocus, surface
radiusINT30–128Blur extent in pixels. 0 = no blur (disables all types).
sigmaFLOAT0.000–64gaussian: Gaussian std-dev in pixels (0 = auto, radius/3). surface: colour-similarity threshold 0–1 (0 = auto ≈0.15). box / defocus: unused.
invert_maskBOOLEANfalse
imageoptIMAGE,VIDEOImages/Video input.
maskoptMASK

Outputs (2)

NameTypeDescription
imageIMAGE
maskMASK