SLAM学习心得——建图

1.建图

我们所谓的地图,即所有路标点的集合。一旦我们确定了路标点的位置,那就可以说我们完成了建图。

地图的作用:(1)定位 ;(2)导航; (3)避障; (4)重建; (5)交互

2. 稠密重建

单个图像中的像素,只能提供物体与相机成像平面的角 度以及物体采集到的亮度,而无法提供物体的距离(Range)。而在稠密重建,我们需要知道每一个像素点(或大部分像素点)的距离,大致上有以下几种解决方案:

1. 使用单目相机,利用移动相机之后进行三角化,测量像素的距离。

2. 使用双目相机,利用左右目的视差计算像素的距离(多目原理相同)。

3. 使用 RGB-D 相机直接获得像素距离。

使用 RGB-D 进行稠密重建往往是更常见的选择。而单目双目的好处,是在目前 RGB-D 还无法很好应用的室外、大场景场合中,仍能通过立体视觉估计深度信息。

3. 单目稠密重建

稠密深度估计问题中,匹配是很重要的一环:如何确定第一张图的某像素,出现在其他图里的位置,需要用到极线搜索块匹配技术

3.1.极线搜索与块匹配

                                                                              极线搜索的示意图

在特征点法中,通过特征匹配得到p2的位置,然而实际没有描述子,只能在极线上搜索和p1想的比较相似的点。(可能沿着极线一直走比较每个像素与p1的相似程度。)这就是极线搜索。

单个像素的亮度没有区分性,由此我们想到可以比较像素块,我们在 p1 周围取一个大小为 w×w 的小块,然后在极线上也取很多同样大小的小块进行比较,就可以一定程度上提高区分性。这就是所谓的块匹配

计算小块与小块间的差异,有不同的计算方法:

1. SAD(Sum of Absolute Difference)。顾名思义,即取两个小块的差的绝对值之和:

2. SSD。SSD 并不是说大家喜欢的固态硬盘,而是 Sum of Squared Distance(SSD)(平 方和)的意思:

3. NCC(Normalized Cross Correlation)(归一化互相关)。这种方式比前两者要复杂一些,它计算的是两个小块的相关性:

请注意,由于这里用的是相关性,所以相关性接近 0 表示两个图像不相似,而接近 1 才表示相似。前面两种距离则是反过来的,接近 0 表示相似,而大的数值表示不相似。

在极线上,计算了 A 与每一个 Bi 的相似性yo度量。为了方便叙述,假设我们用了 NCC,那么,我们将得到一个沿着极线的 NCC 分布。这个分布的形状严重取决于 图像本身的样子,例如图 13-3 那样。在搜索距离较长的情况下,我们通常会得到一个非凸 函数:这个分布存在着许多峰值,然而真实的对应点必定只有一个。在这种情况下,我们 会倾向于使用概率分布来描述深度值,而非用某个单一个的数值来描述深度。于是,我们 的问题就转到了,在不断对不同图像进行极线搜索时,我们估计的深度分布将发生怎样的 变化——这就是所谓的深度滤波器。

3.2. 高斯分布的深度滤波器

稠密深度的完整过程

1. 假设所有像素的深度满足某个初始的高斯分布;

2. 当新数据产生时,通过极线搜索和块匹配确定投影点位置;

3. 根据几何关系计算三角化后的深度以及不确定性;

4. 将当前观测融合进上一次的估计中。若收敛则停止计算,否则返回 2。

最后深度图趋于稳定

 

像素梯度

逆深度

4. RGB-D稠密建图

点云地图(Point_Cloud Map)

1. 在生成每帧点云时,去掉深度值太大或无效的点。

2. 利用统计滤波器方法去除孤立点。该滤波器统计每个点与它最近 N 个点的距离值的 分布,去除距离均值过大的点。这样,我们保留了那些“粘在一起”的点,去掉了孤 立的噪声点。

3. 最后,利用体素滤波器(Voxel Filter)进行降采样。由于多个视角存在视野重叠,在 重叠区域会存在大量的位置十分相近的点。这会无益地占用许多内存空间。体素滤波 保证在某个一定大小的立方体(或称体素)内仅有一个点,相当于对三维空间进行了 降采样,从而节省了很多存储空间。

 三角网格(Mesh),面片(Surfel)

通过体素(Voxel)建立占据网格地图(Occupancy Map)

SFM 泊松重建

 

八叉树地图(Octo-Map)

 

 

 

 

将三维空间建模为很多小方块(体素),每个面切成两片分割为8块。一直重复达到建模的最高精度。

对于本文的所有实践,可参考《视觉SLAM十四讲》建图部分,这里就不加以叙述了。

转载于:https://www.cnblogs.com/zp1285/p/11111253.html

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

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

相关文章

spark2

特点 通用 批处理 迭代式计算 交互查询 流处理 组件 spark core:任务调度 内存管理 容错机制 内部定义了RDDs 提供了很多API ,为其他组件提供底层的服务 spark sql:报表统计 streaming :从kafka接收数据做实时统计 mlib:mll 支持横向扩展&am…

Oracle数据库----视图

--创建简单视图--建立用于查询员工号、姓名、工资的视图。create view emp_viewasselect empno,ename,sal from emp; --查询视图select * from emp_view; --创建视图时指定视图的列的别名create view emp_view2(员工号,姓名,工资)asselect empno,ename,sal from emp; --查询视图…

flume通过tcp/udp采集数据并存到kafka配置及操作方式

/*官方提供的kafka sink*/a1.sinks.k1.channel c1a1.sinks.k1.type org.apache.flume.sink.kafka.KafkaSinka1.sinks.k1.kafka.topic mytopica1.sinks.k1.kafka.bootstrap.servers localhost:9092a1.sinks.k1.kafka.flumeBatchSize 20a1.sinks.k1.kafka.producer.acks 1a…

一、免费API调用

一、免费API调用&#xff1a; 免费天气api接口 JS调用示例 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"…

spark 监控--WebUi、Metrics System(转载)

转载自&#xff1a;https://www.cnblogs.com/barrenlake/p/4364644.html Spark 监控相关的部分有WebUi 及 Metrics System; WebUi用于展示Spark 资源状态、Metrics System 整合的指标信息。 Ui相关流程 Spark集群启动之后&#xff0c;我们可以通过Web观察集群状态等信息&#x…

js中使用shiro标签的一个小坑

在jsp页面中使用shiro标签很简单 <shiro:haspermission name"你的权限"> 你的标签 </shiro:haspermission> 这样就可以把标签加上权限了。 但是有时候你的标签是js动态生成的&#xff0c;就像下面的例子&#xff1a; <script type"text/java…

求1-100数字的和

function sum_all(){var result 0;for(var i0;i<100;i){resultresulti;}return result; } var s sum_all(100); console.log(s);// while循环 function sum_all(){var result 0;var i0;while(i<100){i;resultresulti;}return result; } //do while语句 function sum_al…

微信开发--自定义菜单

一、定义几个实体类 public class AccessToken {//这里定义一个AccessToken的实体类&#xff0c;用来保存获取到的accesstokenprivate String token;//获得到的tokenprivate int expireIn;//过期时间public String getToken() {return token;}public void setToken(String toke…

.Net框架理论

.NET框架 .NET Framework是该平台的第一个也是最早的实现。它包括三个主要的应用程序模型 - WPF&#xff0c;Windows窗体&#xff0c;ASP.NET窗体 - 和基类库。 Windows Presentation Foundation&#xff08;WPF&#xff09;是一个UI框架&#xff0c;用于主要为Windows操作系统…

zkCli使用手册

zkClient命令笔记connect host:port 连接到其他的zk服务器&#xff0c;例&#xff1a;connect 192.168.174.222:2181-------------------------------------------------------------------------------------------------------get path [watch] 获取某个节点的数据&#xff0…

浏览器解析JavaScript的原理

JavaScript的特点一般都知道的就是解释执行&#xff0c;逐行执行&#xff0c;就是从上到下依次执行。 JavaScript的执行之前&#xff0c;其实还是有一些操作的&#xff0c;只是没有表现出来 JavaScript的执行过程&#xff1a; 1、语法检测  首先是大致查看有没有基本的语法错…

实现 tomcat 热加载证书

原文地址&#xff1a;https://my.oschina.net/u/157514/blog/395238 之前一篇中说了如何 建立 https 通信的完整流程&#xff0c;其中涉及了java web容器 tomcat&#xff0c;关于它的配置是&#xff1a; <Connector port"8443" protocol"org.apache.coyote.…

修改yapf中的列宽限制值

yapf是一款由Google开源的Python代码自动格式化工具&#xff0c;它根据PEP 8规范可以帮我们自动格式化我们的代码&#xff0c;让代码更规范、更漂亮。但是其中最大列宽被限制为80&#xff0c;如果超过80&#xff0c;在格式化时就会被yapf换行&#xff0c;随着现在人们的显示器越…

Hadoop64位版本安装后遇到的警告处理

在使用hadoop的过程中&#xff0c;会遇到一个警告&#xff0c;内容如下&#xff1a; WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 对于这个问题网上很多说法是由于系统位数和所下载…

【转】C++类的sizeof大小

转自https://blog.csdn.net/zhengjihao/article/details/77825269 其中有的描述与实际GCC上执行的结果不符&#xff0c;不过其中的分析思路需要掌握。 以下是GCC的实际执行结果&#xff1a; 1 #include <iostream>2 using namespace std;3 4 int *pointer;5 6 class Null…

shiro扩展获得用户登录类型并提供cookie的方式记住用户密码

在最近的项目中要实现一个需求&#xff1a;“同时让两种类型的用户进行登录&#xff0c;登录后如果用户勾选了记住密码就要生成cookie来记录用户的密码和用户名”。本人做安全认证的时候一直在使用shiro&#xff0c;所以就想到在shiro的基础上进行一些扩展来满足需求。 shiro自…

ueditor跨域上传图片文件(基于jsp框架、tomcat)

额&#xff0c;好久没有用到ueditor了&#xff0c;因为现在的相关工作很少涉及到富文本编辑&#xff1b;最近临时带了一个项目&#xff0c;里面要用到富文本编辑器&#xff0c;而且文件要统一上传到文件服务器上保存&#xff1b;应为以前用过ueditor就试着在网上着一些跨域保存…

JavaWeb-RESTful_用SpringMVC开发RESTful

RESTful简介 一种软件架构风格、设计风格&#xff0c;而不是标准&#xff0c;只是提供了一组设计原则和约束条件。 它主要用于客户端和服务器交互类的软件。 基于这个风格设计的软件可以更简洁&#xff0c;更有层次&#xff0c;更易于实现缓存等机制。 RESTful可以理解为一种编…

在storm中使用流

storm是一个强大的流式计算框架&#xff0c;单流的storm在使用中非常普遍&#xff0c;而同时storm也提供对多个流的支持&#xff1b;通过定义多个流&#xff0c;用户可以进一步的把数据发放到不同的流中进行处理。 代码如下&#xff1a; 一、 定义多个流的spout public class…

精选Pycharm里6大神器插件

http://www.sohu.com/a/306693644_752099 上次写了一篇关于Sublime的精品插件推荐&#xff0c;有小伙伴提议再来一篇Pycharm的主题。相比Sublime&#xff0c;Pycharm要强大许多&#xff0c;而且是专为python设计的集成开发环境&#xff0c;所以无论是自身功能、环境配置还是使用…