OpenDroneMap (ODM) 无人机影像三维模型重建安装与使用指南
档指导用户从零开始使用 OpenDroneMap (ODM) 处理无人机航拍影像,生成三维点云、数字表面模型及正射影像。涵盖系统环境要求、数据准备(含 GPS 信息检查)、手动安装与 Docker 部署步骤、命令行执行参数详解及结果查看工具(QGIS、CloudCompare、MeshLab)。包含常见问题解决与性能优化建议,适用于希望进行三维建模的无人机影像处理用户。

档指导用户从零开始使用 OpenDroneMap (ODM) 处理无人机航拍影像,生成三维点云、数字表面模型及正射影像。涵盖系统环境要求、数据准备(含 GPS 信息检查)、手动安装与 Docker 部署步骤、命令行执行参数详解及结果查看工具(QGIS、CloudCompare、MeshLab)。包含常见问题解决与性能优化建议,适用于希望进行三维建模的无人机影像处理用户。

本文档是指导用户从零开始,使用 OpenDroneMap 对无人机采集的影像数据进行处理,生成三维点云、数字表面模型(DSM)、正射影像图(Orthomosaic)等成果。
本文档的预期读者为拥有无人机航拍影像(JPG/PNG 格式)并希望进行三维建模的用户。
操作系统:Windows 10/11, macOS, 或 Linux (推荐 Ubuntu)。
CPU:多核心处理器(4 核以上推荐,8 核或更多更佳)(处理 200 张以上影像建议 16GB+)。
内存 (RAM):至少 16GB,处理大面积区域建议 32GB 或以上。
硬盘空间:预留充足的存储空间。原始影像、中间文件和最终成果会占用大量空间。建议准备 影像大小的 10-20 倍 的可用空间(例如,1GB 影像需要 10-20GB 空间)。
显卡 (GPU):虽然 ODM 主要依赖 CPU,但拥有支持 CUDA 的 NVIDIA GPU 可以显著加速某些步骤(如深度图计算)。AMD/Intel 集成显卡也可运行,但速度较慢
· 将无人机采集的所有照片集中存放在一个文件夹中。
· 确保照片包含 GPS 信息(EXIF 中的 GPS Latitude, GPS Longitude, GPS Altitude)。这是自动定位的关键。检查方式:右键图片查看属性,图片需要带有位置信息,如下图所示:

· 建议使用一致的拍摄设置(分辨率、焦距、光圈),重叠率建议:航向重叠 70%-80%,旁向重叠 60%-70%。
· 清理掉模糊、过曝或完全遮挡的照片。 · 如果没有数据,可以参考官方提供的数据示例:比如使用 aukerman 数据:
https://github.com/OpenDroneMap/ODMdata

下载地址:https://github.com/OpenDroneMap/ODM/releases

下载 exe 文件,双击安装运行,运行成功后出现 ODM Console 弹窗。

ODM 推荐使用 Docker 容器化部署,避免复杂的依赖配置。以下是各操作系统的安装步骤(已安装 Docker 或者 Dockerdesktop 可以忽略安装部分,直接拉取镜像):
1、访问 Docker Desktop 官网下载安装程序:
https://www.docker.com/products/docker-desktop/
2、双击安装文件,启用'使用 WSL 2 而不是 Hyper-V'选项
3、安装完成后启动 Docker,等待系统托盘图标显示"Docker Desktop running"
使用 Homebrew 安装:brew install --cask docker
从应用程序文件夹启动 Docker
首次运行需在系统偏好设置→安全性与隐私中允许开发者权限。
# Ubuntu/Debian 示例
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER # 允许当前用户运行 docker 命令
newgrp docker # 无需重启即可应用用户组变更
验证 Docker 是否安装成功:
docker --version # 应显示 Docker version 20.10+
拉取 odm 镜像
docker pull opendronemap/odm:latest
中国用户可使用镜像加速服务:
docker pull registry.docker-cn.com/opendronemap/odm
需要新建一个文件夹,并在里面建立一个 images 文件夹(存放要拼接的图片),图片需要自带 GPS 信息,(如果没有 GPS 信息,则需要用 geo.txt 文件存放图片的 GPS 信息)。


在 ODM Console 弹窗中输入'run --feature-type=sift --matcher-type=flann --skip-3dmodel D:\odm_test'运行,其中最后面'D:\odm_test'为存放照片的文件夹路径。
run --feature-type=sift --matcher-type=flann --skip-3dmodel D:\odm_test
等待执行,(24 张照片,我大概跑了 10 分钟)出现 ODM app finished 以下页面,则表示运行完毕。

文件夹中,除了准备的 images、geo.txt 和 test.py 准备文件,剩下的都是生成的结果文件,按需选择相应的结果。使用 meshlab 软件查看 ply 文件,可以看到三维模型。

在终端中执行以下命令启动基础重建流程:
Linux/Mac 示例
docker run -ti --rm -v ~/datasets:/datasets opendronemap/odm --project-path /datasets/my_project
Windows 示例
docker run -ti --rm -v c:/datasets:/datasets opendronemap/odm --project-path /datasets/my_project
命令参数解析:
-ti:启用交互式终端
--rm:处理完成后自动删除容器
-v:挂载本地目录到容器内(格式:本地路径:容器路径)
--project-path:指定项目根目录
my_project:项目名称(对应 datasets 下的文件夹)
执行命令后,ODM 将显示实时进度,典型输出如下:
[INFO] Initializing ODM 3.1.9
[INFO] Maximum photo dimensions: 5472px
[INFO] Loading 120 images
[INFO] Found GPS coordinates in EXIF data
[INFO] Running OpenSfM reconstruction
[INFO] Feature matching complete (12456 features matched)
根据项目需求添加参数可显著提升输出质量。以下是最常用的优化参数:
生成数字表面模型 (DSM) 并提高正射影像分辨率至 2cm/像素
docker run -ti --rm -v ~/datasets:/datasets opendronemap/odm --project-path /datasets/my_project --dsm --orthophoto-resolution 2
启用分块处理,限制内存使用
docker run -ti --rm -v ~/datasets:/datasets opendronemap/odm --project-path /datasets/my_project --split 100 --max-concurrency 4
使用 GPU 加速特征提取,处理速度提升 2-3 倍
docker run -ti --rm -v ~/datasets:/datasets --gpus all opendronemap/odm:gpu --project-path /datasets/my_project --use-gpu
完整参数列表可通过 docker run opendronemap/odm --help 查看,常用参数速查表:

- 下载安装
QGIS(国内用户建议使用 OSGeo 中国镜像)
启动后点击'图层'→'添加图层'→'添加光栅图层'
选择 odm_orthophoto.tif 文件,QGIS 会自动识别地理坐标并定位
- 安装
打开软件后拖拽 odm_georeferenced_model.laz 文件到窗口
使用快捷键:
W:切换线框/实体显示
E:调整点大小
Ctrl+F:启用颜色映射,按高程着色
- 安装
打开 odm_textured_model.obj 文件
右键点击模型→'渲染'→'纹理'启用纹理显示
影像重叠不足:确保前向重叠>70%,旁向>60%,解决方案:重新规划航线或使用--min-num-features 8000 参数
内存不足:处理 200 张以上影像需 16GB+ 内存,临时解决方案:--downsample 0.5 降低分辨率
GPS 数据缺失:部分无人机未记录 GPS,解决方案:添加--no-gps 参数
影像模糊:运动模糊会导致特征匹配失败,建议飞行速度
光照变化大:拍摄时光照条件不一致,使用--use-3dmesh-texturing 参数
磁盘空间不足:单个项目需 5-15GB 空间,清理 odm_texturing 目录可释放临时文件
Docker 权限问题:Linux 用户需加入 docker 用户组,执行 sudo usermod -aG docker $USER
中文字符路径:所有文件夹和文件名不能包含中文
相机参数异常:执行 exiftool images/*.jpg 检查焦距信息是否存在
网络超时:首次运行需下载依赖,建议使用国内镜像或加速服务

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online