OpenDroneKit

Photogrammetry

Georeferenced orthomosaics, elevation models, point clouds and meshes, solved on your machine in a real UTM zone.

Updated 2026-10-02Checked against main@1ef6351

How does it reconstruct a site?

COLMAP structure-from-motion with bundle adjustment, camera intrinsics from an EXIF sensor database, and georeferencing solved as a RANSAC Helmert similarity between the recovered camera centres and the images’ geotags source. It runs on your machine; requesting cloud reconstruction runs locally and the run says so source.

python run_pipeline.py --images <dataset_dir> --engine colmap --output final_toolkit_outputs

What does it produce?

  • Orthomosaic, DSM, DTM and hillshade as Cloud-Optimized GeoTIFFs, elevations in metres
  • Point cloud (.ply) and Poisson mesh (.ply / .obj)
  • Camera track as GeoJSON with GPS residuals, and the georeference transform with its fit quality

Source: README. Everything opens in QGIS.

Which coordinate system are outputs in?

The UTM zone is chosen automatically from the mean position of the images’ geotags: EPSG 32600 + zone in the northern hemisphere, 32700 + zone in the southern source. Pass --epsg to use your own. The Aukerman Park survey on the homepage lands in EPSG:32617 (UTM 17N).

Does it need a GPU?

No, but dense reconstruction does. Dense multi-view stereo needs a CUDA build of COLMAP; the pycolmap wheels are CPU-only, so without one dense stereo is skipped and raster resolution drops to what the sparse cloud supports, and the run reports it source.

Related

Other parts of the pipeline: Mission planning · Flight over MAVLink · AI defect detection · Measurements · Reports · Offline and private