ComfyUI Node

Restore Detail

The frequency-separation fix for IC-Light's washed-out faces

By spacepxl·Created 3 years ago·Updated 8 months ago· 293
Restore Detail
  • images
  • detail
  • IMAGE
mode
blur_type
blur_size1
factor1.00

If you've used IC-Light and noticed your subject's skin goes a little plasticky or the fine texture just melts away, this is the node people reach for. It's frequency separation, packaged as one node, and it's specifically namechecked in the README as the fix for "the lost details from IC-Light or other img2img workflows." Search around for how people actually recover IC-Light detail and this node is the answer that keeps coming up.

The idea behind it

Any image can be split into low frequency (broad shapes, lighting, color) and high frequency (fine texture - pores, fabric weave, grain). Diffusion models are generally much better at getting the low-frequency stuff right than preserving high-frequency detail, especially through an img2img or relighting pass that changes the image significantly. Frequency separation lets you take the low-frequency result from your generation and graft the high-frequency detail back on from the original, so you get the new lighting/color/composition and the texture you started with.

Restore Detail does this by comparing your images (the result you want to add detail to) against detail (the source you're pulling texture from), extracting the difference at high frequency, and applying it back with a strength you control.

Inputs and outputs that matter

  • images and detail - result and source. Detail gets transferred from detail onto images.
  • mode - add or multiply. Add/subtract is the README's recommendation for fewer artifacts, but it mostly ignores highlights; multiply/divide looks more natural but can introduce artifacts where the image swings from dark to bright.
  • blur_type - blur (plain gaussian) or guidedFilter. Guided filter is the one to reach for when you're seeing oversharpened, haloed edges - it respects edges instead of blurring straight through them.
  • blur_size (1–1023) - how wide the low-frequency separation is. Bigger separates coarser detail from finer detail; this is the knob that decides what counts as "detail" versus "shape."
  • factor (-10 to 10, default 1) - how strongly the extracted detail gets applied. Negative values invert it, which is mostly useful for creative effects rather than restoration.

Single output: IMAGE, ready to feed into your VAE encode or straight to a preview/save node.

Installing it

ComfyUI Manager: search ComfyUI Image Filters. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/spacepxl/ComfyUI-Image-Filters

Restart. No model weights needed - it's a pure image-processing filter, no checkpoint to download. The one dependency worth knowing about is opencv: if you get import errors on startup, it's almost always a version conflict with another node pack that also installs opencv. Run the pack's import_error_install.bat, or on Linux just uninstall every opencv-* package and reinstall opencv-contrib-python alone - it's the only variant this pack actually needs.

Where people get burned

Mismatched resolutions between images and detail is the most common trip-up - they need to be the same size, since this is a pixel-level operation, not a semantic one. If your IC-Light output got resized somewhere in the pipeline before this node, resize it back to match the original first.

The add vs multiply choice is the one setting worth actually experimenting with rather than leaving on default. add is the safer starting point - the README's own words are "fewer artifacts" - but if your image has strong shadow-to-highlight transitions, add tends to under-restore detail in the shadows. Try multiply there and see if it looks more natural; just watch the bright/dark transition zones for artifacts if you do.

If detail restoration looks like it's doing nothing, check blur_size before blaming factor - too large a blur size and the "detail" band you're extracting has drifted into territory that's actually shape, not texture, and boosting factor just amplifies the wrong thing.

CategoryImage-Filters/image

Inputs (6)

NameTypeDefaultDescription
imagesIMAGE
detailIMAGE
modeCOMBO2 options: add, multiply
blur_typeCOMBO2 options: blur, guidedFilter
blur_sizeINT11–1023
factorFLOAT1.00-10–10

Outputs (1)

NameTypeDescription
IMAGEIMAGE