Model accuracy issues related to geocoord_exports

I processed several big datasets recently, and the reports show that I obtained very good GCP accuracy (errors less than 3 decimal digits). But when I survey the points on the orthophoto and 3D model, I can’t get the same accuracy level.

The GCP errors in the report are calculated during opensfm reconstruction pipeline, in topocentric coordinates. But after reconstruction is done, the geocoord_exports seem to introduce some extra errors for this.

I did some comparisons for this.
There are 6 GCPs, with latitude, longitude, and altitude.
utm: convert gcp lla to utm via pyproj transformer
geocoords_utm: convert gcp lla to topocentric first, then apply the transformation used in geocoord_exports, at the end, add the offsets of x and y.

As you can see the errors in the first image show that the further the location is away from the center, the larger the errors. The model feels like shrank after exporting geocoords.

I think this could also affect camera poses accuracy. So I also did the below comparison
triangulated: load the topocentric reconstruction and triangulate the 6 GCPs
geocoord_transform_triangulated: apply the transformation used in the export geocoords to triangulated results
geocoord_recon_triangulated: load the geocoord reconstruction file and do triangulation for gcp directly.
The errors are calculated by comparing geocoord_transform_triangulated and geocoord_recon_triangulated. They also show similar differences. My concern is that since the geocoord reconstruction is used in following openmvs and texrecon stage, would the quality of dense pointcloud and 3d mesh be affected as well?

I guess the solution for this is to do all the reconstructions on topocentric and export to geocoords at the end. I think the transformation method export geocoords used will not be accurate for large dataset as well, maybe using the opensfm’s reference method to convert to lla is the best?

@pierotofy
Let me know if this is a problem or a designed behavior. So I could spend more time investigating this

It’s possible you might be seeing the effect of an error introduced by the linear transformation that is computed here OpenSfM/export_geocoords.py at 289 · OpenDroneMap/OpenSfM · GitHub. Since topocentric → UTM is not a perfectly rigid transformation (as applied by export_geocoords) I would think that large area models could suffer from this more than others.

A possible problem.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.