#4376·colmap

GLOMAP on ETH3D terrains multi-camera rig: significantly worse ground-truth rotation accuracy than COLMAP despite similar sparse reconstruction quality

Author: DuVogel87Created May 5, 2026Updated Aug 11, 2026

Summary

I am comparing COLMAP and GLOMAP sparse reconstruction quality on the ETH3D low-res many-view terrains dataset with a synchronized 4-camera rig setup.

GLOMAP reconstructs the subset successfully and is fast. The sparse reconstruction size and reprojection error are reasonably close to COLMAP. However, the aligned ground-truth rotation error is much worse for GLOMAP, while the position error is relatively close.

I would like to understand whether this is expected for GLOMAP on calibrated multi-camera rig datasets, or whether I may be missing a setting / conversion step related to rig calibration, sensor_from_rig, relative poses, rotation averaging, global positioning, or bundle adjustment.


Dataset

  • Dataset: ETH3D low-res many-view training, sequence terrains
  • Images: undistorted PINHOLE
  • Rig: 4 synchronized cameras
  • Full dataset: 165 frames / 660 images
  • Subset used here: 50 evenly sampled synchronized frames / 200 images
  • Masks: none
  • Rig setup: generated via rig_configurator
  • GT evaluation: aligned pose metrics against the ETH3D calibration / ground-truth reference

Builds used

  • COLMAP Ceres reference: local Ceres baseline build
  • COLMAP Caspar: local Caspar f32 build, generated/fixed-rig setup
  • GLOMAP: local branch glomap-eth3d-relpose-import-fix-20260504-141430, commit 0edb1b8435e0f9a594318908b81a31f078a51bf7
  • GLOMAP notes: this local build includes ETH3D relative-pose import fixes and final external Caspar BA support

Subset results

Candidate Total Mapper Final BA Points Obs Track Reproj GT pos med GT rot med
COLMAP Ceres fixed rig 83.74s 44.28s n/a 25,430 302,870 11.910 0.465167 px 0.004239 m 0.441720°
COLMAP Caspar generated/fixed 72.17s 32.71s n/a 25,421 302,839 11.913 0.464941 px 0.004724 m 0.846938°
GLOMAP 8192 + final Caspar BA 71.52s 31.34s 0.87s 24,436 296,054 12.115 0.491219 px 0.004774 m 1.776283°
GLOMAP 12288 + final Caspar BA 71.42s 28.36s 0.85s 24,462 296,084 12.104 0.491435 px 0.004899 m 1.890256°
GLOMAP 16384 + final Caspar BA 73.31s 31.55s 0.85s 24,437 295,932 12.110 0.490946 px 0.004886 m 1.725876°

Main observation

The GLOMAP reconstructions look reasonable by internal sparse metrics:

  • points and observations are only moderately lower than COLMAP,
  • mean track length is similar or slightly higher,
  • reprojection error is worse than COLMAP but not dramatically worse,
  • runtime is good.

However, the ground-truth rotation error is much larger:

  • COLMAP Ceres fixed rig: 0.441720° median rotation error
  • COLMAP Caspar generated/fixed: 0.846938° median rotation error
  • Best GLOMAP hybrid: 1.725876° median rotation error

The median position error is much closer:

  • COLMAP Ceres fixed rig: 0.004239 m
  • COLMAP Caspar generated/fixed: 0.004724 m
  • GLOMAP hybrids: about 0.00477–0.00490 m

So the gap appears to be mainly rotation accuracy, not a large translation or scale failure.


GLOMAP configuration

  • max_num_tracks = 1500000
  • Loop detection: off
  • Feature counts tested: 8192, 12288, 16384
  • Final external BA was run after GLOMAP
  • Intrinsics were fixed during final BA
  • sensor_from_rig / rig calibration was intended to remain fixed during final BA

One important observation: final BA slightly improved reprojection, but did not necessarily improve ground-truth rotation. This suggests that reprojection error alone is not sufficient to identify the best pose accuracy on this dataset.


Questions

  1. Is this kind of ground-truth rotation gap expected for GLOMAP on calibrated multi-camera rig datasets such as ETH3D terrains?
  2. Does GLOMAP fully exploit fixed multi-camera rig calibration / fixed sensor_from_rig constraints during relative pose handling, rotation averaging, global positioning, and bundle adjustment?
  3. Are there known differences between COLMAP and GLOMAP in how calibrated multi-camera rigs are represented or optimized that could explain this rotation gap?
  4. Which part would you recommend debugging first: rig import/conversion, relative pose graph construction, rotation averaging, global positioning, BA gauge handling, or final BA constraints?
  5. Are there recommended GLOMAP settings for ETH3D-style calibrated multi-camera rigs to improve ground-truth rotation accuracy?

Older full-sequence ETH3D terrains reference results

I also have older full-sequence ETH3D terrains reference results. These are not exactly the same as the subset matrix above, but they show a similar trend.

Variant Registered Points Observations Track Reproj GT pos med GT rot med Runtime
COLMAP Ceres fixed rig 165 / 660 45,890 1,146,712 24.988 0.557219 px 0.004265 m 0.223947° 275.84s
COLMAP Caspar generated-isolation 165 / 660 45,912 1,146,585 24.974 0.557470 px 0.004325 m 0.306337° 154.15s
GLOMAP + final Caspar BA 165 / 660 41,224 1,070,707 25.973 0.580288 px 0.004460 m 0.362145° 136.80s

Expected outcome

I would like to understand whether the observed GLOMAP rotation gap is expected, caused by my configuration, or something that could be improved/debugged in GLOMAP.

Any pointers to relevant settings, diagnostics, or code areas would be very helpful.


Disclosure

This issue text was drafted with the help of ChatGPT based on my local test logs, reports, and measurements. The experiments, paths, and numerical results come from my local runs.