🧹 Omnimatte Object Removal
Erase a thing from a video and watch the hole fill in
- pipe
- video
- total_mask
- background_video
This is the node you googled for. Mask a thing, run OmnimatteObjectRemoval, and the thing leaves the frame while the background fills in behind it - no rotoscoping, no frame-by-frame painting, no per-frame consistency headaches. It's the pack's reason for existing, and everything else in it exists to feed this one clean inputs.
How it works
It's mask-guided video regeneration, running on the LTX-Video 0.9.7 model the Loader brought in. Your total_mask tells the sampler "everything under here is a lie, regenerate it"; the unmasked video stays anchored, which is what keeps the rest of the frame stable frame after frame. Where a still-image inpaint would fill a hole with whatever, this has to fill it with something that moves plausibly over time - that's the hard part, and it's why you need a video diffusion model for it at all.
The prompt is optional. With the default empty prompt the model just fills the hole with whatever's most plausible, and the default negative prompt - worst quality, inconsistent motion, blurry, jittery, distorted - is the author's built-in guard against the wobble these models love to produce. If you want the fill to be specific (say, the removed person was standing in front of a garden, and you want a garden), describe it in prompt; an empty prompt is "just make it not weird."
The dials
steps- 1–100, default 30. Remember this is a 13B model; 30 steps is already real time. If the fill looks fine at 20, drop it - nobody's grading you on ceremony.guidance_scale- 0–20, default 3.0. LTX is a low-CFG model; stay in the 2–4 range. If the fill drifts off into hallucination, lower it, don't raise it.seed- default 42. The fill is a hallucination either way; this just shuffles which hallucination you get. Stuck with a bad one? Change the seed before you change everything else.prompt/negative_prompt- optional, defaults as above. The negative prompt is genuinely good; don't delete it out of spite.
Output is background_video (an IMAGE sequence) - wire it into OmnimatteComposition to put your subject on a new background, into VHS_VideoCombine to save it, or straight into a preview node to check your work.
How to install it
It ships in the pack, so install once and you've got all four nodes. ComfyUI Manager: search "ComfyUI-TP-OmnimatteZero". Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/tpc2233/ComfyUI-TP-OmnimatteZero.git
pip install -r ComfyUI-TP-OmnimatteZero/requirements.txt
Restart ComfyUI. No model files to fetch by hand - the Loader downloads the LTX 0.9.7 weights (~48 GB) the first time the workflow runs.
Where people get burned
- Hallucination. This is the classic complaint about omnimatte object removal, and it's not unique to this pack - community threads on the research project report the model inventing things into the hole. The fixes, in order: better
total_mask(cover the object's shadow/reflection - that's the whole point of the Mask Gen node), a descriptivepromptso the fill has somewhere to go, and a lowerguidance_scale. - It's slow. 13B model, video, 30 steps. This node is the reason the whole pack needs a serious GPU.
cpu_offloadon the Loader helps; reducingstepshelps more. - The fill wobbles. That's the
inconsistent motionyour negative prompt is already cursing. Let it run to completion before judging - mid-sampling video looks terrible by design.
One workflow note: the pack ships a working graph in its workflows/ folder (VideoHelperSuite loads the clip, core ImageToMask builds the object mask, Loader → Mask Gen → this → Composition). Load it, swap in your footage, and resist the urge to rebuild from scratch. The node order matters: total mask first, then removal, then compositing.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | OMNIMATTE_PIPE | — | |
| video | IMAGE | — | |
| total_mask | MASK | — | |
| steps | INT | 301–100 | — |
| guidance_scale | FLOAT | 3.00–20 | — |
| seed | INT | 420–4294967295 | — |
| promptopt | STRING | — | |
| negative_promptopt | STRING | worst quality, inconsistent motion, blurry, jittery, distorted | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| background_video | IMAGE | — |