查看原文
其他

开源航拍图像处理工具OpenDroneMap

2017-08-21 慧天地


点击图片上方蓝色字体“慧天地”即可订阅

(点击图片可放大查看,更多精彩请留意文末推荐) 

OpenDroneMap 是一个开源的航拍图像处理工具,可以把航拍图像进行点云、正射影像和高程模型等转换处理。


当你驾轻就熟地用无人机拍摄了某个地区的航拍图像后,除了分享到微信朋友圈里,还可以做些什么呢?或许 OpenDroneMap 能助你开启思路。

OpenDroneMap 是一个开源的航拍图像处理工具,可以把航拍图像进行点云、正射影像和高程模型等转换处理。


一般的无人机用的都是「傻瓜式」的相机,其实这跟你用手机或普通数码相机拍的没差,只是拍摄的角度不一样而已。它们拍出来的照片都是非量测影像(non-metric imagery),而 OpenDroneMap 则可以将这些非量测影像转换成三维地理建模数据,并应用在地理信息系统中。

具体而言,OpenDroneMap 可以将航拍图像处理为下面几种格式的数据:


点云(Point Clouds)

纹理数字表面建模(Textured Digital Surface Models)

正射校正影像(Orthorectified Imagery)

数字高程模型(Digital Elevation Models)

使用方法

OpenDroneMap 支持 Docker,这意味着你可以在不同的操作系统上运行 OpenDroneMap。下面以 Mac OS 为例,介绍 OpenDroneMap 的使用方法。


安装 Docker CE

到 Docker 官网上找到并下载适用于你所使用的操作系统的 Docker CE 版本(Docker EE 是企业版,暂时用不上)。经过「傻瓜式」的安装后,可以在 Terminal 上输入docker --version 检验 Docker 是否安装成功。


官网地址:

https://docs.docker.com/engine/installation/


下载 OpenDroneMap 的镜像

确认 Docker 成功安装后,在 Terminal 上输入以下指令:


docker pull opendronemap/opendronemap


Docker 就会从 Docker Hub 中下载 OpenDroneMap 的镜像到本地中。为提高下载速度,建议提前使用 Proxifier 之类的工具(建议自行 Google)让 Terminal 走上代理道路。镜像下载完成后,在 Terminal 输入docker images 指令,就能查看到刚才下载的 OpenDroneMap 的镜像了。


创建文件目录

在 Finder 上任意一目录新建一个名为 images 的文件夹,作为待处理图片的存放位置。我的习惯是以「项目名 / images」的方式来对目录进行命名,这样能更直观地管理文件。比如:


//odm_test_1/images

//odm_test_2/images


接下来,就需要把你需要进行处理的航拍影像拷贝到 images 文件夹中了,如果你暂时没有这些航拍图像的话,可以下载范例素材。


下载地址:

https://github.com/OpenDroneMap/odm_data 


我在网站上下载了「aukerman」素材的图像文件,这个范例素材似乎是对某个绿化公园连续拍摄的航拍图像,查看每个图像文件的 info(Command + I),都能找到它的经纬度信息。我们可以用 OpenDroneMap 对这些文件进行「正射影像(拼接)」和「纹理网面建模」的处理。


运行 OpenDroneMap

在航拍图像文件拷贝到 images 目录以后,打开 Terminal 并定位到项目文件夹(比如 odm_test_1)中,执行以下指令:


docker run -it --rm \

-v $(pwd)/images:/code/images \


-v $(pwd)/odm_orthophoto:/code/odm_orthophoto \


-v $(pwd)/odm_texturing:/code/odm_texturing \


opendronemap/opendronemap


指令的作用是:

通过 OpenDronMap 对 odm_test_1/images 目录下的图像文件同时进行「正射影像(odm_orthophoto)」和「纹理网面建模(odm_texturing)」的图像处理(作为测试,为了节省时间,你可以只选取 odm_orthophoto 或 odm_texturing 其中一种处理方式)。

指令解释:


docker run -it --rm


Docker 的运行指令。-it 指让 Docker 分配一个伪输入终端并以交互模式运行容器;--rm 是指在容器运行完之后自动清除以节省电脑存储空间。


-v $(pwd)/images:/code/images


-v 是用来将本地目录绑定到容器中的,在本例子中,是让 OpenDroneMap 知道待处理的照片在哪里;冒号前面,代表的是本地 images 路径,其中 (pwd) 代表当前 Teminal 定位目录的绝对路径,你可以更改为其他目录的绝对路径;冒号后面,是指容器的路径,这个是不能更改的。


-v $(pwd)/odm_orthophoto:/code/odm_orthophoto


这行指令,是指希望使用 OpenDroneMap 对图像文件进行怎么样的处理,你可以根据项目的需要,输入不同的处理指令,OpenDroneMap 提供了以下几种处理方式:


odm_meshing # 3D 网面建模

odm_texturing # 纹理网面建模

odm_georeferencing # 地理配准后的点云图

odm_orthophoto # 正射影像图

opendronemap/opendronemap


这是指明需要调用的镜像,这里是调用 Repository 为 opendronemap/opendronemap 的镜像,可以用该镜像的 tag(如果有设置的话)和镜像 ID 替代。


查看结果

指令执行后,就交给程序去处理了。运行时间可能会稍长,请耐心等候,一切顺利的话,Terminal 就会下面的提示:

然后在项目的文件夹中(比如 odm_test_1),就能在 odm_orthophoto 和 odm_texturing 目录中看到对应的输出结果了。

正射影像的输出结果的 png 预览图:

或许有朋友会说,最后还不是一张常见的无人机俯视航拍图,但其实 odm_orthophoto 的输出结果还有一个后缀为 tif 的 GeoTIFF 文件,这可以应用在 QGIS 上作为光栅图层,供地理信息分析之用(比如实现地图的修测更新)。

小结

整体来说,有 docker 这样的工具能很大程度上减少配置开发环境的时间,也简化了不少的操作步骤,不过需要注意的是 OpenDroneMap 的项目还是挺占用电脑空间的,所以在操作之前,最好能确保电脑有足够的剩余空间。


上面的例子采用的是范例素材的航拍图像,如果要实际应用到自己的项目中,则需要自己使用无人机,结合相关软件的航线规划和定时拍摄功能,对某一个地区进行连续拍摄,将拍摄的图像文件导入到「images」文件夹中,再按教程步骤执行就能实现数据处理了。


此外,Docker 也有 Windows 版本,把教程中 Terminal 的操作换成 Windows 系统的 Cmd,相信也能实现(没有尝试过,不敢打包票)。


上述教程中的 GIS 术语可能翻译得不够到位,如有不妥的地方望请指出。

来源:DroneDev(版权归原作者和刊载媒体所有)

推荐

点击下文直接阅读

无人机航拍:行走长安街,感受历史与现代的交融

航拍中国这个完全可媲美长城的人工奇迹,空中俯瞰,相当震撼!

中国科研卫星高清拍摄美军航母



编辑:郭晓非  焦    月

审核:高敬凯

指导:万剑华教授(微信号wjh18266613129)

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存