FOSS4G Calgary

OpenDroneMap: DSMs, DTMs, and Darn Good Orthophotos

OpenDroneMap is a highly customizable, open-source photogrammetry software built, updated, and maintained by a robust contributing community consisting of several parts. OpenDroneMap has emerged as the open-source solution to processing aerial imagery. It is a demonstrated peer of its commercial counterparts, and generates accurate, precise orthophotos, DTMs, and DSMs.


For a long time, the only way to process aerial imagery was to license expensive software. There were limited open-source options for photogrammetry. The opportunity for OpenDroneMap was to create a sustainable free and open source project that produces high quality orthophotos, DTMs, DSMs, and offers extensibility and customizable parameters to suit individual needs. OpenDroneMap has emerged as the open-source solution to processing aerial imagery. It is a demonstrated peer of its commercial counterparts, and generates accurate, precise orthophotos, DTMs, and DSMs.
ODM, the command line tool for OpenDroneMap is built on a suite of FOSS libraries, including OpenSfM, PDAL, PCL, Ceres, Multi-View environment, and MVSTexturing. The tool is a mix of C++ and Python. Nginx, Django, Entwine, and NodeJS are leveraged by WebODM and NodeODM, which both serve as front ends to the above suite of tools.
WebODM is the user-friendly web interface of ODM that allows users to visualize, store, and analyze data. NodeODM is a REST API that is used to access ODM. ClusterODM is a NodeODM API-compatible reverse proxy, load balancer, and task tracker used for horizontal scaling. CloudODM is a command line tool use to process imagery from the cloud. LiveODM is a bootable DVD/USB ISO with ODM, NodeODM, and WebODM pre-installed. PyODM is a Python SDK used for adding aerial image processing capabilities to applications.
Ongoing improvements to OpenDroneMap include the capacity to process multispectral data, improved lens calibration approaches, integration of the venerable MicMac project, and horizontal scaling for processing large datasets.