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 intoWebODM:masterfrom
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.