OpenDroneMap (ODM) 用于处理无人机、气球或风筝拍摄的航空影像
OpenDroneMap (ODM) 详细部署教程
项目概述
OpenDroneMap (ODM) 是一个开源命令行工具包,用于处理无人机、气球或风筝拍摄的航空影像。它能够将简单的 2D 图像转换为多种专业地理空间数据产品。
核心功能:
- 分类点云 (Classified Point Clouds)
- 3D 纹理模型 (3D Textured Models)
- 地理参考正射影像 (Georeferenced Orthorectified Imagery)
- 地理参考数字高程模型 (Georeferenced Digital Elevation Models)
ODM 支持 Windows、Mac 和 Linux 平台,通过命令行运行,非常适合高级用户、脚本编写和与其他软件集成 。如果你更喜欢图形界面,可以查看 OpenDroneMap Desktop。
部署前准备
系统要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 10/11、macOS 10.15+、Ubuntu 18.04+ | Ubuntu 20.04+ |
| 内存 (RAM) | 8GB | 16GB+ (处理 200+ 张影像建议 32GB) |
| 磁盘空间 | 20GB 可用 | 影像大小的 10-20 倍 |
| GPU (可选) | NVIDIA GTX 9xx 或更新 | 支持 CUDA 的 NVIDIA 显卡 |
注意:处理大面积区域时,原始影像、中间文件和最终成果会占用大量存储空间,建议预留充足空间 。
数据准备
在开始处理之前,请确保你的无人机影像满足以下条件:
- 照片格式:JPEG、TIFF 或 DNG
- GPS 信息:照片必须包含 EXIF 中的 GPS 信息(GPS Latitude, GPS Longitude, GPS Altitude),这是自动定位的关键
- 重叠率:建议航向重叠 70%-80%,旁向重叠 60%-70%
- 照片质量:清理模糊、过曝或完全遮挡的照片
方案一:Docker 部署(推荐)
Docker 是最简单、最可靠的跨平台运行方式,它自动处理所有依赖和环境配置 。
步骤 1:安装 Docker
访问 docs.docker.com 下载并安装 Docker Desktop(Windows/Mac)或 Docker Engine(Linux)。
安装完成后,验证 Docker 是否正常工作:
1 | docker --version |
步骤 2:拉取 ODM 镜像
1 | docker pull opendronemap/odm |
中国用户可使用镜像加速服务:
1 | docker pull registry.docker-cn.com/opendronemap/odm |
步骤 3:准备数据集目录
创建以下目录结构:
text
1 | datasets/ |
将你的无人机影像放入 images 文件夹中。
步骤 4:运行 ODM 处理
Windows 系统:
1 | docker run -ti --rm -v c:/Users/youruser/datasets:/datasets opendronemap/odm --project-path /datasets project |
Mac/Linux 系统:
1 | docker run -ti --rm -v /home/youruser/datasets:/datasets opendronemap/odm --project-path /datasets project |
命令参数说明 :
| 参数 | 说明 |
|---|---|
-ti |
分配伪终端并保持 stdin 打开 |
--rm |
容器退出后自动删除 |
-v /path/to/datasets:/datasets |
将本地目录映射到容器内 |
--project-path /datasets project |
指定项目路径和名称 |
步骤 5:添加额外参数
你可以通过追加参数来自定义处理流程:
1 | # 生成 DSM 并提高正射影像分辨率 |
查看处理结果
处理完成后,结果将按以下结构组织 :
| 文件夹 | 内容 | 推荐查看工具 |
|---|---|---|
odm_orthophoto/ |
正射影像 GeoTIFF | QGIS |
odm_georeferencing/ |
点云 (LAZ 格式) | CloudCompare |
odm_texturing/ |
3D 纹理模型 (OBJ) | MeshLab |
odm_dem/ |
数字高程模型 | QGIS |
注意:ODM 生成的
.tif文件是 GeoTIFF 格式,包含地理信息,无法在 Photoshop 或 GIMP 等普通图像编辑器中正确打开,请使用 QGIS 。
方案二:Windows 原生安装
如果你不想使用 Docker,ODM 提供了 Windows 原生安装程序。
步骤 1:下载安装程序
访问 ODM 的 GitHub Releases 页面,下载最新的 Windows 安装程序。
步骤 2:运行安装程序
双击安装文件,按照向导完成安装。安装完成后会自动创建 “ODM Console” 快捷方式 。
步骤 3:运行 ODM
打开 ODM Console,输入以下命令:
1 | run C:\Users\youruser\datasets\project [--additional --parameters --here] |
示例:
1 | run --feature-type=sift --matcher-type=flann --skip-3dmodel D:\odm_test |
其中 D:\odm_test 为存放照片的文件夹路径 。
方案三:GPU 加速部署
ODM 支持 GPU 加速,主要用于 SIFT 特征提取,速度约为 CPU 的 2 倍 。
前置要求
- NVIDIA 显卡:GTX 9xx 或更新
- NVIDIA 驱动:安装最新的 NVIDIA 驱动
- NVIDIA Container Toolkit:Docker 需要配置 NVIDIA 容器工具包
步骤 1:验证 GPU 识别
1 | docker run --rm --gpus all nvidia/cuda:10.0-base nvidia-smi |
如果输出显示 GPU 信息,说明配置正确 。
步骤 2:拉取 GPU 镜像
1 | docker pull opendronemap/odm:gpu |
步骤 3:运行 GPU 加速处理
1 | docker run -ti --rm -v c:/Users/youruser/datasets:/datasets --gpus all opendronemap/odm:gpu --project-path /datasets project --feature-type sift |
步骤 4:验证 GPU 加速生效
如果 GPU 被正确识别,你会在输出开头看到 :
text
1 | [INFO] Writing exif overrides |
方案四:使用 WebODM 图形界面
如果你需要图形界面而非命令行,可以部署 WebODM。WebODM 是一个基于 Web 的界面,包含 NodeODM 和 ODM 。
步骤 1:克隆 WebODM 仓库
1 | git clone https://github.com/OpenDroneMap/WebODM |
步骤 2:启动 WebODM
1 | ./webodm.sh start & |
首次启动时,Docker 会自动下载 WebODM、NodeODM 和 ODM 等组件 。
步骤 3:访问 Web 界面
- Docker for Windows:访问
http://localhost:8000 - Docker Toolbox:先运行
docker-machine ip获取 IP 地址,然后访问http://<IP>:8000
常用 WebODM 命令
1 | # 停止 WebODM |
方案五:从源码构建
如果你需要自定义 ODM 或使用最新开发版本,可以从源码构建。
依赖安装
安装 pixi(或使用 devcontainer)。Windows 上需要安装 Visual Studio 2022 或 Build Tools 的 MSVC 和 Windows SDK 。
构建和测试
1 | # 安装依赖 |
处理数据集
1 | pixi run odm -- --project-path ~/datasets mydataset |
构建 Docker 镜像
1 | # CPU 镜像 |
视频支持
从 3.0.4 版本开始,ODM 支持自动从视频文件(.mp4、.mov、.lrv、.ts)中提取图像 。
使用方法:
- 将视频文件放入
images文件夹 - 如果有 GPS 信息,将
.srt字幕文件也放入images文件夹,确保文件名匹配:my_video.mp4对应my_video.srt(区分大小写)
- 正常运行 ODM
常见问题排查
| 问题 | 症状 | 解决方案 |
|---|---|---|
| Docker 权限错误 | 无法挂载卷或访问文件 | 确保 Docker 已正确安装并运行,检查用户权限 |
| GPU 未被识别 | 输出中没有 “Found GPU device” | 更新 NVIDIA 驱动,验证 NVIDIA Container Toolkit 安装 |
| 内存不足 | 处理过程中崩溃 | 增加 Docker 内存分配(建议 8GB+),或使用 Split-Merge 方式处理大数据集 |
| OpenSfM 初始化失败 | Python 环境配置错误 | 检查 Python 环境,重新运行 configure 脚本 |
| Windows 路径问题 | 命令未找到 | 使用 ODM Console,确保环境变量正确设置 |
性能优化建议
- 使用 SSD 存储:显著提升 IO 密集型操作速度
- 合理分配内存:根据数据集大小调整 Docker 内存限制
- 启用 GPU 加速:NVIDIA 显卡可加速 2 倍以上处理速度
- 批量处理:将大型项目分割为多个小项目处理
结果查看工具
ODM 生成的文件可以使用以下免费开源软件打开:
| 文件格式 | 推荐软件 |
|---|---|
.tif (GeoTIFF) |
QGIS |
.laz (压缩 LAS) |
CloudCompare |
.obj (Wavefront OBJ) |
MeshLab |
.ply (Stanford Triangle Format) |
MeshLab |
总结
| 部署方案 | 适用场景 | 难度 | 推荐度 |
|---|---|---|---|
| Docker 部署 | 跨平台,快速上手 | ⭐ | ⭐⭐⭐⭐⭐ |
| Windows 原生安装 | Windows 用户,无 Docker | ⭐⭐ | ⭐⭐⭐⭐ |
| GPU 加速 | 需要快速处理大量影像 | ⭐⭐ | ⭐⭐⭐⭐ |
| WebODM | 需要图形界面 | ⭐⭐ | ⭐⭐⭐⭐ |
| 源码构建 | 开发定制需求 | ⭐⭐⭐⭐ | ⭐⭐ |
对于大多数用户,Docker 部署是最简单直接的选择。只需安装 Docker,拉取镜像,准备数据集,即可开始处理。如需 GPU 加速,使用 GPU 镜像并添加 --gpus all 参数。如果偏好图形界面,可以选择 WebODM 方案。
处理完成后,使用 QGIS、CloudCompare 或 MeshLab 查看生成的成果文件。




