【OpenREALM学习笔记:14】单目视觉SLAM方法在UAV影像上重建三维地形的思考

最近在学习SLAM技术与测绘三维影像重建的相关知识,结合自己的感受,撰写一下对于单目视觉SLAM利用无人机影像重建三维地形的一些看法。

1. 单目视觉SLAM系统在三维地形重建中所面临的挑战有哪些?

单目视觉SLAM众所周知的一个问题是:深度的不确定性。为了能够使单目传感器能够估计自身的深度及其位置,必须使相机必须具有良好的运动(特别是平移),并能够观察到部分或者完全相同的场景(即场景具有一定的重叠率),这也是摄影测量学中对于影像拍摄的要求。

因此,利用其他传感器所产生的数据进行辅助观测就成为了一种比较常见的补充手段,比如惯性测量数据。目前,各类型无人机都配备了IMU这类惯性测量设备,能够为单目SLAM系统提供更为充足的观测数据,有助于解决单目SLAM中遇到的深度估计模糊问题。

2. 哪一种类型的视觉SLAM系统更加适合无人机影像三维地形生成?

一般来说,SLAM能够生成稀疏或者稠密的点云地图。
稠密地图能够提供更为丰富的场景信息,但是也增加了外点产生的机率。而稀疏地图能够保持点云数量在一定数量之下,更加适合构建网格(mesh)的构建。

从跟踪方式的来说,直接法包含了对应像素的强度信息,可以直接在点云地图中使用;所懈怠的颜色通道信息也能够生成带颜色的点云。而间接法采用的是特征描述子对图像进行抽象,无法存储关于强度的信息。因此,如果仅只是做表面重建,而不是点云地图,间接法更具优势。

此外,视觉传感器的类型也是这一问题需要考虑的因素,这里直接说结论了:全局快门的相机要比卷帘快门的相机更适合直接法SLAM系统,而带有卷帘快门相机的无人机来说,使用基于特征的SLAM系统可能会更好。

3. 间接法(比如ORB-SLAM3)和间接法(比如DSO、LDSO等)所生成的点云与真值相比,精度如何?如何对其进行评价?

首先,评估点云的最佳方式就是要求数据集中具有使用激光扫描仪采集的真实点云数据,并使用RMSE评估。但如果没有此类数据,可以使用SFM等替代技术构建非直接测量的伪真值数据;再使用MPPE等方法进行评估,以补偿构造的伪真值中的稀疏性。

其次,视觉传感器的类型和标定同样影响了结果的精度。全局快门的传感器由于没有引入伪影,所以建议大家首选。对于直接法的SLAM系统来说,正确的光度校准也是除几何校准外,必须要考虑的问题。

最后,就是SLAM系统的初始化参数同样可以影响点云地图的精度。

4. 如何采集无人机影像才能保证系统的稳定?

从这一点来看,我们可以借鉴摄影测量的相关知识,比如进行航迹的规划,采用一种蛇形方式进行影像的获取,并且设定好相关参数,保证一定的航向重叠与旁向重叠。如下图:
在这里插入图片描述
同时,我们还需要注意在大范围旋转或者地面缺少可靠特征时,视觉SLAM系统容易失去对自身位置的跟踪,也就是进入LOST的状态。

参考文献:《Evaluation of Monocular Visual SLAM Methods on UAV Imagery to Reconstruct 3D Terrain》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/48678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言联合及枚举

一.联合体 1.联合体类型的声明 像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型,但是编译器只为最大的成员分配足够的内存空间。 联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体,给联合体其中一个成员赋值…

AVL树超详解上

前言 学习过了二叉树以及二叉搜索树后(不了解二叉搜索树的朋友可以先看看这篇博客,二叉搜索树详解-CSDN博客),我们在一般情况下对于二叉搜索树的插入与查询时间复杂度都是O(lgN),是十分快的,但是在一些特殊…

多维时序 | Transformer+BiLSTM多变量时间序列预测(Python)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 多维时序 | TransformerBiLSTM多变量时间序列预测(Python) python代码,pytorch框架 程序设计 完整程序和数据获取方式私信博主回复多维时序 | TransformerBiLSTM多变量时间序列预…

Ubuntu 查询未更新的包 进行手动更新

lsb_release -a 查询ubuntu的版本号,我这边是20.04 apt list --upgradable 查询未更新的包 sudo apt --only-upgrade install php/focal 中间遇到输入选择,输入y即可

linux shell脚本编程(分支语句、循环语句)

一、分支语句 1、语法结构 : if 表达式 then 命令表 fi 如果表达式为真 , 则执行命令表中的命令 ; 否则退出 if 语句 , 即执行 fi 后面的语句。 if 和 fi 是条件语句的语句括号 , 必须成对使用 ;命令表中的命令可以是一条 , 也可以是若干条。 2、语法结构为 : if 表达式 t…

pdf太大了怎么变小 pdf太大了如何变小一点

在数字化时代,pdf文件已成为工作与学习的重要工具。然而,有时我们可能会遇到pdf文件过大的问题,这会导致传输困难或者存储不便。别担心,下面我将为你介绍一些实用的技巧和工具,帮助你轻松减小pdf文件的大小。 方法一、…

java之利用二维数组来计算年利润和每个季度的营业额

public class TwodimensionDemo2 {public static void main(String[] args) {//创建二维数组来存储数据int [][]yearArrArr{{22,66,44},{77,33,88},{25,45,65},{11,66,99}};int yearSum0;//遍历二维数组&#xff0c;得到每一个一维数组并求和for (int i 0; i < yearArrArr.…

Linux fork、进程的退出和等待详解

初识fork函数 它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;子进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1 最简单的fork使用示例 #include<stdi…

每日一题,力扣leetcode Hot100之11. 盛最多的水

解法一&#xff1a; 双层循环遍历找结果&#xff0c;相当于是一个暴力求解方法&#xff0c;两层嵌套循环的时间复杂度是O(N2&#xff09;&#xff0c;所以有一些样例测试时间超时 class Solution:def maxArea(self, height: List[int]) -> int:max_result0for i in range(…

VMware 安装完,设备管理器中没有虚拟网卡(vmnet0、wmnet1、vmnet8) / 虚拟网络编辑器中没有桥接模式

问题&#xff1a;VMware 安装完&#xff0c;设备管理器中没有虚拟网卡(vmnet0、wmnet1、vmnet8) / 虚拟网络编辑器中没有桥接模式 1、确认 Device Install Service 和 Device Setup Manager 没有被禁用 Device Install Service 和 Device Setup Manager是 Windows 操作系统中…

GraphRAG参数与使用步骤 | 基于GPT-4o-mini实现更便宜的知识图谱RAG

首先给兄弟朋友们展示一下结论&#xff0c;一个文本18万多字&#xff0c;txt文本大小185K&#xff0c;采用GraphRAG,GPT-4o-mini模型&#xff0c;索引耗时差不多5分钟&#xff0c;消耗API价格0.15美元 GraphRAG介绍 GraphRAG是微软最近开源的一款基于知识图谱技术的框架&#…

“论系统安全架构设计及其应用”,写作框架,软考高级论文,系统架构设计师论文

论文真题 随着社会信息化进程的加快&#xff0c;计算机及网络已经被各行各业广泛应用&#xff0c;信息安全问题也变得愈来愈重要。它具有机密性、完整性、可用性、可控性和不可抵赖性等特征。信息系统的安全保障是以风险和策略为基础&#xff0c;在信息系统的整个生命周期中提…

73、Flink 的 DataStream API 生产实践总结

0、汇总 1.可以使用 Maven 命令、CURL 命令、IDEA 手动创建 Flink 项目&#xff1b;2.可以使用 Maven Shade 插件将必需的依赖项打包进应用程序 jar 中&#xff1b;3.应该在 Flink 集群的 lib 文件夹内配置需要的&#xff08;核心&#xff09;依赖项&#xff1b;4.应该将程序中…

【Godot4.2】GodotXML插件 - 解析和生成XML

概述 近期在研究基于Godot的XML和SVG解析&#xff0c;并且在昨天&#xff08;2024年7月20日&#xff09;编写了一个简易的SVG文件解析器。 在群友的提示下&#xff0c;知道早就存在GodotXML这样的解析器。所以今天就来测试使用并准备研究学习源代码了。和以往一样&#xff0c…

GD32 MCU是如何进入中断函数的

用过GD32 MCU的小伙伴们都知道&#xff0c;程序是顺序执行的&#xff0c;但当有中断来的时候程序会跳转到中断函数&#xff0c;执行完中断函数后程序又继续回到原来的位置继续执行&#xff0c;那么你们知道MCU是如何找到中断函数入口的吗&#xff1f; 今天我们就以GD32F303系列…

JavaScript进阶之作用域解构箭头函数

目录 一、作用域1.1 局部作用域1.2 全局作用域1.3 作用域链1.4 垃圾回收机制1.5 闭包1.6 变量提升 二、函数进阶2.1 函数提升2.2 函数参数2.3 箭头函数&#xff08;重要&#xff09; 三、解构赋值3.1 数组解构3.2 对象解构&#xff08;重要重要&#xff09; 一、作用域 1.1 局…

【BUG】已解决:ModuleNotFoundError: No module named‘ pip‘

已解决&#xff1a;ModuleNotFoundError: No module named‘ pip‘ 目录 已解决&#xff1a;ModuleNotFoundError: No module named‘ pip‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰…

SpringCloud--负载均衡

目录 前言 一.负载均衡的引入 1.1问题引入 1.2代码修改实现 二.负载均衡介绍 2.1实现负载均衡 2.2负载均衡策略 2.3LoadBalancer 原理 学习专栏&#xff1a;http://t.csdnimg.cn/tntwg 前言 在前面的Eureka当中&#xff0c;我们虽然实现了从注册中心中获取url&#xf…

桌面小宠物发布一周,第一次以独立开发者的身份赚到了100块

收入数据(AppStore一周收入统计) AppStore付费工具榜第七 应用简介 桌面新宠(NewPet)&#xff0c;是我耗时半年开发的一款桌面宠物。我是被 QQ 宠物影响的那批人&#xff0c;上学时天天给 QQ 宠物喂食&#xff0c;很可惜它现在不在了。所以&#xff0c;我开发的初衷是想要在电…

Mysql-查询

1.基本查询 //查询所有内容 select * from 表名;//查询指定字段 select 字段1&#xff0c;字段2&#xff0c;字段3.....from 表名;//查询时给字段起别名 select 字段1 as 别名1 , 字段2 as 别名2 ... from 表名&#xff1b;//去重查询 select distinct 字段列表 from 表名; …