元宇宙构建基石:三维重建技术

news2024/11/18 13:42:59

如今“元宇宙”概念爆火,作为前沿数字科技发展的集成体之一,元宇宙正成为诸多产业寻求破局的全新风口。元宇宙是利用科技手段进行链接与创造,与现实世界映射和交互的虚拟世界,具备新型社会体系的数字生活空间;其本质上是对现实世界的虚拟化、数字化过程,而内容的生产则是这一过程中必不可少的环节。在元宇宙内容最主要的三个要素“人,货,场”的内容生产中,目前还是大量依赖于人工制作。新技术引发新变革,支撑元宇宙发展的底层技术正在逐步的走向完善和成熟,通过人工智能技术去创作内容(AIGC)也逐渐变成了行业趋势。因此,本篇文章将重点阐述元宇宙中“货”的自动生产,即物品的三维重建。

三维重建技术概述

在元宇宙空间中,数字化身对应的是一个个三维模型,数字化的过程即是三维重建过程。“人”和“场”由于不同个体之间的差异性较小,因此很多建模工作都依赖于人工通过专业软件去建立标准模型,再通过设置和调整参数去获取不同的个体。而对于“货”而言,由于物品形状复杂、纹理多变,且极具个性化的属性,往往导致通过建模软件制作出的模型需耗费大量的时间。例如下图通过人工制作的手办模型就比较费时费力,这极大拉高了人们参与元宇宙内容建设的门槛,但同时也给自动三维重建技术蕴藏了更多的应用潜力。

(基于人工制作的三维模型效果展示)

物品的自动三维重建技术通常可以分为两大类,一类称之为“主动式”,另一类则为“被动式”,“主动式”和“被动式”指传感器接受信息的不同方式。一般而言,“主动式”三维重建需要先通过硬件投射出预设的信号,经由物体以后再被传感器捕捉;而“被动式” 三维重建指利用周围环境如自然光的反射,使用相机获取图像,然后通过特定算法计算得到物体的立体空间信息。常见的“主动式”三维重建方法有结构光、飞行时间(Time of Flight, ToF)、主动立体视觉技术等;而“被动式”三维重建方法包括被动视觉(双目视觉,多视角立体视觉)等。

常见的物品自动三维重建技术

结构光:该技术对硬件要求较高,需要精密且复杂的投影设备(projector)和成像设备(imager) 进行操作。首先,用户使用投影设备将预设的编码图像投射到物体表面,然后编码图像因受物体形状影响发生变化,进而通过这些变化估算出物体的深度信息,实现模型重建。其中预设的编码图像包括随机散斑(激光或红外光)、条纹编码和二维结构编码等,如下图条形编码结构光系统示例。结构光技术基于的原理是三角测量法,用户只需找到变形图像中的编码特征与投射编码的对应位置关系,即可以计算出物体的深度信息。

(条形编码结构光系统示例)

飞行时间:该技术的测距方式是主动式测距,利用如激光等光源发射至目标物体,然后再通过接收返回的光波来获取物体的深度信息。即在光速及声速一定的前提下,通过测量发射信号与接收信号的飞行时间间隔来获得距离的方法。 

被动立体视觉:该技术不需要额外的装置,只需要利用相机直接对物体成像即可。根据参与重建的相机视角个数,可以分为双目(两个相机视角)和多目(>2个相机视角)两种情形。该技术同样基于三角测量法原理,通过连接不同相机光心与同一个物理点的对应像素位置来获取三维重建信息;而对应像素点的寻找则通过图像特征的匹配来实现的。

(三角法示例:连接相机光心与对应的像素位置生成一条直线,不同相机的直线在空间中的交点即对应了物理点的三维位置。)

主动立体视觉:该技术是在被动立体视觉的基础上,添加了与结构光方法类似的投射装置,但它投射出来的图像不需要有编码;更多的只是去改变物体表面的纹理性状,以增强被拍摄物体的图像特征,方便不同相机图像之间的特征匹配。

通常来说,主动式的重建方式精度会更高,但受制于投影设备,分辨率一般相对较低;而被动式的重建方式往往精度相对低一些,但分辨率较高(与图像分辨率相关)。这里的“精度”指物体重建的三维模型与物体真实三维结构间的误差,而“分辨率”则指三维重建方法建立物品模型的最小物理尺寸。从使用方式的难易程度及成本考虑,结构光、ToF等主动式三维重建方法使用的装置因普及度不高,往往需要额外购买,同时,在操作过程中还需要做定期的标定,提高了操作难度;而被动式三维重建方法则直接使用相机就能获取图像,通过手机自带的高分辨率相机就能实现物品的三维重建。因此市面上普及程度较高的智能手机就能轻松满足拍摄需求,能让更多用户参与到元宇宙的内容建设中。

 百度VR物品三维重建

百度VR自研的三维重建算法能够实现物品全方位、多角度环绕拍摄,支持通过照片生成物品的3D模型。为有效降低用户拍摄物品的难度和成本,提高物品建模的效率;百度VR推出了能够全面覆盖和适配iOS和Android端的软硬件采集系统—“TL-50mini+百度VR·AI拍“。智能拍摄硬件“TL-50mini”打造了多窗口的精巧桌面摄影台,用户可以根据实际需要,实时调控灯箱亮度色温、拍摄角度、内置转盘的旋转速度等,帮助用户轻松制作出物品全角度照片和拟真的建模效果。

(采集系统:物体分别正放和侧放在转盘上完成两圈采集,算法经过处理后生成最终的三维纹理模型。)

从算法的角度看,百度VR基于图像的物品三维重建算法需要解决两个核心问题:一个是相机空间位置的恢复问题,即相机是在空间中哪个位置对物体进行拍摄的;另一个则是如何确定同一个物理点在不同相机中的像素位置对应关系。基于要解决的这两个核心问题,一个标准的算法流程如下:

(基于图像的三维重建算法流程)

首先,接收输入物体的图像后,算法会对图像进行预处理,主要是做背景抠除,只保留被拍摄的物体本身,之后所有的图像运算都将限制在物体的蒙版上进行。当然,这一步骤并非必须,但是却可以有效地减少后续运算时间,去除多余的重建噪声。接下来便是解决上文提出来的两个核心问题:(1)位姿恢复模块解决的是相机空间位置的问题,通常这步可以采用Structure from motion(SFM)技术来实现;稠密点云生成模块则解决的是如何确定物理点在不同相机的像素位置对应关系的问题,基于此, 通过三角测量法完成深度估计及融合。此外,位姿恢复模块还将产生一个副产品,即物体的一个稀疏点云表达,它将作为初值帮助稠密点云生成模块完成深度估计;并在获取物体的三维点云表达后,将其进行网格化,纹理生成等操作,最终得到一个对渲染引擎更为友好的三维表达方式。

通用抠图:百度VR自研的自动抠图系统,融合了目标检测及图像分割方法,能对输出蒙版进行边缘平滑锐化等图像后处理,能覆盖鞋类、玩具手办、文玩古器等多个垂类行业,平均IoU达到97%以上。

位姿恢复: 百度VR采用传统的SFM技术来进行位姿恢复,同时结合自有的数据采集方式,对其进行了改进。

(传统的增量式SFM三维重建算法流程)

简单来说,就是先构建图像特征,找到图像上一些有显著特征的点,通常是一些明暗变化或者有形状特征的位置;然后通过特征的匹配,在图像序列中找到一组又一组的特征点对应序列。通过这些特征的对应,在两幅图中利用三角测量法实现初始相对位姿的估计;在多幅图中则利用Perspective n Points(PnP)方法进行重投影位姿优化,实现多相机位姿的估计。最后,基于所有的特征匹配序列,完成全局的捆集调整(bundle adjustment),因此寻找图像之间的特征匹配关系就变得尤为重要。

与此同时,对于有序的输入数据,通常只需要计算当前图像与前后序列图像的匹配关系;而对于无序的输入数据,则往往需要穷尽各种匹配的可能。结合多圈的数据采集方式,我们提出来一种介于有序和无序之间的混合匹配模式。以单圈36张图,两圈的采集方式为例,我们新的数据匹配方式可以将匹配次数从2556次降到1728次,在保证精度的同时也极大的节省了运算时间。下图展示的就是一个我们利用新的匹配方式得到的图像节点特征匹配图,以及对应的位姿恢复结果。从这个图上即可看出我们数据的组织方式与采集方式完美地结合在了一起。

(图像特征匹配图:蓝色节点代表图像,虚线连接代表两张图像之间具有匹配关系,而虚线上的数字则代表了该匹配关系的强弱程度。)

(两圈采集下相机姿态的恢复结果)

稠密点云生成:基于视角的稠密点云的生成一般有几类方法:一类是传统的多视几何方法,即通过找寻某种度量来判定像素之间的对应关系,完成深度估计,包括半全局匹配(Semi Global Matching, SGM)、PatchMatch等方法。另一类是基于深度学习的多视深度估计,即利用深度神经网络来回归出深度信息,代表的方法有MVSNet及其变种、PatchMatchNet等。通常基于深度学习的方法训练时,需要输入物体的真实三维结构,但三维结构需要通过精度很高的桌面扫描仪获得,导致金钱成本和时间成本都比较高,同时还面临着算法泛化性的风险。因此,从落地的角度看,我们目前在采用传统方法的基础上,也参照神经网络方法对传统方法进行了算法改造,大大地提高了物体重建的完整度。

百度VR的稠密重建技术融合了低分辨率和高分辨率的信息,低分辨率情况下,可以有更大的感受野,能够帮助区分验证像素对应关系,有利于重建的完整度;而高分辨率则能提高重建精度。将二者结合起来,可以在保证精度的同时,提高重建完整度。使用低分辨率图像和高分辨率图像迭代重建可以达到较好的效果。下图是使用该模式前后算法结果的对比,可以看到点云完整度有了明显的提升。

              

未来方向

近两年神经渲染技术也横空出世,在三维重建领域取得了很可观的成绩。神经渲染技术是一种体渲染技术,空间中任意一个位置都可以表示为三维坐标及观察方向;而其属性可由颜色及不透明度(或是某种带符号的距离场,SDF)来定义,它们二者的关系是由一个神经网络来描述。沿着每条可视光线,根据对颜色及SDF的累积,可以计算出该视角下对应像素的颜色值;然后通过训练优化该光线累积得到的颜色值与实际图像颜色值的差异,最终得到真实的SDF,进而获取物体的三维结构。神经渲染技术是一种自监督的学习方法,虽然目前应用到物品的三维重建上,还存在训练时间过长、以及落地场景局限等问题,但其在物品、人体和空间重建等领域已展现出了巨大的技术潜力。因此,未来百度VR将持续关注该领域,并致力于将神经渲染技术更好地落地。

 结语

元宇宙的爆发式发展必定会带来内容自动生产的大量机会,依托百度领先的AI和VR技术,百度VR也将继续在这一领域持续深耕,致力将原本复杂的建模操作变得更为简单直接,让用户快速生成高质量的三维模型。目前百度VR创作中心已对外开放公测。点击“阅读原文”即可上传自己多视角的物品拍摄图像,自动生成3D模型,赶快来体验吧!

参考网址

  1. https://mp.weixin.qq.com/s?__biz=MzI4NzYzMTYwNw==&mid=2247490460&idx=1&sn=0ae432d571e95d32db70969104d0acad&chksm=ebcbea04dcbc6312ac549ba12e4663a5944121deaf5ba3e082db0809c8066373481cf56dd16b&scene=27
  2. https://www.pudn.com/news/62fdc319f97302478e6e6e98.html
  3. https://zhuanlan.zhihu.com/p/562671311
  4. https://developer.baidu.com/article/detail.html?id=295475

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

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

相关文章

Day11 蓝桥杯+Java中LocalDate类——关于日期跳转题【2015省赛星系炸弹】(相比C++,Java的LocalDate是真的香!!!)

今天刷蓝桥杯的题,用CAC了之后,发现解析里有兄弟用Java的LocalDate类做的,步骤极其简洁,【由于寒假开始学过一点Java】所以我特意去搜了搜LocalDate类,发现解这种题真的很好使!!!废话…

高级性能测试系列《39.终极线程组可以模拟出压力测试场景吗?》

一、回顾1.面向目标场景:Arrivals Thread Group,这个可以面向tps。Concurrency Thread Group,可以设置面向多少个并发用户数。2.波浪型场景:Ultimate Thread Group 波浪型场景。在添加第二行时,初始化时间点要大于等于…

Makefile的使用 和 基本语法 及Makefile中变量的使用【入门必看】

MakefileMakefile概要为啥要使用MakefileMakefile的使用Makefile的语法(重点)Makefile实际使用(重点)利用Makefile删除详解Makefile指令(重点)Makefile多命令选项Makefile的选择编译特性强制执行总结Makefi…

使用 Keras 深度学习库进行CNN 图像识别

Keras 是一个用于深度学习的 Python 库,它封装了强大的数值库 Theano 和 TensorFlow。 在本文中,你将了解如何在 Keras 中开发和评估用于图像识别的深度学习模型。完成本文后,你将了解: 关于 CIFAR-10 对象分类数据集以及如何在…

Pyrene-PEG5-propargyl_1817735-33-3_芘甲酰胺五聚乙二醇丙炔

Pyrene-PEG5-propargyl,芘甲酰胺-五聚乙二醇-丙炔Product structure:Pyrene-PEG5-propargyl结构式Product specifications:1.CAS No:1817735-33-32.Molecular formula:C30H33NO63.Molecular weight:503.64.…

一文弄懂三色标记算法

本文已收录至Github,推荐阅读 👉 Java随想录 你愈是少说你的伟大,我将愈想到你的伟大。——培根 文章目录三色标记算法增量更新原始快照面试官:我们先从JVM基础开始问,了解三色标记算法吗?我:额…

CSS或JS实现逐帧动画方案

什么是逐帧动画 逐帧动画是一种在连续的关键帧中分解动画动作,即在时间轴的每一帧上绘制不同内容并使之连续播放成动画的一种常见的动画形式。与CSS关键帧动画不同的是,逐帧动画每一帧需要自行定义;关键帧动画只需定义部分关键帧,…

《机会成本》的阅读札记

【引子】第一次接触机会成本,大约还是十几年前自己在读MBA的时候,在徐华老师《管理经济学》的课上听到过一耳朵,但没有太多的认知。这个春节,阅读了《机会成本——做出高效决策的策略思维》才有了些许进一步的认识,那么…

从0到1介绍一下开源大数据服务平台dataService

1.背景&现状 在大数据领域也已经工作了多年,无论所待过的大公司还是小公司,统计出来的数据经常需要查询展示,比如说:用做大屏或者报表或者给一些线上服务提供数据源,经常会要用代码写一套接口服务,需要…

Python中的os模块

整理文件和目录最最最常用的os模块os模块是Python标准库中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文件和目录。os.getcwd()作用:获取当前的工作路径;>>> os.getcwd() D:\\ResearchWay\\Code\\PythonCode\…

2023年浏览器哪个好,如何选择浏览器?

浏览器作为电脑必备的软件之一,相信绝大多数人都用过。选择一款好用的浏览器,可以帮助我们提升工作效率。那么,浏览器哪个比较好,我们如何选择合适的浏览器?为了找到集速度、易用性、安全于一身的浏览器,我…

第四十七章 动态规划——状态压缩模型

第四十七章 动态规划——状态压缩模型一、什么是状态压缩二、例题讲解1、AcWing 1064. 小国王(1)问题(2)思路(3)代码2、AcWing 327. 玉米田(1)问题(2)思路&am…

晴天科技冲刺上市:实控人丁一波系本科肄业,粤民投为其股东

近日,浙江晴天太阳能科技股份有限公司(下称“晴天科技”)预披露更新招股书,准备在深圳证券交易所主板上市。据贝多财经了解,晴天科技曾于2022年7月1日递交招股书,此次更新了截至2022年6月30日的财务数据等信…

AcWing 1072. 树的最长路径(DFS)

[TOC](AcWing 1072. 树的最长路径(树形DP)) 一、题目: 二、思路: 为了方便,我们利用下面这个图做讲解: 这颗树的最长路径必定经过的是图中的点,因此,**我们可以去枚举经过图中每个点的最长路…

微星武士gf66电脑系统中途安装失败怎么办?

微星武士gf66电脑系统中途安装失败怎么办?有用户购买的微星武士gf66电脑想要进行电脑系统的重新安装,但是在新系统的安装过程中出现了错误,导致系统无法启动了。这个情况可以使用U盘来重装一个系统,恢复电脑的正常使用&#xff0c…

将springboot项目部署到linux上运行的步骤

前言: 博主看了许多的博客,总结出了最有用的部分,将springboot项目完整的运行在了linux虚拟机上。而不是仅仅只在网页打印一句话,就当做运行成功。运行成功页面如下: 运行成果展示: 接下来废话不多说&…

Python 读取大文件

读取大文件 python读取文件一般情况是利用open()函数以及read()函数来完成: f open(filename,r) f.read() 这种方法读取小文件,即读取大小远远小于内存的文件显然没有什么问题。但是如果是将一个10G大小的日志文件读取,即文件大小大于内存…

“深度学习”学习日记。与学习有关的技巧--正则化

2023.1.29 在机器学习的过程中,过拟合是一个常见的问题。过拟合指的是只能够拟合训练数据,但不能很好的拟合测试数据;机器学习的目的就是提高泛化能力,即便是没有包括在训练数据里的测试数据,也希望神经网络模型可以正…

javafx中gif 内存优化

1.背景 桌面程序对内存消耗要求很高,基本的要求是整个程序控制在500M以内。 这就要求每个功能点的内存消耗尽可能地少,大于50M的内存消耗就要想办法优化。 2.现状 gif的显示会导致程序的内存激增。以数字大脑用的雷达图动画为例进行说明,下…

TypeScript 学习笔记总结(一)

ts学习笔记总结。 文章目录一、什么是TypeScript?二、TypeScript 环境搭建三、TS 类型声明四、TS 类型详解五、TS 类型总结六、TS 编译选项1. tsconfig.json的 作用2. tsconfig.json的 配置选项013. tsconfig.json的 配置选项02七、Webpack 打包ts代码一、什么是Typ…