Nodes/ComfyUI-NKD-Basic-Tools/😺NKD Frequency Combine
ComfyUI Node

😺NKD Frequency Combine

Put skin texture back after a relight — the detail-transfer finisher

By Nekodificador·Created about a month ago·Updated 3 days ago· 71
😺NKD Frequency Combine
  • high_frequency
  • low_frequency
  • mask
  • image
â—„modeDivideâ–º
â—„lineartrueâ–º
â—„detail_strength1.00â–º
â—„mask_feather0â–º

Relighting is great until it isn't. A relight model moves the lighting beautifully and smooths the pores and fabric texture into oblivion in the process, because relighting a face is basically running it through a blur-and-recompose. The fix has been around in Photoshop forever: split the image into a soft base and a detail layer, then recombine the new base with the old detail. That's frequency separation, and 😺NKD Frequency Combine is the "put it back" half of it.

You feed it a high-frequency detail layer and a low-frequency base, and it merges them: detail from one image, base from another. The classic wiring is - take the original photo, run it through 😺NKD Frequency Separate, keep its high_frequency; take the relit result as your low_frequency; combine. Result: the relit lighting with the original micro-detail intact.

The input that bites: mode and linear

  • high_frequency - the detail layer from a Frequency Separate.
  • low_frequency - the base the detail lands on (e.g. the relit result).
  • mode - must match the Separate that made the HF. The default Divide is a ratio encoding, which is lighting-invariant - that's why detail transfers cleanly between differently-lit images. If the two nodes disagree, you get garbage, not a subtle error.
  • linear - same story: must match the Separate. Processing in linear light is the "correct" default; linear on one node and off the other is a mismatch.
  • detail_strength - attenuate (<1) or boost (>1) the transferred detail. 1.0 restores it faithfully; this is your "how much texture do I actually want back" dial.
  • mask_feather - softens the mask edge before applying.

The optional mask input applies the detail only inside the mask (feathered by its values) - skin-only detail restoration, for instance, so the background isn't re-textured.

Output is a single image: base with the detail recombined.

Install and gotchas

Install via ComfyUI Manager (search ComfyUI-NKD-Basic-Tools) or:

cd ComfyUI/custom_nodes
git clone https://github.com/Nekodificador/ComfyUI-NKD-Basic-Tools

Restart after. Pack dependencies are onnxruntime and huggingface_hub; neither is needed here. The number one failure mode is mode/linear mismatch - if the combine looks wrong, check those two before touching anything else, because they have to mirror the Separate exactly. And if you're wondering whether to use Luminance or RGB detail: Luminance keeps the detail achromatic so a Divide recombine never shifts color, which is the safe default for skin-and-fabric work.

Category😺NKD Nodes/Basic

Inputs (7)

NameTypeDefaultDescription
high_frequencyIMAGE—
low_frequencyIMAGEBase image the detail lands on (e.g. the relit result).
modeCOMBODivideMust match the Separate that made the HF.
linearBOOLEANtrueMust match the Separate that made the HF.
detail_strengthFLOAT1.000–2Attenuate (<1) or boost (>1) the transferred detail. 1.0 restores it faithfully.
mask_featherFLOAT00–64Soften the mask edge before applying.
maskoptMASKOptional — apply the detail only inside the mask (feathered by its values).

Outputs (1)

NameTypeDescription
imageIMAGEBase with the detail recombined.