ETH3D preprocessing (evaluation)

May 30, 2026 · View on GitHub

ETH3D high-resolution multi-view benchmark: https://www.eth3d.net/datasets#high-res-multi-view.

1. Download

Fetches undistorted DSLR images + calibration, the distorted (THIN_PRISM_FISHEYE) calibration, and per-scene GT depth (needs wget, 7z):

bash src/dvlt/scripts/preprocess/eth3d/download.sh datasets/test/eth3d

Layout, one directory per scene:

test/eth3d/
└── <scene>/
    ├── dslr_calibration_jpg/{cameras.txt, images.txt}            # distorted (THIN_PRISM_FISHEYE)
    ├── dslr_calibration_undistorted/{cameras.txt, images.txt}    # undistorted (PINHOLE) + poses
    ├── images/dslr_images_undistorted/*.JPG
    └── ground_truth_depth/dslr_images/*                          # distorted GT depth, float32 raw

2. Undistort depth

Maps the distorted GT depth onto the pinhole cameras (via pycolmap), writing .exr to ground_truth_depth/dslr_images_undistorted/:

python -m dvlt.scripts.preprocess.eth3d.undistort_depth \
    --root datasets/test/eth3d
    # optional: --scenes courtyard delivery_area ...   (default: all)
    # optional: --override                             (re-process existing)

Preprocess-only deps: pycolmap, OpenEXR support in OpenCV.

Consumed by test_datasets/eth3d.yaml, read from ${user.data_root}/test/eth3d.