ComfyUI Node

XWAVE Sharpen

Four sharpening methods, one node — including real unsharp mask

By XWAVEart·Created about a year ago·Updated about a year ago· 2
XWAVE Sharpen
  • image
  • IMAGE
method
intensity1.00
radius1.0
threshold0
edge_enhancement0.00
high_pass_radius3.0
custom_kernel

A single sharpening node that gives you four genuinely different methods instead of one "sharpen" knob is rarer than it should be. XWAVE Sharpen does unsharp mask, high-pass, edge enhancement, and custom convolution kernels - and it's the sharpening node you want after upscaling, because it lets you sharpen without nuking the image into halos. The one you'll reach for is unsharp_mask: it's the classic photographic method and the default for a reason.

How it works

  • unsharp_mask - original + (original - blurred) * intensity. Blur the image, subtract the blur to isolate detail, add that detail back scaled by intensity. radius sets the blur size, threshold (0–255) stops the effect on low-contrast areas - that's your anti-noise lever.
  • high_pass - the same idea but with a much heavier blur (high_pass_radius), so what comes back is large-scale structure. Good for texture pop on soft renders.
  • edge_enhance - detects edges and adds them back scaled by edge_enhancement (0–2). Punchy, crunchy, easy to overdo.
  • custom - convolves the image with a chosen kernel: laplacian, sobel, prewitt, or simple. This is the "I know what a derivative is" option; great for stylized edge looks.

Inputs that matter

  • method - the four above.
  • intensity (0–5) - overall strength. Photos live around 0.5–1.5.
  • radius (0.1–10) - blur radius for unsharp mask.
  • threshold (0–255) - ignore low-contrast detail (read: noise). 0 means sharpen everything; bump it if the sky or skin gets gritty.
  • edge_enhancement (0–2) - used by edge_enhance.
  • high_pass_radius (1–10) - used by high_pass.
  • custom_kernel - used by custom.

Output is a single IMAGE, into Preview/Save.

How to not ruin your image

Sharpening is where people chase detail and end up with white halos on every edge. The rule of thumb from the upscaling playbook: sharpening adds apparent detail, it can't invent real structure - so use it as the final polish after upscaling, not as a substitute for a good upscale. For photos: unsharp_mask, intensity ~1, radius ~1–2, threshold 5–15. That keeps grain and skin smooth while edges crisp up. Bump threshold if the image starts to look etched.

Installing it

It's in ComfyUI XWAVE Nodes. ComfyUI Manager → search "XWAVE" → install ComfyUI XWAVE Nodes → restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/XWAVEart/comfyui-xwave-xlitch-nodes
cd comfyui-xwave-xlitch-nodes
pip install -r requirements.txt

Pillow, numpy, scipy - no models, no keys. One install covers the whole pack.

Gotchas

  • edge_enhance can get out of hand. edge_enhancement up to 2 on a high-frequency image turns everything into cartoon outlines. Keep it under ~0.5 unless that's the look.
  • The threshold is in 0–255 units, not 0–1. It's easy to misread as a percentage. 0 is "sharpen everything," and on noisy renders that means sharpening the noise. A value like 10–30 is usually the sweet spot.
  • custom kernels are edge detectors, not sharpening. If you select laplacian expecting a subtle sharpen, you'll get a gradient map. That's by design - unsharp_mask is the sharpener, custom is for stylized filtering.
  • Per-frame Python loop. One image is instant; batches crawl if you've also got edge_enhancement stacking.

Brand-new pack, no community lore to lean on, but sharpening is easy to audition: run it, compare, back off the intensity until the halos disappear. If a node in this pack is going to be in your everyday pipeline, this one has the best shot.

CategoryXWAVE/Color

Inputs (8)

NameTypeDefaultDescription
imageIMAGE
methodCOMBO4 options: unsharp_mask, high_pass, edge_enhance, custom
intensityFLOAT1.000–5
radiusFLOAT1.00.1–10
thresholdINT00–255
edge_enhancementFLOAT0.000–2
high_pass_radiusFLOAT3.01–10
custom_kernelCOMBO4 options: laplacian, sobel, prewitt, simple

Outputs (1)

NameTypeDescription
IMAGEIMAGE