IAMCCS Ideo Masked Pixels
Make the model actually see the hole you're inpainting
- image
- mask
- image
- mask
- mask_preview
- report
Here's an inpainting gotcha that bites people on Ideogram and Flux-style paths: if you feed the model a masked region that still contains the original pixels, it can decide there's nothing to change - "looks fine to me" - and the edit just doesn't happen, or it happens so weakly the region feels wrong. The fix the community converged on is to visibly destroy the masked area before sampling, so the model knows there's a hole to fill. IAMCCS IdeoMaskedPixels does that with no third-party dependencies.
The author's docstring is honest about what it is: it "mirrors the useful part of external masked-noise workflows without adding third-party runtime dependencies." Those external workflows are usually the masked-blur or masked-noise tricks from other packs; this is the same idea implemented in plain PIL/numpy.
How it works
You feed image + mask, and the node replaces the masked region with a fill, chosen by fill_mode:
solid_black(default) - clean slate. The most aggressive "there is nothing here" signal.solid_gray- mid-gray instead of black; sometimes behaves better with the model's priors.noise- random noise seeded byseed, mirroring the masked-noise workflows. Great when the model overfits to black holes.blurred_source- a heavy blur of the original pixels. Least destructive; the model still sees structure but knows the region is soft and editable.
strength (default 0.95) controls how much of the fill actually lands - 0.95 means the fill mostly replaces the masked area, and fill_color (hex) sets the color for the solid modes.
Outputs
image is the altered pixels. Crucially, mask passes through unchanged - you feed the same mask to InpaintModelConditioning that you used here, because the conditioning needs the true geometry while the sampler needs the "edited" pixels. mask_preview is a visual IMAGE of the mask so you can see what the model is being told, and report summarizes what happened. A seed input also flows into the noise path, so runs are reproducible.
Why this beats a blur node
Because the fill, the mask, and the report all stay in one place. You can reproduce the same trick with a Blur node plus a mask blend, but you'll be juggling three nodes and re-deriving the geometry each time. Here the pairing is guaranteed to stay consistent.
Install & expectations
IAMCCS-nodes, the usual two routes:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
or ComfyUI Manager → search IAMCCS. No extra packages.
If an edit still comes out too subtle, don't immediately blame the fill - check your strength, and remember the model is also governed by the mask and denoise settings downstream. This node only fixes the "model doesn't see the hole" half of the problem.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| mask | MASK | — | |
| fill_mode | COMBO | solid_black | 4 options: solid_black, solid_gray, noise, blurred_source |
| strength | FLOAT | 0.950–1 | — |
| fill_color | STRING | #000000 | — |
| seed | INT | 10–18446744073709550000 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| mask_preview | IMAGE | — |
| report | STRING | — |