Stitch Tiles Into One Picture
The node that puts ninety tiles back into one picture without the seams
- processed_images
- source_tiles
- blend_masks
- corrected_tiles
- final_image
Every tiled upscaler's dirty secret is that the stitching is where it lives or dies. Any model can make individual tiles look good; making them agree at the joins is the whole game. SmartTileFinalizer ("Stitch Tiles Into One Picture" in the menu) is the pack's last processing stage, and it does more than blend edges - it actively corrects tiles back toward the source before it ever starts feathering.
What it does
Four things, in rough order:
- Source reference correction. The most important setting here, per the tooltip. In Stay close to the original mode every tile is pulled back toward its own source crop's colour and brightness - which is also the strongest cure for visible tiles, because it gives them all the same starting tone. In Keep the new look mode, only warped shapes are corrected and the model's colours survive. You pick by intent: faithful upscale vs. deliberate style change.
- Structure preservation (0–100, default 55) - how strongly that pull is applied. Around 50 is a normal photo upscale; below ~20 it barely does anything, which silently undoes setting 1. Raise it if the result drifts from your original.
- Cross-tile consistency (0–100, default 35) - evens out shade differences between neighbours using the strip of picture they share. 0 off, 60 strong. The tooltip is precise about the limits: it fixes tiles that came out different shades. If you can see a grid in flat water or sky, that's different texture - a prompt problem, so check the prompt log, because this won't fix it.
- Feathering and blending. The overlap-only merge with the feather ramps from the Tile Planner's masks.
The finish_preset dropdown fills every dial for you, then stays on screen as a label: Photo upscale, seams hidden (the recommended starting point), Photo upscale, hug the original, the two I changed the look variants, and Let the model add the most detail. Pick one first, then nudge.
The seam-specific controls
- consistency_mode - Shift the whole tile evenly vs Fade the fix toward the edge that disagrees. The README is clear: if you can actually see the joins, choose the fade option - the correction lands where the mismatch is instead of dragging the whole tile.
- detail_support - Keep less / Balanced / Keep more new detail. Settings 1 and 2 pull toward the source; this decides how much of the model's fine detail survives that pull. Keep more when the model genuinely improved the texture and you only want the source to fix colour and shape.
- fallback_method - bilinear by default, and leave it alone: it only fills unrendered tiles during a one-tile test so you can see the whole picture.
Inputs and outputs
List inputs: processed_images, tile_references, source_tiles, tile_metadata_json, blend_masks - everything it needs to re-assemble the grid with the correct geometry and masks. Outputs: corrected_tiles (the list of fixed-up tiles, useful for inspection) and final_image - the single stitched result that goes to SaveImage.
Install
Same pack install as the rest:
cd ComfyUI/custom_nodes
git clone https://github.com/HallettVisual/ComfyUI-Smart-Upscaler
or search "ComfyUI-Smart-Upscaler" in ComfyUI Manager, restart, and grab ComfyUI-KJNodes + rgthree-comfy for the shipped workflow. No Python deps; models in docs/MODELS.md total ~13 GB.
Gotchas
- Visible grid in flat areas = prompt problem, not stitch problem. The tooltip says it in so many words: check the prompt log before touching these dials.
- Visible seams but correct texture = this node's domain. Raise overlap/feather in the planner first (usually costs no extra tiles), then turn up
cross_tile_consistency, and switchconsistency_modeto the fade option. - Result drifted from the original -
structure_preservationbelow ~20 disables the source pull. Raise it. - Style edit pulled back to the original - you're in "Stay close to the original" mode with a change-you-wanted. Switch the reference mode (or preset) to a "I changed the look" variant.
The finalizer is where the "no visible tiles" promise gets kept. When it's set right, you can't find the grid; when it's wrong, the log tells you whether to blame the stitching or the prompts.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| processed_images | IMAGE | — | |
| tile_references | STRING | — | |
| source_tiles | IMAGE | — | |
| tile_metadata_json | STRING | — | |
| blend_masks | MASK | — | |
| reference_mode | COMBO | Stay close to the original photo | The most important setting here. Stay close to the original: every tile is pulled back toward the source's own colour and brightness. Use this whenever the source was already a correct picture - it is also the strongest cure for visible tiles, because it gives them all the same starting tone. Keep the new look: each tile keeps the colour and brightness the model gave it, and only bent shapes are corrected. Use this when you deliberately changed the picture - a style, a time of day, a repair of a broken source. |
| structure_preservation | INT | 550–100 | How strongly setting 1 is applied. Around 50 is a normal photo upscale. Below about 20 it barely does anything, so a low number here undoes setting 1 - raise it if the result drifts from your original. |
| detail_support | COMBO | Balanced | Settings 1 and 2 pull the picture back toward the source. This decides how much of the fine detail the model just generated survives that pull. Keep more new detail is the right choice when the model genuinely improved the texture and you only want the source to fix colour and shape. |
| fallback_method | COMBO | bilinear | Only used during a one-tile test, to fill in the tiles you have not rendered yet so you can see the whole picture. Has no effect on a normal full run. Leave it alone. |
| cross_tile_consistency | INT | 350–100 | Evens out colour and brightness differences between neighbouring tiles, using the strip of picture they share. 0 is off; 60 is strong. This fixes tiles that came out different SHADES. It cannot fix tiles that generated different TEXTURE - if you can see a grid in flat areas like water or sky, that comes from the prompt, so check the prompt log first. |
| consistency_modeopt | COMBO | Shift the whole tile evenly | Shift the whole tile evenly: one correction for the whole tile. Fine when a tile is uniformly off. Fade toward the edge that disagrees: the correction is strongest at the join and fades away across the tile, so a tile that only mismatches on one side is fixed there instead of everywhere. This is the better choice whenever you can actually see the joins. |
| finish_presetopt | COMBO | Manual - I set the dials myself | Pick one of these FIRST - it fills in every dial above, then stays on screen as a label so you can see what you chose and adjust from there. Photo upscale, seams hidden: start here for a normal upscale of a picture that was already correct. Use the 'I changed the look' presets when you asked for a style, a time of day, or a repair, so your new look is not pulled back to the original. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| corrected_tiles | IMAGE | — |
| final_image | IMAGE | — |