⭐ Star Adaptive Detail Enhancement
Star Adaptive Detail Enhancement
- image
- IMAGE
A plain "Sharpen" node hits everything equally - including the sky, the noise, and the pores you didn't want to see. Star Adaptive Detail Enhancement is the smarter cousin: it looks at what's actually in the image, boosts edges, faces and texture where they matter, and backs off on flat areas. It's a one-node post-process pass you drop after a decode (or after an upscale) when the image is almost right but reads a little soft.
The node is in the ⭐StarNodes/Image And Latent category of the StarNodes pack, and it's one of the pack's few nodes with a real dependency: opencv-python. The whole enhancement engine is OpenCV under the hood.
How it works
The "adaptive" part isn't marketing. On each frame the node runs three cheap analyses before it touches a pixel:
- Edge detection - a Sobel gradient plus a Canny pass, blended into a per-pixel edge map.
edge_threshold(default 0.3) decides how strong an edge has to be to get sharpened at all. - Face detection - this is honestly skin-tone detection (HSV color space plus some morphology), not a face detector, so it mostly finds skin-colored regions.
face_boost(default 1.5) multiplies the sharpening strength there. It works well for portraits and badly for a pink wall, which is fine - you're tuning a whole-image pass, not a face-fixer. - Texture analysis - a local-variance map that finds detailed regions (fabric, hair, foliage) so texture gets sharpened and flat areas don't.
texture_boostdefaults to 1.2.
Those three maps gate an unsharp-mask style sharpen: image + strength * (image - blur), blended per-pixel by the analysis masks. noise_suppression (default 0.5) drives a bilateral denoise that runs over the same regions - the idea being you can sharpen hard without blowing up sensor-style noise.
The inputs that matter
Honestly there are only two you'll touch most days. enhancement_strength (0–3, default 1) is the master volume. noise_suppression (0–1, default 0.5) is the safety valve - if your sharpened output looks crunchy, that's the dial to raise. The three analysis parameters (edge_threshold, face_boost, texture_boost) are for when you know the problem: skin too harsh, drop face_boost; fine detail too mushy, raise texture_boost.
There's one input - image - and one output, IMAGE, which feeds straight into a preview or a Save node.
Installing it
StarNodes installs through ComfyUI Manager (search Starnodes, Install, restart) or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Starnodes2024/ComfyUI_StarNodes
cd ComfyUI_StarNodes
pip install -r requirements.txt
If opencv-python is missing, this node won't load - but StarNodes is built so the rest of the pack still loads, and the ComfyUI console tells you exactly what to pip install. After install, double-click the canvas, type star, or open the ⭐StarNodes category.
Where people get burned
The classic mistake is cranking enhancement_strength past ~1.5 and wondering why everything gets that overcooked, haloed look. Start at 1, keep noise_suppression above 0.3, and treat the analysis params as levers you move one at a time. Also worth knowing: it operates on whatever resolution you give it, so it's most useful after an upscale rather than before - sharpening a 512px image just amplifies its softness. Run it on the bigger version and it earns its keep.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| enhancement_strength | FLOAT | 1.00–3 | — |
| edge_threshold | FLOAT | 0.30.1–1 | — |
| face_boost | FLOAT | 1.50.5–3 | — |
| texture_boost | FLOAT | 1.20.5–2.5 | — |
| noise_suppression | FLOAT | 0.50–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |