Frequency Separation in GIMP - Professional Skin Retouching
The industry-standard technique for editing skin tone, color, and blemishes without destroying fine texture detail like pores, hairs, and surface micro-structure.
What Frequency Separation Is
Every photograph contains information at different spatial frequencies. Low-frequency information is the broad, gradual variation of tone and color across the image - What a heavily blurred version of the photo shows. High-frequency information is the fine detail: texture, pores, individual hairs, surface roughness - What remains when you subtract the low frequencies.
Frequency separation splits a layer into these two components, places them on separate layers, and uses a mathematical blend mode (Linear Light) to recombine them. Because the texture (high) and the tone/color (low) are now on separate layers, you can edit each independently without the edits crossing over.
Why Professionals Use Frequency Separation
Traditional clone stamp and heal brush retouching moves both texture and tone simultaneously. On skin this creates a characteristic "plastic" or "airbrushed" result because the natural pore and micro-texture is smeared or erased. Frequency separation avoids this problem entirely - It is the foundation of professional portrait retouching.
Traditional Healing
- Fixes spots and discoloration
- Smears fine texture in the process
- Creates plastic-looking skin
- Difficult to even skin tone broadly
- Fast for small areas
Frequency Separation
- Fixes spots, discoloration, uneven tone
- Preserves all fine texture
- Natural skin appearance
- Allows broad color correction per region
- Slightly longer setup, faster broad edits
Setting Up the Layers
The starting layer stack for frequency separation consists of three layers: the original (for reference or undo), the low-frequency layer, and the high-frequency layer on top. If you are new to working with layers in GIMP, review that guide first before proceeding.
-
1Open your portrait or image.
-
2Duplicate twice: Right-click the background layer → Duplicate Layer. Do this twice. You now have three identical layers. Name them: bottom = "Original", middle = "Low Frequency", top = "High Frequency".
-
3Hide Original: Click the eye icon on the "Original" layer to hide it. It is preserved as a safety backup but should not be visible during editing.
Creating the Low Frequency Layer
The low-frequency layer is created by blurring a copy of the image. The blur radius determines how much detail is retained in the low-frequency layer vs how much remains in the high-frequency layer. For skin retouching the correct blur radius depends on the subject's skin type and the image resolution.
| Skin Type / Subject | Suggested Radius | Effect |
|---|---|---|
| Smooth / young skin (high res) | 4–6 px | Gentle tone separation, very fine texture preserved |
| Normal adult skin (mid res) | 6–8 px | Good all-purpose separation, pores cleanly separated |
| Textured / mature skin | 8–12 px | Deeper separation, more aggressive tone editing possible |
| Low-resolution / web image | 2–4 px | Minimal blur to avoid destroying what little detail exists |
| Fabric / product surface | 5–10 px | Depends on weave/texture scale; test visually |
| Landscape / rocky terrain | 15–30 px | Large blur separates lighting from rock texture |
-
1Select the "Low Frequency" layer.
-
2Apply Gaussian Blur: Filters → Blur → Gaussian Blur. Set radius to your chosen value (e.g. 7 px for normal skin). Click OK.
Creating the High Frequency Layer
The high-frequency layer is created using the Grain Extract blend mode, which subtracts the low-frequency (blurred) layer from the original, leaving only the difference - Which is the texture.
-
1Select the "High Frequency" layer.
-
2Apply Grain Extract: Colors → Grain Extract (or Filters → Combine → Grain Extract in older versions). In GIMP 3.x: use Script-Fu Console with the following command if the menu item is not directly available:
; Run in Script-Fu Console (Filters -> Script-Fu -> Console)
; Assumes the High Frequency layer is the active layer
; and the Low Frequency layer is directly below it.
; Replace layer-name strings with your actual layer names.
(let* (
(image (car (gimp-file-load RUN-NONINTERACTIVE "image.xcf" "image.xcf")))
(high-layer (car (gimp-image-get-layer-by-name image "High Frequency")))
(low-layer (car (gimp-image-get-layer-by-name image "Low Frequency")))
)
; Grain Extract: high = original - low + 128
(gimp-image-set-active-layer image high-layer)
(plug-in-grain-extract RUN-NONINTERACTIVE image high-layer low-layer)
)
-
3Manual Grain Extract alternative: In GIMP 3.x, the quickest manual method: select "High Frequency" → Colors → Curves (do not change yet, just open) → Cancel. Then right-click "High Frequency" → Layer → New from Visible. On the resulting merged layer, go to Colors → Grain Extract with the "Low Frequency" layer as the target. For the UI method in GIMP 3.x, ensure High Frequency is above Low Frequency and set High Frequency blend mode to "Grain extract" - The visual result is the texture-only layer.
-
4Set blend mode: Set the "High Frequency" layer blend mode to Grain merge (not Grain extract - That was used to create it; Grain merge recombines it with the Low Frequency layer below for the correct visual result). The combined appearance should look identical to the original image.
Editing the Low Frequency Layer
Work on the low-frequency layer to fix uneven skin tone, redness, blotchy color, dark circles under eyes, and large-scale discoloration. Because the texture is on a separate layer, your healing and cloning edits here are smooth and never create a plastic look.
-
1Select the "Low Frequency" layer.
-
2Use the Clone or Heal tool: Select the Clone tool (C) or Healing tool (H). Use a soft brush (hardness 0%). Sample from a nearby area with the desired tone/color (Ctrl+click to set source with Clone, or just click the reference area with Heal). Paint over discolored or uneven areas. The tool spreads the blurred color smoothly - No texture is affected.
-
3Smooth broad areas: For large areas of uneven color, use a large, very soft brush at low opacity (10–20%) and sample from the average skin tone area. Multiple light passes gradually even the tone without harsh edges.
-
4Airbrush for color correction: For targeted color shifts (e.g. reducing redness in a specific area), use the Airbrush tool with a color sampled from the desired reference skin tone, at very low opacity (3–8%), and paint lightly over the area. For broader tonal adjustments, see the color correction guide. Multiple passes build up gradually.
Editing the High Frequency Layer
Work on the high-frequency layer to remove surface irregularities - Spots, lines, ingrown hairs, skin roughness - While keeping tone and color intact. The high-frequency layer looks grey with textures: grey areas are neutral (no texture change); dark/light variations are the texture itself.
-
1Select the "High Frequency" layer.
-
2Use the Clone tool: Select the Clone tool (C). Use a small, medium-hardness brush (hardness 50–70%). Ctrl+click to sample from a nearby area with similar texture but without the blemish. Clone over the blemish. Because you are only moving texture (not tone), the result blends naturally.
-
3Sample close to the problem area: The source sample must have similar texture directionality (pore pattern, hair direction). Sampling from an area too far away may introduce a texture mismatch.
-
4Use the Heal tool for complex areas: The Heal tool (H) blends the source texture with the surrounding context at the target area, which can produce even more seamless results than Clone on the high-frequency layer for irregular skin patterns.
Before/After Workflow Summary
- Open image → duplicate background twice → name Original, Low Frequency, High Frequency
- Apply Gaussian Blur to Low Frequency layer (choose radius from the table above)
- Apply Grain Extract to High Frequency layer (using Low Frequency as source); set High Frequency blend mode to Grain Merge
- Verify recombination: toggle the High Frequency + Low Frequency layers on/off vs the Original - They should look identical
- Edit Low Frequency: fix broad color, tone, shadows, redness using Clone/Heal at large radius, low opacity
- Edit High Frequency: remove spots, lines, surface blemishes using Clone/Heal at small radius, higher hardness
- Compare against the Original layer (make it visible temporarily)
- Flatten and export
Standard Healing vs Frequency Separation
Applying to Other Subjects
Frequency separation works on any subject where texture and tone/color are usefully separate:
- Fabric and clothing: Separate fabric weave texture (high) from wrinkle shading and color variation (low). Even out the color of a garment without destroying the weave pattern.
- Product photography: Remove dust, scratches, and surface marks on the high-frequency layer. Fix uneven reflections and color banding on the low-frequency layer.
- Landscapes: A large blur radius (15–30 px) separates the rock or tree surface texture from the broader lighting and shadow. Dodge and burn on the low-frequency layer to adjust lighting without affecting surface detail.
- Antique paper / document restoration: Separate the paper texture and print texture from the background discoloration and foxing. Clean the discoloration on the low-frequency layer while preserving the print texture on the high-frequency layer.
Script-Fu Template for Frequency Separation Setup
Rather than manually duplicating layers and applying the blur and grain-extract each time, the following Script-Fu script automates the entire setup in one run. Paste it into Filters → Script-Fu → Console and click Run.
; Frequency Separation Setup - Script-Fu
; Run with the source image open and its base layer selected.
(let* (
(image (car (gimp-display-get-image (car (gimp-display-list)))))
(base-layer (car (gimp-image-get-active-drawable image)))
(blur-radius 7) ; Adjust: 4-6 smooth skin, 6-8 normal, 8-12 textured
; Duplicate base layer twice
(low-layer (car (gimp-layer-copy base-layer FALSE)))
(high-layer (car (gimp-layer-copy base-layer FALSE)))
)
; Insert duplicates above the base
(gimp-image-insert-layer image low-layer 0 -1)
(gimp-image-insert-layer image high-layer 0 -1)
; Rename layers
(gimp-item-set-name base-layer "Original")
(gimp-item-set-name low-layer "Low Frequency")
(gimp-item-set-name high-layer "High Frequency")
; Hide original
(gimp-item-set-visible base-layer FALSE)
; Apply Gaussian blur to Low Frequency
(gimp-image-set-active-layer image low-layer)
(plug-in-gauss RUN-NONINTERACTIVE image low-layer
(* blur-radius 2) (* blur-radius 2) 0)
; Apply Grain Extract to High Frequency
; (High = Original minus Low + 128)
(gimp-image-set-active-layer image high-layer)
(plug-in-grain-extract RUN-NONINTERACTIVE image high-layer low-layer)
; Set High Frequency blend mode to Grain Merge
(gimp-layer-set-mode high-layer LAYER-MODE-GRAIN-MERGE)
(gimp-displays-flush)
(gimp-image-clean-all image)
(list "Frequency separation setup complete. Blur radius used:" blur-radius)
)
After running the script, verify the recombination looks correct by toggling layer visibility, then begin editing on the Low Frequency or High Frequency layers as required.