Atlas Solve Burst Patch Crops π·βοΈ
Atlas Solve Burst Patch Crops π·βοΈ β mine the burst for the frame that sees the hole
- solve
- hole_mask
- cropped_patch
- patch_frame_index
- crop_roi
- report
AtlasSolveBurstPatchCrops is the sibling of AtlasSolvePatchViews with one crucial difference: instead of searching angles for a view that sees the hole, it searches frames. When you've shot a handheld burst of the scene, some frames will have captured a patch of material that another frame hides behind an obstruction. This node finds that: it takes your solved scene and hole mask, checks each burst frame for how much of the hole it actually sees, and crops out the best region for you to use as a photographed patch.
It's the measured answer to a hole that inpainting would invent. Where AtlasShootList is the planning node (go out and shoot the missing material), this is the recovery node - the burst you already have may contain the missing pixels, no second trip required. It slots into the same patch-repair family, and it's the natural pair with AtlasMultiViewSolveBurst, which registers the burst into a calibrated rig in the first place.
Inputs
- solve - the solved scene, with the burst frames registered to it.
- hole_mask - the pixels that need covering.
- margin_px - extra border around the cropped patch (default 16), so the patch has context for compositing.
- resolution - the crop's long edge (default 384). The per-frame visibility test rasterizes at this size, so keep it moderate.
- min_visible_pixels - below this, an island counts as unseen from that frame. A few grazing pixels isn't a usable patch.
Outputs are the interesting part - four of them, and three are strings of metadata rather than pixels:
- cropped_patch (
IMAGE) - the best patch, cropped and ready. - patch_frame_index (
INT) - which burst frame it came from. This is the audit trail: you know exactly where your "photographed reality" was shot from. - crop_roi (
STRING) - the region-of-interest description, for registering the patch back into the project. - report - what it considered and chose.
The honest framing
Like its angle-searching sibling, this node is part of the pack's thesis that measured patches beat invented fills when you can get them. A burst frame of the same brick at the same angle and light is reality; an inpaint is a good guess. The gap between them shows up the moment the camera moves - real texture holds up under parallax, generated texture smears. So the workflow to aim for: burst shoot β AtlasMultiViewSolveBurst β occlusion graph β this node β register the crop as a patch. The cost is that you had to shoot a burst in the first place, which is why the min-filters and defaults are tuned to leave small holes to the inpainter.
Gotchas
The crop is only as good as the registration - if the burst frames aren't aligned to the solve, "this frame sees the hole" is a guess about geometry you don't actually have. And check the patch_frame_index: if the winner is frame 0 every time, your burst may have been a single static shot, not a set of distinct viewpoints, and you're getting the same view re-cropped.
Install
Core tier, no extra dependencies:
cd <ComfyUI>/custom_nodes
git clone https://github.com/mikejamesvfx/atlas-camera.git
Restart, or install via ComfyUI Manager ("atlas-camera"). It's under Atlas/06 Β· Patch & Repair.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| solve | ATLAS_SOLVE | β | |
| hole_mask | MASK | β | |
| margin_pxopt | INT | 160β256 | β |
| resolutionopt | INT | 384128β1536 | β |
| min_visible_pixelsopt | INT | 81β10000 | β |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| cropped_patch | IMAGE | β |
| patch_frame_index | INT | β |
| crop_roi | STRING | β |
| report | STRING | β |