Image Infill Boundary Propagate
The cheapest content fill in the pack
- image
- mask
- infilled_image
- distance_map_viz
- blur_weight_viz
Sometimes you don't need a smart fill - you need a fill. Image Infill Boundary Propagate is the simplest infill in the illumorae pack: it fills a masked region by propagating colors inward from the region's boundary, one ring of pixels at a time, like peeling an onion in reverse. No model, no patch search, no statistics. Just the pixels you already have, smeared sensibly into the hole.
Why reach for it? It's a prep step, not a finish. If you're about to run real inpainting or an edit model over a masked area, a plain fill often gives you better results than feeding the model a hard black hole - the model can see the surrounding colors instead of guessing at empty space. Boundary propagate is also genuinely good at outpainting-ish background extension where the region is a smooth gradient (sky, walls, flat ground) and the fill doesn't have to invent structure. And it's fast. Millisecond-fast.
How it works
The mask defines the target region, and the node works in from the boundary one 8-connected ring at a time. The important design choice is that each frontier pixel gets a random-weighted average of its already-known neighbors rather than a deterministic max-filter dilation - the randomness is what stops the streaky, ridge-like artifacts that naive inward blurring produces. It's the classic Criminisi-style terminology (target region vs. source region) but with none of Criminisi's sophistication: no priority, no structure propagation, just color.
The inputs you'll actually set:
maskandmask_mode-autoguesses which polarity means "fill," or you can forcewhite=fillorblack=fillif the mask comes in flipped. This is the #1 thing to check when the fill fills the wrong area.propagate_iterations(default 50) - how many rings to propagate; basically the radius of the largest hole it can fill. Too low and the hole isn't closed.use_center_blend/center_blend_strength- blends the final center with a blurred average, which cleans up the middle where the propagation has no real signal left.blur_center/blur_strength/blur_falloff_distance- softens the fill; andfeather_amountblends the fill edge back into the original so it doesn't look pasted.use_angular_drift/drift_radius- the randomness control; more drift = smoother but less faithful fills.
Outputs: infilled_image plus two diagnostic visualizations - distance_map_viz (how many propagation steps each pixel is from the boundary) and blur_weight_viz (where the center blur is applied). Both are for eyeballing behavior, not for wiring downstream.
Installing it
Part of CorvaeOboro's ComfyUI_illumorae (CC0, pure code). ComfyUI Manager → search illumorae, or:
cd ComfyUI/custom_nodes
git clone https://github.com/CorvaeOboro/ComfyUI_illumorae
Common issues
- The fill goes into the wrong region - mask polarity. Check
mask_modeand flipwhite=fill/black=fill. - Big holes stay black in the middle -
propagate_iterationstoo low for the hole size, oruse_center_blendoff when it should be on. This is a propagation fill; holes bigger than your iteration budget simply don't get reached. - It's not meant for structure - if you're filling across a wall/road/horizon, this node will smear a gradient and look wrong. That's what the pack's Exemplar Region Fill or PatchMatch nodes are for. Reach for boundary propagate on smooth fills only.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| mask | MASK | — | |
| mask_mode | COMBO | 3 options: auto, white=fill, black=fill | |
| propagate_iterations | INT | 501–5000 | — |
| use_angular_drift | BOOLEAN | true | — |
| drift_radius | INT | 31–8 | — |
| use_center_blend | BOOLEAN | true | — |
| center_blend_strength | FLOAT | 0.100–1 | — |
| blur_center | BOOLEAN | true | — |
| blur_strength | FLOAT | 10.00–10000 | — |
| blur_falloff_distance | INT | 501–5000 | — |
| feather_amount | INT | 100–1000 | — |
| debug_printsopt | BOOLEAN | false | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| infilled_image | IMAGE | — |
| distance_map_viz | IMAGE | — |
| blur_weight_viz | IMAGE | — |