370 - Bringing OpenSfM V1 and porting changes from 360 - #50
Draft
DodgySpaniard wants to merge 28 commits into
Draft
370 - Bringing OpenSfM V1 and porting changes from 360#50DodgySpaniard wants to merge 28 commits into
DodgySpaniard wants to merge 28 commits into
Conversation
- Upstream OpenSfM V1 already has rolling shutter support - Porting the missing plot binary
Bringing changes by hand to exif.py diffs: 37d24d2, 955e727, dbe2215, 9254b83 As the changes cannot be easily cherry-picked, we arejust bringing the code and adapting it to the new changes. - Brough XML parsing fixes Pix4D projection and malformed XMP. - Updated Brown as default camera using new config. - Ptached export with the updated brown camera model params (patching). - Updated pyproject with beautifulsoup4 and lxml.
- Moving offset functionality, now using existing opensfm transform. - Added export_geocord to unit tests.
Move call of reconstruction.shots.keys() outside of the loop through all points. This gives significant speed-up especially on large datasets. For instance, I have got a 4 times speed boost at my dataset (1018152 points, 296 shots): Before: $ time /code/SuperBuild/install/bin/opensfm/bin/opensfm export_visualsfm \ --points /var/www/data/f267df83-f8f8-4bf0-b2e1-41ae16c805e5/opensfm real 8m46.180s user 8m41.184s sys 0m12.073s After: $ time /code/SuperBuild/install/bin/opensfm/bin/opensfm export_visualsfm \ --points /var/www/data/f267df83-f8f8-4bf0-b2e1-41ae16c805e5/opensfm real 2m10.472s user 2m7.576s sys 0m9.789s
- Added custom flag to override camera_projection_type - Added unit tests.
- Reimplemented the injection of reconstruction algorihm from config. - Slight deviation from the original, the actual command line arg is still enabled. - Added unit test.
The original commits had too many conflict and changed code. Manually bringing the changes from the following commits: 7041ce1, 81f6d47, 1fccc49, aa0faa3, 78b67c0, 7267773, 04f1d8c - Added Planar reconstruction - Updated viewer - Added dedicated unit test and expanded the synthetic dataset gen. - Added patches to work with the upstream OpenSfM codebase
Adapted and brought from fb99d74
- Inyecting dirs from ODM. - Minor CERES required (so it complains if missing) - Added flag for ARM to disable vlfeat SSE2.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Main is now synced with OpenSfM/OpenSfM:Master.
Started a new branch from the main, manually picked and ported all changes from 360 branch that were required.
Where it was sensible cherry-pick was used; however, in many cases, due to many changes and moving files in OpenSfM upstream, some changes were manually ported. Attribution from the original commit is reflected in the message, albeit 95% of the custom changes were from Piero.
We went from +200 commits on our branches to 26. This was possible mostly due to 3 reasons:
As it was mentioned, the changes have been brought as is, just adapting where it must be done, and adding some unit tests here and there.
NOTE: We are still missing the "glue code and CMake files", if we adopt pixi this would be minimal.
Disclaimer: AI tools were used to aid this work: Kimi3, Gemini 3.1 pro and Copilot. They were used for research and to triple-check the code changes to make sure we did not leave anything behind. Worth noting, this work would have been much more error-prone and extra laborious without them.