OpenDroneMap

OpenDroneMap is an open source photogrammetry toolkit to process aerial imagery (usually from a drone) into maps and 3D models. The software is hosted and distributed freely on GitHub.

OpenDroneMap has been integrated within American Red Cross's in-field Portable OpenStreetMap system.

Overview
OpenDroneMap can be controlled either from a command-line interface or through a web interface (WebODM). It is recommended to run OpenDroneMap using Docker.

OpenDroneMap uses OpenSfM and other libraries to perform the specific tasks in its workflow. Before processing the images, it can lower their resolution in order to save computational resources. OpenDroneMap uses the OpenSfM library to detect and match features, create tracks and determine their 3D positions along with the positions of the cameras. Then it uses the OpenMVS library to generate a dense point cloud from which it generates meshes. After that, the Geospatial Data Abstraction Library and the Point Data Abstraction Library are used for orthomosaic generation and georeferencing.

OpenDroneMap can also process aerial videos by cutting them into still images.

Performance
OpenDroneMap supports parallel computing and can utilize GPUs. It has a split-merge feature, which significantly reduces the performance, but allows computers with small amount of RAM to process large datasets. The official recommendation is to use 128 GB of memory to process 2500 images. If local system resources are inadequate to process a given dataset, the WebODM interface can also offload processing to the WebODM Lightning cloud service.

It was determined that the optimal number of CPU cores for large datasets is 20, and there is little to no performance gain beyond 20 cores.