A Photo-Restoration Workflow
Restoring aged, damaged, or low-quality photographs requires a careful sequence of targeted operations: scratch and artifact removal, face detail recovery, selective colorization, and resolution enhancement. This guide walks through building a photo-restoration pipeline in the Floniks editor that handles each step as a discrete node — making it possible to iterate on individual operations without re-running the full chain. You will learn which node handles which type of damage, how to write restoration prompts that recover period-accurate detail, and how to validate output quality before delivering to a client.
Understanding What Photo Restoration Actually Requires
Photo restoration is not a single operation — it is a sequence of targeted interventions, each addressing a specific type of damage. A silver-gelatin print from the 1950s might have chemical foxing (rust-brown spots), surface scratches, faded contrast, missing corners due to tearing, water staining, and faces that are soft due to the original lens quality. Each of these problems calls for a different AI technique, and applying them in the wrong order or conflating them into a single one-shot operation produces worse results than addressing each systematically.
The correct sequencing is: (1) artifact and scratch removal first, so subsequent passes are not confused by non-original damage; (2) contrast and tonal restoration second, to establish a baseline luminance structure the face-recovery and colorization nodes can read accurately; (3) face detail recovery third, using a dedicated face restoration model that synthesizes high-frequency detail from degraded or soft facial regions; (4) colorization fourth, which depends on accurate tonal values to assign plausible hues; (5) upscaling last, which benefits from all upstream corrections being present before the final resolution enhancement.
Building this sequence as a Floniks node graph rather than running each step as an independent tool gives you three critical advantages: the output of each step flows automatically into the next without manual file export and re-import, you can re-run any individual step without restarting from the beginning, and the entire pipeline can be saved as a template and applied to a batch of similar photographs.
Scratch and Artifact Removal
Scratches and physical damage artifacts are the first thing to address because they introduce linear or irregular bright regions that later nodes — especially face recovery and colorization — can misinterpret as actual image content. A deep scratch across a face region can cause the colorization model to treat the scratch as a highlight on the skin and assign skin-adjacent color to it rather than leaving it as a repair target.
In Floniks, connect the scanned original to an Artifact Removal node. This node uses inpainting-class AI to detect and fill linear scratches, dust spots, foxing, and border tears. Set detection sensitivity to 0.75 for photographs with moderate damage. For heavily damaged prints with large tear regions, increase to 0.85 and enable Large Region Fill mode, which uses a broader context window to synthesize background continuity across larger missing areas.
After the automated removal pass, review the output carefully. For scratches that cross important content areas (a scratch across a face or a key architectural element), the automated pass may not be sufficient. For these, use the Selective Repair node: paint a mask over the residual artifact and write a fill prompt describing the content that should be there — "period-accurate wooden floor, continuation of planks, warm tungsten ambient light" — and run a targeted inpainting pass on just that region. This two-level approach (automated removal + selective targeted repair) handles 95% of scratch and artifact scenarios.
Face Recovery and Detail Restoration
Old photographs, especially those scanned from small-format prints or reproduced from newspaper halftonese, frequently have facial regions that are too low resolution or too soft for the person to be recognizable or emotionally legible. Face recovery models are trained specifically to synthesize high-frequency detail — pores, eyelash definition, iris texture, lip line sharpness — into degraded facial regions, guided by the overall face geometry present in the source.
Connect the artifact-cleaned output to a Face Restoration node. This specialized node automatically detects face regions using a landmark detector, applies a face-specific enhancement model to each detected face independently, and composites the enhanced faces back into the full image. Set enhancement strength to 0.8 for faces that are very soft or low resolution. For faces that are already reasonably sharp but just lack fine texture, use 0.5–0.6 to add micro-detail without over-sharpening into an artificial appearance.
If the photograph contains multiple faces at different scales — a family portrait where one person is close and others are in the background at small scale — set the minimum face detection size to 24 pixels to ensure the model processes even the small background faces. Very small detected faces at under 24 pixels typically produce worse results when enhanced because there is insufficient structural information to guide accurate synthesis. For these, flag them in a review note rather than processing with the restoration node.
Colorization with Period Accuracy
Automatic colorization assigns hues to a grayscale image based on learned statistical associations between luminance values and color in the model training data. Modern AI colorization is remarkably good at sky (blue), vegetation (green), skin tones (warm), and common fabrics. It struggles with unusual period colors, synthetic dye shades specific to an era, or objects whose color is not predictable from shape and context alone — a car from 1938 could be any of a dozen colors that all look the same shade of gray in the original photo.
In Floniks, the Colorization node accepts an optional text prompt that provides color hints for ambiguous objects. Use this to encode period research: "1940s American family portrait, woman in a blue gingham dress, man in charcoal gray suit, cream plaster walls, dark walnut wood furniture, golden oak hardwood floor." Each color directive in the prompt anchors an object that the automatic colorization might otherwise assign an arbitrary or incorrect hue.
After colorization, add a Color Refinement node to adjust saturation globally. Automatic colorization tends toward over-saturation for fashion items and under-saturation for architecture. Reduce global saturation to 0.80 of the model output as a starting point, then use region masks to boost saturation for skin tones specifically (skin reads best at natural saturation) and reduce it for backgrounds. This refinement step is what separates the output from looking like a uniform filter applied to the whole image versus a hand-graded restoration with naturalistic color distribution.
Upscaling and Final Export
The final step in the restoration pipeline is resolution enhancement. Scanned photographs are often delivered at 300 DPI for the original print size, which translates to relatively modest pixel dimensions for modern screens and print applications. A 4x6 inch print scanned at 300 DPI is 1200x1800 pixels — fine for web but undersized for a 24-inch print or a double-page magazine spread.
Connect the colorized output to a 4x Upscale node. Photo restoration upscalers differ from generic upscalers in that they are trained to synthesize film grain and analog print texture rather than digital sharpness. Set the Film Grain mode to match the era of the original photograph: 1940s and earlier benefit from coarser grain simulation, 1960s-1980s from finer grain. This era-appropriate grain preserves the photographic character of the restoration rather than making the final output look like a digital render.
After upscaling, add a final Grain Consistency node that ensures the grain added by the upscaler matches the residual grain visible in any uncropped border regions of the original scan. This matching step is the detail that makes a professional restoration indistinguishable from a film-original at high resolution. Export at TIFF 16-bit for archival delivery and JPEG 95% for client preview. Save the full eight-node pipeline as a Floniks template named "Photo Restoration — Standard" for batch application to archive collections.
Step by step
- 1
Import the scanned original into an Image Input node
Navigate to /editor and add an Image Input node. Upload the scanned photograph at its native scan resolution — do not downscale before importing. Note any specific damage types visible in the scan: scratches, foxing, water staining, torn corners, soft faces.
- 2
Add an Artifact Removal node and set detection sensitivity
Connect the Image Input to an Artifact Removal node. Set detection sensitivity to 0.75 for moderate damage or 0.85 for heavy damage. Enable Large Region Fill if any tears or missing areas exceed 5% of the image area. Run a preview at 512px to validate that scratches and spots are being removed without affecting original image content.
- 3
Connect a Face Restoration node
Add a Face Restoration node downstream of the Artifact Removal node. Set enhancement strength to 0.7 for soft or low-resolution faces. Set minimum face detection size to 24 pixels to capture small background faces. Review the output to ensure faces look naturally sharp rather than over-processed.
- 4
Add a Colorization node with period color hints
Connect a Colorization node after the Face Restoration node. In the colorization prompt field, enter any period-specific color research: garment colors, wall finishes, known furniture materials. Let the model handle sky, vegetation, and skin automatically, but provide explicit hints for ambiguous objects such as vehicles, wallpapers, and textiles of uncertain era color.
- 5
Refine colorization saturation with region masks
Add a Color Refinement node after the Colorization node. Set global saturation to 0.80. Paint a mask over skin tone regions and set that region saturation to 1.0 (natural level). Paint a mask over architectural backgrounds and set to 0.70. This differential adjustment produces natural-looking color distribution across the restored image.
- 6
Chain a 4x Upscale node with film grain and export
Add a 4x Upscale node with Film Grain mode set to match the era of the original (Coarse for pre-1950, Fine for post-1960). Connect a Grain Consistency node at the end to match grain to any original border areas. Connect outputs to TIFF and JPEG Output nodes. Click Run and review the final result before delivering to the client.
FAQ
In what order should I apply restoration operations?+
Always follow this sequence: scratch and artifact removal first, contrast and tonal restoration second, face recovery third, colorization fourth, and upscaling last. Each step benefits from the upstream corrections — colorization reads luminance values more accurately after tonal restoration, and upscaling captures the maximum detail after all content corrections are in place. Reversing this order, especially colorizing before artifact removal, causes the colorization model to assign hues to damage artifacts as if they were real image content.
How do I prevent colorization from assigning the wrong hue to period-specific objects?+
Use the colorization prompt field to provide explicit color hints for ambiguous objects: garment colors, vehicle colors, wall finishes, and furnishings that cannot be inferred from shape alone. Research the era's typical color palette for the specific object type — dye technology and color fashion varied by decade. Objects with predictable color relationships to their function (sky, grass, skin) do not need explicit hints; objects whose color is historically contingent do.
Related guides
Build it on Floniks
Image, video, digital humans, and reusable workflows on one canvas. Sign up gets you starter credits — no card required.
Explore Floniks