技术研究之OpenDroneMap

标签: 无 分类: 未分类 创建时间:2025-01-08 03:46:38 更新时间:2025-01-17 10:39:23

1.前言

我在生成正射影像的时候,使用了 OpenDroneMap 进行处理,后来我干脆再写一篇文章,讲讲如何使用 OpenDroneMap 进行倾斜摄影等的创建好了。

参考文章:
【1】.推荐3款倾斜摄影建模软件,一个比一个好用 1.ContextCapture(Smart3D)。2.Photoscan。3.OpenDroneMap。
【2】.大疆mini 3 Pro 手工拍摄倾斜摄影照片, 利用WebODM 制作老房子的模型 从无人机拿到图片之后, 启动我本机的WebODM, 新建一个项目,导入图片,WebODM 就会给你自动处理了。

2.倾斜模型

1
docker run -it --rm  -v D:/zlc/drone/resources/images:/code/images -v D:/zlc/drone/resources/odm_meshing:/code/odm_meshing -v D:/zlc/drone/resources/odm_texturing:/code/odm_texturing opendronemap/odm --3d-tiles --skip-orthophoto
  • skip-orthophoto
    Skip generation of the orthophoto. This can save time if you only need 3D results or DEMs. Default: False

  • skip-3dmodel
    Skip generation of a full 3D model. This can save time if you only need 2D results such as orthophotos and DEMs. Default: False

参考文章:
【1】.Options and Flags

3.相控点

相控点主要用来进行坐标矫正的,文件格式如下,第一行主要就是坐标系信息,第二行就是数据行。

1
2
+proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
geo_x geo_y geo_z im_x im_y image_name [gcp_name] [extra1] [extra2]
参考文章:
【1】.Ground Control Points 这是官方的说明文档,进行相控点的修改。
【2】.Use Ground Control Points
【3】.uav4geo /GCPEditorPro 相控点编辑软件

4.WebODM

OpenDroneMap自带的操作界面,如果使用 docker 安装,最好用最新的 目前国内可用Docker镜像源汇总(截至2025年1月)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
git clone https://github.com/OpenDroneMap/WebODM --config core.autocrlf=input --depth 1
cd WebODM
./webodm.sh start

# 指定存储目录
./webodm.sh start --media-dir /home/data/webodm/webodm_data --db-dir /home/data/webodm/webodm_db

# 重制密码
./webodm.sh start && ./webodm.sh resetadminpassword newpass

## 如果遇到了普通用户执行docker的问题
sudo usermod -aG docker $USER

# 打开网站
http://localhost:8000

将 webodm 安装为docker服务。开始的时候,我总是启动不了服务,后来修改了修改 /usr/local/WebODM/service/webodm-docker.service 结果也还是报错。经过尝试,最后终于可以了,首先需要安装 screen 服务,使用:yum install screen 安装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=Start WebODM OpenDroneMap Service Container
Requires=docker.service
After=docker.service

[Service]
TimeoutStartSec=600
Type=forking
WorkingDirectory=/usr/local/WebODM
Environment=PATH=/home/odm/.local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ExecStart=/bin/bash -c 'screen -dmS webodm /usr/local/WebODM/webodm.sh start --media-dir /home/data/webodm/webodm_data --db-dir /home/data/webodm/webodm_db'
ExecStop=/bin/bash -c '/usr/local/WebODM/webodm.sh stop'
Restart=on-failure

[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
# 修改配置后,重新加载
systemctl daemon-reload

# 找到自己的路径,安装为服务
sudo systemctl enable /usr/local/WebODM/service/webodm-docker.service

# 启动停止
systemctl stop webodm-docker
systemctl start webodm-docker
参考文章:
【1】.OpenDroneMap / WebODM
【2】.systemd systemctl ExecStart超时处理 ExecStart=/bin/bash -c “/data/leanote/bin/run.sh &”
【3】.1.16. 更改超时限制 在service文件中,配置了TimeoutStartSec=10
【4】.详解Linux Screen让程序保持后台运行 这里安装了 screen
【5】.解决docker报错Job for docker.service failed because start of the service was attempted too often 这里是 docker 的问题。

5.破面修复

使用 odm 生成倾斜摄影之后,会出现大量的破面问题,但是使用大疆的 “大势智慧” 却不会出现这个问题,这里我用的是 MeshLab 查看的。

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。