Frequency Recombine
Put the Bands Back, With the Balance You Actually Want
- low_frequency
- high_frequency
- result
The whole point of splitting an image into frequency bands is to adjust one band and put it back - and Frequency Recombine is the "put it back" half. It takes the low- and high-frequency outputs from the pack's FrequencySeparation node and rebuilds the image, but with independent strength controls for each band. That's where the real editing power lives: boost the high band for detail without touching color, or scale down the low band to change lighting without smearing texture.
It's in the Detail category of amtarr/ComfyUI-TextureAlchemy, and it's the other bookend of the retoucher's frequency-separation workflow. Separating is only half the story; this node is what makes separation useful.
How it works
The recombine math is exactly what it sounds like: result = low_frequency * low_freq_strength + high_frequency * high_freq_strength, clamped to valid range. With both strengths at 1.0 you get (approximately) your original image back - the separation/recombine round-trip is lossless enough for texture work. Dialing high_freq_strength above 1.0 is a local-contrast boost that adds crispness without the halo look of a global unsharp mask; dropping it below 1.0 smooths detail while keeping color and lighting intact.
The asymmetry in the sliders is worth noticing: high_freq_strength ranges 0–3 (there's a lot of headroom to add detail), while low_freq_strength only goes 0–2. That's a deliberate hint - the interesting direction is usually adding high-frequency punch.
The inputs that matter
low_frequency- the blur band from FrequencySeparation.high_frequency- the detail band.high_freq_strength(0–3, default 1) - detail gain; 1.2–1.5 is a good "pop" range for textures.low_freq_strength(0–2, default 1) - base/color gain; lowering it softens the broad shading.
Output is result, a single IMAGE.
Where it slots in
The workflow it's built for: FrequencySeparation → tweak one band (recolor the low band, or blur it to fix uneven lighting) → Frequency Recombine to reassemble. Without the recombine step you'd have to do all your band editing blind, because the separated bands are only meaningful as a pair. It's also the poor-man's local contrast tool: separate, boost high_freq_strength to ~1.3, recombine - a texture with more perceived detail that never touches the overall brightness.
Installing it
Part of TextureAlchemy:
cd ComfyUI/custom_nodes
git clone https://github.com/amtarr/ComfyUI-TextureAlchemy
restart, and it's under Texture Alchemist → Detail. ComfyUI Manager: search "Texture Alchemy". No extra dependencies.
Gotchas
The bands must come from a matching separation - recombining a low band from one radius with a high band from a different radius still produces an image, but it's a Frankenstein that never quite reconstructs the original. And if your recombine output looks washed out at default strengths, it usually means one of the band inputs isn't a true band (i.e., you fed it the wrong output from the split node). Also mind the strength asymmetry: a high_freq_strength of 3.0 will aggressively amplify any noise the separator left in the high band, so pair aggressive recombine with the pack's Denoise Filter first.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| low_frequency | IMAGE | — | |
| high_frequency | IMAGE | — | |
| high_freq_strength | FLOAT | 1.000–3 | High frequency detail strength |
| low_freq_strength | FLOAT | 1.000–2 | Low frequency base strength |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| result | IMAGE | — |