Nodes/ComfyUI-Apt_Preset/Image_Detail_HL_frequencye
ComfyUI Node

Image_Detail_HL_frequencye

Frequency separation, the trick that saves IC-Light relights

By cardenluo·Created 2 years ago·Updated 18 days ago· 309
Image_Detail_HL_frequencye
  • image
  • detail_image
  • mask
  • image
keep_high_freq64
erase_low_freq32
mask_blur16
blend_modelinear light
blend_opacity100
detail_strength100
high_freq_threshold0.50
invert_maskfalse

Frequency separation sounds like a compositing-nerd rabbit hole right up until you actually need it, and then it's the only thing that fixes the problem. The classic case, well known in the IC-Light community: you relight a photo and the lighting looks right, but skin texture and fine detail get slightly mushed in the process. The fix is to split the image into a low-frequency layer (the big soft stuff - lighting, color, shadow) and a high-frequency layer (the fine stuff - texture, grain, sharp edges), take lighting from your generated pass and detail from the original, and recombine. Image_Detail_HL_frequencye is a generic node that does exactly that split-and-recombine between any two images - not just IC-Light output. It's also the node behind the "detail transfer" trick used in product photography workflows, where you paste original product pixels back after a scene-generation pass so labels and fine texture survive.

How it works

Usefully, the node's own description spells out exactly what each control does and which direction to turn it, so there's no guessing here:

  • keep_high_freq - coarseness of preserved detail (small → finer, large → coarser).
  • erase_low_freq - hardness of the lighting/shadow layer (small → harder, large → blurrier).
  • blend_opacity - overall strength (small → faint, large → heavy).
  • detail_strength - how strongly detail transfers, can overexpose past 100 (small → weak, large → strong).
  • high_freq_threshold - noise-vs-detail cutoff (small → keeps noise with the detail, large → cleans noise out, at some cost to fine texture).
  • mask_blur - edge softness wherever a mask is applied (small → hard edge, large → soft edge).

blend_mode (default "linear light") does the actual recombination math - linear light is the standard choice for frequency separation, which is presumably why it's the default; the other six (normal/add/multiply/screen/overlay/soft light) are there if it isn't giving you what you want on a particular image.

The inputs and outputs that matter

  • image - your base, the one whose lighting/color you're keeping.
  • detail_image - the source you're stealing fine detail from, typically your pre-generation original.
  • The six knobs above, all with sensible defaults (64 / 32 / 16 / linear light / 100 / 100 / 0.5).
  • mask (optional) + invert_mask - restrict the effect to part of the frame instead of the whole image.
  • Output: image.

How to install it

Via ComfyUI Manager: search ComfyUI-Apt_Preset, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git

Windows: install.bat. Linux/Mac: pip install -r ComfyUI-Apt_Preset/requirements.txt in your venv. Restart. Pure image math, nothing to download - the pack's broader dependency list is for other corners of this ~300-star, actively maintained pack.

Common issues & troubleshooting

Detail transfer looks like it's doing nothing. Check detail_strength and blend_opacity aren't set too low, and that keep_high_freq isn't so large it's discarding the fine detail you actually wanted transferred. Start from the defaults and adjust one knob at a time using the guide above rather than guessing blind.

Result looks overexposed or blown out. That's detail_strength pushed past 100 (it goes up to 200) - dial it back toward the default.

Not just for IC-Light. Reach for this any time a generation pass nails composition and lighting but softens texture you wanted to keep - face relighting, product shots, any image-to-image pass where the model "cleans up" detail you didn't want cleaned.

CategoryApt_Preset/image/ImgLayer

Inputs (11)

NameTypeDefaultDescription
imageIMAGE
detail_imageIMAGE
keep_high_freqINT640–1023
erase_low_freqINT320–1023
mask_blurINT160–1023
blend_modeCOMBOlinear light7 options: normal, add, multiply, screen, overlay, soft light, +1
blend_opacityINT1000–100
detail_strengthINT1000–200
high_freq_thresholdFLOAT0.500–1
maskoptMASK
invert_maskoptBOOLEANfalse

Outputs (1)

NameTypeDescription
imageIMAGE