Nodes/MiniMax-H3-Flow-Aligned-Regenerate/MiniMax H3 Image Geometry Probe (diagnostic)
ComfyUI Node

MiniMax H3 Image Geometry Probe (diagnostic)

Measure the MiniMax H3 seam while it's still pixels

By xmarre·Created about a month ago·Updated about 18 hours ago· 21
MiniMax H3 Image Geometry Probe (diagnostic)
  • images
  • images
  • report
◄join_frame175►
◄static_roi_profile01784_room►
◄static_roi_json►
◄feature_tracking_enabledtrue►

If you're stitching MiniMax H3 clips together, eventually something looks off right where two chunks meet - the background wallpaper shifts a hair, the wall goes a shade darker, the texture softens. You can spend ten minutes re-rendering to check a hunch, or you can put this node in the graph and get a number in five seconds. That's the whole pitch.

MiniMax H3 Image Geometry Probe (diagnostic) sits on an IMAGE stream - decoded frames, or an assembled timeline before video encoding - and measures static-background sharpness and position around a join frame. It passes the images straight through untouched, so it's a splice, not a detour. Wire it in, read the report, decide, then either delete it or leave it as a cheap regression check.

What it's actually doing

It takes the 32-frame window from join_frame - 16 to join_frame + 15 and hands it to the same ROI estimator the pack's Local Boundary Audit uses. Inside that window it compares three frames: f(join-1), f(join+5), and one earlier reference frame from up to three frames back. For each named region it computes luma and texture statistics on a common grid, so you get a before/after read on detail and apparent position at the join rather than a whole-clip average that hides it.

With feature_tracking_enabled on (the default) it also runs bidirectional Lucas-Kanade tracking over those regions to estimate cumulative background movement - the slow drift that phase correlation alone tends to miss. OpenCV is the dependency here, and it's optional: if cv2 isn't in your ComfyUI environment the report simply says opencv_unavailable and the photometry measurements still run.

The output report is a JSON blob, logged to the console and shown in the node's own UI text. It's an output node, so it runs even with nothing connected downstream.

The inputs you'll touch

  • images - the IMAGE timeline. Has to be [frames, H, W, C] with at least 3 channels.
  • join_frame - default 175, which is the natural join for native H3 5k+2 chunk lengths and the number the pack's examples use. This is the first frame of the new chunk, and it has to land strictly inside the timeline you feed in, or the node raises.
  • static_roi_profile - 01784_room by default, which is literally the author's bench scene: a bookshelf, a framed picture, a right curtain, a white wall, each as a fractional rectangle. Useful as a sanity check, useless for your footage.
  • static_roi_json - for anything that isn't that room. A JSON object mapping names to fractional [x0, y0, x1, y1] rectangles, 2 to 12 of them, each at least 3% of the canvas in both directions. Something like {"far_wall": [0.30, 0.10, 0.48, 0.30]}.
  • feature_tracking_enabled - leave it on unless you enjoy guessing about drift.

images and report are the two outputs. images goes onward to whatever you'd have wired next anyway; report is the point.

Install

Through ComfyUI Manager, search the pack title MiniMax H3 Flow-Aligned Regenerate, install, restart. Or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/xmarre/MiniMax-H3-Flow-Aligned-Regenerate
# then restart ComfyUI

The pack itself declares exactly one runtime dependency, numpy. No model downloads, no H3 checkpoint, no sampler, no VAE - this particular node is pure Python over tensors you already have. If you want the feature tracking, make sure OpenCV is installed in ComfyUI's Python:

python -c "import cv2; print(cv2.__version__)"

Where people get burned

The ROI profile is the one that bites. 01784_room measures rectangles in a test room that isn't your video, so a report full of garbage numbers is usually a profile mismatch rather than a real seam problem. Point ROIs at genuinely static background, split across the join, and keep faces, hands and anything that moves out of the boxes - a waving arm inside a "static" ROI looks exactly like catastrophic camera drift.

Second thing: this is a diagnostic proxy, not a verdict. Texture and luma deltas around a join tell you where to look; they don't tell you whether the shot looks good. If the numbers are clean and the render still reads as a seam, the numbers lose. And if the report comes back with insufficient_timing_window, your timeline simply doesn't contain the frames the measurement needs around that join - check join_frame before you start suspecting the model.

CategoryMiniMax H3/flow regenerate

Inputs (5)

NameTypeDefaultDescription
imagesIMAGE—
join_frameINT1751–100000—
static_roi_profileCOMBO01784_room2 options: 01784_room, custom
static_roi_jsonSTRING—
feature_tracking_enabledBOOLEANtrue—

Outputs (2)

NameTypeDescription
imagesIMAGE—
reportSTRING—