ODM:用于处理图像的开源命令行工具包
#挑战30天在头条写日记#用于处理航空无人机图像的开源命令行工具包。ODM 将简单的 2D 图像转变为:
[*]分类点云
[*]3D 纹理模型
[*]地理参考正射影像
[*]地理参考数字高程模型
该应用程序适用于 Windows、Mac 和 Linux,并且通过命令行运行,非常适合高级用户、脚本以及与其他软件集成。
如果您不想在 shell 中键入命令并且正在寻找友好的用户界面,请查看WebODM。
快速开始
运行 ODM 的最简单方法是通过 docker。要安装 docker,请参阅docs.docker.com。安装并运行docker 后,您可以通过将一些图像(JPEG 或 TIFF)放入名为“images”的文件夹(例如C:\Users\youruser\datasets\project\images或/home/youruser/datasets/project/images)中来运行 ODM,然后只需从命令提示符/终端运行即可:
# Windowsdocker run -ti --rm -v c:/Users/youruser/datasets:/datasets opendronemap/odm --project-path /datasets project# Mac/Linuxdocker run -ti --rm -v /home/youruser/datasets:/datasets opendronemap/odm --project-path /datasets project您可以通过将附加参数附加到命令来传递其他参数:
docker run -ti --rm -v /datasets:/datasets opendronemap/odm --project-path /datasets project [--additional --parameters --here]例如,要生成 DSM ( --dsm) 并提高正射影像分辨率 ( --orthophoto-resolution 2):
docker run -ti --rm -v /datasets:/datasets opendronemap/odm --project-path /datasets project --dsm --orthophoto-resolution 2查看结果
该过程完成后,结果将组织如下:
|-- images/ |-- img-1234.jpg |-- ...|-- opensfm/ |-- see mapillary/opensfm repository for more info|-- odm_meshing/ |-- odm_mesh.ply # A 3D mesh|-- odm_texturing/ |-- odm_textured_model.obj # Textured mesh |-- odm_textured_model_geo.obj # Georeferenced textured mesh|-- odm_georeferencing/ |-- odm_georeferenced_model.laz # LAZ format point cloud|-- odm_orthophoto/ |-- odm_orthophoto.tif # Orthophoto GeoTiff您可以使用以下免费开源软件打开ODM中生成的文件:
[*].tif (GeoTIFF):QGIS
[*].laz(压缩 LAS):CloudCompare
[*].obj(波前 OBJ)、.ply(斯坦福三角格式):MeshLab
笔记!在 Photoshop 或 GIMP 等程序中打开 ODM 生成的 .tif 文件可能无法正常工作(它们是 GeoTIFF,而不是普通 TIFF)。请改用QGIS。
应用程序编程接口
可以通过NodeODM从网络访问 ODM 。
Windows 设置
ODM 可以本地安装在 Windows 上。只需从发布页面下载最新设置即可。打开 ODM 控制台后,您可以通过键入以下内容来处理数据集:
run C:\Users\youruser\datasets\project[--additional --parameters --here]快照包
ODM 现已作为 Snap 包从 Snap Store 提供。要安装,您可以使用 Snap Store(本身作为 Snap 包提供)或命令行:
sudo snap install --edge opendronemap要运行,您将需要一个终端窗口,您可以在其中键入:
opendronemap# orsnap run opendronemap# or/snap/bin/opendronemapSnap 包将自动保持最新,因此您无需手动更新 ODM。
GPU加速
ODM 支持在 GPU 上进行 SIFT 特征提取,这比典型消费笔记本电脑上的 CPU 快约 2 倍。要使用此功能,您需要使用opendronemap/odm:gpudocker 映像来代替opendronemap/odm,并且需要传递--gpus all标志:
docker run -ti --rm -v c:/Users/youruser/datasets:/datasets --gpus all opendronemap/odm:gpu --project-path /datasets project当您运行 ODM 时,如果 GPU 被识别,则在输出的前几行中您应该看到:
Writing exif overrides Maximum photo dimensions: 4000px Found GPU device: Intel(R) OpenCL HD Graphics Using GPU for extracting SIFT featuresSIFT GPU 实现基于 CUDA,因此应与 GTX 9xx 代或更新版本的大多数 NVIDIA 显卡配合使用。
如果您有 NVIDIA 卡,您可以通过运行以下命令来测试 docker 是否正在识别 GPU:
docker run --rm --gpus all nvidia/cuda:10.0-base nvidia-smi如果您看到如下所示的输出:
Fri Jul 24 18:51:55 2020 +-----------------------------------------------------------------------------+| NVIDIA-SMI 440.82 Driver Version: 440.82 CUDA Version: 10.2 ||-------------------------------+----------------------+----------------------+| GPUName Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC || FanTempPerfPwr:Usage/Cap| Memory-Usage | GPU-UtilCompute M. |WSL 或 WSL2 安装
注意:这要求您已经按照Microsoft 网站上的说明安装了 WSL 。
您可以从GitHub 上的发布页面rootfs.tar.gz下载文件,通过 WSL 或 WSL2 运行 ODM 。将文件保存到Windows 中的文件夹后,右键单击“标志菜单”(默认情况下位于左下角)并选择“Windows PowerShell”,或者使用 Windows 应用商店中的 Windows 终端,打开 PowerShell 或 CMD窗口。Downloads
在 PowerShell 窗口或运行 PowerShell 的 Windows 终端中,键入以下内容:
# PowerShellwsl.exe --import ODM $env:APPDATA\ODM C:\path\to\your\Downloads\rootfs.tar.gz或者,如果您正在使用Windows 终端类型CMD.exe或支持:CMD
# CMDwsl.exe --import ODM %APPDATA%\ODM C:\path\to\your\Downloads\rootfs.tar.gz无论哪种情况,请确保替换C:\path\to\your\Downloads\rootfs.tar.gz为文件的实际路径rootfs.tar.gz。
这会将新的硬盘映像保存到您的 WindowsAppData文件夹C:\Users\username\AppData\roaming\ODM(usernameWindows 中您的用户名),并设置一个名为 的新 WSL“发行版” ODM。
您可以使用 Windows 终端(来自 Windows 应用商店)中的相关选项或wsl.exe -d ODM在 PowerShell 或 CMD 窗口中执行来启动 ODM 发行版。
ODM 安装到发行版的/code目录中。您可以使用以下命令执行它:
/code/run.sh更新 WSL 中的 ODM
更新 ODM 安装的最简单方法是下载新rootfs.tar.gz文件并将其导入为另一个发行版。然后,您可以像从 WSL 中删除 ODM 一样取消注册原始实例(请参阅下一个标题)。
删除 WSL 实例中的 ODM
wsl.exe --unregister ODM最后,您需要使用 Windows 文件管理器(资源管理器)导航到%APPDATA%,找到该ODM目录,然后将其拖到回收站来删除它,从而删除文件。要永久删除它,请清空回收站。
--import如果您通过更改运行安装的命令安装到其他目录,则必须使用该目录名称来删除正确的文件。如果您有多个 ODM 安装或正在更新已安装的安装,则可能会出现这种情况。
本机安装(Ubuntu 21.04)
您可以在 Ubuntu 21.04 上本机运行 ODM(尽管我们不推荐):
git clone https://github.com/OpenDroneMap/ODMcd ODMbash configure.sh install然后您可以使用以下方法处理数据集./run.sh /datasets/odm_data_aukerman
本机安装 (MacOS)
您可以在 Intel/ARM MacOS 上本机运行 ODM。
首次安装:
[*]Xcode 13(不是 14,目前有一个错误)
[*]自制
然后运行:
git clone https://github.com/OpenDroneMap/ODMcd ODMbash configure_macos.sh install然后您可以使用以下方法处理数据集./run.sh /datasets/odm_data_aukerman
这在未来可能会得到改善。帮助我们创建自制公式。
更新本机安装
更新到较新版本的本机 ODM 时,建议您运行:
bash configure.sh reinstall
确保所有依赖包和模块都得到更新。
从源代码构建 Docker 镜像
如果您想重建自己的 docker 映像(例如,如果您更改了源代码),您可以从 ODM 文件夹中键入:
docker build -t my_odm_image --no-cache .在构建自己的 Docker 映像时,如果映像大小对您很重要,则应该使用该--squash标志,如下所示:
docker build --squash -t my_odm_image .这将清理 Docker 构建过程中的中间步骤,从而生成明显更小的映像(大约一半大小)。
需要在 Docker 中启用实验标志才能使用该--squash标志。要启用此功能,请将以下内容插入到文件中/etc/docker/daemon.json:
{ "experimental": true}之后,您必须重新启动 docker。
视频支持
从3.0.4版本开始,ODM可以自动从视频文件(.mp4、.mov、.lrv、.ts)中提取图像。只需将一个或多个视频文件放入该images文件夹并照常运行该程序即可。还支持带有 GPS 信息的字幕文件 (.srt)。将 .srt 文件放入该images文件夹中,确保文件名匹配。例如,my_video.mp4==> my_video.srt(区分大小写)。
注意:使用该技术请遵守法律,请勿用于任何违法行为!
项目地址:https://github.com/OpenDroneMap
页:
[1]