CN105378796A - 可伸缩体积3d重构 - Google Patents

可伸缩体积3d重构 Download PDF

Info

Publication number
CN105378796A
CN105378796A CN201480033727.8A CN201480033727A CN105378796A CN 105378796 A CN105378796 A CN 105378796A CN 201480033727 A CN201480033727 A CN 201480033727A CN 105378796 A CN105378796 A CN 105378796A
Authority
CN
China
Prior art keywords
voxel
node
model
value
depth
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201480033727.8A
Other languages
English (en)
Other versions
CN105378796B (zh
Inventor
J·陈
D·博滕巴赫
S·伊扎迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN105378796A publication Critical patent/CN105378796A/zh
Application granted granted Critical
Publication of CN105378796B publication Critical patent/CN105378796B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/08Indexing scheme for image data processing or generation, in general involving all processing steps from image acquisition to 3D model generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • Image Processing (AREA)

Abstract

描述了可伸缩体重构,由此来自移动环境捕捉设备的数据被用来形成现实世界环境的3D模型。在各示例中,分层结构被用来存储3D模型,其中该结构包括根层节点、多个中间层节点以及多个叶节点,节点中的每一个具有表示现实世界环境的一部分的相关联的体素网格,体素网格在叶节点处比在根节点处具有更精细的分辨率。在各示例中,并行处理被用来使捕捉到的数据能够被集成到3D模型中和/或使各图像能够从3D模型渲染。在一示例中,元数据被计算并存储在分层结构中并被用来使得能够进行分层结构的空间跳过和/或修剪。

Description

可伸缩体积3D重构
背景
环境中各表面的三维重构被用于许多任务,诸如机器人技术、工程原型设计、沉浸式游戏、增强现实、以及其他。例如,移动捕捉设备可以在它在环境中移动时捕捉图像和数据;捕捉到的信息可被用来自动计算该环境(如起居室或办公室)的体积模型。在其他示例中,捕捉设备可以是静态的,而一个或多个物体相对于它来移动。用于计算环境和/或物体的体积3D重构的现有系统通常在它们能够重构的现实世界体的大小方面受到限制。例如,由于存储器和处理能力约束,并且对于许多应用而言,希望实时操作。
以下描述的各实施例不限于解决已知的用于计算环境和/或物体的体积3D重构的系统的缺点中的任意或全部缺点的实现。
概述
下面呈现了本公开的简要概述,以便向读者提供基本理解。本概述不是本公开的穷尽概览,并且不标识关键/重要元素或描绘本说明书的范围。其唯一的目的是以简化形式呈现此处所公开的精选概念,作为稍后呈现的更详细的描述的序言。
描述了可伸缩体重构,由此来自移动环境捕捉设备的数据被用来形成现实世界环境的3D模型。在各示例中,分层结构被用来存储3D模型,其中该结构包括根层节点、多个内部层节点以及多个叶节点,节点中的每一个具有表示现实世界环境的一部分的相关联的体素网格,体素网格在叶节点处比在根节点处具有更精细的分辨率。在各示例中,并行处理被用来使捕捉到的数据能够被集成到3D模型中和/或使各图像能够根据3D模型来渲染。在一示例中,元数据被计算并存储在分层结构中并被用来使得能够进行分层结构的空间跳过和/或修剪。
在一些示例中,现实世界环境的3D模型被存储为规则网格或使用分层结构来存储,且3D模型的数据在至少一个并行处理单元和一个或多个主计算设备之间被流传输。
在一些示例中,多个并行处理单元被使用,每一个具有存储3D模型的至少一部分的存储器。例如,每一并行处理单元使用映射到现实世界环境中的不同物理尺寸的相同量的存储器。
由于通过结合附图参考以下详细描述使得许多附带特征能够被更好地理解,因此可更容易地领会这些附带特征。
附图简述
根据附图阅读以下详细描述,将更好地理解本说明书,在附图中:
图1是用于与移动环境捕捉设备一起使用的3D环境建模系统的示意图;
图2是在图1的3D环境建模系统处的方法的流程图;
图3是用于存储使用图1的3D环境建模系统生成的3D模型的分层数据结构的示意图;
图4是图3的分层数据结构的一部分的示意图;
图5是形成分层数据结构(诸如图3的分层数据结构)的方法的流程图;
图6是用来形成图4的分层数据结构的并行处理单元处的存储器的示意图;
图7是将深度图集成到图3的分层数据结构的方法的流程图;
图8是概括并修剪分层数据结构(诸如图3的分层数据结构)的方法的流程图;
图9是渲染的方法的流程图;
图10是将深度图集成到密集3D环境模型的方法的流程图;
图11是活动区和工作集的示意图;
图12是流传输的方法的流程图;
图13是图12的方法中向外流传输部分的更详细的流程图;
图14是世界空间中的分层体以及用来表示世界空间体的多个并行计算设备的示意图;
图15是将深度图集成到分层体的方法的流程图;
图16是针对分层体实现的流传输的方法的流程图;
图17是将深度图集成到分层体的另一方法的流程图;
图18示出可在其中实现3D环境重构的实施例的示例性的基于计算的设备。
在各个附图中使用相同的附图标记来指代相同的部件。
详细描述
下面结合附图提供的详细描述旨在作为本发明示例的描述,并不旨在表示可以构建或使用本发明示例的唯一形式。本描述阐述了本发明示例的功能,以及用于构建和操作本发明示例的步骤的序列。然而,可以通过不同的示例来实现相同或等效功能和序列。
虽然在本文中将本发明示例描述并例示为在具有一个或多个图形处理单元的计算设备中实现,但是所描述的系统是作为示例而非限制来提供的。本领域技术人员将会明白,本发明示例适合在具有并行计算能力的各种不同类型的计算设备中的应用。
图1是用于与移动环境捕捉设备100一起使用的3D环境建模系统100的示意图。使用捕捉到的图像和数据108,3D环境建模系统110能够构建其环境中的3D表面的详细模型116。例如,该模型可以存储足够信息,使得它可被用来描绘跑车的外表面(显示出曲线、压痕、浮雕件、后视镜、把手)以及跑车引擎的详细表面(在发动机罩打开时)、其仪表板以及内部。在另一示例中,各表面可以是地板、墙、书架、楼梯、灯具、家具、以及书店内的其他物体。在另一示例中,各表面可以是店面、灯柱、树叶、以及街道上的其他物体。细节水平可以使得键盘的各个键可被区分开,其中键盘在被捕捉的环境中。更细的细节水平也是可能的。该模型捕捉各表面如何被定位在现实世界中,使得可能使用该模型来例如在环境中导航,或以考虑现实环境的方式将虚拟现实物体投影到环境中。该模型可被导入其他系统,如游戏或计算机辅助设计系统,以使该模型能被使用。例如,用以生成计算机游戏中的实体,如跑车,或用以促进跑车设计的原型设计。
在图1所示的示例中,用户在诸如以下各项中的任一者的环境中移动的同时操作手持的移动环境捕捉设备100:跑车占据的空间、书店、以及街道。这些只是示例;移动环境捕捉设备100可以由人或自动化系统来在其中其捕捉设备将有效地操作的任何环境中操作。图像以及可任选地其他捕捉到的数据108从移动环境捕捉设备100传输到3D环境建模系统110。例如,通过有线或无线连接。在其他示例中,捕捉设备100和3D环境建模系统是集成在一起的。3D环境建模系统110是使用一个或多个并行处理计算单元和至少一个主机计算设备来用计算机实现的。它包括用于生成环境和/或物体的3D模型116的3D环境生成系统112。它包括用于跟踪移动环境捕捉设备100的位置和定向(称为姿态)的实时跟踪器114。在一些示例中,它包括用于在一个或多个并行处理计算单元和主机计算设备之间流传输3D模型116的至少一部分的流传输引擎118。在一些示例中,它包括用于允许增加“观看距离”的分层系统120;即,使得能够表示距移动环境捕捉设备的更大深度范围。这在具有更大范围的深度相机可用的情况下是有用的。
如上所述,3D环境建模系统110所生成的3D模型116可被导出到游戏系统124。即,3D模型116和其他数据(诸如来自实时跟踪器114的相机姿态、捕捉到的图像和数据108以及其他数据)可被输入到下游系统122以用于正在进行的处理。下游系统122的示例包括但不限于:游戏系统124、增强现实系统126、文化遗产档案库128、机器人系统130。文化遗产档案库可以存储物体和/或环境的3D模型以供记录保存和研究。
移动环境捕捉设备100包括被安排成捕捉场景的深度图像序列的深度相机。每个深度图像(或深度图帧)包括二维图像,在该二维图像中每一图像元素(如像素或像素群)包括诸如从相机到所捕捉的场景中的造成了该图像元素的物体的长度或距离之类的深度值。该深度值可以是以指定测量单位(诸如米或厘米)提供的绝对值,或者可以是相对深度值。在每一捕捉到的深度图像中,存在大约300000个或更多个图像元素,每一图像元素具有深度值。深度相机的帧速率足够高,使得深度图像能够被用于工作机器人技术、计算机游戏、或其他应用。例如,帧速率范围可以是每秒20到100帧。
深度信息可以使用任何合适的技术来获得,包括但不限于飞行时间、结构化光、以及立体图像。移动环境捕捉设备100还可包括被安排成以可由深度相机查明深度信息的方式来照亮该场景的发射器。
移动环境捕捉设备100还包括一个或多个处理器、存储器、以及通信基础设施。它可以在外壳中提供,该外壳的形状和大小制定成由用户手持或由用户佩戴。在其他示例中,移动环境捕捉设备的大小和形状被制定成被合并或安装在运载工具、玩具、或其他可移动装置上。移动环境捕捉设备100可具有显示设备。例如,为显示根据3D模型渲染的图像以便使用户能够知晓环境的哪些区域尚待访问以捕捉用于3D模型的数据。
图2是图1的3D环境建模系统处的用于将来自由移动环境捕捉设备捕捉到的深度图流的深度图集成到各环境表面的密集3D模型的方法的流程图。以此方式,各环境表面的密集3D模型随着从不同相机视点接收到更多深度图而逐渐被构建。术语“集成”在此被用来指将来自当前深度图的数据融合或聚集到密集3D模型。
移动环境捕捉设备使用实时跟踪器114计算204移动捕捉设备的当前姿态。例如,当前姿态可以使用迭代最近点过程来计算,迭代最近点过程取当前深度图和根据环境的当前3D模型208渲染的对应深度图作为输入。这一类型的方法的示例在Newcombe等人在2011年1月31日提交并在2012年8月2日公开的题为“Real-TimeCameraTrackingUsingDepthMaps(使用深度图的实时相机跟踪)”的美国专利公开20120196679中详细描述。使用其中来自移动深度相机的深度观测值与环境的3D模型的表面对准以找出促进该对准的移动深度相机的经更新位置和定向的过程来计算当前姿态也是可能的。这一类型的方法的示例在Sharp等人的在2013年1月24日提交的题为“Cameraposeestimationfor3Dreconstruction(用于3D重构的相机姿态估计)”的美国专利申请号13/749,497中描述。使用其他数据计算204相机姿态也是可能的。例如,移动环境捕捉设备100可具有跟踪其姿态的传感器,诸如全球定位系统、罗盘、加速度计或使得姿态能够被跟踪的其他类似传感器。可以使用计算相机姿态的这些或其他方式中的一者或多者的组合。
来自实时跟踪器的相机姿态可以采用六自由度(6DOF)姿态估计的形式,它指示深度相机的位置和定向。在一个示例中,6DOF姿态估计可以采用SE3矩阵的形式,该矩阵描述了深度相机相对于现实世界坐标的旋转和平移。此变换矩阵可以被更加正式地表示为:
T k = R k t k 0 T 1 ∈ SE 3
其中Tk是深度图像帧k的变换矩阵,Rk是帧k的相机旋转,tk是帧k处的相机平移,而欧几里德群SE3:={R,t|R∈SO3,t∈R3}。通过乘以这个变换矩阵,可以将相机空间中的坐标(即,来自相机视角)映射到现实世界坐标,并且可通过应用逆变换来进行反向操作。
3D环境建模系统将当前深度图200集成206到该环境中的各表面的密集3D模型。这一过程可以空3D模型开始,该空3D模型它通过聚集来自捕捉到的深度图帧的信息而被逐渐地填充。这可如在Newcombe等人的在2011年1月31日提交并在2012年8月2日发布的题为“Three-dimensionalenvironmentreconstruction(三维环境重构)”的美国专利公开20120194516中描述的那样来实现。
所得的3D模型可以存储在并行处理单元处的大量存储器中,例如作为3D体素网格210,其中每一体素存储一数值,该数值是截短的符号距离函数值。这在以上引用的美国专利公开20120194516中描述且在本文中将被称为将3D模型存储为规则网格。在3D体素网格210在每一体素处存储截短的符号距离函数值时,3D环境建模系统的并行处理单元存储器的容量限制了可被表示的现实世界空间的体积。
3D体素网格210可被可视化为存储器的立方体,其中每一存储器位置是表示正被建模的环境的空间中的某一点的体素。因此,3D网格直接表示现实世界环境的空间部分。由于3D体直接对应于现实世界体,所以固定大小的存储器中表示的现实世界体的大小确定了模型分辨率。例如,如果较大的现实世界体要被建模,则存储器的每一体素表示现实世界空间中较大的区域,并因此分辨率低于较小的现实世界体被建模的情况。然而如果更多存储器可用,则可以更高的分辨率对较大的现实世界体建模。
在各实施例中,分层数据结构212被用来存储3D模型208的至少一部分以使得现实世界空间的大得多的体积能够以相同细节水平被重构,使用了并行处理单元处的减少的存储器容量并允许实时操作。下面参考图3到10描述用于实时创建、填充、存储以及使用分层数据结构的各示例的新过程。在这些示例中,通过使用较粗略节点来表示世界中的自由空间并使用较精细节点来表示接近表面的符号距离函数,与规则网格210相比,分层数据结构实现无损压缩。这考虑了以下事实:通常,环境的绝大部分是空的,使得在规则网络210中,大多数符号距离函数被标记为自由空间。
许多不同类型的分层数据结构可被使用,如金字塔或树。例如,包括使用空间细分的树的分层数据结构可被使用,因为这使得表示被3D建模的表面的符号距离函数能够在新深度图到达时被存储和更新,而无需在考虑每一深度图时完全重建分层数据结构。树数据结构包括根节点、一层或多层内部或分叉节点、以及多个叶节点。分支将根节点连接到第一层内部节点并将内部层节点连接到树的下一层,直至达到终端节点(称为叶节点)。可通过将数据与节点中的一者或多者相关联来将它存储在树结构中。
具有空间细分的分层数据结构包括一个或多个树,其中这些树的分支划分了3D模型所表示的现实世界空间。许多不同的空间系统策略是可能的。规则空间细分策略可被使用,而非各向异性策略,因为相机姿态是持续更新的。规则空间细分无需假设用户将在哪一方向上移动。例如,虽然各向异性网格可能在相机面向一个方向时很好地适用于相机,但一旦用户转身(例如,左转90度),3D模型的网格不再被对准且造成差的采样。
使用规则空间细分形成的分层数据结构可以用各种不同细化策略中的任何策略来构建。某一细化策略包括用于决定何时从节点创建分支的规则和/或准则。在没有细化的情况下,密集规则网格如图2中210处所示地生成,它在存储方面以O(n3)伸缩,其中n是网格的一侧的分辨率。使用全双值细化(即,沿每一轴的二进制拆分,针对每一节点给出8个子节点)以及存储在叶节点处的数据,形成完整八叉树。这给出了对于使用并行处理单元(如图形处理单元)进行更新和遍历来说可能复杂的非常深的分层结构。在每一棵树的每一层处使用不同的分支因子(称为N3树结构)也是可能的。另一选项是使用自适应细化,由此通过将值存储在树的不同层并在它不能再概括其中的变化时拆分节点,符号距离函数以多个分辨率被表示。
不同分层数据结构的实证调查发现具有规则空间细分的树(如不具有自适应细分的N3树)给出了良好的存储器/性能折衷。现在参考图3来描述这一类型的分层数据结构。
代替如图2中那样每一体素处的截短的符号距离函数值,与图2的3D体素网格210相类似的3D网格300存储具有其子节点(如果有的话)的地址的记录,并且在一些示例中存储与分层数据结构中该体素的子树有关的信息。该记录用比用于存储截短的符号距离函数值少得多的存储器来存储。以此方式,规则3D网格300占用比图2的3D体素网格210更少的存储器。
3D网格300的体素的子集接近到目前为止被重构的符号距离函数的表面。这一子集中的体素中的每一者变成树的根节点。在图3中,为简明起见示出了三个这样的体素,但在实践中更多这样的体素可能存在。选择体素子集的方式被称为用于决定网格中的哪些体素将具有子节点的细化策略。在图3的示例中,根层的三个体素具有子节点且这些子节点中的每一者被示为在使用规则空间细分时每一条边具有根层网格的边的一半体素的立方体。这些层1节点(也称为层1网格)302、304、306在每一体素处存储具有其子节点(如果有的话)的地址的记录,且在一些示例中存储与分层数据结构中该体素的子树有关的信息。每一层1网格表示与一个根层体素相同的现实世界体,但具有更精细的分辨率。
在图3的示例中,分层数据结构具有三层,使得第二层节点308、310、312是叶节点。然而,使用具有两个或更多个层的分层数据结构也是可能的。细化策略被用来选择层1体素中的哪些将具有子节点。细化策略可以与在上一层处使用的细化策略相同。使用规则空间细分,且因此每一叶节点存储具有由用户指定的分辨率的3D网格。在图3所示的示例中,叶节点的每一条边具有第一层网格的边的一半的体素,但这是示例;可以使用其他分辨率。每一叶层网格表示与一个第一层体素相同的现实世界体,但具有更精细的分辨率。每一叶层体素可以存储一截短的符号距离函数值以及表示迄今为止从深度图获得的该特定表面位置的观测的频率的权重。
现在参考图4给出使用图3的分层数据结构来表示体积截短的符号距离函数的示例的更多细节。为简明起见,这在两个维度上示出了图3的三层分层数据结构,具有根层网格400、一个第一层节点406以及一个叶节点408(但在实践中将存在多得多的中间节点和叶节点)。
在根层,3D网格(图4中以2D示出)具有64个体素。(以2D而非3D)将相机视锥体(frustum)(现实世界空间体,映射到3D模型空间,它可能潜在地由相机以其当前姿态来感测)示为三角形402,其中一个角被线401“切断”。相机视锥体是从当前相机姿态和经校准的相机特征来被知晓的。当前相机位置(在模型空间中)是在三角形402的角403处,而线401表示相机前方的平面,在该平面之外的各表面可被感测。既在相机视锥体内也具有当前观测到的深度值(接近截短的符号距离函数(由线404表示))(来自当前深度图)的六个体素被加阴影。这六个体素满足细化策略准则。在这一示例中,根层的其他体素要么不具有子节点要么具有根据先前的深度图生成的子节点。满足该细化策略准则的这六个体素创建了层1子节点(除非已存在一个子节点)。例如,层1子节点406被示为包括3D网格,该3D网格在图4中以2D来被表示为四个体素有边方形。通过分配并清除并行处理单元处的存储器中的位置,层1子节点被创建,如下文更详细地描述的。存储器被用来存储表示由根层处的父体素所表示的现实世界空间的细分的3D体素网格。
从层0处的满足细分策略准则的六个体素之一下来的每一个层1子节点根据层1细化策略来被评估。例如,在图4中,层1节点具有满足层1细化策略的三个加阴影的体素。例如,因为这三个体素在当前深度图中具有接近截短的符号距离函数404的观测到的深度值。
满足层1细化策略的三个加阴影的体素各自创建了叶节点(除非已存在一个叶节点)。例如,叶节点408被示为包括3D网格,该3D网格在图4中以2D来被表示为四个体素的块。满足叶层细化策略的这些体素中的每一者具有与同对应于该体素的现实世界表面位置的深度值的观测频率相关的权重一起计算得到的截短的符号距离函数。在各示例中,计算出的符号距离函数值的最大值被选择并存储在满足细化策略的叶层体素中的每一者处。这帮助减轻在使用相机时靠近符号距离函数中的物体边缘的闪烁,相机往往在深度图中在物体边界处引入噪声。
在各示例中,细化策略考虑截短的符号距离函数周围的截短区。这一截短区在图4中由线404周围的两条细线示意性地示出。细化策略可包括检查当前深度值(被转换到模型空间)是否落入与现有的经建模的符号距离函数周围的截短区相交的体素内。在各示例中,截短区考虑深度观测中的噪声。例如,噪声可按深度样本的深度(由符号z表示)不确定性相关于距相机的深度的平方来增长的方式被建模成具有与深度相关的方差的高斯分布。因此,在一些示例中,截短区是自适应的,因为它相关于距相机的观测深度来增长或缩小。通过以此方式使用自适应截短区,发现增加的准确度。然而,使用自适应截短不是必要的,因为利用静态截短区发现了可行的结果。
图5是形成诸如图3的分层数据结构之类的分层数据结构的方法的流程图,它使用并行处理以促进实时操作。如以上参考图4所述,通过分配并清除并行处理单元处的存储器中的位置,层1子节点被创建。当在树的其他层创建子节点时,发生类似的存储器分配和清除过程。在一示例中,存储器提前在并行处理单元中被分配,且在使用某种类型的票务过程来创建节点时,这一存储器被使用。该票务过程使用空闲列表和备份存储。空闲列表是相关联的备份存储中的各个块的块索引的队列。备份存储是固定大小的存储器块的阵列,其中每一块具有等于分层结构的给定层处的网格的大小。
提前存储器分配包括分配500并行处理单元存储器中的根层网格并在其中存储GridDesc记录的3D阵列(根层网格的每一体素一个记录),它被初始化为空。GridDesc记录存储指向根层体素的任何子节点的指针以及各种其他可任选标志和信息,如下文更详细地描述的。
提前存储器分配还可包括:对于分层结构的每一层(层数被提前指定),使用空闲列表和备份存储分配502并行处理单元存储器中的固定大小的存储器池。
在接收到深度图时,它们在并行处理过程中被集成504到分层数据结构,这涉及在需要时创建分层数据结构的节点。这造成经更新的分层3D模型508。可任选地在每一深度图集成之后或以其他时间间隔在分层数据结构上执行概括过程506。概括过程还可包括在适当时移除分层数据结构的子树的修剪过程。例如,在形成了表示稍后变得已知为噪声或空空间的数据的子树的情况下。
图6相关于在根和中间层处使用的GridDesc记录以及相关于空闲列表和备份存储给出了与分层数据结构有关的更多细节。为简明起见,图6在两个维度上示出了图3的三层分层数据结构,具有根层网格400、一个第一层节点406以及一个叶节点408(但在实践中将存在多得多的中间节点和叶节点)。
为单个根层体素示出了一个GridDesc记录,该单个根层体素在图6中被示为接近截短的符号距离函数。GridDesc记录如下被重申:
StructGridDesc
BoolnearSurface
BoolisDirty
Fixed16_tminWeight
Intpoolindex=0
这一伪代码描述了称为GridDesc的结构如何包括称为“nearSurface”的布尔参数字段,该参数字段在该体素或来自该体素的子树中的任何体素接近当前被建模的表面时为真。接近表面的测试可以使用自适应截短区,如上所述。
该结构包括称为“isDirty”的布尔参数字段,该布尔参数字段在要被用于保持GridDesc记录的来自备份存储的存储器需要清除时为真。
该结构包括用于存储数值的称为“fixed16_tminWeight”的固定点数值字段。在叶节点处,该数值是与发生在由该体素表示的现实世界的一部分中的深度值观测的频率相关的权重。在内部节点和根节点处,该数值存储其子节点的权重的最小值。
该结构包括称为“poolIndex”的整型字段,该整型字段表示用于从空闲列表中取得一项的原子操作。该整型字段poolIndex存储指向向下一层的节点的指针。如本文中早先描述的,它可被认为是票据。
为创建第一层节点406,使用原子操作将一空闲块从空闲列表600中出队,分配给GridDesc结构的poolIndex字段。空闲列表是块索引的队列,初始化为满(列表[0,1,…n]),其中符号)指示n不包括在该列表中。在图6所示的示例中,空闲块号3在队列的头上,且通过从备份存储602取得存储器块3而出队。备份存储是n个固定大小的块的阵列,其中每一块具有等于该层处的整个网格的大小。
第一层节点406具有其自己的GridDesc结构,它具有与以上描述的字段相同的字段。为简明起见,除“intpoolIndex”字段之外的这些字段在图6中未示出,在该示例中,“intpoolIndex”字段具有值2,意味着其子节点网格在下一层的备份存储中的位置2处。
第二层节点408具有相关联的结构,它与GridDesc结构不同。在图6的示例中,叶层结构被称为structTSDF,并且包括存储作为与该体素相关联的截短的符号距离函数值的固定点值的字段(在图6中称为fixed16_tdistance);并且还包括存储作为与从该体素接收到的深度观测的频率相关联的权重的固定点值的字段(在图6中称为fixed16_tweight)。层2(在该示例中是叶层)的空闲列表604在图6中示为具有用于TSDF结构的从队列的头上出队的索引2和来自备份存储606的块2。
图7是将深度图集成到图3的分层数据结构的方法的流程图。接收700输入深度图且从图1的实时跟踪器接收经更新的相机姿态702。使用经更新的相机姿态702和相机校准信息,计算相机视锥体并将其应用于分层数据结构的当前根层网格。标识704根层网格中的至少部分地落在相机视锥体中且接近所建模的表面;或满足其他准则(如已具有带有指定的特征的子树,如下所述)的根层体素。
集成过程可按自顶向下的方式进行。该过程标识哪些根体素要被更新且将这些根体素置于队列中。该过程检查队列,为每一层这样做,直至到达叶子。为标识要被更新的根体素,该过程可寻找接触截短区,或已具有子节点且在当前深度帧中的某一表面前方的根层体素。这样做的一种有效方式是将根体素投影到屏幕,取得其边界框,并向边界框中的每一像素分配一个线程。边界框可以是保守的,使得并非每一像素都在体素的投影内部。对于每一像素,可以执行两个测试。一个测试检查该像素是否在体素的投影的内部;而一个测试检查该像素是否在截短区内部。如果一个检查或这两个检查为真,则该体素要被细化且它被置于队列中。
一旦叶被更新,则使用自底向上过程来概括各变更。例如,在叶节点已被更新的情况下,经更新的子节点的父节点可以评估其子节点中的任何子节点是否接近表面。如果是,则父节点将自身标记为接近表面并告知其自己的父节点。
在一示例中,每一所标识的根层体素分配708一个线程块。每一线程块包括可并行执行的多个执行线程。对于每一所标识的根层体素,使用许多线程将其投影栅格化以形成第一层节点。
该过程移至第一层节点。可每一第一层节点(也称为网格)分配710一个线程。对于每一第一层网格,如果来自备份存储的存储器块是脏的,则该过程使用线程块的各线程来协作清除712该存储器块。
对于每一第一层网格,该过程标识存在接近所建模的表面的(来自输入深度图的)一个或多个深度值的那些体素;满足其他准则的体素也可被标识(如已具有子节点的那些)。为达到这一点,可每体素使用来自线程块的一个线程。因而,对于每一第一层网格,每体素使用来自其线程块的一个线程以将该体素的投影栅格化714。这形成第二层网格。
步骤710、712、714的过程可针对分层结构的其他内部层来重复,直至达到叶层。对于每一叶层网格,分配718一线程块。如上所述,所分配的线程块的存储器在需要时被清除。每体素一个线程被用来计算并在该体素处存储截短的符号距离函数值以及可任选的权重。与计算并存储截短的符号距离函数值和权重的过程有关的更多细节在下文参考图10给出。
在各示例中,包括以上图7的示例,深度图按广度优先的次序被集成到分层数据结构。对于树的内部层,包括根,该过程使用由原子队列居间的递归将深度图的覆盖区(footprint)保守地栅格化成依次更细化的体素网格。在根网格处,通过用相机视锥体的边界框来保守地与体素相交以确定体素索引。因为根体素投影到屏幕上的大六边形,所以可在根层处每体素分配一个线程块,且许多线程被用来栅格化其投影。在内部层,因为体素现在投影到屏幕上的较小的六边形,所以每网格分配一个线程块,其中每体素一个线程。
在一示例中,用于将深度图集成到图3的分层数据结构的过程使用以下伪代码来给出:
以上伪代码描述了对根层网格的每一体素使用一线程来并行地执行集成过程。集成过程涉及检查体素是否与相机视锥体相交,并且如果是,则通过使用带有自变量project(v)的函数boundingBox2D来计算二维边界框Bbox2D。对于输入深度图中的作为2D边界框的成员的所有像素,该过程并行地进行以查找该像素处的深度值z并检查该深度值是否与该体素处的符号距离函数周围的自适应截短区相交。
并行缩减运算被应用以从重叠集合(具有深度图的与自适应截短区相交的像素的体素集合)中移除重复。
如果存在可用线程,则变量desc被设置成该体素且在该体素具有子节点或存在重叠集合的任何成员的情况下,标志descend(下降)被设为真。
如果标志descend被设为真,则在队列上为体素v放置作业。原子作业队列可在存储器中被分配。在该过程计算出某一体素要被清除时,其索引被原子地入队到作业队列上。为在下一层上工作,该过程可从输入作业队列中使体素索引原子地出队。
如果体素没有子节点,则向体素的子节点分配存储器且isDirty标志在适当时被置位。
图8是概括并修剪(也被称为垃圾收集)分层数据结构(诸如图3的分层数据结构)的方法的流程图。概括和修剪过程可以使用存储在节点的GridDesc记录处的元数据。例如,节点的nearSurface(接近表面)标志可被用来指示子树中的任何体素是否可能接近所建模的表面。nearSurface标志可以在光线投射(raycasting)期间被使用以跳过整个子树,如下文参考图9更详细地描述的。minWeight(最小权重)值可被用来标识可被剪除的子树,因为它们表示自由空间。现在将参考图8更详细地描述这一点。
每一叶节点被并行线程清除。例如,并行地对于每一叶节点(也称为叶网格),检查800任何叶体素是否接近所建模的表面,并且如果是,则通过设置父网格记录的nearSurface标志为真来更新父网格记录。在一示例中,检查800包括检查任何符号距离函数值是否接近表面几何形状;即,检查任何符号距离函数值是否具有小于叶体素的对角线的大小。针对叶层体素的这些检查的结果的并行缩减可被作出,且该结果被用来设置父节点的nearSurface标志。
并行地对于每一叶节点,找出802最小观测频率权重并将其存储在父网格记录中。并行缩减可被用来找出叶网格中的最小权重。
概括使用现有作业队列沿树向上进行804,直至达到根层。
内部层网格(节点)随后可在网格记录的基础上被修剪806。例如,GridDesc记录的minWeight字段可任选地被用作垃圾收集的启发。如果某一内部体素具有足够高的minWeight,且不是nearSurface,则它不可能在将来是nearSurface且可被“冻结”为自由空间。在这一基础上标识的内部体素可在下一遍集成中删除其子树,且针对现实世界空间的这一区域的集成将来可被跳过。
图9是根据分层形式的3D模型来渲染图像的方法的流程图。渲染过程包括将来自所希望的输出图像元素(在现实世界坐标中)的许多光线进行光线投射到3D模型。光线投射过程可以在分层数据结构GridDesc记录中的元数据的基础上使用空间跳过。现在参考图9描述这一点,图9示出了用于从分层形式的3D模型进行光线投射的可并行化过程,该过程适于在GPU或多核CPU上以类似于上文中的模型生成过程的方式执行。
为了渲染模型的视图,首先接收900定义要被渲染的图像的视点的虚拟相机的姿态。该姿态可具有虚拟相机的6DOF位置和定向的形式。然后将单独的执行线程分配902给要被渲染的图像中的每一个像素。
然后由每一个执行线程执行框904中示出的操作以确定要被应用于该线程的相关联的像素的值(例如,阴影、颜色等)。与该线程相关联的像素的x和y坐标与虚拟相机的姿态一起被使用以将该像素转换906成现实世界坐标,表示为X、Y、Z。现实世界坐标X、Y、Z然后可被变换908成3D分层模型中的体素坐标。
这些坐标为该像素定义了具有从虚拟相机位置发出穿过3D分层模型的路径的光线上的点。然后确定9103D分层模型根层网格中的哪一体素首先被该光线触碰到,并且该体素被设为光线投射的起始体素。光线投射操作以深度优先搜索方式遍历树912以检索这一位置的符号距离函数值。这通过检查nearSurface标志是否被设为真来完成。如果是,该过程以相同的方式沿树向下直至达到叶节点。如果在任何点处,nearSurface标志被设为假,则该过程以沿光线的深度优先搜索方式沿树向上返回。这通过使用nearSurface标志元数据来使得能够发生空间跳过。
在达到叶节点时,针对零交叉进行检查。如果没有发现零交叉,则该过程沿树向上返回到父节点,并按深度优先搜索方式就该父节点的任何其他子节点继续进行。
如果发现零交叉(即,存储在叶层处的该光线上的一个体素中的平均符号距离函数值到在叶层处的沿该光线的下一体素之间符号改变),该过程计算916零交叉处的表面法线。可任选地,零交叉检查过程可以被安排成确定只从正通过零到负的符号变化的存在。这使得能够在从正面观看的表面和从物体“内部”观看的表面之间作出区分。
当检测到零交叉时,这指示出在模型中存在一表面。因此,这指示出该表面与光线交叉处的叶层体素。在一个示例中,给出三线性采样的点在所检测到的零交叉的任一侧上以找到零出现处的点,可以使用简单线性内插来计算沿光线的表面交叉点。在出现零交叉的点处,计算916表面法线。这可以通过取与相邻体素的截短符号距离函数差来执行。这估算作为表面法线的梯度。在一个示例中,表面法线可使用后向差分数值导数来计算,如下:
n ^ ( x ) = ▿ f ( x ) | | ▿ f ( x ) | | , ▿ f = [ ∂ f ∂ x , ∂ f ∂ y , ∂ f ∂ z ] T
其中是点x处的法线,而f(x)是体素x的符号距离函数值。该导数能够在每一维度伸缩以确保在给定可能任意的体素分辨率和重构维度的情况下的正确的各向同性。
该过程可高速缓存并重用来自光线上的当前位置的树遍历,以使得能够在步骤912处的性能被改进。为使用与邻居节点的差来计算表面法线,该过程使用多个访问。邻居可能处于与初始点相同的网格中,使得该过程能够高速缓存它所处的那个网格并在适当时重用它。
出现零交叉的体素的坐标被转换918成现实世界坐标,从而给出模型中的表面的该位置的现实世界坐标。根据表面的现实世界坐标加上其表面法线,可计算920阴影和/或颜色。计算出的阴影和/或颜色可基于任何合适的加阴影模型,并且考虑虚拟光源的位置。
如所述,框904中的操作由每一个执行线程并行地执行,这给出最终输出图像中的每一像素的阴影和/或颜色。然后可以组合为每一像素计算出的数据以给出输出图像922,该输出图像是从虚拟相机对该模型的视图的渲染。
在一示例中,图9的步骤912的过程可如下被实现。该过程将沿光线的前一距离tp(它是沿光线到前一根层体素的距离)、前一符号距离函数值dp(来自该前一根层体素处的树遍历)、以及沿该分层结构向下的体素索引栈作为状态来维护。tp的值被设为零(在相机视点处)且树被遍历以检索当前深度dp。在每一迭代,该过程步进至当前层处的下一体素。如果在一内部节点处且nearSurface标志被置位,则该过程找出下一层处的最接近体素并将它推送到栈上。否则,该过程什么也不做。如果该过程在叶节点处,则作出是否存在零交叉的测试。在dp>0且dc<0时发生零交叉。如果发现零交叉,则表面在处。否则该过程设置dp=dc并继续。如果该过程步进至当前网格的边界之外,则该栈被弹出以沿树向上移回。
图10是计算并存储截短的符号距离函数值的方法的流程图并给出了图7的步骤718的过程的更多细节。符号距离函数计算给出当前体素与深度图像中的对应点之间的距离的值,且是有符号的,使得在深度图像中的该对应点之外(即,外部)的体素(从相机的视角而言)被给予正距离,而在深度图像中的该对应点之内(即,内部)的体素(从相机的视角而言)被给予负距离。零值指示出相关联的体素恰巧与该对应点一致。符号距离函数可根据深度图像中的在与体素的中心相对应的位置处的深度值减去该体素的中心的深度轴位置来被容易地计算。使用体素的中心是可能的,在这种情况下可能假定叶体素小于输入深度图的像素。
符号距离函数值可被规范化1022为预定义距离值。在一个示例中,该预定义值可以是小的距离,诸如5cm,但是可使用任何合适的值。例如,该规范化可取决于正被重构的物体的噪声水平和厚度来被适应。这可通过用户手动定义,或通过对数据中的噪声的分析而被自动导出。然后确定1024经规范化的距离是大于正阈值(如果符号距离为正)还是小于负阈值(如果符号距离为负)。如果是,则将符号距离函数值截短1026成最大或最小值。例如,如果经规范化的距离大于正阈值,则该值可在+1(规范化后的正阈值)处被截短,而如果经规范化的距离小于负阈值,则该值可在-1(规范化后的负阈值)处被截短。这一计算的结果被称为截短的符号距离函数(TSDF)。
经规范化的(且如果合适话,被截短的)符号距离函数值随后与存储在当前体素处的任何先前值进行组合。在这是被合并到3D模型中的第一深度图像的情况下,不存在先前值。然而,随着从深度相机接收和合并更多的帧,则值可能已经存在于体素处。
在一个示例中,通过平均1028,将符号距离函数值与先前值组合。这可有助于构建具有移动物体的环境的模型,因为它允许已经移动的某一物体随着时间随着所添加的测量变得更旧以及与更近的测量进行平均而消失。例如,可以使用指数衰减移动平均。在另一示例中,平均可以是使用与从深度相机到相关联的体素的距离有关的加权函数的加权平均。平均的符号距离函数值然后可被存储1030在当前体素处。
在另一示例中,可在每一叶体素处存储两个值。可计算和存储符号距离函数值的加权和,并且还可计算和存储权重的和。权重可以是深度观测的频率。加权平均随后可被计算为(加权和)/(权重和)。
使用上述分层结构允许相对较大的体的迭代重构。例如,以10243的分辨率,(4m)3与(4mm)3体素或(8m)3与(8mm)3体素。为进一步伸缩到无限物理尺寸,3D环境建模系统可将物理体与工作集解耦。这在使用3D网格而非分层结构的情况下也是适用的。
工作集是存储器的被算法当前使用的部分。在其中使用图形处理单元的示例中,工作集可以是GPU存储器的当前被3D环境建模系统或渲染系统使用的部分。在各示例中,工作集可被定义为GPU存储器中等于分层结构的根网格分辨率的固定3D阵列索引的集合。在其中使用规则网格(而非分层结构)来存储3D模型的实施例中,工作集可被定义为GPU存储器中等于3D网格分辨率的固定3D阵列索引的集合。
分层结构的每一层处的分辨率(体素数)可以与叶层体素大小一起以米为单位来被指定。这些参数相乘以确定根体素以米为单位的物理大小。世界坐标系可被量化成根体素单元,根体素单元用作索引分层结构的子树的键。
活动区可被定义为世界坐标系(以米为单位)的以相机的观看视锥体为中心但其原点被量化成世界中的根体素的立方(或其他形状)子集。为确保零争用,活动区的有效分辨率可以比沿每一轴的工作集的分辨率小一个根体素。这允许使用模运算将活动区的体素映射到工作集的索引。
图11是二维的活动区和工作集的示意图。活动区1100、1102、1104、1106被示为网格。对于活动区1104,工作集由包含点的网格单元来描绘。对于活动区1106,工作集也由包含点的网格单元来描绘。活动区1100和1102被示为与世界坐标系相关。这些活动区与不同相机位置相关联;每一相机视锥体是使用图4中的三角形来描绘的。图11中的活动区网格的每一单元与世界中的一根体素相对应。
活动区和工作集可被用来标识可在并行处理单元存储器与主机计算设备处的存储器之间流传输的3D模型的索引。索引可从GPU存储器流传输出来到达主机,或反之。例如,在图11中,活动区1100与活动区1104相对应且表示旧相机位置的状况。活动区1102与活动区1106相对应且表示新相机位置的状况。考虑旧活动区104,空白单元表示可被流传输出来到主机的索引(或子树),因为它们在工作集之外。考虑新活动区1106,要被流传输出来的子树由网格1108中填充了点的单元来表示,且要被流传输出来的子树由网格1110中填充了点的单元来表示。
图12是在并行处理单元处的存储器与主机计算设备处的存储器之间流传输3D模型数据的方法的流程图。例如从图1的实时跟踪器114接收1200相机姿态。使用接收到的相机姿态在以上给出的活动区的定义以及3D模型的分辨率的知识(作为规则网格或作为分层结构)的基础上计算1202或更新活动区。将活动区映射1204到工作集。使用活动区和工作集映射的知识,选择1206要被流传输出来的工作集索引并选择1208要将数据流传输进来的工作集索引。对于流传输出来,这些可以是自先前的活动区以来已变为不在新活动区中的工作集索引。对于流传输进来,这些可以是在现在存在于新活动区中而不在先前活动区中的工作集索引。
在用于流传输出来的工作集索引的选择1206期间,压缩准则也可被使用。如果分层结构被使用(参见判决点1210),则所选工作集索引的子树可被转换1216成深度优先存储并被流传输到主机。如果没有使用分层结构,则所选体素值被流传输出来1212。
在流传输进来期间,如果分层结构被使用(参见判决点1210),则子树从主机被访问并被恢复1218成分层数据结构。如果分层结构未被使用,则该过程从主机将体素值流传输1214进来。
在参考图13描述的示例中,从GPU到主机的流传输使用对分层结构的两个广度优先遍历。给定一组工作集索引以流传输出来到主机上,该过程将这些复制1300到GPU队列中并执行树遍历1302以确定每一子树需要多少空间(使用并行缩减来计算总和)。该过程执行并行前缀扫描以计算1304可存储每一子树的线性缓冲区中的偏移。作出树遍历1306以将每一体素写入线性缓冲区,从而用始自每一子树的开始的字节偏移来替换poolIndex。这一操作将森林(树列表的形式)从广度优先存储转换成深度优先存储。线性缓冲区和偏移的列表可被复制1308到主机且每一子树被存储1310在字典中。从主机到GPU的流传输可以是类似的。
在一些示例中,通过使用多个图像处理器或其他并行处理单元,分层体方案被用来允许更大的扫描和观看距离。分层体方案可以在3D模型被存储为规则网格或分层结构的情况下使用。
例如,图14示出三个GPU(GPU0、GPU1、GPU2),每一GPU用来存储由本文描述的3D环境建模系统(或任何其他合适的3D环境建模系统)重构的3D模型或3D模型的一部分。GPU0被用来表示世界空间31400,GPU1被用来表示世界空间21402,且GPU2被用来表示世界空间11404。三角形1406表示相机视锥体。世界空间各自具有不同的物理尺寸。例如,世界空间3可以大于世界空间2,而世界空间2可以大于世界空间1。各世界空间能以同一物理位置为中心,使得世界空间3包含世界空间2,世界空间2包含世界空间1。在每一GPU处使用的存储器可以相同。以此方式,GPU1捕捉粗比例表面几何形状,GPU1捕捉中间比例表面几何形状,而GPU2捕捉细比例表面几何形状。
图15是将深度图集成到分层体(如图14的分层体)的方法的流程图。接收1500当前深度图并且计算1502当前相机姿态。分别在步骤1504、1506和1508将当前深度图集成到体0、1和2中的每一者。如上所述的深度图集成过程可以根据3D模型是规则网格还是分层结构来被使用。
为根据3D模型渲染图像,光线投射过程(如本文描述的)可分开且并行地被应用1510、1512、1514到每一体。光线投射结果随后被混合1516或聚集。在一些示例中,光线投射结果可被反馈以供在相机姿态计算中使用。
在使用分层体时,应用流传输是可能的。例如,接收1600相机姿态并如上所述更新1602活动区。活动区被映射到每一体的工作集1604且这允许标识1606要从该体流传输进来或出来的数据。对于每一体,流传输双向地独立且并行地发生1608。
图17是将深度图集成到分层体的另一方法的流程图。接收1700深度图并且计算1702相关联的相机姿态。深度图被集成到最内体1704并且流传输1706被应用于最内体。在流传输出来期间,该过程用来自较精细体的聚集数据填充1708较粗略体。
在一示例中,一种用于构造现实世界环境的3D模型的装置,包括:
输入接口,所述输入接口被安排成接收由移动环境捕捉设备捕捉到的现实世界环境的深度图的流;
至少一个并行处理单元,所述至少一个并行处理单元被安排成根据所述深度图来计算包括表示所述现实世界环境中的各表面的值的3D模型;
所述并行处理单元处的存储器,所述存储器被安排成将所述3D模型存储在包括根层节点、多个中间层节点以及多个叶节点的分层结构中,所述节点中的每一个具有表示所述现实世界环境的一部分的相关联的体素网格,所述体素网格在所述叶节点处比在所述根节点处具有更精细的分辨率;
所述并行处理单元被安排成在所述根节点和中间节点处计算并存储描述所述分层结构的元数据,以及在所述叶节点处计算并存储表示各表面的所述值。
例如,所述并行处理单元被安排成通过使用原子队列分配存储器块形成内部节点和叶节点。
例如,所述并行处理单元被安排成在考虑距3D模型所建模的表面的深度观测距离的细化策略的基础上形成内部节点和叶节点。
例如,所述装置具有至少部分地使用从以下中的任一者或多者选择的硬件逻辑来实现的所述并行处理单元:现场可编程门阵列、程序专用集成电路、程序专用标准产品、片上系统、复杂可编程逻辑器件、图形处理单元。
作为替换或补充,本文所述的功能可至少部分地由一个或多个硬件逻辑组件来执行。例如,但非限制,可被使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、程序专用的集成电路(ASIC)、程序专用的标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD),图形处理单元(GPU)。
图18示出示例性的基于计算的设备1800的各个组件,设备1800可以被实现为任何形式的计算和/或电子设备,并在其中能实现上述3D建模技术的实施例。
基于计算的设备1800包括一个或多个处理器1802,这些处理器可以是微处理器、控制器或用于处理计算机可执行指令以控制设备操作以便执行3D重构的任何其他合适类型的处理器。在一些示例中,例如在使用片上系统架构的示例中,处理器1802可以包括一个或多个固定功能块(亦称加速器),这些块以硬件(而非软件或固件)来实现3D建模、渲染或流传输方法的一部分。
基于计算的设备1800还包括经由通信接口1806与处理器1802进行通信的图形处理系统1804,并包括被安排成以快速且高效的方式执行并行的、线程化的操作的一个或多个图形处理单元1808。图形处理系统1804还包括被安排成启用自图形处理单元1808的快速并行访问的存储器设备1810。在各示例中,存储器设备1810可存储3D模型,并且图形处理单元1808可执行上述模型生成和光线投射运算。
基于计算的设备1800还包括被安排成接收来自诸如移动环境捕捉设备(包括深度相机)等一个或多个设备的输入以及可任选地接收来自一个或多个用户输入设备(例如,游戏控制器、鼠标、和/或键盘)的输入的输入/输出接口1812。输入/输出接口1812还可作为通信接口来操作,它被安排成与一个或多个通信网络(例如,因特网)进行通信。
还提供了显示器接口1814并且它被安排成向与该基于计算的设备集成在一起或与该基于计算的设备进行通信的显示系统提供输出。显示系统可提供图形用户界面,或任何合适类型的其他用户界面,但这不是必需的。
可以使用可由基于计算的设备1800访问的任何计算机可读介质来提供计算机可执行指令。计算机可读介质可以包括例如诸如存储器1816等计算机存储介质和通信介质。诸如存储器1816等计算机存储介质包括以用于存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EPROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或者可用于存储信息以供计算设备访问的任何其他非传输介质。相反,通信介质可以以诸如载波或其他传输机构等已调制数据信号来体现计算机可读指令、数据结构、程序模块或者其他数据。如本文所定义的,计算机存储介质不包括通信介质。因此,计算机存储介质不应被解释为本质上是传播信号。传播信号可存在于计算机存储介质中,但是传播信号本身不是计算机存储介质的示例。虽然在基于计算的设备1800中示出了计算机存储介质(存储器1816),然而应当理解,该存储可以是分布式的或位于远处并经由网络或其他通信链路(例如,使用通信接口1812)来访问。
可以在基于计算的设备处提供包括操作系统1818的平台软件或任何其他合适的平台软件以使得能够在该设备上执行应用软件1820。存储器1816可存储用于实现以下各项的功能的可执行指令:密集模型集成引擎1822(例如,被安排成使用参考图7描述的过程来在3D模型中构建模型)、密集模型可视化引擎1824(例如,被安排成使用图9的光线投射过程来输出模型的经渲染的图像)、以及密集模型查询引擎1826(被安排成从模型获取数据,例如用于构造多边形网格)。存储器还可提供数据存储1830,数据存储1830可被用来提供对由处理器1802在执行3D建模技术时使用的数据的存储,诸如用于存储多边形网格。数据存储1830还可存储从3D模型流传输出来的数据。数据存储1830可以存储参数值、用户设置、深度图、经渲染的图像或其他数据。存储器1816可以存储用于实现相机跟踪引擎1828的功能以跟踪移动环境捕捉设备的姿态的可执行指令。存储器1816可以存储用于实现各示例中的流传输引擎1832的功能的可执行指令,其中数据被流传输进入3D模型或从3D模型流传输出来,例如,如参考图11-13所述。
输入/输出控制器1812和显示器接口1814中任何接口可包括使用户能够按自然的、免受诸如鼠标、键盘、遥控器等输入设备所施加的人工约束的方式与基于计算的设备交互的NUI技术。可以提供的NUI技术的示例包括但不限于依赖于语音和/或话音识别、触摸和/或指示笔识别(触敏显示器)、屏幕上和屏幕附近的姿势识别、空中姿势、头部和眼睛跟踪、语音和话音、视觉、触摸、姿势以及机器智能的那些技术。可被使用NUI技术的其他示例包括意图和目的理解系统,使用深度相机(如立体相机系统、红外相机系统、rgb相机系统以及这些的组合)的运动姿势检测系统,使用加速度计/陀螺仪的运动姿势检测,面部识别,3D显示,头部、眼睛和注视跟踪,沉浸式增强现实和虚拟现实系统,以及用于使用电场传感电极(EEG和相关方法)的感测大脑活动的技术。
此处所使用的术语‘计算机’或‘基于计算的设备’是指带有处理能力以便可以执行指令的任何设备。本领域技术人员可以理解,这样的处理能力被结合到许多不同设备中,并且因此术语‘计算机’和‘基于计算的设备’各自包括个人计算机、服务器、移动电话(包括智能电话)、平板计算机、机顶盒、媒体播放器、游戏控制台、个人数字助理和许多其它设备。
本文描述的方法可由有形存储介质上的机器可读形式的软件来执行,例如计算机程序的形式,该计算机程序包括在该程序在计算机上运行时适用于执行本文描述的任何方法的所有步骤的计算机程序代码装置并且其中该计算机程序可被包括在计算机可读介质上。有形存储介质的示例包括计算机存储设备,计算机存储设备包括计算机可读介质,诸如盘(disk)、拇指型驱动器、存储器等而不包括所传播的信号。传播信号可存在于有形存储介质中,但是传播信号本身不是有形存储介质的示例。软件可适于在并行处理器或串行处理器上执行以使得各方法步骤可以按任何合适的次序或同时执行。
这承认,软件可以是有价值的、单独地可交换的商品。它旨在包含运行于或者控制“哑”或标准硬件以实现所需功能的软件。它还旨在包含例如用于设计硅芯片,或者用于配置通用可编程芯片的HDL(硬件描述语言)软件等“描述”或者定义硬件配置以实现期望功能的软件。
本领域技术人员会认识到,用于存储程序指令的存储设备可分布在网络上。例如,远程计算机可以存储被描述为软件的进程的示例。本地或终端计算机可以访问远程计算机并下载软件的一部分或全部以运行程序。可另选地,本地计算机可以根据需要下载软件的片段,或在本地终端上执行一些软件指令,并在远程计算机(或计算机网络)上执行另一些软件指令。本领域的技术人员还将认识到,通过利用本领域的技术人员已知的传统技术,软件指令的全部,或一部分可以通过诸如DSP、可编程逻辑阵列等等之类的专用电路来实现。
对精通本技术的人显而易见的是,此处给出的任何范围或设备值可以被扩展或改变,而不会丢失寻求的效果。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
可以理解,上文所描述的优点可以涉及一个实施例或可以涉及多个实施例。各实施例不仅限于解决任何或全部所陈述的问题的那些实施例或具有任何或全部所陈述的优点那些实施例。进一步可以理解,对“一个”项目的引用是指那些项目中的一个或多个。
此处所描述的方法的步骤可以在适当的情况下以任何合适的顺序,或同时实现。另外,在不偏离此处所描述的主题的精神和范围的情况下,可以从任何一个方法中删除各单独的框。上文所描述的任何示例的各方面可以与所描述的其他示例中的任何示例的各方面相结合,以构成进一步的示例,而不会丢失寻求的效果。
此处使用了术语‘包括’旨在包括已标识的方法的框或元件,但是这样的框或元件不包括排它性的列表,方法或设备可以包含额外的框或元件。
可以理解,上面的描述只是作为示例给出并且本领域的技术人员可以做出各种修改。以上说明、示例和数据提供了对各示例性实施例的结构和使用的全面描述。虽然上文以一定的详细度或参考一个或多个单独实施例描述了各实施例,但是,在不偏离本说明书的精神或范围的情况下,本领域的技术人员可以对所公开的实施例作出很多更改。

Claims (10)

1.一种计算机实现的方法,包括:
在处理器处接收由移动环境捕捉设备捕捉到的现实世界环境的深度图的流;
根据所述深度图来计算包括表示所述现实世界环境中的各表面的值的3D模型;
将所述3D模型存储在包括根层节点、多个内部层节点以及多个叶节点的分层结构中,所述节点中的每一个具有表示所述现实世界环境的一部分的相关联的体素网格,所述体素网格在所述叶节点处比在所述根节点处具有更精细的分辨率;
在所述根节点和内部节点处存储描述所述分层结构的元数据;
在所述叶节点处存储表示各表面的所述值。
2.如权利要求1所述的方法,其特征在于,将所述3D模型存储在分层结构中包括在细化策略的基础上形成所述内部层节点和所述叶节点,所述细化策略检查来自一深度图的深度观测是否接近表示所述现实世界环境中的表面的所述值中的至少一些值。
3.如权利要求2所述的方法,其特征在于,所述细化策略通过使用截短区来检查来自一深度图的深度观测是否接近所述值中的至少一些值,所述截短区根据来自所述移动环境捕捉设备的所述深度观测而自适应。
4.如权利要求1所述的方法,其特征在于,将所述3D模型存储在分层结构中包括通过对所述根节点的体素网格的所选体素中的每一所选体素使用一线程块来并行地形成所选体素的内部节点。
5.如权利要求1所述的方法,其特征在于,将所述3D模型存储在分层结构中包括通过一内部节点的每所选体素使用一个线程来并行地形成内部节点的体素网格的所选体素中的每一所选体素的子节点。
6.如权利要求1所述的方法,其特征在于,将所述3D模型存储在分层结构中包括向所述分层结构的多个层中的每一层分配固定大小的存储器池。
7.如权利要求6所述的方法,其特征在于,每一固定大小的存储器池包括备份存储和空闲列表,所述备份存储是多个存储器块,每一存储器块根据在该分层结构的一层处使用的体素网格大小来确定大小,所述空闲列表是备份存储存储器块的索引的队列。
8.如权利要求1所述的方法,其特征在于,所述元数据包括指示与一节点相关联的至少一个深度观测是否接近表示所述现实世界环境中的表面的所述值中的至少一些值的接近表面标志。
9.一种计算机实现的方法,包括:
在处理器处接收由移动环境捕捉设备捕捉到的现实世界环境的深度图的流,并且还在所述处理器处接收与每一深度图相关联的所述移动环境捕捉设备的位置和定向;
根据所述深度图来计算包括表示所述现实世界环境中的各表面的值的3D模型;
将所述3D模型存储在并行处理单元的存储器中;
使用所述移动环境捕捉设备的当前位置和定向来计算所述现实世界环境的活动区;
将所述活动区映射到所述存储器的工作集;
在所述映射的基础上在所述并行处理单元的存储器与主机设备的存储器之间流传输所述3D模型的值。
10.一种用于构造现实世界环境的3D模型的装置,包括:
输入接口,所述输入接口被安排成接收由移动环境捕捉设备捕捉到的现实世界环境的深度图的流;
多个并行处理单元,所述多个并行处理单元被安排成根据所述深度图来计算包括表示所述现实世界环境中的各表面的值的3D模型;
每一并行处理单元具有使用相同量的存储器来存储所述3D模型的至少一部分的存储器,并且其中对于所述并行处理单元中的每一者,所述存储器被映射到所述现实世界环境中的不同物理尺寸。
CN201480033727.8A 2013-06-12 2014-06-09 可伸缩体积3d重构 Active CN105378796B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/916,477 2013-06-12
US13/916,477 US20140368504A1 (en) 2013-06-12 2013-06-12 Scalable volumetric 3d reconstruction
PCT/US2014/041528 WO2014200914A1 (en) 2013-06-12 2014-06-09 Scalable volumetric 3d reconstruction

Publications (2)

Publication Number Publication Date
CN105378796A true CN105378796A (zh) 2016-03-02
CN105378796B CN105378796B (zh) 2018-12-18

Family

ID=51168372

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480033727.8A Active CN105378796B (zh) 2013-06-12 2014-06-09 可伸缩体积3d重构

Country Status (4)

Country Link
US (2) US20140368504A1 (zh)
EP (1) EP3008702B1 (zh)
CN (1) CN105378796B (zh)
WO (1) WO2014200914A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107223267A (zh) * 2016-04-20 2017-09-29 上海联影医疗科技有限公司 图像重建方法和系统
CN110199322A (zh) * 2017-04-28 2019-09-03 谷歌有限责任公司 从内部空间的3d网格表示提取2d平面图
CN110320553A (zh) * 2018-03-30 2019-10-11 中国石油化工股份有限公司 地震属性求取的分布式实现方法
CN110383340A (zh) * 2016-08-19 2019-10-25 莫维迪厄斯有限公司 使用稀疏体积数据进行路径规划
CN112068791A (zh) * 2020-09-04 2020-12-11 京东方科技集团股份有限公司 旋转显示设备的显示数据的存储方法、寻址方法及设备
CN112604283A (zh) * 2020-12-29 2021-04-06 珠海金山网络游戏科技有限公司 数据渲染方法及装置
CN115906590A (zh) * 2023-01-05 2023-04-04 苏州数算软云科技有限公司 一种注塑充型的模拟填充方法及装置

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012168322A2 (en) 2011-06-06 2012-12-13 3Shape A/S Dual-resolution 3d scanner
JP6353214B2 (ja) 2013-11-11 2018-07-04 株式会社ソニー・インタラクティブエンタテインメント 画像生成装置および画像生成方法
US9866815B2 (en) 2015-01-05 2018-01-09 Qualcomm Incorporated 3D object segmentation
EP3268938A1 (en) * 2015-03-12 2018-01-17 Happy L-Lord AB System, method and device for three-dimensional voxel-based modeling
US10360718B2 (en) * 2015-08-14 2019-07-23 Samsung Electronics Co., Ltd. Method and apparatus for constructing three dimensional model of object
CN114119751A (zh) * 2015-11-20 2022-03-01 奇跃公司 用于大规模确定rgbd相机姿势的方法和系统
WO2017142977A1 (en) 2016-02-15 2017-08-24 Meta Company Apparatuses, methods and systems for tethering 3-d virtual elements to digital content
WO2017143303A1 (en) * 2016-02-17 2017-08-24 Meta Company Apparatuses, methods and systems for sharing virtual elements
GB2548143A (en) * 2016-03-10 2017-09-13 Lancaster Univ Business Entpr Ltd Surface modelling
DE112016007098T5 (de) * 2016-07-26 2019-04-18 Hewlett-Packard Development Company, L.P. Indexierung von voxeln für das 3d-drucken
US10395423B2 (en) * 2016-12-29 2019-08-27 Intel Corporation Apparatus and method for rendering adaptive mesh refinement (AMR) data
US10943088B2 (en) 2017-06-14 2021-03-09 Target Brands, Inc. Volumetric modeling to identify image areas for pattern recognition
US10559126B2 (en) * 2017-10-13 2020-02-11 Samsung Electronics Co., Ltd. 6DoF media consumption architecture using 2D video decoder
US10726626B2 (en) * 2017-11-22 2020-07-28 Google Llc Interaction between a viewer and an object in an augmented reality environment
CN108460842A (zh) * 2017-11-28 2018-08-28 广东鸿威国际会展集团有限公司 一种用于创建虚拟三维环境的系统及方法
EP3729376A4 (en) * 2017-12-22 2021-01-20 Magic Leap, Inc. PROCESS OF RENDERING OF OCCLUSION USING A RAY THROWING AND ACTUAL DEPTH
US10410403B1 (en) * 2018-03-05 2019-09-10 Verizon Patent And Licensing Inc. Three-dimensional voxel mapping
US10977856B2 (en) * 2018-03-29 2021-04-13 Microsoft Technology Licensing, Llc Using a low-detail representation of surfaces to influence a high-detail representation of the surfaces
CN108921774A (zh) * 2018-06-08 2018-11-30 广州虎牙信息科技有限公司 模型的存储结构及相关编辑方法、装置、设备及存储介质
US11911908B2 (en) * 2018-12-21 2024-02-27 Intrinsic Innovation Llc Dynamic probabilistic motion planning
JP7161154B2 (ja) * 2018-12-21 2022-10-26 公立大学法人会津大学 階層バウンディングボリューム生成方法、コンピュータプログラム及びコンピュータ装置
US11328481B2 (en) 2020-01-17 2022-05-10 Apple Inc. Multi-resolution voxel meshing
US11348319B1 (en) * 2020-01-22 2022-05-31 Facebook Technologies, Llc. 3D reconstruction of a moving object
WO2022164452A1 (en) * 2021-01-29 2022-08-04 Hewlett-Packard Development Company, L.P. Lattice structures with generated surface patterns
CN113283643B (zh) * 2021-05-12 2022-04-15 广州达泊智能科技有限公司 Agv终点筛选方法、电子装置和计算机可读存储介质
DE102021124009A1 (de) * 2021-09-16 2023-03-16 Hyperganic Group GmbH Verfahren zum Erzeugen eines dreidimensionalen Modells eines Objektes zum Steuern eines 3D-Druckers
CN115344901B (zh) * 2022-10-18 2023-01-24 山东捷瑞数字科技股份有限公司 一种基于三维引擎的三维模型自动爆炸拆解方法
CN116912431B (zh) * 2023-09-14 2023-12-22 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备、存储介质及程序产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1681330A (zh) * 2004-03-08 2005-10-12 三星电子株式会社 自适应2n叉树生成方法及3D体数据编码和解码方法和设备
US20060006309A1 (en) * 2004-07-06 2006-01-12 Jerry Dimsdale Method and apparatus for high resolution 3D imaging
CN1790421A (zh) * 2001-11-27 2006-06-21 三星电子株式会社 基于深度图像表示三维物体的装置和方法
CN102622776A (zh) * 2011-01-31 2012-08-01 微软公司 三维环境重构
CN102663722A (zh) * 2011-01-31 2012-09-12 微软公司 使用深度图像的活动对象分割

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020191034A1 (en) * 2000-06-28 2002-12-19 Sowizral Henry A. Size conditioned visibility search system and method
RU2215326C2 (ru) * 2001-06-29 2003-10-27 Самсунг Электроникс Ко., Лтд. Иерархическое основанное на изображениях представление неподвижного и анимированного трехмерного объекта, способ и устройство для использования этого представления для визуализации объекта
KR100450823B1 (ko) * 2001-11-27 2004-10-01 삼성전자주식회사 깊이 이미지 기반 3차원 물체의 표현을 위한 노드 구조
KR100513732B1 (ko) * 2002-12-05 2005-09-08 삼성전자주식회사 3차원 객체 데이터 부호화 및 복호화 방법 및 장치
KR100519780B1 (ko) * 2004-02-17 2005-10-07 삼성전자주식회사 3차원 체적 데이터 부호화/복호화 방법 및 장치
US8401242B2 (en) 2011-01-31 2013-03-19 Microsoft Corporation Real-time camera tracking using depth maps
US20140324204A1 (en) * 2013-04-18 2014-10-30 Massachusetts Institute Of Technology Methods and apparati for implementing programmable pipeline for three-dimensional printing including multi-material applications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1790421A (zh) * 2001-11-27 2006-06-21 三星电子株式会社 基于深度图像表示三维物体的装置和方法
CN1681330A (zh) * 2004-03-08 2005-10-12 三星电子株式会社 自适应2n叉树生成方法及3D体数据编码和解码方法和设备
US20060006309A1 (en) * 2004-07-06 2006-01-12 Jerry Dimsdale Method and apparatus for high resolution 3D imaging
CN102622776A (zh) * 2011-01-31 2012-08-01 微软公司 三维环境重构
CN102663722A (zh) * 2011-01-31 2012-09-12 微软公司 使用深度图像的活动对象分割

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MING ZENG ETC: ""Octree-based fusion for realtime 3D reconstruction"", 《GRAPHICAL MODELS 》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107223267B (zh) * 2016-04-20 2021-01-01 上海联影医疗科技股份有限公司 图像重建方法和系统
CN107223267A (zh) * 2016-04-20 2017-09-29 上海联影医疗科技有限公司 图像重建方法和系统
CN110392902B (zh) * 2016-08-19 2024-01-12 莫维迪厄斯有限公司 使用稀疏体积数据的操作
CN110392902A (zh) * 2016-08-19 2019-10-29 莫维迪厄斯有限公司 使用稀疏体积数据的操作
CN110494895A (zh) * 2016-08-19 2019-11-22 莫维迪厄斯有限公司 使用稀疏体积数据的渲染操作
CN110383340A (zh) * 2016-08-19 2019-10-25 莫维迪厄斯有限公司 使用稀疏体积数据进行路径规划
US11965743B2 (en) 2016-08-19 2024-04-23 Movidius Limited Operations using sparse volumetric data
US11920934B2 (en) 2016-08-19 2024-03-05 Movidius Limited Path planning using sparse volumetric data
US11680803B2 (en) 2016-08-19 2023-06-20 Movidius Ltd. Rendering operations using sparse volumetric data
CN110494895B (zh) * 2016-08-19 2023-09-19 莫维迪厄斯有限公司 使用稀疏体积数据的渲染操作
CN110199322A (zh) * 2017-04-28 2019-09-03 谷歌有限责任公司 从内部空间的3d网格表示提取2d平面图
CN110320553A (zh) * 2018-03-30 2019-10-11 中国石油化工股份有限公司 地震属性求取的分布式实现方法
CN112068791A (zh) * 2020-09-04 2020-12-11 京东方科技集团股份有限公司 旋转显示设备的显示数据的存储方法、寻址方法及设备
CN112068791B (zh) * 2020-09-04 2024-01-23 京东方科技集团股份有限公司 旋转显示设备的显示数据的存储方法、寻址方法及设备
CN112604283A (zh) * 2020-12-29 2021-04-06 珠海金山网络游戏科技有限公司 数据渲染方法及装置
CN115906590A (zh) * 2023-01-05 2023-04-04 苏州数算软云科技有限公司 一种注塑充型的模拟填充方法及装置

Also Published As

Publication number Publication date
CN105378796B (zh) 2018-12-18
US20200160597A1 (en) 2020-05-21
WO2014200914A1 (en) 2014-12-18
US20140368504A1 (en) 2014-12-18
EP3008702B1 (en) 2019-11-06
EP3008702A1 (en) 2016-04-20
US11107272B2 (en) 2021-08-31

Similar Documents

Publication Publication Date Title
CN105378796A (zh) 可伸缩体积3d重构
CN102622776B (zh) 三维环境重构
US11816907B2 (en) Systems and methods for extracting information about objects from scene information
EP3727622B1 (en) Caching and updating of dense 3d reconstruction data
CN105164726B (zh) 用于3d重构的相机姿态估计
CN106803267B (zh) 基于Kinect的室内场景三维重建方法
CN102609942B (zh) 使用深度图进行移动相机定位
Chen et al. Scalable real-time volumetric surface reconstruction.
Newcombe et al. Kinectfusion: Real-time dense surface mapping and tracking
CN100407798C (zh) 三维几何建模系统和方法
CN103988226B (zh) 用于估计摄像机运动以及用于确定实境三维模型的方法
CN104616345B (zh) 一种基于八叉树森林压缩的三维体素存取方法
WO2020263471A1 (en) Caching and updating of dense 3d reconstruction data
CN109084746A (zh) 用于具有辅助传感器的自主平台引导系统的单目模式
CN110490917A (zh) 三维重建方法及装置
CN105190703A (zh) 使用光度立体来进行3d环境建模
Mudge et al. Viewpoint quality and scene understanding
CN116097316A (zh) 用于非模态中心预测的对象识别神经网络
Rudomin et al. Gpu generation of large varied animated crowds
Khan et al. A review of benchmark datasets and training loss functions in neural depth estimation
CN117440140B (zh) 一种基于虚拟现实技术的多人异地过节服务系统
EP3776488B1 (en) Using a low-detail representation of surfaces to influence a high-detail representation of the surfaces
Westerteiger Virtual Reality Methods for Research in the Geosciences
Fei Visualization and Intelligent Solutions for Big Pavement Data
Mukhopadhyay et al. A Machine Learning-Based Framework for Real-Time 3D Reconstruction and Space Utilization in Built Environments

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant