Keep dense reconstruction topocentric and apply exact final georeferencing - #12
Keep dense reconstruction topocentric and apply exact final georeferencing#12lupionpe wants to merge 3 commits into
Conversation
|
Hey @lupionpe I appreciate the PR, but I don't trust that Codex did this correctly. Aside from the memory/performance issues that I can see at a glance, the fact that this was included: Hints that this is for sure the incorrect approach. (I wrote Perhaps we can open an issue to track the problem until there's time to fix it? |
|
Thanks, that makes sense. The I'll open an issue with the full context, links, and the validation I saw on my datasets so we can discuss the correct approach there. |
Summary
This ports the downstream ODX integration for the exact OpenSfM georeferencing fix.
It keeps dense reconstruction in topocentric coordinates for OpenMVS/texturing, exports geocoords artifacts separately, and applies the corrected projected transform only to final outputs such as the LAZ point cloud, textured OBJ / orthophoto path, and
shots.geojson.This PR depends on the matching WebODM/OpenSfM PR:
WebODM/OpenSfM#1
I intentionally did not point
SuperBuild/cmake/External-OpenSfM.cmakeat my personal fork. Before this ODX PR is merged, the OpenSfM PR should be merged first and the ODX OpenSfMGIT_TAGshould be updated to that merged WebODM/OpenSfM commit.Attribution
Credit for the core georeferencing fix belongs to Yann, from:
YanNoun/OpenSfM@446a4b0
I validated and ported the approach into the ODX pipeline. I have basic coding experience; most of the porting and integration work was done with AI assistance from Codex.
Validation context
I tested the same approach downstream in an ODM/NodeODM pipeline on two real RTK Mavic 3E survey areas. Each test was roughly 1,600,000 m虏 with about 2,000 images, using
gcp.txtandgeo.txt. In both areas, the observed final precision improved as expected from Yann's commit.References
Local checks
python3 -m py_compile opendm/align.py opendm/osfm.py opendm/shots.py opendm/types.py stages/odm_georeferencing.py stages/odm_report.py stages/run_opensfm.pygit diff --checkNot run locally:
export_geocoords --mode projected.