Tiled Upscale Stitch π
Turning a pile of redrawn tiles back into one picture
- tiles
- stitcher
- image
Every tiled upscaling workflow has the same unsolved-looking step: you've got eight tiles back from the sampler and now something has to put them together without a visible grid. Tiled Upscale Stitch is that something, and it's deliberately boring - two sockets in, one image out. The interesting part is what it does about colour.
How it works
tiles takes the redrawn tiles in the order Tiled Upscale gave them, stitcher takes the object from that node, and image comes out at the finished size you asked for. That's the whole interface.
The mechanism: the stitcher carries the plan - every tile's box, the overlap between neighbours, the redraw size and the result size - plus your original tiles. The stitch pastes each redrawn tile into its place with ramp weights across the shared strip, so a tile's edge fades out over the overlap while its neighbour's fades in over the same pixels; the two add up to one, so there's no seam line and no double-darkening. Anything that came back at a different size is fitted to its slot. If you sent the tiles as a single batch tensor instead of a list, it splits them by the stitcher's tile count, so a batch-processing sampler doesn't break it.
Then there's keep_colors, default 1, and this is the control that separates a clean result from the classic tiled mess. At 1, each redrawn tile is matched to the same tile of your original picture before it's pasted. Not a global histogram match - a per-channel linear fit in LAB, computed on small averaged copies of both, so it follows what the two pictures share structurally rather than what's noisy in them. The code comment is worth quoting because it's the reason this doesn't wreck old photos: matching each channel's spread instead would count grain as colour, and a clean redraw of a pale, noisy photo came back up to twice as saturated in testing. There's also a floor and a gain cap (3Γ) so a channel that's nearly flat in both - the colour of a black-and-white photo - stays near a gain of 1 instead of being amplified into noise.
Lower keep_colors toward 0 when you want the model's colour grade - a restyle pass, or a redraw where you asked the sampler to change the look. At 0 it's off. Start at 1, and only come down if the tiles look like they're fighting your source.
Install
Same pack, so: ComfyUI Manager β Custom Nodes Manager β search AusBoss, or
cd ComfyUI/custom_nodes
git clone https://github.com/ausboss/ComfyUI-AusBoss.git
Restart ComfyUI and look under π AusBoss/Image. There's nothing to download and no extra packages - it's tensors-and-arithmetic on models you already loaded. The pack itself needs ComfyUI 0.27.1 or newer.
Where people get burned
"Got 6 tiles and the stitcher has 8." That's the error you'll actually see, and it means the count or order changed between the two nodes - usually a sampler or a node in between that dropped images, or a list that got flattened. Everything from Tiled Upscale goes through the same nodes in the same order, untouched.
Using it without the stitcher. You can't reconstruct the layout from a stack of tiles; the socket expects the object from Tiled Upscale and rejects anything else by design.
Blaming the stitch for a visible grid. Grids come from the redraw, not the join: too-high denoise per tile, no source conditioning, or an overlap too small for the tile size. The stitch blends what it's given - if the tiles now disagree about what's in the shared strip, no amount of fading hides that.
Forgetting the fit at the end. keep_colors works on the redrawn tiles, so the output is already the finished size (Tiled Upscale's width and height). Don't put a resize after it "just to be safe" - that's a second resample on top of the one the plan already accounted for.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| tiles | IMAGE | The redrawn tiles, in the order Tile For Upscale π gave them. A tile that came back at another size is fitted to its place. | |
| stitcher | AUSBOSS_TILE_STITCHER | The stitcher from Tiled Upscale π. | |
| keep_colorsopt | FLOAT | 1.000β1 | 1 keeps your picture's colors: each tile is matched to the same tile of your picture. Lower lets the model's colors through; 0 is off. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | The finished picture at the size you asked for. A list of pictures comes out as a list, one finished picture each. |