XWAVE Sharpen
Four sharpening methods, one node — including real unsharp mask
- image
- IMAGE
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 byintensity.radiussets 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, orsimple. 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 byedge_enhance.high_pass_radius(1–10) - used byhigh_pass.custom_kernel- used bycustom.
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_enhancecan get out of hand.edge_enhancementup to 2 on a high-frequency image turns everything into cartoon outlines. Keep it under ~0.5 unless that's the look.- The
thresholdis 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. customkernels are edge detectors, not sharpening. If you selectlaplacianexpecting a subtle sharpen, you'll get a gradient map. That's by design -unsharp_maskis the sharpener,customis for stylized filtering.- Per-frame Python loop. One image is instant; batches crawl if you've also got
edge_enhancementstacking.
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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| method | COMBO | 4 options: unsharp_mask, high_pass, edge_enhance, custom | |
| intensity | FLOAT | 1.000–5 | — |
| radius | FLOAT | 1.00.1–10 | — |
| threshold | INT | 00–255 | — |
| edge_enhancement | FLOAT | 0.000–2 | — |
| high_pass_radius | FLOAT | 3.01–10 | — |
| custom_kernel | COMBO | 4 options: laplacian, sobel, prewitt, simple |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |