YC Image Untile
Stitch tiles back into a full image — the other half of tiled upscaling
- tiles
- IMAGE
This is the glue side of tiled upscaling: take the batch of tiles your YCImageTile produced, run them through whatever detailer or upscaler you like, then hand the processed tiles back here to be rebuilt into one image. On its own it's nothing - stitched together with its sibling it's the thing that lets you upscale past VRAM limits.
What it's actually for
The tiled-diffusion flow is split → process → merge. YCImageTile handles split; this handles merge. Between them, every tile gets its own generation pass (ControlNet-tile upscale, a face detailer, whatever), and this node has to put the pieces back in the right order with the overlaps blended so you don't see the seams. Tiled upscaling remains one of the most reliable ways to push big images on small GPUs, and this is the stitch node for it.
How it works
It places each tile back into a blank canvas using the same row-major order the splitter used (tile 0 top-left, going right, then down). The overlap region between neighbors gets feathered - blended linearly - so adjacent tiles fade into each other instead of forming a hard line. That feathered overlap is the entire quality difference between "one image" and "a grid of images."
The catch: it needs the exact geometry the splitter used. rows, cols, overlap_x, and overlap_y must match what YCImageTile computed - which is why the splitter returns those values as outputs. Wire them through and you never have to think about it.
Inputs
Four inputs, and you should set them from the splitter's outputs rather than typing:
- tiles - the tile batch, post-processing
- overlap_x / overlap_y - the overlap values
YCImageTilereported - rows / cols - the same grid you used on the way in
Output is a single IMAGE, the reconstructed frame.
Install
Ships in ComfyUI-YCNodes. ComfyUI Manager → search "ComfyUI-YCNodes" → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/yichengup/ComfyUI-YCNodes
Restart and it's live. Dependencies: torch, numpy, pillow, opencv-python, scipy; no model downloads.
Where people get burned
- Mismatched geometry. If rows, cols, or overlaps don't line up with the splitter's values, tiles land at wrong offsets and the output looks like a shuffled jigsaw. Wire the splitter's outputs straight across.
- One-sided feathering. The blend is applied on the top and left overlap edges only. It's fine for most upscales, but if you push a lot of overlap you can spot a directional seam. Drop overlap to the minimum that keeps tiles from diverging and it mostly disappears.
- Not running the tiles through anything. Feed it the raw split output and you get a pixel-identical reconstruction - that's correct, but you've accomplished nothing. The point is to process the tiles between split and stitch.
It's a workhorse that rewards discipline: keep the geometry consistent and it quietly does the hardest part of tiled upscaling for you.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| tiles | IMAGE | — | |
| overlap_x | INT | 00–8192 | — |
| overlap_y | INT | 00–8192 | — |
| rows | INT | 21–256 | — |
| cols | INT | 21–256 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |