gtsfm icon indicating copy to clipboard operation
gtsfm copied to clipboard

Bad results on ETH3D

Open mattiadurso opened this issue 5 months ago • 0 comments

Hi guys, I am trying to compare GLOMAP performances with GTSfM. I can duplicate the results of GLOMAP (and COLMAP) runned on ETH3D undistorted scenes, while for GTSfM I am getting very bad results for 22 out of 25 scenes. For both I use SIFT as feature extractor. I am running the command in scripts/eth3d_benchmark.sh that is

python gtsfm/runner/run_scene_optimizer_colmaploader.py 
                    --mvs_off 
                    --config unified 
                    --correspondence_generator_config_name sift 
                    --share_intrinsics 
                    --images_dir {scene_path}/images 
                    --colmap_files_dirpath {scene_path}/dslr_calibration_undistorted 
                    --num_workers 1 
                    --num_matched 5 
                    --max_frame_lookahead 10 
                    --worker_memory_limit 32GB 
                    --output_root {scene_path}/gtsfm 
                    --max_resolution 760 

where {scene_path} is, for example, .../Datasets/ETH3D_Stereo/DSLR_undistorted_gtsfm/door.

According to the code and the argument --colmap_files_dirpath I am passing the GT intrinsics to the model, but when I check the camera.txt file of ba_output folder I get a different camera model and other parameters (eventhough they are basically zero). Consider the scene "door", the following is the GT camera.txt file

0 PINHOLE 6212 4140 3415.67 3414.36 3119.82 2054.28

while in GTSfM I get

0 RADIAL 1140 760 626.8293303284069 572.5361880231809 377.1142028985508 4.782895950634459e-09 -9.97228226196883e-09

As far as I get, the GT params are [fx, fy, cx,cy], while for GTSfM output I get (scaled) [fx, cx, cy, k1, k1]. Moreover, the camera model changes from pinhole to radial.

Considering I can reproduce the GLOMAP's paper results, I assume my evaluation code is correct. I have the following questions:

  • Am I missing something?
  • Is that the proper way to pass intrisics to the pipeline?

Thanks in advance!

mattiadurso avatar Sep 20 '24 13:09 mattiadurso