Image_Detail_HL_frequencye_visual
Frequency separation, previewed inline
- image
- detail_image
- mask
- image
Identical math to Image_Detail_HL_frequencye - same six knobs, same defaults, same author guidance on which direction each one moves the result. Read that article for the actual mechanism (frequency separation: low-frequency lighting from one image, high-frequency detail from another, recombined via blend_mode). The only real difference here is is_output_node: true, part of the batch of on-canvas "visualize_edit" nodes the pack added on 2026-03-22 - it renders its result directly on the node instead of needing a separate Preview Image node downstream.
Why this one instead of the plain version
Frequency separation is a knob-heavy technique - six parameters, several of them fighting each other (push detail_strength up and you may need to bring high_freq_threshold up too to avoid dragging noise along with it). Tuning it by eye is genuinely the fastest way to get it right, and this node saves you the extra Preview Image wiring while you do that. Once your settings are dialed in, either node behaves the same; the plain Image_Detail_HL_frequencye is the one to use if you'd rather not have an inline render on every execution.
The inputs and outputs that matter
Same as Image_Detail_HL_frequencye: image (base), detail_image (detail source), keep_high_freq, erase_low_freq, blend_opacity, detail_strength, high_freq_threshold, mask_blur, blend_mode (default linear light), and optional mask/invert_mask. Output: image.
How to install it
Same pack, same process: via ComfyUI Manager, search ComfyUI-Apt_Preset and install; or clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git into ComfyUI/custom_nodes, run install.bat on Windows or pip install -r ComfyUI-Apt_Preset/requirements.txt on Linux/Mac, and restart ComfyUI. Nothing extra to fetch for this specific node.
Common issues & troubleshooting
Everything in the Image_Detail_HL_frequencye article applies unchanged - if the effect looks weak, check detail_strength/blend_opacity before anything else; if it's overexposed, detail_strength is past 100. If the detail looks like it's carrying noise along with texture, push high_freq_threshold up before you reach for a separate denoise node - that's what the parameter is for.
The one thing specific to the _visual variant: because it's an output node, it renders on every run regardless of whether anything downstream consumes its output - if you have several _visual nodes from this pack in one graph, expect all of them to render, which adds a little overhead versus using the plain nodes once you're done tuning.
Worth remembering why this technique exists at all: any image-to-image pass that changes lighting or color tends to soften fine texture as a side effect, not just IC-Light. If you notice a relight, a style transfer, or an edit-model pass leaving skin, fabric, or fine surface detail a little mushy compared to your source, this is the node that gets it back - feed the mushy result in as image and your pre-pass original as detail_image, and let the six knobs do the rest.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| detail_image | IMAGE | — | |
| keep_high_freq | INT | 640–1023 | — |
| erase_low_freq | INT | 320–1023 | — |
| mask_blur | INT | 160–1023 | — |
| blend_mode | COMBO | linear light | 7 options: normal, add, multiply, screen, overlay, soft light, +1 |
| blend_opacity | INT | 1000–100 | — |
| detail_strength | INT | 1000–200 | — |
| high_freq_threshold | FLOAT | 0.500–1 | — |
| maskopt | MASK | — | |
| invert_maskopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |