百度百科的定义。此文引用了其他博客的一些图像,如有侵权,邮件联系删除。作为算法的SLAM,被称为同步相机位姿确定和地图构建。作为一个工程的SLAM,有众多的算法。

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

预读:三维重建:SLAM的粒度和工程化问题  。三维重建根据时间和场景的尺度不同需要引入不同的框架和优化方法:

1. 对于小型物体建模

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

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

框架1 = 几帧单幅深度图像 /+  简单图像拼接(ICP算法族或者简单三角/极线测量/视差算法);

 

百科:三维扫描仪

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

关键元素:VO算法族、ICP算法族TSDF方法或者Surfel方法

Change:序列图像计算VO、使用ICP方法或者Surfel方法。Kinect方法使用TSDF网格方法,而ElasticFusion使用surfel表面方法。Kinect方法使用ICP获取VO,ElasticFusion可以在VO中断时使用surfel表面重新计算VO。

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/......;

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

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

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

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

3. 相机移动的中型场景

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

3.2. 特征点级别:

特征点级别重建,在可得到序列结构的VO之后,经典的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的过程。

参考:

1. 双目相机-ElasticFusion是三维重建领域效果比较显著的开源库,其作者为Facebook Reality Labs的Thomas Whelan博士。ElasticFusion的github源码主页:https://github.com/mp3guy/ElasticFusion.git。小品文:ElasticFusion解释;

2.双目相机-KinectFusion是微软亚研院开源的一个室内深度场景重建算法,ICRA2011论文:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/kinectfusion-uist-comp.pdf; 小品文:深度相机方案对比-KinectFusion的基本原理(尺度)。

3.单目相机-EKF-SLAM方法是经典的稀疏场景重建方法,小品文:SLAM: Inverse Depth Parametrization for Monocular SALM。EKF在GitHub下载。

4.OrbSLAM工程化良好,成为一个流行的稀疏重建框架,并应用到不同的场景中。小品文:ROS:ubuntuKylin17.04-Ros使用OrbSLAM2。GitHub下载OrbSLAM2。

5.SemanticFusion,结合了CNN方法的重建方法,在数据关联时使用CNN方法。ICRA2017论文,SemanticFusion: Dense 3D Semantic Mapping with Convolutional Neural Networks。论文解析:ElasticFusion解析。SemanticFusion开源代码依赖ElasticFusion和Caffe-CNN,使用方法:Ubuntu16使用SemanticFusion

6.VINS-Fusion,视觉惯性单目系统,香港中文大学的开源代码:https://github.com/HKUST-Aerial-Robotics/VINS-Fusion。不依赖ROS的VINS代码:安装使用VINS。

三维重建:SLAM的尺度和方法论问题相关推荐

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

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

  2. 三维感知,这些干货足够了!(自动驾驶/三维重建/SLAM/点云/标定/深度估计/3D检测)...

    人工智能渗入到越来越多领域,以计算机视觉为主的相关应用更是呈现爆发性增长,国内外资本对AI视觉兴趣只增不减,自动驾驶.工业视觉.AR/VR.测量测绘.移动机器人等领域涌现了大量独角兽公司,相关产品受到 ...

  3. 场景感知:CNN方法对三维重建/slam/实时定位的一些Base改进

    Slam发展多年,终于有了真正有意义的发展.Base改进主要有:特征点检测.特征点描述.全局特征描述. -0-.SLAM的视觉前端 SLAM:同时空间定位与构建地图.对于重建与定位,双目视觉倾向于使用 ...

  4. 中秋福利!三维重建/SLAM/点云/相机标定/深度估计/缺陷检测课程

    人工智能渗入到越来越多领域,以计算机视觉为主的相关应用更是呈现爆发性增长,国内外资本对AI视觉兴趣只增不减,自动驾驶.工业视觉.AR/VR.测量测绘.移动机器人等领域涌现了大量独角兽公司,呈现了以3D ...

  5. 【三维重建】结合深度学习的三维重建/SLAM(一)

    经典的计算机视觉问题是3D重建. 基本上可以分成两种路径:一是多视角重建,二是运动重建.前者有一个经典的方法是多视角立体视觉(MVS,multiple view stereo),就是多帧的立体匹配,这 ...

  6. 如何高效学习3D视觉?涉及点云处理/相机标定/三维重建/SLAM/结构光/深度估计...

    「您好,我之前一直做2D视觉,请问3D视觉如何开始入门呀?三维重建.相机标定.立体匹配.结构光.点云后处理,这些我今后的工作可能都会涉及,可是我目前还一窍不通,您有什么比较好的方法适合快速入门吗?」 ...

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

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

  8. 元旦特惠!无人机/ROS2/三维重建点云/SLAM/多传感器/相机标定/深度估计等重磅干货教程...

    随着AI技术的大规模落地,国内外资本对AI视觉兴趣只增不减,自动驾驶.工业视觉.AR/VR.测量测绘.移动机器人等领域涌现了大量独角兽公司,相关产品更是受到重点关注. AI领域的热度和资本涌入持续增长 ...

  9. 三维重建:SLAM算法的考题总结

    参考英文维基:https://en.wikipedia.org/wiki/Slam .参考文档:视觉slam研究分析的一点认识 一.四大简述 1. 请简单描述您对机器人的SLAM的概念理解? 答: 机 ...

最新文章

  1. Visual Studio 2015 编译与使用Boost库进行文件与目录的操作
  2. 理解cookie和session
  3. 【Qt】Qt5.9连接MySQl5.7(亲自测试成功)
  4. 【渝粤教育】21秋期末考试成本会计10168k2
  5. Unity基础知识学习笔记二
  6. 容器编排技术 -- Kubernetes kubectl create poddisruptionbudget 命令详解
  7. 安卓休眠唤醒ajax休线程,休眠无法获得远程服务器上当前线程的事务同步会话...
  8. harbor 多端口_总结—Harbor仓库部署和使用问题集锦
  9. 【OpenCV学习】cvConvert的使用
  10. Atitit 各有所长原则 Thinker和Doer之争。 Doer Influencer relater thinker 目录 1. Doer Influencer relater thinke
  11. JSP学生综合评价管理系统sqlserver数据库myeclipse开发
  12. idc机房运维巡检_最全的弱电机房工程运维方案,后附所需表格
  13. java实现web ssh客户端
  14. jpg怎么转换成png?
  15. celeste实用技巧(第2弹)
  16. 【活动】为中秋献上祝福
  17. 中病毒了文件夹变exe文件找到方法
  18. 不同分子量的PEG衍生物试剂,DSPE-PEG6-Mal
  19. Windows 2D 绘图 (GDI, GDI+, Direct2D)
  20. 情商比智商更能决定人的一生

热门文章

  1. JavaWeb学习总结(二):Tomcat服务器学习和使用(一)
  2. 51nod-正整数分组问题(基础方程DP-01背包)
  3. CI在mimes.php添加对apk文件上传下载的支持
  4. 来兄弟连学习的经历和感受
  5. Linux经典实用的使用技巧33则和常用60个命令
  6. Android permission 访问权限一览
  7. 第三篇 12306自动刷票下单-下单
  8. HDU5853 Jong Hyok and String(二分 + 后缀数组)
  9. IIs+php 最精简的环境配置
  10. js处理异常try{}catch(e){}