# ODM: Convert Drone Images to 3D Models and Point Clouds

> A command-line toolkit that processes overlapping aerial images and generates point clouds, 3D textured models, orthorectified maps, and digital elevation models.

**OpenDroneMap/ODM** — A command line toolkit to generate maps, point clouds, 3D models and DEMs from drone, balloon or kite images. 📷

- Repository: https://github.com/OpenDroneMap/ODM
- Website: https://opendronemap.org
- Stars: 6,491 · Forks: 1,313
- Language: Python
- License: AGPL-3.0
- Published: 2026-09-22 · Updated: 2026-09-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/opendronemap-odm

## Convert Overlapping Aerial Photos to 3D Models, Point Clouds, and Maps

ODM converts overlapping drone photographs into three dimensional products: point clouds, textured 3D models, orthorectified maps, and digital elevation models (DEMs). Input is simple 2D images (JPEGs, TIFFs, or DNGs), and output includes classified point clouds, 3D textured models, georeferenced orthorectified imagery, and georeferenced digital elevation models.

This is for professionals who need to map terrain, buildings, or infrastructure from the air. Surveyors generate orthophotos as basemaps. GIS professionals build elevation models for flood simulation or site analysis. Robotics teams create 3D environment models for navigation planning. A civil engineer measuring stockpiles, rooftops, or landslides can place a drone overhead, fly the path manually or via automated mission planning, then drop the photos into ODM and get a georeferenced point cloud and orthophoto without owning proprietary software.

## How Structure-from-Motion Works

ODM uses OpenSfM, the open-source structure-from-motion engine, to derive the 3D position of the camera at each photograph and the location of keypoints that appear in multiple images. Structure-from-motion is the process of reconstructing a 3D scene from overlapping 2D photos. ODM then meshes the point cloud into a surface, textures the mesh from the original images, and georeferences the output using GPS metadata embedded in the drone photos or by matching ground control points.

The workflow inside the Docker container follows these stages: image orientation (OpenSfM), meshing, texturing, and georeferencing. Output is organized into directories: opensfm/ for the internal reconstruction, odm_meshing/ for the 3D mesh in PLY format, odm_texturing/ for textured models in OBJ format, odm_georeferencing/ for the LAZ point cloud, and odm_orthophoto/ for the GeoTIFF orthographic projection. This pipeline is automated: you supply images and parameters, and ODM runs all stages.

## Pull the Docker Image and Run with Your Images Folder

Docker is the easiest path. Install Docker from docs.docker.com, then pull ODM:

```bash
docker pull opendronemap/odm
```

Prepare a folder with your drone images (JPEGs, TIFFs, or DNGs). The README example uses C:\Users\youruser\datasets\project\images on Windows or /home/youruser/datasets/project/images on Linux. Run ODM with the images folder mounted:

```bash
docker run -ti --rm -v c:/Users/youruser/datasets:/datasets opendronemap/odm --project-path /datasets project
```

On Mac/Linux, use forward slashes:

```bash
docker run -ti --rm -v /home/youruser/datasets:/datasets opendronemap/odm --project-path /datasets project
```

ODM processes the dataset and writes results into subdirectories: point clouds in odm_georeferencing/, orthophoto in odm_orthophoto/, and textured mesh in odm_texturing/. Flags like --dsm generate a Digital Surface Model, or --orthophoto-resolution 2 increases the orthophoto resolution to 2 cm per pixel.

## Output Formats and Viewing

ODM outputs four main products. The orthorectified map is a GeoTIFF (.tif) file in odm_orthophoto/odm_orthophoto.tif; this is a georeferenced aerial image you can open in QGIS. The point cloud is a compressed LAS file (.laz) in odm_georeferencing/odm_georeferenced_model.laz; use CloudCompare to inspect and analyze it. The textured 3D model is an OBJ file in odm_texturing/; MeshLab is the open-source viewer recommended by the README. The raw mesh without textures is in PLY format in odm_meshing/odm_mesh.ply.

ODM's GeoTIFF files are not plain TIFFs; they include geospatial metadata. Programs like Photoshop or GIMP cannot read them; QGIS is required. This is a common gotcha for users accustomed to plain image formats.

Video support is available: since version 3.0.4, you can place MP4, MOV, LRV, or TS files into the images folder and ODM will extract frames automatically. Subtitle files (.srt) with GPS coordinates are also supported.

## GPU Acceleration for Large Datasets

ODM performs SIFT feature extraction, a compute-intensive step, on CPU by default. GPU acceleration using NVIDIA CUDA is about 2x faster on a typical consumer laptop. To use the GPU image, pull a different tag:

```bash
docker run -ti --rm -v c:/Users/youruser/datasets:/datasets --gpus all opendronemap/odm:gpu --project-path /datasets project --feature-type sift
```

You need docker-nvidia configured to expose the GPU to the container. Consult the NVIDIA Docker and NVIDIA Container Toolkit setup guides. The SIFT GPU implementation requires NVIDIA graphics cards of the GTX 9xx generation or newer. If the GPU is recognized, the first few lines of output will show "Found GPU device" and "Using GPU for extracting SIFT features". If you see this message, GPU acceleration is working.

## AGPL Licensing and Network Access

ODM is licensed under AGPL-3.0. This is a copyleft license: if you modify ODM or use it as part of a larger software system, you must make your modifications and the complete system open-source under AGPL. This is more restrictive than permissive licenses like MIT or Apache. If you plan to build a proprietary service on top of ODM, AGPL will require you to open-source the whole application.

ODM can be made accessible over a network via NodeODM, a separate project that wraps ODM in a web API. If you are integrating ODM into a larger system, AGPL applies to your integration layer as well.

The project is active and maintained. The last push was on 2026-09-16, and the last three releases were v3.6.2 (2026-08-12), v3.6.1 (2026-07-28), and v3.6.0 (2025-10-24). Development velocity is steady.

## When ODM Will Not Produce Accurate Results

Structure-from-motion depends on image overlap. If your drone flight has large gaps or the images have low overlap, the algorithm cannot match features between photos and will fail to reconstruct. Photogrammetric software typically requires 60 to 80 percent forward overlap and 30 percent side overlap. Autonomous mission-planning tools in modern drones handle this automatically; manual flights risk undersampling.

Image quality matters. If photos are blurry, underexposed, or taken in poor light, SIFT feature extraction will find fewer keypoints, and the reconstruction will be sparse or fail. Typical drone cameras (12 to 48 megapixels) are sufficient.

For very small objects or fine details, the scale of the output is limited by the camera resolution and flight altitude. A 20-megapixel camera at 100 meters altitude produces roughly 5 cm per pixel; finer details cannot be resolved. Large areas (over 10 square kilometers) may require very large computational resources. Discover memory and runtime requirements by testing.

## Comparison with Desktop Photogrammetry Software

Proprietary alternatives like Agisoft Metashape or Pix4D offer graphical user interfaces, automated flight planning, and support for specialized camera sensors. These tools run on workstations and handle large datasets more efficiently. They also offer technical support and licensing for commercial use without copyleft obligations.

ODM is command-line and free, with no licensing restrictions beyond AGPL. You trade convenience and polish for cost and control: you can inspect and modify the code, integrate it into scripts, and process datasets in batch without per-project costs. For academic researchers, nonprofit surveyors, and open-source robotics projects, ODM avoids proprietary lock-in. For commercial mapping companies, the license and lack of GUI may be obstacles.

## Conclusion

ODM is for surveying engineers, GIS professionals, and roboticists processing hundreds of overlapping aerial images into georeferenced products. Adopt it if you have a Docker install and aerial photos, and can work with open-source AGPL licensing: ODM requires derivative works to be open-source too. Verify that your image dataset has sufficient overlap (the README does not state minimum overlap, but structure-from-motion algorithms typically require 60 to 80 percent overlap) and that the scale and accuracy of your output are suitable for your use case. GPU acceleration is optional but recommended for large datasets.

## FAQ

### Is OpenDroneMap free?

Yes. ODM is open-source under the AGPL-3.0 license. This means you can use it for free, but if you modify it or build a software system that includes it, that system must also be open-source under AGPL.

### What is the best free drone photogrammetry software?

ODM is a widely used free option for processing drone photos into 3D models and point clouds. It is available for Windows, Mac, and Linux. It works from the command line and can be integrated into scripts.

### How do I run ODM?

The easiest path is via Docker. Pull `opendronemap/odm`, place your drone photos in an images folder, and run the docker command with the project path. Examples for Windows and Mac/Linux are available in the install guide.

### What output formats does ODM produce?

ODM outputs point clouds in LAZ format, 3D textured models in OBJ format, orthophoto maps in GeoTIFF format, and digital elevation models. These can be viewed in QGIS, CloudCompare, or MeshLab.

### Does ODM work on Windows and Mac?

Yes. ODM is available for Windows, Mac, and Linux. The easiest installation method is Docker on any OS. Windows also supports a native installer available from the releases page.

## Sources

- [License: AGPL-3.0](https://github.com/OpenDroneMap/ODM/blob/master/LICENSE)
- [OpenDroneMap/ODM on GitHub](https://github.com/OpenDroneMap/ODM)
- [Project website](https://opendronemap.org)
- [README](https://github.com/OpenDroneMap/ODM/blob/master/README.md)
- [Releases](https://github.com/OpenDroneMap/ODM/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/opendronemap-odm
