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 显卡

注意:处理大面积区域时,原始影像、中间文件和最终成果会占用大量存储空间,建议预留充足空间 。

数据准备

在开始处理之前,请确保你的无人机影像满足以下条件:

  1. 照片格式:JPEG、TIFF 或 DNG
  2. GPS 信息:照片必须包含 EXIF 中的 GPS 信息(GPS Latitude, GPS Longitude, GPS Altitude),这是自动定位的关键
  3. 重叠率:建议航向重叠 70%-80%,旁向重叠 60%-70%
  4. 照片质量:清理模糊、过曝或完全遮挡的照片

方案一: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
2
3
4
5
6
datasets/
└── project/
└── images/
├── img-001.jpg
├── img-002.jpg
└── ...

将你的无人机影像放入 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
2
# 生成 DSM 并提高正射影像分辨率
docker run -ti --rm -v /datasets:/datasets opendronemap/odm --project-path /datasets project --dsm --orthophoto-resolution 2

查看处理结果

处理完成后,结果将按以下结构组织 :

文件夹 内容 推荐查看工具
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 倍 。

前置要求

  1. NVIDIA 显卡:GTX 9xx 或更新
  2. NVIDIA 驱动:安装最新的 NVIDIA 驱动
  3. 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
2
3
4
[INFO]    Writing exif overrides
[INFO] Maximum photo dimensions: 4000px
[INFO] Found GPU device: Intel(R) OpenCL HD Graphics
[INFO] Using GPU for extracting SIFT features

方案四:使用 WebODM 图形界面

如果你需要图形界面而非命令行,可以部署 WebODM。WebODM 是一个基于 Web 的界面,包含 NodeODM 和 ODM 。

步骤 1:克隆 WebODM 仓库

1
2
git clone https://github.com/OpenDroneMap/WebODM
cd 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
2
3
4
5
6
7
8
9
10
11
12
13
14
# 停止 WebODM
./webodm.sh stop

# 重启 WebODM
./webodm.sh restart

# 更新到最新版本
./webodm.sh update

# 重置管理员密码
./webodm.sh resetadminpassword newpass

# 使用不同端口
./webodm.sh start --port 80

方案五:从源码构建

如果你需要自定义 ODM 或使用最新开发版本,可以从源码构建。

依赖安装

安装 pixi(或使用 devcontainer)。Windows 上需要安装 Visual Studio 2022 或 Build Tools 的 MSVC 和 Windows SDK 。

构建和测试

1
2
3
4
5
6
7
8
9
# 安装依赖
pixi install --locked

# 构建
pixi run build

# 测试
pixi run test
pixi run smoke

处理数据集

1
pixi run odm -- --project-path ~/datasets mydataset

构建 Docker 镜像

1
2
3
4
5
# CPU 镜像
pixi run docker-build

# GPU 镜像
pixi run docker-build -- --gpu

视频支持

从 3.0.4 版本开始,ODM 支持自动从视频文件(.mp4、.mov、.lrv、.ts)中提取图像 。

使用方法

  1. 将视频文件放入 images 文件夹
  2. 如果有 GPS 信息,将 .srt 字幕文件也放入 images 文件夹,确保文件名匹配:
    • my_video.mp4 对应 my_video.srt(区分大小写)
  3. 正常运行 ODM

常见问题排查

问题 症状 解决方案
Docker 权限错误 无法挂载卷或访问文件 确保 Docker 已正确安装并运行,检查用户权限
GPU 未被识别 输出中没有 “Found GPU device” 更新 NVIDIA 驱动,验证 NVIDIA Container Toolkit 安装
内存不足 处理过程中崩溃 增加 Docker 内存分配(建议 8GB+),或使用 Split-Merge 方式处理大数据集
OpenSfM 初始化失败 Python 环境配置错误 检查 Python 环境,重新运行 configure 脚本
Windows 路径问题 命令未找到 使用 ODM Console,确保环境变量正确设置

性能优化建议

  1. 使用 SSD 存储:显著提升 IO 密集型操作速度
  2. 合理分配内存:根据数据集大小调整 Docker 内存限制
  3. 启用 GPU 加速:NVIDIA 显卡可加速 2 倍以上处理速度
  4. 批量处理:将大型项目分割为多个小项目处理

结果查看工具

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 查看生成的成果文件。