Skip to content

Detect video cuts, decompose into sub-reconstructions, and support multi-model HTML export - #31

Draft
sarlinpe wants to merge 1 commit into
fix/da3-dynamo-limitsfrom
cuts
Draft

sarlinpe wants to merge 1 commit into
fix/da3-dynamo-limitsfrom
cuts

Conversation

@sarlinpe

@sarlinpe sarlinpe commented Oct 4, 2026 •

Copy link
Copy Markdown
Member

Summary

Handle videos with cuts or disconnected sub-sequences by decomposing the final reconstruction into independent sub-models.

  • Covisibility components (vidmap/mapper/sub_reconstruction.py): build the 3D-point covisibility graph of the registered keyframes, keep edges with at least --min-covisibility-points shared points, and split it into connected components of at least --min-model-size images. Each component is extracted as a standalone pycolmap.Reconstruction (cameras, rigs, frames, images, and points with enough observations).
  • CLI (vidmap.run): --split-cuts, --min-covisibility-points (default 20), --min-model-size (default 5); sub-models are exported COLMAP-style (rec/0, rec/1, ...). --html writes the embedded viewer(s) when mapping finishes.
  • Viewer: write_all_embedded_viewers writes one embedded viewer per sub-model (<name>-sub0.html, ...); larger default point and frustum sizes.
  • Tests (tests/test_sub_reconstruction.py): synthetic two-shot reconstructions covering graph construction, components, extraction, export, and viewers.

Stack: rebased onto the two fixes below it; dropped the unused temporal-window cut detector and the redundant reconstruct() split arguments (they come from RunOptions).

@sarlinpe
sarlinpe force-pushed the cuts branch 4 times, most recently from f1b84eb to 069d7cf Compare October 9, 2026 15:44
@sarlinpe
sarlinpe changed the base branch from main to fix/da3-dynamo-limits October 9, 2026 15:45
@sarlinpe
sarlinpe added this pull request to stack #43 October 9, 2026 15:45
…ewers

- vidmap/mapper/sub_reconstruction.py: build the 3D-point covisibility graph of the
  registered keyframes, split it into connected components (edges need at least
  --min-covisibility-points shared points, components at least --min-model-size images),
  and extract a standalone pycolmap.Reconstruction per component (cameras, rigs, frames,
  images, and points with enough observations).
- vidmap.run: --split-cuts, --min-covisibility-points (20), --min-model-size (5); export
  sub-models COLMAP-style (rec/0, rec/1, ...); --html writes embedded viewers when done.
- Embedded viewer: write_all_embedded_viewers writes one viewer per sub-model
  (<name>-sub0.html, ...); larger default point and frustum sizes.
- Tests: synthetic two-shot reconstructions (graph, components, extraction, export, viewers).

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant