前言
目前,三维重建技术已在游戏、电影、测绘、定位、导航、自动驾驶、VR/AR、工业制造以及消费品领域等方面得到了广泛的应用。方法同样也层出不穷,我们将这些方法依据原理分为两类: 基于传统多视图几何的三维重建算法 基于深度学习的三维重建算法
总地来说,尽管目前传统的三维重建算法依旧占据研究的主要部分,但是越来越多的研究者开始关注于用CNN探索三维重建,或者说,两者之间的交叉与融合。
有人问,在三维重建中引入深度学习方法有什么意义?我将意义概括为三部分:
为传统重建算法性能优化提供新的思路
一项名为 Code SLAM1 的工作,这项研究获得了CVPR 2018年的
best paper提名奖,研究利用神经网络框架,并结合图像几何信息实现了单目相机的稠密SLAM。主要贡献在于使用了深度学习方法从单张图像中用神经网络提取出若干个基函数来表示场景的深度,这些基函数表示可以极大简化传统几何方法中的优化问题。显然,深度学习方法的引入可以给传统方法的性能提升提供新的思路,而以前,这部分工作大多由机器学习方法来做。
将深度学习重建算法和传统三维重建算法进行融合,优势互补
业界对算法的鲁棒性要求比较高,因此多传感器、乃至多种算法的融合以提升算法鲁棒性是个必然趋势,而深度学习在一些场景中具有天然优势,比如不可见部分的建模,传统算法就很难凭借“经验”来估计物体的深度。
模仿动物视觉,直接利用深度学习算法进行三维重建
动物跟人类直接基于大脑而非严格的几何计算来进行物体的三维重建,那么直接基于深度学习的方法在原理上也是可行的。特别需要注意的是,在一些研究中,有些方法直接基于单张图像(非单目,单目指利用单个摄像头)进行三维重建。理论上讲,单张图像已经丢失了物体的三维信息,因此在原理上即不能恢复深度信息,但是人类又能凭借经验大致估计物体的距离,因而也具有一定的“合理性”。
两者形成了各自的理论和体系,但未来三维重建领域研究一定是传统优化方法与深度学习的结合。目前,这方面研究仍处于起步阶段,还有许多问题亟待解决。下面的综述主要侧重于深度学习方法,但也仅列出重要文献,更详细的综述将会在公众后续的文章中介绍。
基于传统多视图几何的三维重建算法
传统的三维重建算法按传感器是否主动向物体照射光源可以分为主动式和被动式 两种方法。这些年,也有不少研究直接基于消费级的 RGB-D 相机进行三维重建,如基于微软的 Kinect V1 产品,同样取得了不错的效果。基于传统多视图几何的三维重建算法概括如下: 1 主动式
? ?
?
?
?
指通过传感器主动地向物体照射信号,然后依靠解析返回的信号来获得物
?
?
?
?
体的三维信息,常见的有: 1.1 结构光
结构光法依靠投影仪将编码的结构光投射到被拍摄物体上,然后由摄像头进行拍摄。由于被拍摄物体上的不同部分相对于相机的距离精度和方向不同,结构光编码的图案的大小和形状也会发生改变。这种变化可以被摄像头捕获,然后通过运算单元将其换算成深度信息,进而获取物体的三维轮廓信息。这种方法缺点是容易受环境光干扰,因此室外体验差。另外,随检测距离增加,其精度也会变差。目前,一些研究通过增大功率、改变编码方式等形式解决这些问题,取得了一定的效果。 1.2 TOF 激光飞行时间
TOF 飞行时间法依靠通过向目标连续发送光脉冲,然后依据传感器接收到返回光的时间或相位差来计算距离目标的距离。但显然这种方式足够的精度需要极为精确的时间测量模块,因此成本相对较高。好处是这种方法测量距离比较远,受环境光干扰比较小。目前这方面研究旨在降低计时器良品率及成本,相应的算法性能也在提升。 1.3 三角测距法
三角测距法,即依据三角测距原理,不同于前两者需要较为精密的传感器,三角测距法整体成本较低,并且在近距离的时候精度较高,因而广泛应用于民用和商用产品中,如扫地机器人中。但三角测距的测量误差与距离有关,随着测量距离越来越大,测量误差也越来越大,这是由三角测量的原理导致的,不可避免。 2 被动式
直接依靠周围环境光源来获取RGB图像,通过依据多视图几何原理对图像进行解析,从而获取物体的三维信息。常见的依据原理可以分为: 2.1 单目视觉
单目视觉只使用单一摄像头作为采集设备,具有低成本、易部署等优点。其依靠一段时间内获得的连续图像的视差来重建三维环境。但其存在固有的问题:单张图像可能对应无数真实物理世界场景(病态),因此使用单目视觉方法从图像中估计深度进而实现三维重建的难度较大。依据原理,可以分类为:
目前这种算法广泛应用于手机等移动设备中,常见的算法有SfM,REMODE和SVO等。 ? 2.2 双目/多目视觉
双目视觉主要利用左右相机得到的两幅校正图像找到左右图片的匹配点,然后根据几何原理恢复出环境的三维信息。但该方法难点在于左右相
机图片的匹配,匹配地不精确都会影响最后算法成像的效果。多目视觉采用三个或三个以上摄像机来提高匹配的精度,缺点也很明显,需要消耗更多的时间,实时性也更差。
这两种方法理论上都可较精确恢复深度信息,但实际上受拍摄条件的影响,其精度往往无法得到保证。常见的有SGM和SGBM算法等,其中自动驾驶数据集KITTI中,排名前五十的算法几乎有一半都是对SGM的改进。
3 基于消费级RGB-D相机
相机可以基于主动式、被动式不同原理,优点在于基于这些设备的算法更具备实用性。
近年来,也有不少研究直接基于消费级的RGB-D相机进行三维重建,如在微软的Kinect V1、V2产品上,取得了不错的效果。最早,由帝国理工大学的Newcombe等人于2011年提出的Kinect Fusion开启了RGB相机实时三维重建的序幕。此后有 Dynamic Fusion和Bundle Fusion等算法。
这些方法它们各自有着各自的优点和缺点,同样有各自所适用的应用范围。以上为想要入门基于深度学习进行三维重建领域的同学简要介绍了这些方法,如需要深入了解,请仔细阅读相关文献,SfM和多视图几何等经典算法作为入门三维重建领域的基础永远都不会过时。
基于深度学习的三维重建算法
我们将基于深度学习的三维重建算法简要地分为三部分,更详细的文献综述将会在后续的公众号的系列文章中做介绍:
在传统三维重建算法中引入深度学习方法进行改进
深度学习重建算法和传统三维重建算法进行融合,优势互补 模仿动物视觉,直接利用深度学习算法进行三维重建 1 在传统三维重建算法中引入深度学习方法进行改进
因为CNN在图像的特征匹配上有着巨大优势,所以这方面的研究有很多,比如: DeepVO
其基于深度递归卷积神经网络(RCNN)直接从一系列原始RGB图像(视频)中推断出姿态,而不采用传统视觉里程计中的任何模块,改进了三维重建中的视觉里程计这一环。
? ? ?
?
基于深度学习的三维重建算法
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)