Nodes/SharpnessPro pour ComfyUI/SharpnessPro · Masque flou (USM)
ComfyUI Node

SharpnessPro · Masque flou (USM)

The classic, done right

By orion4d·Created about a year ago·Updated about a year ago· 10
SharpnessPro · Masque flou (USM)
  • image
  • IMAGE
radius2.0
amount1.00
threshold0.000
luma_only

The name is a lie, and it has been since the 1980s: unsharp mask has nothing to do with unsharpening. It's the workhorse sharpening algorithm of every photo editor on earth - Photoshop, GIMP, darktable - and it's called that because the original darkroom technique used a blurry (unsharp) negative to mask the print. Whatever. The algorithm is older than most people reading this, it's fast, and it gives you one knob most fancy sharpeners don't: a threshold.

How it works

USM is stupidly simple under the hood. Make a gaussian-blurred copy of the image, subtract it from the original - that leaves only the high-frequency detail - then add a multiple of that detail back. The amount controls how much detail gets added back, radius controls how big the detail is. That's the whole algorithm.

What makes this version worth using is the threshold slider, which does exactly one useful thing: it says "only sharpen pixels where the detail exceeds this contrast value." Set it to 0 and you sharpen everything, including noise and film grain - which is how USM gets its bad reputation on noisy renders. Crank the threshold a little and the tiny differences that are just noise get ignored while real edges still pop.

The luma_only toggle is the other smart bit. Sharpening RGB channels independently throws color fringes on high-contrast edges; telling it to work on luminance only keeps the chroma untouched, which is the classic move for portraits.

The inputs that matter

  • radius (default 2, up to 100) - the blur radius that defines "detail." Small = fine edges, large = broad structure.
  • amount (default 1, up to 5) - intensity. 1 is gentle, 2+ is punchy, past that you're asking for halos.
  • threshold (default 0) - noise gate. This is the one that separates USM from every other sharpen node; 0.02–0.05 is a good start on grainy images.
  • luma_only (Yes/No) - sharpen luminance only to avoid color fringes.

Input IMAGE, output IMAGE - it slots in right before Save Image at the end of the pipeline, same as the other sharpen nodes here.

Install

ComfyUI Manager, search SharpnessPro, install, restart. Or:

cd ComfyUI/custom_nodes/
git clone https://github.com/orion4d/ComfyUI_SharpnessPro.git

No requirements, no model files. It's pure PyTorch convolution - genuinely fast. There's a running community note that it matches the old ImageSmartSharpen+ from ComfyUI Essentials (which newer Essentials releases dropped) at roughly half the cost.

Common issues

The classic failure mode is threshold-0 noise amplification: grainy images get sandpaper texture and everything looks crunchy. Raise threshold before you touch amount. And if you see magenta/green fringing on edges, that's your sign to flip luma_only to Yes. Otherwise the rule is boring and true: too much amount makes halos, so zoom in and be honest with yourself at 100%.

CategorySharpnessPro/Sharpen

Inputs (5)

NameTypeDefaultDescription
imageIMAGE
radiusFLOAT2.00–100
amountFLOAT1.000–5
thresholdFLOAT0.0000–0.2
luma_onlyCOMBO2 options: Yes, No

Outputs (1)

NameTypeDescription
IMAGEIMAGE