Plate Stabilizer (MEC)
Settle a shaky plate to frame zero before you start compositing
- images
- images
- info_json
Handheld footage is the enemy of a clean composite. If your plate moves every frame, every matte, tracker point, and inpaint you build on top of it inherits that motion. Plate Stabilizer (MEC) is the "before you do anything else" node: it takes a video batch and aligns every frame to frame zero, so your whole downstream graph operates on a locked-off plate. It's a real stabilizing tool, not a smoothing pass - this is the difference between "steady" and "locked," and for comp work you want locked.
Two backends, one behavior
Two backends, one behavior. With opencv-python installed, it runs ORB feature detection plus affine registration - finds up to max_features (default 500) keypoints in the reference frame, matches them against each subsequent frame, and fits a partial-affine transform to align them. That handles rotation, scale, and perspective drift you can't fix with translation alone. Without cv2, it falls back to FFT phase correlation, which solves per-frame translation only - good enough for pure camera shift, weaker on rotation. The node reports which backend it used in info_json, so you're never guessing.
The knob that matters
The mechanism is worth knowing because it sets expectations: ORB+affine is real registration, but it's not a commercial tracker. max_features controls the keypoint budget - more features help on textureless or repetitive plates, and 500 is a sensible default. You get a stabilized images output (frame 0 passed through untouched, everything else warped to match) and an info_json string with the per-frame shifts/transforms, which doubles as a diagnostic record.
Where it slots in
Where it slots in: it's one of the pack's Plate Tools, sitting next to Clean Plate Extractor, Grain Match, and Difference Matte. The natural pipeline is stabilize → extract clean plate → composite. It also feeds the re-vectoring and inpainting side of the pack - a stabilized plate makes Optical Flow Re-Vector and the ProPainter modes behave far better, because motion across the frame becomes the subject's motion instead of camera shake.
Install and honest limits
Install: clone Code2Collapse/ComfyUI-CustomNodePacks into ComfyUI/custom_nodes (or "CustomNodePacks" in ComfyUI Manager), restart, find it under MaskEditControl/PlateTools. The only dependency beyond the pack is opencv-python, which is in requirements.txt and is very likely already present - if you see backend: fft_translate in the info JSON, cv2 is missing and you're on the weaker path.
The honest limits: it stabilizes to frame zero, so large camera moves (a big pan or push-in) can leave edges exposed where content wasn't in the reference frame - those areas need cleanup, not more stabilization. And ORB+affine isn't optical flow: it aligns features, it doesn't reconstruct missing geometry. For the locked-off-plate comp that this pack is built around, that's exactly the right tool. If you need a full perspective solve with parallax, you're in tracker territory, not this node.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| max_featuresopt | INT | 50050–5000 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| info_json | STRING | — |