百度百科的定义。此文引用了其他博客的一些图像,如有侵权,邮件联系删除。

作为算法的SLAM,被称为同步相机位姿确定和地图构建。作为一个工程的SLAM,有众多的算法。

计算机视觉中, 三维重建是指根据单视图或者多视图的图像重建三维信息的过程.
由于单视频的信息不完全,因此三维重建需要利用经验知识.。而多视图的三维重建(类似人的双目定位)相对比较容易, 其方法是先对摄像机进行标定, 即计算出摄像机的图象坐标系世界坐标系的关系.然后利用多个二维图象中的信息重建出三维信息。

预读:三维重建:SLAM的粒度和工程化问题

三维重建根据时间和场景的尺度不同需要引入不同的框架和优化方法:

1. 对于小型物体建模

小型物体建模可使用相机固定的包围设备,直接得到整个三维CAD模型(甚至可以使用类似于硬件级别的光线分析的方法)。

此外,使用KinectFusion的经典深度图像获取设备,也可使用此类通用双目相机完成物体重建的方法,同时此方法也适用于小型场景重建。

框架1 = 几帧单幅深度图像 + 简单图像拼接(ICP算法族);

 

百科:三维扫描仪

框架2 = 多帧单幅深度图像 + 相机位姿刚性变换(ICP算法族)+多个深度图像拼接(TSDF(Truncated Signed Distance Function)的方法族);

关键元素:ICP算法族TSDF算法族

Change:引入相机位姿变换匹配ICP算法和TSDF算法。

2. 相机移动的小型场景

2.1. 像素级别:   使用KinectFusion的经典方法,也可使用通用双目相机,完成小型场景像素级别重建。使用框架2.

2.2. 特征点级别:   特征点级别重建,三维重建问题转化为经典的SLAM问题。引入经典的SLAM的方法——滤波方法
和 对应的地图表示的另一种方式拓扑地图

单目相机:

框架3 = 多帧二维图像 +
特征点检测算法+ 特征点深度计算/相机位姿刚性变换(ICP/PNP算法)+ 滤波方法(EKF等框架(运动模型+观测模型))+ ANN/RANSAC/ICP/......;

关键元素:特征点检测特征点匹配(ANN近邻方法)PNP算法(三维位姿计算)、滤波方法族、RANSAC算法。

Change:(1)基于特征点引入特征提取和特征点模式识别方法,分别为特征点检测算法族
近邻搜索方法族。

(2)基于特征点的三维位姿计算,引入PNP算法族。

(3)基于滤波框架,线性滤波方法族,用于同时优化相机和特征点刚性变换的误差和协方差方程。

双目相机:

使用双目相机的优势在于可获得标准的相机基线,得到空间的绝对尺度,并同时可根据视差算法得到特征点的深度信息。可以使用三维稀疏重建的方法。

框架4=
多帧成对三维图像 + 特征点检测算法/视差计算算法(特征点深度计算)+ 相机位姿刚性变换(ICP算法)+ RANSAC/ICP/......;

关键元素:视差方法(深度计算)、稀疏匹配(ICP方法族)。

Change:(1)深度计算:使用视差算法 Vs.  PNP算法。

(2)位姿刚性变换变换到ICP算法族。

注意:深度计算之后,整体框架类似于KinectFusion方法,区别在于点集变得稀疏,因此稠密点匹配算法替换为稀疏点匹配算法(ANN方法族)。

3. 相机移动的中型场景

3.1. 像素级别:  正如上一篇所说的,是一个大型工程问题,不是一个算法和框架可以描述的,需要更多设备和人的配合。再次不再对其进行多加描述。

3.2. 特征点级别:

特征点级别重建,经典的SLAM的方法为滤波方法。而添加闭环检测之后,借鉴SFM思想的平差方法--捆集优化BABundle
Adjustment
)引入到SLAM中来,因此形成了另一种框架。

框架5=
多帧二维/三维图像 +特征点检测算法+ 特征点深度计算/相机位姿刚性变换(PNP算法)+BA方法(关键帧平差方法)+ ANN/RANSAC/ICP/......+ 闭环检测(场景匹配/识别方法族);

关键元素:BA方法(图优化方法等)、闭环检测(点集组合场景检测)。

Change:(1)类似于框架3,位姿和场景同时优化的方法从滤波框架转换到BA框架,引入关键帧平差方法

(2)基于BA方法,使用关键帧,形式化为无向图,一般使用图优化方法。常用的基础库为G2O

(3)引入闭环检测,需要使用场景匹配方法(基于特征点),经典方法为使用BOW模型

4. 相机长期移动的大中型场景

特征点和目标级别:   大型场景需要构建大型地图,应对长期误差累计而发展的方法闭环检测重要性增加。对此,闭环检测引入目标识别,进而引入基于目标检测的场景识别,更名为语义SLAM。

语义SLAM:大型场景重建,已走过重复地标记-闭环检测占据更多的分量,场景识别更关注语义分析。

框架6=
多帧二维/三维图像 + 特征点检测算法+ 特征点深度计算/相机位姿刚性变换(PNP算法)+目标检测(目标检测方法族)+目标识别(目标识别方法族)
+ BA方法关键帧平差方法)+ ANN/RANSAC/ICP/......+
闭环检测(基于特征点的闭环检测+基于目标的闭环检测+场景检测);

关键元素:目标检测(目标特征提取与目标识别)、场景检测标记(基于目标)。

Change:(1)基于框架5或者进行改进,引入基于目标的特征提取方法(目标提取)族和模式识别方法(目标识别)族。由此根据不同的场景需要使用不同的目标检测的通用方法。由此一大批模式识别方法融入SLAM过程,从简单的ANN,到MSVM,到DNN方法。

(2)闭环检测之中增加基于目标的闭环检测,和场景识别。场景检测从BOG模型到基于图的场景识别模型,也可以使用DNN方法中CNN方法。

(3)......................................。

参考文章:场景图像的稀疏表示总结

总结:

三维重建是一个工程问题,发展到三维场景重建,SLAM问题及应对方法相应而生。经典可用的SLAM方法为把SLAM问题转化为滤波方法,是一个真正可用的解决SLAM问题的方法。而后BA方法出现,并随着计算机计算能力的提高,BA方法逐渐应用于SLAM过程。更宽范围的SLAM方法引入目标识别,模式识别的方法(从ANN到MSVM到CNN)引入SLAM,成为语义SLAM,把SLAM发展为“一切问题都可以用模式识别方法来解决”的巨坑。

后记:红酒塔问题

三维重建里面有一个红酒塔问题,即是怎样使用重建算法重建出波光闪闪的透明玻璃杯红酒塔。

其实,红酒塔问题不应该是一个重建问题,从人的感知角度分析,红酒塔也是不能只是靠双目重建的,而其本质是目标识别。识别红酒塔,然后使用模型匹配进行模型补完,重建整个红酒塔,是一个识别之后alignment的过程。

三维重建:SLAM的尺度和方法论问题的更多相关文章

  1. 三维重建5:场景中语义分析/语义SLAM/DCNN-大尺度SLAM

    前言: 在实时/非实时大规模三维场景重建中,引入了语义SLAM这个概念,参考三维重建:SLAM的尺度和方法论问题和三维重建:SLAM的粒度和工程化问题 .大规模三维场景重建的尺度增大,因此相对于整个重 ...

  2. 三维重建:SLAM的粒度和工程化问题

    百度百科的定义.此文引用了其他博客的一些图像,如有侵权,邮件联系删除. 申明一下,SLAM不是一个算法,而是一个工程. 在计算机视觉中, 三维重建是指根据单视图或者多视图的图像重建三维信息的过程. 由 ...

  3. SLAM: Structure From Motion-移动中三维场景重建

    wiki链接:https://en.wikipedia.org/wiki/Structure_from_motion 三维重建: 三维物体建模总结 1. 视野内三维物体重建 : Kinect fusi ...

  4. SLAM: VSLAM扫盲之旅

    在<机器人手册> 第2卷,这本书里面,第23章讲述了:三维视觉和基于视觉的实时定位于地图重建.在第37章里面,讲述了 同时定位与建图.指出了SLAM的三种基本方法. 一种是EKF的方法,但 ...

  5. 三维重建:深度相机方案对比-KinectFusion的基本原理(尺度)

    算法原理请参考此文:  kinect fusion 3D重建基本算法  http://log.csdn.net/xiaohu50/article/details/51592503 三维重建为三维空间实 ...

  6. SLAM、三维重建,语义相关数据集大全

    作者朱尊杰,公众号:计算机视觉life,编辑成员 一 主要针对自动驾驶: 1.KITTI数据集: http://www.cvlibs.net/datasets/kitti/index.php(RGB+ ...

  7. CVPR2020文章汇总 | 点云处理、三维重建、姿态估计、SLAM、3D数据集等(12篇)

    作者:Tom Hardy Date:2020-04-15 来源:CVPR2020文章汇总 | 点云处理.三维重建.姿态估计.SLAM.3D数据集等(12篇) 1.PVN3D: A Deep Point ...

  8. 三维重建7:Visual SLAM算法笔记

    VSLAM研究了几十年,新的东西不是很多,三维重建的VSLAM方法可以用一篇文章总结一下. 此文是一个好的视觉SLAM综述,对视觉SLAM总结比较全面,是SLAM那本书的很好的补充.介绍了基于滤波器的 ...

  9. 三维重建:SLAM相关的一些术语解释

    SLAM是一个工程问题,再次复习一下工程中可能用到的名词解释. 还是不要看了,高翔的科普读物已经出版了,读他的<slam十四讲>就可以了. 一.度量相关: 世界坐标系:描述图像的平面坐标系 ...

随机推荐

  1. 8.1.2 Cursor 对象

    游标Cursor也是sqlite3模块中比较重要的一个类,下面简单介绍下Cursor对象的常用方法. 1 execute(sql[,parameters]) 该方法用于执行一条SQL语句,下面的代码演 ...

  2. 【Codeforces 161D】Distance in Tree

    [链接] 我是链接,点我呀:) [题意] 问你一棵树上有多少条长度为k的路径 [题解] 树形dp 设 size[i]表示以节点i为根节点的子树的节点个数 dp[i][k]表示以i为根节点的子树里面距离 ...

  3. 【hiho一下 第144周】机会渺茫

    [题目链接]:http://hihocoder.com/contest/hiho144/problem/1 [题意] [题解] 找出两个数相同的因子的个数x 然后两个数各自的因子的个数numa,nub ...

  4. 清北学堂模拟赛d3t1 a

    [问题描述]你是能看到第一题的friends呢.——hja 怎么快速记单词呢?也许把单词分类再记单词是个不错的选择.何大爷给出了一种分单词的方法,何大爷认为两个单词是同一类的当这两个单词的各个字母的个 ...

  5. 了解一下JAVA中的NIO模块

    网上资料大把,但要写写代码,我这个年纪的人才有一点点记忆了.. 参考URL: http://blog.csdn.net/wuxianglong/article/details/6612282 pack ...

  6. Mac下查看文件编码方式

    一句话:file -I {filename}

  7. LA 4329(树状数组)

    算法竞赛入门经典 p197 题目大意: 一条大街上住着n个乒乓球爱好者.常常比赛切磋技术.每一个人都有一个不同的技能值a[i].每场比赛须要3个人:两名选手,一名裁判.他们有个奇怪的约定,裁判必须住在 ...

  8. ASP环境下轻松实现报表的打印 (转)

    作者:zcg2000 一.前言 ASP在电子商务上应用广泛,报表的处理又有一些麻烦.本文介绍了在ASP中利用 本人写的Report Server Page脚本解释器实现报表的显示.打印. 二.准备工作 ...

  9. 简化bigdecimal计算的小工具类

    简化bigdecimal计算的小工具类 如果我们要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果( ...

  10. 20170322js面向对象

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...