Skip to content

Store one track offset per virtual panorama image - #5015

Open
Afloat16 wants to merge 2 commits into
colmap:mainfrom
Afloat16:perf/panorama-track-offsets
Open

Afloat16 wants to merge 2 commits into
colmap:mainfrom
Afloat16:perf/panorama-track-offsets

Conversation

@Afloat16

@Afloat16 Afloat16 commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Virtual-camera keypoints are appended to the output panorama in contiguous blocks. The reverse mapping currently creates a dictionary entry and a tuple for every keypoint, including ones without a 3D observation. Record the output image, starting offset and count once per virtual image and recover each track index from that block. Keep an explicit check against writing beyond the source image's keypoint block.

A Python 3.12 harness ran the production conversion method with NumPy projections and stand-ins for native reconstruction containers. For 40 virtual images (including ten empty images), 36,000 keypoints and 600 observations, every output coordinate and track index matched the original. Python tracemalloc peak dropped from 6,359,504 to 1,267,296 bytes. Added a synthetic native-PyCOLMAP regression.

Additional native validation used the official Linux x86-64 CPU PyCOLMAP wheel from the exact upstream commit 3c1a1b9 (Actions run 42531153531). 14 tests passed in the affected Python module. Ruff 0.16.10 formatting and lint checks passed on the changed Python files.

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