Dickson TTP Tile Preprocessor GF
Edge-preserving tile conditioning for SDXL upscales
- image
- image_output
When you upscale with tile ControlNet, you're walking a line: flatten the source enough that the model invents fresh detail, but keep the edges sharp enough that the result still looks like your image. The GF (guided filter) variant of Dickson's TTPlanet preprocessor is the version built for that second half. Where its Simple sibling just blurs, this one runs an edge-preserving guided filter that smooths interior texture while leaving edges intact - which is exactly the conditioning profile a tile upscale wants, and why you'd pick this over Simple when edges matter.
How it works
The pipeline, in order: convert to OpenCV BGR, apply a Gaussian blur (blur_strength), run a guided filter (radius, eps) via OpenCV's cv2.ximgproc.guidedFilter, then downscale by scale_factor and upscale back. The guided filter is the star - it uses the blurred image's local structure to decide what's edge and what's texture, so strong contours survive the flattening while fine grain gets erased. Note the order differs from Simple, which blurs after resizing; GF processes first, then does the down-and-up size pass.
Inputs that matter
image- your source.scale_factor(1–8, default 1) - how much detail the down-and-up pass strips. Default 1 means no size change at all, so the flattening comes entirely from the blur + guided filter.blur_strength(1–10, default 2) - pre-filter smoothing.radius(1–20, default 7) - the guided filter's window size. Bigger radius = broader areas get smoothed as one.eps(0.001–0.1, default 0.01) - the edge-sensitivity threshold. Lower keeps more edges sharp; raise it to let the filter treat finer detail as texture.
Output is a single image_output, wired into a ControlNet Apply node loaded with TTPlanet's SDXL tile model, then into a VAE Encode for the actual regeneration. The realistic use case is tiled diffusion upscaling - the tile condition is what keeps neighboring tiles from diverging into a patchwork, and the edge preservation is what stops the upscale from looking melted.
Install and the model
Same pack as the others: ComfyUI Manager (search dicksondickson) or git clone https://github.com/dicksondickson/ComfyUI-Dickson-Nodes into custom_nodes, then restart. Dependencies are Pillow and opencv-python-headless - and the guided filter lives in OpenCV's ximgproc contrib module, which ships inside opencv-python-headless, so a normal install just works. If you ever see module 'cv2' has no attribute 'ximgproc', your environment has a minimal/system OpenCV instead of the Python package - installing opencv-python-headless via pip fixes it.
The thing you must do manually: download the TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic model from Hugging Face into ComfyUI/models/controlnet. The README is explicit that it doesn't come with the pack. And remember this is SDXL tooling - pair it with an SDXL base, not a Flux-era model, or the preprocessor will produce a conditioning image nothing in your graph understands.
Pick Simple when you want speed and don't care about edges. Pick GF when you're upscaling something with real structure - buildings, faces, hard lines - where you need the detail to be new but the geometry to hold.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| scale_factor | FLOAT | 1.001–8 | — |
| blur_strength | FLOAT | 2.01–10 | — |
| radius | INT | 71–20 | — |
| eps | FLOAT | 0.0100.001–0.1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image_output | IMAGE | — |