三维网格精简算法java版_ISMAR 2020 | 商汤提出手机端实时单目三维重建系统

0599087f8796b63c2dd366646be70efc.png

导读:商汤研究院和浙江大学CAD&CG国家重点实验室合作研发了一个手机端实时单目三维重建系统Mobile3DRecon。与现有的基于RGBD的在线三维重建或离线生成表面网格的系统不同,该系统结合前端位姿跟踪结果,允许用户使用单目摄像头在线重建场景表面网格。

在深度估计方面,提出结合多视图半全局匹配算法和深度神经网络优化后处理过程鲁棒地估计场景深度。在表面网格生成过程,本文提出的在线网格生成算法可以实时增量地融合关键帧深度到稠密网格中,从而重建场景表面。通过定性和定量的实验验证,所研制的单目三维重建系统能够正确处理虚拟物体与真实场景之间的遮挡和碰撞,在手机端实现逼真的AR效果和交互。

论文名称: Mobile3DRecon: Real-time Monocular 3D Reconstruction on a Mobile Phone

论文地址:

Mobile3DRecon: Real-time Monocular 3D Reconstruction on a Mobile Phone​ieeexplore.ieee.org

Oral slides:

https://www.youtube.com/watch?v=W95Vs4REUGM​www.youtube.com

问题和挑战

遮挡和碰撞检测一直是AR行业面对的一大难题,其技术难点在于需要实时获取场景的三维表面信息,从而使虚拟物体和真实环境能融为一体。

当前已有的实时场景重建系统通常需要RGB-D或Lidar摄像头的支持(如KinectFusion, InfiniTAM, ElasticFusion, BundleFusion等),然而受硬件的限制目前市面上大部分的手机无法使用该功能;

另一类重建系统虽然可以根据单目RGB摄像头计算深度,从而重建场景表面(如MonoFusion, MobileFusion, CHISEL等),但是需要较大的计算时间和内存开销,大多仅能在PC或高端的移动平台上实时运行。

针对上述问题,本文提出了一个手机端实时单目三维重建系统Mobile3Drecon,该工作的主要贡献在于:

  1. 提出一种基于多视图关键帧的深度估计方法,能够在手机端高效获取较高精度的场景深度,同时能够一定程度上容忍SLAM位姿偏差和弱纹理场景的影响;
  2. 提出一种快速有效的增量式网格生成方法,该方法可以融合关键帧深度从而实时增量地重建场景表面网格,同时支持场景动态物体的移除,在中端的手机平台上实时运行;
  3. 搭建了一套完整的基于单目RGB的实时三维重建系统,该系统在中端手机平台上可以达到125ms每关键帧,获取的表面网格精度可以达到厘米级,基于该系统可以在手机端实现逼真的AR效果和交互,如图1所示。

41f08f3bde8293a7fd2cdd97e7b15839.png
图1:Mobile3DRecon系统在小米8手机上实时重建室内办公室场景并实现虚实遮挡和碰撞效果

方法介绍

本系统框架如图2所示。移动设备获取的RGB图像和IMU信息经过前端视觉惯性SLAM系统后可以实时得到关键帧的6自由度位姿,该位姿经过后端全局优化后进入深度估计模块,对于新增的每个关键帧,首先基于多视图半全局匹配方法计算关键帧初始深度图,然后采用置信度和深度神经网络优化深度图噪声,优化后的深度图输入增量式网格生成模块后实时构建场景表面稠密网格。

通过实时6自由度位姿估计和场景表面网格构建,Mobile3DRecon系统支持用户在手机端实现真实的AR遮挡和碰撞效果。下面分别介绍系统的单目深度估计和增量式网格构建两个主要功能模块。

1927d40e59b714beb5e7048e1b86dd40.png
图2:系统框架图

1. 单目深度估计

动机

传统基于多视图立体匹配的深度估计算法通常需要较强的GPU算力来满足实时计算的要求,而轻量的算法又难以获得精确完整的深度图结果。尽管一些基于深度神经网络的深度估计算法在公开数据集上表现出了较好的效果,然而在实际应用过程中受场景弱纹理和SLAM位姿偏差的影响较大,手机平台算力的影响也使其难以在移动端部署。

鉴于此,本文期望结合轻量化的深度神经网络和快速的多视图半全局匹配算法实现场景深度计算,考虑到手机平台算力、SLAM位姿偏差和弱纹理场景的影响,本文希望多视图半全局匹配方法在保证深度估计泛化能力的同时,能够融合多帧信息提升对位姿偏差和弱纹理区域的容忍度,通过结合深度神经网络能够有效改善位姿偏差和弱纹理产生的深度噪声,从而得到精确、完整的深度图结果。

方法:

本文提出的单目深度估计算法主要包含三个部分:

  1. 多视图立体匹配算法,用于计算初始深度图
  2. 置信度去噪算法,用于去除初始深度图噪声
  3. 基于深度神经网络的深度图优化算法,用于改善深度图质量

具体方式如下

① 步骤:多视图深度估计

42650510b2ee5508885d5fe3f507573c.png

85ede3bbe0838ae3418880b6deb07ab2.png

② 步骤:置信度噪声剔除

71dccf7f1ec10314678e6d6771c05674.png

3b73317a0eafc4042873359b7e5d805b.png
图3:单目深度估计结果

③ 步骤:基于深度神经网络的深度图优化

去除深度图噪声后,本文使用一个轻量的深度神经网络优化深度图,网络结构如图4所示,包含了多任务网络和深度优化网络两个部分。

13745c64e15073b1d5e7be1b71f9996e.png
图4:深度图优化神经网络结构

03ffa372e4ca43ec153e42e54e0f241b.png

网络第二个阶段的输入为原始深度图和一阶段的深度图噪声预测结果,使用U-Net残差深度优化网络优化原始输入的深度,得到更高质量的深度输出。本文使用Demon数据集[2]训练上述网络,然后使用手机采集的带TOF深度的3700组序列影像微调该网络。图5所示为带有一定位姿偏差的图像,第二列为置信度剔除噪声后的深度图,最后一列为经过深度优化网络后的深度图结果,可以看出深度图仅存在少量的空间噪声。

58deb042e8964d68dfdd4ad55f57cd83.png
图5:基于深度神经网络的深度图优化

2. 增量式网格生成

动机

在线网格重建的难点在于如何在保证较好重建效果和重建规模的前提下,能够实时在线地重建场景三维表面信息。传统基于TSDF融合的方法虽然能够在线融合深度图,TSDF的更新通常需要在GPU平台上才能达到实时,受平台算力的影响该过程很难在一些中低端的手机上实时应用。

此外,现有的表面网格生成的算法(如Marching Cubes[4])是离线的,难以实现在线增量式表面网格生成和更新。鉴于此,本文希望能够实现一种适合手机端AR应用的实时增量式在线网格生成算法,通过构建一种快速的基于空间索引的voxel hash机制,并对传统的Marching Cubes算法进行改进,使其能够在线增量地扩展场景网格表面,从而重建场景三维信息。同时,考虑到空间中的动态物体可能会对AR遮挡和碰撞效果产生影响,因此本文希望增量式网格生成算法能够快速有效地剔除空间动态物体。

方法:

本文的增量式网格生成方法主要包含三个部分:

  1. 可扩展的哈希函数,用于建立空间体素的索引机制
  2. 体素融合与动态物体移除,用于将计算的深度图融合到体素中,同时移除不在当前场景的动态物体
  3. 增量式网格更新用于快速提取体素块的网格面片,从而重建场景三维信息

具体方式如下

可扩展的哈希函数

f751766d51f815a9faf84c5971f1c471.png

0d72598adb51a33a5987a044b7bed82a.png
图6:可扩展哈希索引示意图

② 体素的融合与动态物体移除

对于输入的每个关键帧深度图,通过将深度值投影到三维的体素块中,从而判断是否需要分配新的体素块,如果需要则将体素块的TSDF和权值信息插入到索引表中,否则按照下式(7)更新当前体素块体素的TSDF值和权重。

2a84f4c3565a0ae8139050e5ae20ad06.png

为了处理动态物体产生的网格,本文将可见的体素投影到当前帧深度上进行可视性检查,如果发现与当前深度存在差异,则更改体素的TSDF值。通过这种方式可以使移出场景的动态物体产生的网格被逐渐消除。如图7展示了增量式网格构建过程中动态物体移除的过程。

328a382d85878a65beb47e161afc6740.png
图7:动态物体移除示意图

③ 增量式网格更新

3a2df4ec09a28f49b9c0c9d955b20f99.png

ac88444ed1daf356dece8782d9970871.png
图8:三个关键帧的增量式网格更新示意图

实验结果

本文使用OPPO R17 Pro手机采集带有真实场景深度的5组数据,用于从定性和定量两个方面对比Mobile3DRecon与一些SOTA方法的效果, 其中ground truth为OPPO R17 Pro获取的与单目相机对齐的TOF深度。图9和图10所示为室外楼梯场景分别使用REMODE、DPSNet、MVDepthNet以及本文方法生成深度图和mesh网格,可以看出本文方法生成的深度图细节更加明显,在此基础上生成的网格质量优于其它几种方法。

4fafa0fc570f0b851d14867792b3b4a6.png
图9:本文的单目深度估计与其他方法的结果比较

f4f1166993f6facf1c82299e70a9fa5a.png
图10:本文方法最终融合的表面网格与其他方法的结果比较

为了定量评价本文方法和REMODE、DPSNet、MVDepthNet生成的深度图和网格的精度,本文对比了5个场景下几种方法的实验结果,如表1所示。

分别统计了几种方法的深度和网格与真值深度(ToF)和真值网格在公共有效区域的RMSE和MAE精度,可以看出Mobile3DRecon方法不论是在深度图还是网格质量上都要优于其它的一些SOTA方法,深度图和网格精度可以达到厘米级。其余4个场景重建的网格结果如图11所示。

表1:Mobile3DRecon系统重建五个由OPPO R17 Pro采集的实验场景的精度评估,每个场景给出了本文的方法和其他方法的深度和网格的RMSE和MAE误差,以ToF深度作为真值。

5421e2a3ea703ac09a023e6c5a71f274.png

c84264e25feb1c74c75d9c48b6c7874a.png
图11:四个由OPPO R17 Pro采集的实验场景用本文方法生成的表面网格结果

本文在OPPO R17 Pro和小米8两个中端手机平台上测试了Mobile3DRecon各个过程的耗时,如下表所示。Mobile3DRecon在小米8(高通骁龙845)平台上基本可以达到OPPO R17 Pro(高通骁龙710)两倍的运行速度,然而即使是在性能较弱的OPPO R17 Pro手机上,本系统基于关键帧深度估计和增量式网格构建的过程仍然可以满足每秒5关键帧的运行帧率,从而达到实时的效果。

表2:Mobile3DRecon系统每个关键帧各步骤的详细耗时情况,分别在OPPO R17 Pro和小米8两个手机平台上统计。

aad9f79491732e3dea0b4aec0cd6e8da.png

图12展示了Mobile3DRecon系统集成到移动端Unity的运行效果,可以看出在OPPO R17 Pro和小米8手机上该系统能够通过精确重建场景表面网格使得虚拟物体的放置不局限于平面结构,同时室内楼梯和打印机场景的示例也展示了虚拟球与真实场景产生的正确遮挡和碰撞交互效果。

656c94a49debeb59b1c12677fcefe2f5.png
图12:Mobile3DRecon在手机平台上的AR应用

结语

本文提出了一个实时的单目三维重建系统,该系统允许用户在一些中端的手机平台上使用单目摄像头提供在线网格生成功能。与现有的基于点云或TSDF的在线重建方法不同,Mobile3DRecon系统可以根据单目摄像头图像鲁棒地估计场景深度,同时将估计的关键帧深度实时增量地融合到稠密网格表面。

本文在两个中端手机平台上验证了Mobile3DRecon系统的重建结果,通过定量和定性的实验验证了所提出的实时单目三维重建系统的有效性。

Mobile3DRecon系统能够正确处理虚拟物体与真实场景之间的遮挡和碰撞,从而达到逼真的AR效果。

References

[1] A. Drory, C, et al. Semi-global matching: A principled derivation in terms of message passing. In German Conference on Pattern Recognition, pp. 43–53. Springer, 2014.

[2] Ummenhofer B, Zhou H, Uhrig J, et al. Demon: Depth and Motion Network for Learning Monocular Stereo. In CVPR, 2017.

[3] Matthias Nießner, Michael Zollhöfer, Izadi S , et al. Real-time 3D Reconstruction at Scale using Voxel Hashing. ACM Transactions on Graphics (TOG), 2013.

[4] W. E. Lorensen and H. E. Cline. Marching cubes: A high resolution 3D surface construction algorithm. ACM SIGGRAPH Computer Graphics, 21(4):163–169, 1987.

[5] P. Ondruska, P. Kohli, and S. Izadi. MobileFusion: Real-time volumetric surface reconstruction and dense tracking on mobile phones. IEEE Transactions on Visualization and Computer Graphics, 21(11):1–1.

[6] Y. Yao, Z. Luo, S. Li, T. Fang, and L. Quan. MVSNet: Depth inference for unstructured multi-view stereo. In ECCV, pp. 767–783, 2018.

[7] S. Im, H.-G. Jeon, S. Lin, and I. S. Kweon. Dpsnet: End-to-end deep plane sweep stereo. In International Conference on Learning Representations, 2019.

论文作者

杨幸彬、周立阳、姜翰青、唐中樑、王元博、鲍虎军、章国锋

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

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

相关文章

【分类汇总】idea快捷键、idea配置、常用插件

写在前面 千万别看目录很长就感觉本篇博客很絮叨繁琐,里面多是配置的讲解贴了很多的图片方便大家了解,配置成功一次之后就可以一直使用了。 快捷键的使用建议大家先看,后续敲代码的时候刻意的使用快捷键,相信经过两三天的使用就可…

win10设置默认输入法_个性化设置技巧

个性化设置技巧子墨居士前言本次内容主要是win10系统自带的功能,不是用第三方软件优化桌面的情况下,让自己的电脑桌面能更美观、更舒服。系统自身的个性化设置主要是下图中的几个。鼠标右击->个性化设置。 第三方软件的效果会更好,毕竟是专…

什么叫组网_家庭wifi,如何组网最合适

wifi信号通过电磁波在空中传播的,属于微波通信的一种,因为微波本身及发射功率的限制,导致wifi的穿透能力比较差,北方比较厚的承重强,铁门、家具等对都会对wifi信号有较强的削弱作用。穿过的障碍物越多,这种…

java输入输出、数组初始化

💡涉及的知识点速通🛫 关于输入输出你都知道啥?🛫 关于控制路程都需要注意啥?🛫 关于数组的问题你能答对几道?🪂 数组初始化的小细节你都知道吗?🪂 这些Arrays的常见API你都掌握了吗?&#…

linux rm 命令删除文件恢复_Linux之恢复误删除文件

前言每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有 bug。那么如果真的删除了不该删除的文件,比如数据库、日志或执行…

java三大特征 重载与重写的区别

💡涉及的知识点速通🛫 OOP的三大特征都是什么?🪂 什么是封装?🪂 什么是继承?🪂 什么是多态?🛫 关于构造器你都知道什么?🛫 关于类的源文件都需要知道什么?🛫 重载和重写都是什…

发生身份验证错误_Python MySQL8.0 错误

Python MySQL8.0 错误:authentication plugin calling_sha2_password is not supported.Python3 进行到 python3 mysql(mysql-connector),然后安装mysql-8.0.16,照着示例程序运行 python,遇到这个大大的问题:authentic…

vue 获取当前元素的父元素_react获取触发元素的属性 e.target.dataset

我的react项目中一个应用场景就是在点击一个元素的时候想要获取到这个元素的属性。代码如下&#xff1a;renderyear()>{return(<div><div data-value"年初">年初</div> </div>);}//点击标签的时候触发的函数 TagClick(e)>{console.log…

为什么要学Redis(NoSQL数据库)

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…

centos常用命令_二、Docker镜像是什么?Docker常用命令

科技奇闻 关注让你我共同进步文章来源&#xff1a;CSDN作者&#xff1a;IronmanJayDocker常用命令1.帮助命令docker version #查看版本号docker info #显示Docker系统信息&#xff0c;包括镜像和容器数docker --help #查看Docker有哪些命令…

实现定时中断_无线传感器网络实验报告(二)Timer定时应用实验

实验二&#xff1a; Timer定时应用实验2.1实验目的1. 认识并了解 CC2530 定时器&#xff1b; 2. 学习定时器的基本配置与应用&#xff1b; 3. 在 ZigBee 模块上运行定时器程序。2.2实验原理根据数据手册可知 CC2530 总共有 4 个定时器&#xff0c;但是定时器 2 被系统占用&…

详析java中的关键字和权限修饰

&#x1f4a1;涉及的知识点速通&#x1f6eb; 关于关键字你都知道什么?&#x1fa82; this和super关键字&#x1fa82; instanceof关键字&#x1fa82; static关键字&#x1fa82; final关键字&#x1f6eb; 权限修饰符的作用范围知多少?各位小伙伴们大家好&#xff0c;欢迎来…

JQ 全选后获取选中的值_Filecoin如何创建账户钱包并获取FIL测试币

昨天"猩动力节点"加入了fielcoin的测试网络&#xff0c;对用户或者矿工来说&#xff0c;如何获取代币&#xff0c;创建钱包保护好自己的资产&#xff0c;每一个用户来说都很关心。下面我们一起来学习如何创建账户钱包&#xff0c;并获取FIL 测试代币。在创建账户钱包…

Redis中 字符串的常用命令

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…

mac wmware 无网络_无线网络中常用的技术名词

1、LAN&#xff1a;即局域网&#xff1a;是路由和主机组成的内部局域网&#xff0c;一般为有线网络。2、WAN&#xff1a;即广域网&#xff1a;是外部一个更大的局域网。3、WLAN(Wireless LAN&#xff0c;即无线局域网)&#xff1a;前面我们说过LAN是局域网&#xff0c;其实大多…

python界面开发webview_python在webview和activity混合页面下怎么定位

展开全部 genymotion 模拟器&#xff1a;android 5.0.0 python 2.7 appium 1.4.16.1 1、app原生元素定位&#xff08;常用&#xff09; driver.find_element_by_id(“resourse-id”32313133353236313431303231363533e59b9ee7ad9431333363393662) driver.find_element_by_name(“…

androidstudio build tools安装_Android Studio4.0 安装及配置

本来打算十一月份写的&#xff0c;结果。。。就在我备注原来的文章的时候&#xff0c;硬盘坏了。。。所以重新配置环境。。。换硬盘&#xff0c;。。。坏的太突然以至于数据都没有备份。。。。建议大家在参考教程安装之前先大致浏览一遍&#xff0c;这样安装的时候就会大致知道…

Redis 五大数据类型的常用命令——列表、集合、哈希、有序集合

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…

aop注解配置切点 spring_springboot aop 自定义注解方式实现一套完善的日志记录

一&#xff1a;功能简介本文主要记录如何使用aop切面的方式来实现日志记录功能。主要记录的信息有: 操作人&#xff0c;方法名&#xff0c;参数&#xff0c;运行时间&#xff0c;操作类型(增删改查)&#xff0c;详细描述&#xff0c;返回值。二&#xff1a;项目结构图如果想学习…

抽象类、接口的区别和相似点

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏&#xff0c;在这个系列专栏中我将记录浅学这本书所得收获&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波简直就是血赚 &#x1f4a1;涉及的知识点速通&#x1f6eb; abs…