一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用深度信息快速3D重建的制作方法

2022-03-26 02:45:50 来源:中国专利 TAG:

用深度信息快速3d重建
技术领域
1.本技术总体上涉及使用三维(3d)重建来渲染场景的交叉现实系统。


背景技术:

2.计算机可以控制人类用户接口以创建x现实(xr或交叉现实)环境,在该环境中,由计算机生成被用户所感知(perceive)的xr环境的部分或全部。这些xr环境可以是虚拟现实(vr)、增强现实(ar)和混合现实(mr)环境,其中xr环境的部分或全部可以由计算机部分地使用描述该环境的数据生成。该数据可以描述例如虚拟对象,该虚拟对象可以以用户感应(sense)或感知为物理世界的一部分并且可以与虚拟对象交互的方式来渲染。由于数据是通过用户接口设备(例如,头戴式显示设备)渲染和呈现的,因此用户可能体验到这些虚拟对象。数据可以显示给用户看,或者可以控制播放给用户听的音频,或者可以控制感触(tactile)(或触觉(haptic))接口,从而使用户能够体验到用户感应或感知到感觉虚拟对象的触摸感觉。
3.xr系统可对许多应用很有用,跨越科学可视化、医学培训、工程设计和原型制作、远程操纵和远程呈现以及个人娱乐等领域。与vr相比,ar和mr包括一个或多个与物理世界的真实对象相关的虚拟对象。虚拟对象与真实对象交互的体验极大地增强了用户使用xr系统的乐趣,也为各种应用打开了大门,这些应用呈现了关于如何改变物理世界的现实且易于理解的信息。
4.xr系统可以将系统的用户周围的世界的物理表面表示为“网格”。网格可以由多个相互连接的三角形表示。每个三角形具有连接物理世界内的对象的表面上的点的边,使得每个三角形表示表面的一部分。关于表面的一部分的信息(例如颜色、纹理或其他属性)可以关联地存储在三角形内。在操作中,xr系统可以处理图像信息以检测点和表面,从而创建或更新网格。


技术实现要素:

5.本技术的各方面涉及用于利用深度信息进行快速3d重建的方法和装置。在此描述的技术可以一起使用、单独使用或以任何合适的组合使用。
6.一些实施例涉及一种便携式电子系统。所述便携式电子系统包括:深度传感器,被配置为捕获关于物理世界的信息,以及至少一个处理器,被配置为执行计算机可执行指令以至少部分地基于所捕获的关于所述物理世界的信息来计算所述物理世界的部分的三维3d表示。所述计算机可执行指令包括用于以下的指令:根据所捕获的信息来计算包括多个像素的深度图像,每个像素指示到所述物理世界中的表面的距离;至少部分地基于所捕获的信息,确定所述深度图像的所述多个像素中的有效像素和无效像素;用所述有效像素来更新所述物理世界的所述部分的3d表示;以及用所述无效像素来所述更新物理世界的所述部分的3d表示。
7.在一些实施例中,计算所述深度图像包括:计算关于由所述多个像素所指示的距
离的置信水平,以及确定所述有效像素和所述无效像素包括:对于所述多个像素中的每个像素,确定对应的置信水平是否低于预定值,以及在所述对应的置信水平低于所述预定值时,将所述像素指定为无效像素。
8.在一些实施例中,用所述有效像素来更新所述物理世界的所述部分的3d表示包括:用所述有效像素所指示的距离来修改所述物理世界的所述部分的3d表示的几何形状。
9.在一些实施例中,用所述有效像素来更新所述物理世界的所述部分的3d表示包括:将对象添加到对象地图。
10.在一些实施例中,用所述无效像素来更新所述物理世界的所述部分的3d表示包括:从所述对象地图中移除对象。
11.在一些实施例中,用所述无效像素来更新所述物理世界的所述部分的3d表示包括:至少部分地基于由所述无效像素所指示的距离,从所述物理世界的所述部分的3d表示中移除一个或多个重建表面。
12.在一些实施例中,在由对应的无效像素所指示的距离在所述传感器的操作范围之外时,从所述物理世界的所述部分的3d表示中移除一个或多个重建表面。
13.在一些实施例中,所述传感器包括:光源,被配置为发射以频率调制的光;像素阵列,包括多个像素电路,并被配置为检测被对象反射的在所述频率的光;以及混合器电路,被配置为计算所反射的光的幅度图像和所反射的光的相位图像,所述幅度图像指示由所述像素阵列中的所述多个像素电路所检测的所反射的光的幅度,所反射的光的相位图像指示由所述像素阵列中的所述多个像素电路所检测的所发射的光与所反射的光之间的相位移动。至少部分地基于所述相位图像来计算所述深度图像。
14.在一些实施例中,确定所述有效像素和所述无效像素包括:对于所述深度图像的所述多个像素中的每个像素,确定所述幅度图像中的对应幅度是否低于预定值,以及在所述对应幅度低于所述预定值时,将所述像素指定为无效像素。
15.一些实施例涉及至少一种非瞬态计算机可读介质,其用多个计算机可执行指令编码,所述多个计算机可执行指令在由至少一个处理器执行时执行用于提供物理世界的部分的三维3d表示的方法。所述物理世界的所述部分的3d表示包括与所述物理世界的所述部分的多个体积对应的多个体素。所述多个体素存储带符号距离和权重。所述方法包括:在用户的视场内发生变化时,捕获关于所述物理世界的所述部分的信息;基于所捕获的信息来计算深度图像,所述深度图像包括多个像素,每个像素指示到所述物理世界的所述部分中的表面的距离;至少部分地基于所捕获的信息,确定所述深度图像的所述多个像素中的有效像素和无效像素;用所述有效像素来更新所述物理世界的所述部分的3d表示;以及用所述无效像素来更新所述物理世界的所述部分的3d表示。
16.在一些实施例中,所捕获的信息包括关于由所述多个像素所指示的距离的置信水平。确定所述有效像素和所述无效像素包括:对于所述多个像素中的每个像素,确定对应的置信水平是否低于预定值,以及在所述对应的置信水平低于所述预定值时,将所述像素指定为无效像素。
17.在一些实施例中,用所述有效像素来更新所述物理世界的所述部分的3d表示包括:至少部分地基于所述深度图像的所述有效像素,计算带符号距离和权重,将所计算的权重与在所述体素中的相应所存储的权重相组合,并将所组合的权重存储为所存储的权重,
以及将所计算的带符号距离与在所述体素中的相应所存储的带符号距离相组合,并将所组合的带符号距离存储为所存储的带符号距离。
18.在一些实施例中,用所述无效像素来更新所述物理世界的所述部分的3d表示包括:至少部分地基于所述深度图像的所述无效像素,计算带符号距离和权重。所述计算包括:基于所述深度图像被捕获的时间来修改所计算的权重,将经修改的权重与在所述体素中的相应所存储的权重相组合,以及对于每个所组合的权重,确定所组合的权重是否高于预定值。
19.在一些实施例中,修改所计算的权重包括:对于每个所计算的权重,确定在与所计算的权重对应的所计算的带符号距离与相应所存储的带符号距离之间是否存在差异。
20.在一些实施例中,修改所计算的权重包括:在确定存在所述差异时,减小所计算的权重。
21.在一些实施例中,修改所计算的权重包括:在确定不存在差异时,将所计算的权重分配为经修改的权重。
22.在一些实施例中,用所述无效像素来更新所述物理世界的所述部分的3d表示包括:在所组合的权重被确定为高于所述预定值时,基于所述深度图像被捕获的时间来进一步修改所计算的权重。
23.在一些实施例中,用所述无效像素来更新所述物理世界的所述部分的3d表示包括:在所组合的权重被确定为低于所述预定值时,将所组合的权重存储为所述所存储的权重,将对应的所计算的带符号距离与相应所存储的带符号距离相组合,并将所组合的带符号距离存储为所存储的带符号距离。
24.一些实施例涉及一种操作交叉现实xr系统以重建三维3d环境的方法。所述xr系统包括处理器,所述处理器被配置为与由用户佩戴的传感器通信以处理图像信息,所述传感器捕获所述传感器的视场中的各区域的信息。所述图像信息包括根据所捕获的信息而计算的深度图像。所述深度图像包括多个像素。每个像素指示到所述3d环境中的表面的距离。所述方法包括:至少部分地基于所捕获的信息,将所述深度图像的所述多个像素确定为有效像素和无效像素;用所述有效像素来更新所述3d环境的表示;以及用所述无效像素来更新所述3d环境的表示。
25.在一些实施例中,用所述有效像素来更新所述3d环境的表示包括:至少部分地基于所述有效像素,修改所述3d环境的表示的几何形状。
26.在一些实施例中,用所述无效像素来更新所述3d环境的表示包括:至少部分地基于所述无效像素,从所述3d环境的表示中移除表面。
27.前述发明内容通过举例说明的方式来提供,并且不是旨在进行限制。
附图说明
28.附图不是旨在按比例绘制。在附图中,在各个附图中示出的每个相同或几乎相同的部件由相同的数字表示。为了清楚起见,并非每个部件都会在每个附图中被标记。在附图中:
29.图1是示出根据一些实施例的简化的增强现实(ar)场景的示例的示意图。
30.图2是示出根据一些实施例的包括视觉遮挡、基于物理的交互和环境推理的示例
性3d重建用例的示例性简化ar场景的草图。
31.图3是示出根据一些实施例的ar系统中的数据流的示意图,该ar系统被配置为提供ar内容与物理世界交互的体验。
32.图4是示出根据一些实施例的ar显示系统的示例的示意图。
33.图5a是示出根据一些实施例的当用户穿戴随着用户通过物理世界环境移动时渲染ar内容的ar显示系统的示意图。
34.图5b是示出根据一些实施例的观看光学组件和附属部件的示意图。
35.图6是示出根据一些实施例的使用3d重建系统的ar系统的示意图。
36.图7a是示出根据一些实施例的离散为体素的3d空间的示意图。
37.图7b是示出根据一些实施例的相对于单个视点的重建范围的示意图。
38.图7c是示出根据一些实施例的相对于单个位置处的重建范围的感知范围的示意图。
39.图8a至8f是示出根据一些实施例的通过从多个位置和视点观看物理世界中的表面的图像传感器将该表面重建为体素模型的示意图。
40.图9a是示出根据一些实施例的由体素表示的场景、场景中的表面、以及捕获深度图像中的表面的深度传感器的示意图。
41.图9b是示出与基于距表面的距离而分配给图9a的体素的截断带符号距离和权重相关的截断带符号距离函数(tsdf)的示意图。
42.图10是示出根据一些实施例的示例性深度传感器的示意图。
43.图11是示出根据一些实施例的操作xr系统以重建3d环境的示例性方法的流程图。
44.图12是示出根据一些实施例的确定图11中的深度图像中的有效和无效像素的示例性方法的流程图。
45.图13是示出根据一些实施例的用图11中的有效像素来更新3d重建的示例性方法的流程图。
46.图14a是示出根据一些实施例的有效像素和无效像素的示例性深度图像。
47.图14b是没有无效像素的图14a的示例性深度图像。
48.图15是示出根据一些实施例的用图11中的无效像素来更新3d重建的示例性方法的流程图。
49.图16是示出根据一些实施例修改图15中所计算的权重的示例性方法的流程图。
具体实施方式
50.本文描述了用于在xr系统中提供x现实(xr或交叉现实)环境的三维(3d)表示的方法和装置。为了向用户提供逼真的xr体验,xr系统必须了解用户的物理环境,以便相对于真实对象正确地关联虚拟对象的位置。
51.然而,提供环境的3d表示构成了重大挑战。可能需要大量处理来计算3d表示。xr系统必须知道如何相对于用户头部、身体等正确地定位虚拟对象,并渲染这些虚拟对象,以便它们看起来与物理对象进行逼真的交互。例如,虚拟对象可能被用户与虚拟对象出现的位置之间的物理对象遮挡。随着用户相对于环境的位置发生变化,环境的相关部分也会发生变化,这可能需要进一步处理。此外,随着对象在环境中的移动(例如,从沙发上取下垫子),
通常需要更新3d表示。必须在不使用生成xr环境的xr系统的大量计算资源的情况下,快速执行更新用户正在体验的环境的3d表示,因为用于更新环境的3d表示的xr系统的计算资源无法执行其他功能。
52.发明人已经认识到并理解通过使用由传感器捕获的信息来加速xr环境的3d表示的创建和更新且计算资源使用率低的技术。深度,表示从传感器到环境中对象的距离,可以由传感器测量。
53.使用所测量的深度,xr系统可以维护环境中对象的地图(map)。该地图可以相对频繁地被更新,因为深度传感器可以每秒数十次的速率输出测量结果。此外,可能需要相对较少的处理以从深度中识别对象,可以频繁更新利用深度所制作的地图,以较低的计算负担来识别用户附近的新对象,或者相反,识别先前在用户附近的对象已经移动。
54.然而,发明人已经认识到,深度可以提供关于是否应该修改用户附近的对象的地图的不完整或模糊的信息。先前从深度中检测到的对象可能由于各种原因而无法被检测到,例如,表面消失、在不同角度和/或不同照明条件下观察表面、传感器未拾取介入(interpose)对象,和/或表面在传感器范围之外。
55.在一些实施例中,可以通过从地图中选择性地移除在当前深度中未被检测到的对象来维持对象的更准确的地图。例如,可以基于沿着穿过对象的先前位置的视线在深度中检测比对象的先前位置距离用户更远的表面来移除对象。
56.在一些实施例中,基于传感器所捕获的信息,例如,由表面所反射的光的幅度,深度可以与不同的置信水平相关联。较小的幅度可以指示对相关联的深度的较低置信水平,而较大的幅度可以指示较高的置信水平。各种原因可能导致传感器测量被分配为低置信水平。例如,距离传感器最近的表面可能在传感器的操作范围之外,从而无法收集到关于环境中的表面的准确信息。替代地或附加地,表面可能具有较差的反射特性,使得深度传感器检测不到来自表面的太多辐射,并且所有测量都以相对低的信噪比进行。替代地或附加地,表面可以被另一表面遮蔽,使得传感器获取不到关于该表面的信息。
57.在一些实施例中,深度图像中的深度的置信水平可用于选择性地更新对象的地图。例如,如果一个或多个深度像素具有以高置信度指示由深度传感器检测到表面位于对象地图中指示出现对象的位置后面的值,则可以更新对象地图以指示对象不再出现在该位置。然后可以更新对象地图以指示对象已从环境中移除或移动到不同位置。
58.在一些实施例中,用于识别新位置中的对象的置信阈值可以不同于用于从先前检测到的位置移除对象的阈值。用于移除对象的阈值可以低于用于添加对象的阈值。例如,低置信度测量可以提供关于表面的位置的足够噪声的信息,基于这些测量所添加的表面将具有如此不精确的位置,以致于它可能引入比不添加表面更多的错误。然而,如果表面(无论其在置信水平范围内的哪个位置)位于对象位置的后面,则噪声表面可以足以从环境的地图中移除对象。类似地,一些深度传感器根据物理原理操作,对于超出操作范围的深度可能产生模糊的深度测量。当使用来自这些传感器的深度时,超出传感器的操作范围的测量可能会被视为无效而被丢弃。然而,当表面的所有模糊位置都对应于地图中的对象位置后面的位置时,那些由于其他原因将被视为无效的测量仍然可以用于确定对象应该从地图中移除。
59.在一些实施例中,3d重建可以采用有助于选择性地更新对象的地图的格式。3d重
建可以具有多个体素,每个体素表示由3d重建所表示的环境的体积。每个体素可以被分配一个带符号距离函数的值,指示从体素到所检测到的表面的在其各自角度中的距离。在带符号距离函数是截断带符号距离函数的实施例中,体素中对于距离的最大绝对值可以被截断到某个最大值t,使得带符号距离将位于从-t到t的区间内。此外,每个体素可以包括权重,指示对于体素的距离准确地反映到表面的距离的确定性。
60.在一些实施例中,可以基于具有权重高于阈值的体素,从作为环境的3d表示的一部分的对象地图中添加或移除对象。例如,如果被识别为对象的一部分的表面位于特定位置的确定性高,在某个阈值之上,则可以更新地图以显示对象现在位于该位置或对象已经移动到那个位置。相反,如果在地图中所指示的位置后面已经检测到表面从而包含对象的确定性高,则可以更新地图以指示该对象被移除或移动到另一位置。
61.在一些实施例中,可以基于深度测量的序列,从地图添加或移除对象。存储在每个体素中的权重可以随时间更新。当在一个位置重复地检测到表面时,存储在具有相对于该表面定义的值的体素中的权重可以被增加。相反,可以基于指示表面不再存在于该位置的新测量结果或测量结果的差异从而无法确认表面的存在,而减小指示先前检测到的表面仍然存在的体素的权重。
62.如本文所述的技术可以与多种类型的设备一起或单独地用于多种类型的场景,包括提供交叉现实场景的具有有限计算资源的可穿戴或便携式设备。在一些实施例中,这些技术可以由形成xr系统的一部分的服务来实现。
63.图1-2示出了这样的场景。为了说明的目的,ar系统被用作xr系统的示例。图3-8示出了示例性ar系统,其包括可以根据本文描述的技术进行操作的一个或多个处理器、存储器、传感器和用户接口。
64.参考图1,描绘了一个户外ar场景4,其中ar技术的用户看到了物理世界公园状的设置6,其特征在于人、树、背景中的建筑物以及混凝土平台8。除了这些项目之外,ar技术的用户还认为他们“看到”了站在物理世界混凝土平台8上的机器人雕像10、以及飞行着的看起来像是大黄蜂的拟人化的卡通般的化身角色2,即使这些元素(例如,化身角色2和机器人雕像10)在物理世界中不存在。由于人类视觉感知和神经系统的极端复杂性,因此要产生一种在其他虚拟或物理世界图像元素中促进虚拟图像元素的舒适的、感觉自然的、丰富的呈现的ar技术是有挑战的。
65.这样的ar场景可以通过包括3d重建部件的系统来实现,该系统可以构建和更新用户周围的物理世界表面的表示。该表示可用于在基于物理的交互中遮挡渲染、放置虚拟对象,以及用于虚拟角色路径规划和导航,或用于其中使用关于物理世界的信息的其他操作。图2描绘了户内ar场景200的另一示例,其示出了根据一些实施例的示例性3d重建用例,包括视觉遮挡202、基于物理的交互204和环境推理206。
66.示例性场景200是具有墙壁、墙壁一侧上的书架、房间角落处的落地灯、地板、沙发和地板上的咖啡桌的客厅。除了这些物理项目之外,ar技术的用户还感知虚拟对象,诸如沙发后面墙上的图像、飞过门的鸟儿、从书架上窥视的鹿、以及具有放在咖啡桌上的风车形式的装饰品。对于墙壁上的图像,ar技术不仅需要关于墙壁的表面的信息,还需要关于房间内正遮挡图像的对象和表面的信息(例如灯的形状)以正确渲染虚拟对象。对于飞翔的飞鸟,ar技术需要关于房间周围所有对象和表面的信息,用于以逼真的物理效果渲染鸟儿,以避
开对象和表面或在鸟儿碰撞时反弹。对于鹿,ar技术需要关于表面(例如,地板或咖啡桌)的信息,以计算鹿的放置位置。对于风车,系统可以标识其是与桌子分离的对象,并且可以推理它是可移动的,而书架的角落或墙壁的角落可被推理为是固定的。这样的区别可以用于推理关于场景的哪些部分在各种操作的每一个操作中被使用或更新。
67.可以通过包括多个部件的系统向用户呈现场景,多个部件包括可以刺激一个或多个用户感应(包括视觉声音和/或触摸)的用户接口。另外,该系统可包括可以测量场景的物理部分的参数(包括用户在场景的物理部分内的位置和/或运动)的一个或多个传感器。此外,该系统可包括具有相关联的计算机硬件(例如存储器)的一个或多个计算设备。这些部件可以集成到单个设备中,也可以分布在多个互连的设备中。在一些实施例中,这些部件中的一些或全部可以集成到可穿戴设备中。
68.图3描绘了根据一些实施例的被配置为提供ar内容与物理世界306交互的体验的ar系统302。ar系统302可包括显示器308。在所示的实施例中,显示器308可以由用户作为头戴式耳机的一部分来佩戴,使得用户可以像一副护目镜或眼镜一样将显示器戴在他们的眼睛上。显示器的至少一部分可以是透明的,使得用户可以观察透视现实(see-through reality)310。透视现实310可以对应于物理世界306在ar系统302的当前视点内的部分,在用户正戴着并入了ar系统的显示器和传感器的头戴式耳机来获取关于物理世界的信息的情况下,ar系统302的当前视点可对应于用户的视点。
69.ar内容也可被呈现在显示器308上,覆盖在透视现实310上。为了在显示器308上提供ar内容和透视现实310之间的准确交互,ar系统302可包括被配置为捕获关于物理世界306的信息的传感器322。
70.传感器322可包括输出深度图像312的一个或多个深度传感器。每个深度图像312可具有多个像素,每个像素可表示在相对于深度传感器的特定方向上到物理世界306中的表面的距离。原始深度数据可来自深度传感器以创建深度图像。这样的深度图像可与深度传感器可以形成新图像的速度一样快地被更新,每秒可达成百上千次。但是,该数据可能有噪声且不完整,并且在所示的深度图像上具有被显示为黑色像素的孔。在一些实施例中,孔可以是没有被分配值的像素,或者具有低置信度以致任何值低于阈值并且被忽略的像素。
71.系统可包括其他传感器,例如图像传感器。图像传感器可获取可以以其他方式被处理以表示物理世界的信息。例如,可以在3d重建部件316中处理图像以创建网格,网格表示物理世界中对象的连接部分。关于这些对象的元数据,包括例如颜色和表面纹理,可以类似地用传感器获取并存储为3d重建的一部分。
72.系统还可以获取关于用户相对于物理世界的头部姿势(headpose)的信息。在一些实施例中,传感器310可包括可用于计算和/或确定头部姿势314的惯性测量单元。用于深度图像的头部姿势314可指示传感器以例如六个自由度(6dof)捕获深度图像的当前视点,但是头部姿势314可用于其他目的,诸如将图像信息与物理世界的特定部分相关或将佩戴在用户头上的显示器的位置与物理世界相关。在一些实施例中,头部姿势信息可以以不同于imu的其他方式(例如,分析图像中的对象)来推导。
73.3d重建部件316可接收来自传感器的深度图像312和头部姿势314以及任何其他数据,并将该数据集成到重建318中,重建318可至少看起来是单个的组合的重建。重建318可比传感器数据更完整并且噪声更少。3d重建部件316可使用随时间变化的来自多个视点的
传感器数据的空间和时间平均来更新重建318。
74.重建318可包括具有包括例如体素、网格、平面等的一种或多种数据格式的物理世界的表示。不同格式可表示物理世界的相同部分的替代表示,或者可表示物理世界的不同部分。在所示的示例中,在重建318的左侧,物理世界的部分被呈现为全局表面;在重建318的右侧,物理世界的部分被呈现为网格。
75.重建318可用于ar功能,诸如产生物理世界的表面表示以用于遮挡处理或基于物理的处理。该表面表示可随着用户移动或物理世界中对象的变化而变化。重建318的各方面可例如由产生在世界坐标中变化的全局表面表示的部件320使用,该变化的全局表面表示可由其他部件使用。
76.ar内容可以基于该信息例如由ar应用304来生成。ar应用304可以是例如基于关于物理世界的信息(例如,视觉遮挡、基于物理的交互和环境推理)执行一个或多个功能的游戏程序。它可以通过查询来自3d重建部件316产生的重建318的不同格式的数据来执行这些功能。在一些实施例中,部件320可被配置为当物理世界的感兴趣区域中的表示变化时输出更新。该感兴趣区域例如可被设置为近似于系统的用户的附近的物理世界的一部分,例如用户视场内的部分,或者被投影(预测/确定)为进入用户的视场。
77.ar应用304可使用该信息来生成和更新ar内容。ar内容的虚拟部分可与透视现实310结合被呈现在显示器308上,从而创建逼真的用户体验。
78.在一些实施例中,可以通过可穿戴显示系统向用户提供ar体验。图4示出了可穿戴显示系统80(以下称为“系统80”)的示例。系统80包括头戴式显示设备62(以下称为“显示设备62”)以及各种机械和电子模块和系统以支持显示设备62的功能。显示设备62可耦合至框架64,框架64可由显示系统用户或观看者60(以下称为“用户60”)佩戴并且被配置为将显示设备62定位在用户60的眼睛的前面。根据各种实施例,显示设备62可以是顺序显示器(sequential display)。显示设备62可以是单眼或双眼的。在一些实施例中,显示设备62可以是图3中的显示器308的示例。
79.在一些实施例中,扬声器66耦合到框架64并被定位在用户60的耳道附近。在一些实施例中,未示出的另一扬声器定位在用户60的另一耳道附近,以提供立体声/可整形(shapeable)声音控制。显示设备62例如通过有线引线或无线连接68可操作地耦合到本地数据处理模块70,该本地数据处理模块70可以以各种配置来安装,例如固定地附接到框架64,固定地附接到由用户60佩戴的头盔或帽子,嵌入耳机中、或以其他方式可拆卸地连接到用户60(例如,以背包式配置,以皮带耦合式配置)。
80.本地数据处理模块70可包括处理器以及数字存储器,例如非易失性存储器(例如闪存),两者均可以用于协助数据的处理、缓存和存储。数据包括a)从传感器(其可以例如可操作地耦合到框架64)捕获的或以其他方式附接到用户60(例如图像捕获设备(例如相机)、麦克风、惯性测量单元、加速度计、指南针、gps单元、无线电设备和/或陀螺仪)的,和/或b)使用远程处理模块72和/或远程数据存储库74获取的数据,可能用于在这样的处理或检索之后传递给显示设备62。本地数据处理模块70可以通过通信链路76、78(例如经由有线或无线通信链路)可操作地分别耦合到远程处理模块72和远程数据存储库74,使得这些远程模块72、74可操作地彼此耦合并且可用作本地处理和数据模块70的资源。在一些实施例中,图3中的3d重建部件316可以至少部分地在本地数据处理模块70中实现。例如,本地数据处理
模块70可被配置为执行计算机可执行指令以至少部分地基于至少该数据的一部分来生成物理世界表示。
81.在一些实施例中,本地数据处理模块70可包括被配置为分析和处理数据和/或图像信息的一个或多个处理器(例如,图形处理单元(gpu))。在一些实施例中,本地数据处理模块70可包括单个处理器(例如,单核或多核arm处理器),这将限制模块70的计算预算但是启用更小型的设备。在一些实施例中,3d重建部件316可使用小于单个arm核的计算预算来在非预定义空间上实时生成物理世界表示,使得可以访问单个arm核的剩余计算预算以用于其他目的,例如提取网格。
82.在一些实施例中,远程数据存储库74可包括数字数据存储设施,其可以通过因特网或“云”资源配置中的其他网络配置来使用。在一些实施例中,所有数据被存储并且所有计算在本地数据处理模块70中被执行,从而允许来自远程模块的完全自主的使用。3d重建例如可以全部或部分地存储在该存储库74中。
83.在一些实施例中,本地数据处理模块70可操作地耦合到电池82。在一些实施例中,电池82是可拆卸电源,例如在反压(counter)电池上方。在其他实施例中,电池82是锂离子电池。在一些实施例中,电池82既包括在系统80的非操作时间期间可由用户60充电的内部锂离子电池又包括可拆卸电池,使得用户60可以在更长的时间段内操作系统80而不必连接到电源以对锂离子电池充电或者必须关闭系统80以更换电池。
84.图5a示出了在用户30在物理世界环境32(以下称为“环境32”)中移动时佩戴渲染ar内容的ar显示系统的用户30。用户30将ar显示系统放置在位置34处,并且ar显示系统记录可通行(passable)世界相对于位置34的环境信息(例如,物理世界中的真实对象的数字表示,其可被存储并随着物理世界中的真实对象的变化来更新),例如与映射特征或定向音频输入有关的姿势。位置34被聚集到数据输入36,并且至少由可通行世界模块38处理,这例如可以通过在图4的远程处理模块72上的处理来实现。在一些实施例中,可通行世界模块38可包括3d重建部件316。
85.可通行世界模块38确定ar内容40可以如从数据输入36确定的那样被放置在物理世界中的位置和方式。通过经由用户接口呈现物理世界的表示和ar内容,ar内容被“放置”在物理世界中,其中ar内容被渲染为好像正在与物理世界中的对象进行交互,并且物理世界中的对象被渲染为好像在适当时ar内容正遮挡用户对这些对象的视线。在一些实施例中,可以通过从重建(例如重建318)中适当地选择固定元素42(例如桌子)的部分来确定ar内容40的形状和位置来放置ar内容。作为示例,固定元素可以是桌子,并且虚拟内容可被放置为使得它看起来好像在该桌子上。在一些实施例中,可以将ar内容放置在视场44中的结构内,该视场可以是当前视场或估计的未来视场。在一些实施例中,可以相对于物理世界的映射网格模型46放置ar内容。
86.如所描绘的,固定元素42用作物理世界内的任何固定元素的代理,其可被存储在可通行世界模块38中,使得用户30可以感知固定元素42上的内容,而系统不必每当用户30看到它时就映射到固定元素42。固定元素42可以因此是来自先前的建模会话的映射网格模型,或者是根据单独的用户确定的,但是都被存储在可通行世界模块38上,以供多个用户将来参考。因此,可通行世界模块38可以从先前映射的环境中识别环境32并显示ar内容,而无需用户30的设备首先映射环境32,从而节省了计算过程和周期并且避免了任何渲染的ar内
容的延迟。
87.物理世界的映射网格模型46可由ar显示系统创建,并且将用于交互和显示ar内容40的适当的表面和度量可被映射并存储在可通行世界模块38中,以供用户30或其他用户将来检索,而无需重新映射或建模。在一些实施例中,数据输入36是诸如地理位置、用户标识和当前活动之类的输入,以向可通行世界模块38指示一个或多个固定元素中的哪个固定元素42可用、哪个ar内容40最后被放置在固定元素42上、以及是否显示该相同的内容(无论用户观看特定的可通行世界模型与否,该ar内容都是“保留(persistent)”内容)。
88.即使在对象被认为是固定的实施例中,可通行世界模块38也可以不时被更新以考虑物理世界中变化的可能性。固定对象的模型可以以非常低的频率被更新。物理世界中的其他对象可能是移动的,也可能不被视为是固定的。为了渲染具有真实感的ar场景,ar系统可以以比用于更新固定对象的频率高得多的频率更新这些非固定对象的位置。为了能够准确跟踪物理世界中的所有对象,ar系统可以从多个传感器(包括一个或多个图像传感器)中提取信息。
89.图5b是观看光学组件48和附属部件的示意图。在一些实施例中,指向用户眼睛49的两个眼睛跟踪相机50检测用户眼睛49的度量,例如眼睛形状、眼睑遮挡、瞳孔方向和用户眼睛49上的闪烁。在一些实施例中,传感器之一可以是深度传感器51,例如飞行时间传感器,向世界发射信号并检测来自附近对象的这些信号的反射以确定到给定的对象的距离。例如,深度传感器可以快速确定对象是否由于这些对象的运动或由于用户姿势的改变而进入用户的视场。然而,可以替代地或附加地,用其他传感器收集关于对象在用户的视场中的位置的信息。例如,深度信息可以从立体视觉图像传感器或全光传感器获得。
90.在一些实施例中,世界相机52记录大于外围的视图以映射环境32并检测可能影响ar内容的输入。在一些实施例中,世界相机52和/或相机53可以是灰度和/或彩色图像传感器,其可以以固定时间间隔输出灰度和/或彩色图像帧。相机53还可在特定时间捕获用户视场内的物理世界图像。基于帧的图像传感器的像素也可以被重复采样,即使它们的值不变。世界相机52、相机53和深度传感器51中的每一个具有相应的视场54、55和56,以从物理世界场景收集数据并记录物理世界场景,例如图5a中描绘的物理世界环境32。
91.惯性测量单元57可以确定观看光学组件48的运动和取向。在一些实施例中,每个部件可操作地耦合到至少一个其他部件。例如,深度传感器51可操作地耦合到眼睛跟踪相机50,作为对相对于用户眼睛49正看着的实际距离的所测量的调节(accommodation)的确认。
92.应当理解,观看光学组件48可以包括图5b所示的一些部件,并且可以包括代替所示部件或除了所示部件之外的部件。在一些实施例中,例如,观看光学组件48可以包括两个世界相机52,而不是四个世界相机。替代地或附加地,相机52和53不需要捕获它们全视场的可见光图像。观看光学组件48可以包括其他类型的部件。在一些实施例中,观看光学组件48可包括一个或多个动态视觉传感器(dvs),其像素可异步响应超过阈值的光强度的相对变化。
93.在一些实施例中,观看光学组件48可以不包括基于飞行时间信息的深度传感器51。在一些实施例中,例如,观看光学组件48可包括一个或多个全光相机,其像素可捕获光强度和入射光的角度,从中可以确定深度信息。例如,全光相机可以包括覆盖有透射衍射掩
模(tdm)的图像传感器。替代地或附加地,全光相机可以包括包含角度敏感像素和/或相位检测自动对焦像素(pdaf)和/或微透镜阵列(mla)的图像传感器。这种传感器可以作为深度信息的来源,代替或补充深度传感器51。
94.还应该理解,图5b中的部件的配置作为示例示出。观看光学组件48可以包括具有任何合适配置的部件,其可以被设置为向用户提供对于特定部件组而言实用的最大视场。例如,如果观看光学组件48具有一个世界相机52,则世界相机可以被放置在观看光学组件的中心区域而不是一侧。
95.来自观看光学组件48中的传感器的信息可以耦合到系统中的一个或多个处理器。处理器可生成可被渲染以使得用户感知与物理世界中的对象交互的虚拟内容的数据。该渲染可以以任何合适的方式来实现,包括生成描绘物理和虚拟对象的图像数据。在其他实施例中,可以通过调制用户通过其观看物理世界的显示设备的不透明度来在一个场景中描绘物理和虚拟内容。可以控制不透明度,以创建虚拟对象的外观,并且还阻止用户看到物理世界中被虚拟对象遮挡的对象。在一些实施例中,图像数据可以仅包括可以被修改的虚拟内容,使得当通过用户界面观看时,虚拟内容被用户感知为与物理世界真实地交互(例如,剪辑内容以解决遮挡)。无论如何向用户呈现内容,都需要物理世界的模型,以便可受物理对象影响的虚拟对象的特性,包括虚拟对象的形状、位置、运动和可见性,可被正确计算。在一些实施例中,模型可包括物理世界的重建,例如重建318。
96.可以根据从用户的可穿戴设备上的传感器所收集的数据创建该模型。但是,在一些实施例中,可以根据多个用户所收集的数据创建模型,该数据可被聚集在远离所有用户的计算设备中(并且可以在“云中”)。
97.可以至少部分地通过3d重建系统(例如,图6中更详细地描绘的图3的3d重建部件316)来创建模型。3d重建部件316可包括感知模块160,感知模块160可生成、更新和存储物理世界的一部分的表示。在一些实施例中,感知模块160可以将传感器的重建范围内的物理世界的部分表示为多个体素。每个体素可以对应于物理世界中预定体积的3d立方体,并且包括表面信息,该表面信息指示在该体素表示的该体积中是否存在表面。可以向体素分配值,该值指示它们的对应体积是否已被确定为包括物理对象的表面,被确定为为空还是尚未用传感器测量并且因此其值是未知的。应当理解,不需要显式地存储指示被确定为空或未知的体素的值,因为可以以任何合适的方式将体素的值存储在计算机存储器中,包括不存储关于被确定为空的或未知的体素的信息。在一些实施例中,xr系统的计算机存储器的一部分可以被映射以表示体素网格并存储各个体素的值。
98.图7a描绘了离散为体素102的3d空间100的示例。在一些实施例中,感知模块160可以确定感兴趣的对象并设置体素的体积,以便捕获感兴趣的对象的特征并避免冗余信息。例如,感知模块160可被配置为标识较大的对象和表面,例如墙壁、天花板、地板和大型家具。因此,可以将体素的体积设置为相对大的大小,例如4cm3的立方体。
99.包括体素的物理世界的重建可被称为体积模型。随着传感器在物理世界中移动,随着时间的推移可创建用于创建体积模型的信息。当包括传感器的可穿戴设备的用户四处移动时,可发生这种运动。图8a-f描绘了将物理世界重建为体积模型的示例。在所示示例中,物理世界包括图8a中所示的表面的一部分180。在图8a中,在第一位置的传感器182可具有视场184,在该视场184内该表面的部分180是可见的。
100.传感器182可以是任何合适的类型,例如深度传感器。但是,深度数据可从图像传感器获得或以其他方式获得。感知模块160可从传感器182接收数据,并且然后如图8b所示设置多个体素186的值,以表示由传感器182在视场184中可见的表面的部分180。
101.在图8c中,传感器182可移动到第二位置并具有视场188。如图8d所示,另一组体素变得可见,并且这些体素的值可被设置为指示该表面已经进入传感器182的视场188的部分的位置。可以将这些体素的值添加到用于该表面的体积模型。
102.在图8e中,传感器182可进一步移动到第三位置并且具有视场190。在所示示例中,该表面的附加部分在视场190中变得可见。如图8f所示,另一组体素可变得可见,并且这些体素的值可被设置为指示该表面已经进入传感器182的视场190的部分的位置。这些体素的值可被添加到用于该表面的体积模型中。如图6所示,该信息可作为体积信息162a被存储为保留世界的一部分。也可以存储关于该表面的信息,例如颜色或纹理。这样的信息可被存储为例如体积元数据162b。
103.除了生成用于保留世界表示的信息之外,感知模块160还可以标识并输出ar系统的用户周围的区域中的变化的指示。这种变化的指示可以触发对作为保留世界的一部分存储的体积数据的更新,或者触发其他功能,诸如触发生成ar内容的触发部件304以更新该ar内容。
104.在一些实施例中,感知模块160可以基于带符号的距离函数(sdf)模型来标识变化。感知模块160可被配置为接收诸如深度图像160a和头部姿势160b之类的传感器数据,并且然后将传感器数据融合到sdf模型160c中。深度图像160a可以直接提供sdf信息,并且图像可被处理以获得sdf信息。sdf信息表示距用于捕获该信息的传感器的距离。由于那些传感器可以是可穿戴单元的一部分,因此sdf信息可以从可穿戴单元的角度以及因此从用户的角度表示物理世界。头部姿势160b可以使sdf信息能够与物理世界中的体素相关。
105.回到图6,在一些实施例中,感知模块160可生成、更新和存储物理世界在感知范围内的部分的表示。感知范围可以至少部分地基于传感器的重建范围来确定,该重建范围可以至少部分地基于传感器的观察范围的极限来确定。作为特定示例,使用有源ir脉冲操作的有源深度传感器可以在一定距离范围内可靠地操作,从而创建传感器的观察范围,该观察范围可以从几厘米或几十厘米到几米。
106.图7b描绘了相对于具有视点106的传感器104的重建范围。可以基于由传感器104捕获的数据来构建视点106内的3d空间的重建。在所示的示例中,传感器104的观察范围为40cm至5m。在一些实施例中,可以将传感器的重建范围确定为小于传感器的观察范围,因为接近其观察极限的传感器输出可更加嘈杂、不完整和不准确。例如,在所示的40cm至5m的示例中,对应的重建范围可被设置为从1至3m,并且使用传感器收集的指示该范围之外的表面的数据可以不被采用。
107.在一些实施例中,感知范围可大于传感器的重建范围。如果使用关于物理世界的数据的部件164需要关于感知范围内的区域的数据,这些区域在物理世界在当前重建范围之内的部分之外,则可以从保留世界162中提供该信息。相应地,通过查询可以容易地访问关于物理世界的信息。在一些实施例中,可以提供api以响应这样的查询,从而提供关于用户的当前感知范围的信息。这样的技术可减少访问现有重建所需的时间并提供改善的用户体验。
108.在一些实施例中,感知范围可以是与围绕用户位置为中心的边界框相对应的3d空间。随着用户移动,在感知范围内的可通过部件164查询的物理世界的部分可以与用户一起移动。图7c描绘了以位置112为中心的边界框110。应当理解,边界框110的大小可被设置为以合理的扩展包围传感器的观察范围,因为用户不能以不合理的速度移动。在所示示例中,用户佩戴的传感器的观察极限为5m。边界框110被设置为20m3的立方体。
109.返回图6,3d重建部件316可包括可与感知模块160交互的附加模块。在一些实施例中,保留世界模块162可以基于感知模块160获取的数据来接收物理世界的表示。保留世界模块162还可包括各种格式的物理世界的表示。例如,可以存储诸如体素的体积元数据162b以及网格162c和平面162d。在一些实施例中,可以保存其他信息,例如深度图像。
110.在一些实施例中,感知模块160可包括以各种格式(包括例如网格160d、平面和语义160e)生成用于物理世界的表示的模块。这些模块可以基于在生成表示时一个或多个传感器的感知范围内的数据以及在先前时间捕获的数据和保留世界162中的信息来生成表示。在一些实施例中,这些部件可以在利用深度传感器捕获的深度信息上进行操作。然而,ar系统可包括视觉传感器,并且可以通过分析单眼或双眼视觉信息来生成这样的表示。
111.在一些实施例中,这些模块可以在物理世界的区域上操作。当感知模块160检测到物理世界在其他子区域中的变化时,那些模块可被触发以更新物理世界的子区域。例如,可以通过在sdf模型160c中检测新表面或其他标准(例如改变表示该子区域的足够数量的体素的值)来检测这种变化。
112.3d重建部件316可包括可从感知模块160接收物理世界的表示的部件164。关于物理世界的信息可由这些部件根据例如来自应用的使用请求来拉取(pull)。在一些实施例中,可以例如经由对预标识区域中的变化或感知范围内的物理世界表示的变化的指示,将信息推送给使用部件。部件164可包括例如执行用于视觉遮挡、基于物理的交互以及环境推理的处理的游戏程序和其他部件。
113.响应于来自部件164的查询,感知模块160可以以一种或多种格式发送对物理世界的表示。例如,当部件164指示该使用是用于视觉遮挡或基于物理的交互时,感知模块160可发送表面的表示。当部件164指示该使用是用于环境推理时,感知模块160可以发送物理世界的网格、平面和语义。
114.在一些实施例中,感知模块160可包括格式化信息以提供部件164的部件。这种部件的示例可以是光线投射部件160f。使用部件(例如,部件164)例如可以从特定视角查询关于物理世界的信息。光线投射部件160f可以从该视点从视场内的物理世界数据的一个或多个表示中选择。
115.从前面的描述中应该理解,感知模块160或ar系统的另一部件可以处理数据以创建物理世界的部分的3d表示。可以通过至少部分地基于相机平截头体和/或深度图像挑选3d重建体积的部分、提取和保留平面数据、捕获、保留和更新允许本地更新同时保持邻居一致性的区块中的3d重建数据、向生成此类场景的应用提供遮挡数据(其中,遮挡数据是从一个或多个深度数据源的组合中推导的)、和/或执行多级网格简化来减少要处理的数据。
116.3d重建系统可以从物理世界的多个视点随时间积分传感器数据。当包括传感器的设备移动时,可以跟踪传感器的姿势(例如,位置和取向)。由于传感器的框架姿势是已知的及其与其他姿势如何相关,物理世界的这些多个视点中的每个视点可被融合在单个的组合
的重建。通过使用空间和时间平均(即,随时间推移从多个视点对数据进行平均),重建可以比原始传感器数据更完整并且噪声更少。重建可包含不同复杂级别的数据,包括例如原始数据(例如实时深度数据)、融合的体积数据(例如体素)和计算的数据(例如网格)。
117.图9a描绘了根据一些实施例的沿着平行于y坐标和z坐标的平面的场景900的截面图。场景中的表面可以使用截断带符号距离函数(tsdf)来表示,tsdf可以将场景中的每个3d点映射为到其最近表面的距离。表示表面上的位置的体素可以被分配零深度。场景中的表面可以对应于一定范围的不确定性,例如因为xr系统可以进行多次深度测量,例如,从两个不同角度或由两个不同用户扫描表面两次。每次测量可能导致深度与其他测量深度略有不同。
118.基于表面的测量位置的不确定性范围,xr系统可以分配与该不确定性范围内的体素相关联的权重。在一些实施例中,距离表面大于某个距离t(除此之外)的体素可以以高置信度传达没有使用。这些体素可以对应于表面前面或后面的位置。这些体素可能会简单地分配大小为t以简化处理。因此,体素可被分配在距离所估计的表面在截断带[-t,t]中的值,负值指示表面前面的位置,正值指示表面后面的位置。xr系统可以计算权重以表示关于计算的到表面的带符号距离的确定性。在所示的实施例中,权重跨越“1”至“0”之间,其中“1”表示最确定而“0”表示最不确定。由于包括例如立体成像、结构光投影、飞行时间相机、声纳成像等的不同技术提供的不同精度,可以基于用于测量深度的技术来确定权重。在一些实施例中,与没有进行准确测量的距离对应的体素可以被分配为零的权重。在这种情况下,体素的大小可以设置为任何值,例如t。
[0119]
xr系统可以通过体素902的网格来表示场景900。如上所述,每个体素可以表示场景900的体积。每个体素可以存储从体素的中心点到其最近表面的带符号距离。正号可以表示在表面后面,而负号可以表示在表面前面。可以将带符号距离计算为从多次测量所获得的距离的加权组合。每个体素可以存储与所存储的带符号距离对应的权重。
[0120]
在所示示例中,场景900包括由深度传感器906在深度图像(未示出)中捕获的表面904。深度图像可以以捕获一些参考点与场景900中的表面之间的距离的任何便利方式被存储在计算机存储器中。在一些实施例中,深度图像可以表示为平行于x坐标和y坐标的平面中的值,如图9a所示,其中参考点是坐标系的原点。x-y平面中的位置可以对应于相对于参考点的方向。在那些像素位置处的值可以指示在平面中的坐标所指示的方向上从参考点到最近表面的距离。这种深度图像可以包括平行于x坐标和y坐标的平面中的像素的网格(未示出)。每个像素可以指示在特定方向上从图像传感器906到表面904的距离。
[0121]
xr系统可以基于由传感器906所捕获的深度图像来更新体素的网格。可以基于深度图像和深度传感器906的对应姿势来计算存储在体素的网格中的tsdf。可以基于深度图像中的一个或多个像素来更新网格中的体素,这取决于例如体素的轮廓是否与一个或多个像素重叠。
[0122]
在所示示例中,在表面904前面但在截断距离-t之外的体素被分配截断距离-t的带符号距离以及权重“1”,因为确定传感器与表面之间的任何都是空的。截断距离-t与表面904之间的体素被分配截断距离-t与0之间的带符号距离以及权重“1”,因为确定在对象外部。表面904与在表面904后面的预定深度之间的体素被分配0与截断距离t之间的带符号距离,以及“1”与“0”之间的权重,因为在表面后面的体素越远,越不确定它表示对象的内部或
空白空间。在预定深度之后,位于表面后面的所有体素都接收零更新。图9b描绘了存储在图9a的一行体素中的tsdf。此外,可能不会针对该深度图像更新部分体素网格,这减少了延迟并节省了计算能力。例如,不针对该深度图像更新所有未落入相机平截头体908的体素。美国专利申请no.16/229,799描述了剔除部分体素网格以用于快速体积重建,其整体并入本文。
[0123]
在一些实施例中,深度图像可以包含模糊数据,这使得xr系统不确定是否更新对应的体素。在一些实施例中,这些模糊数据可用于加速xr环境的3d表示的创建和更新,而不是丢弃模糊数据和/或请求新的深度图像。在此描述的这些技术能够以低计算资源使用率来创建和更新xr环境的3d表示。在一些实施例中,这些技术可以减少由于例如直到更新信息可用的延迟导致或由与繁重计算相关联的延迟导致的时延而造成的xr系统的输出处的伪影。
[0124]
图10描绘了根据一些实施例的示例性深度传感器1202,其可用于捕获对象1204的深度信息。传感器1202可以包括调制器1206,其被配置为例如以可检测频率的周期性模式来调制信号。例如,ir光信号可以用频率在1mhz到100mhz之间的一个或多个周期信号来调制。光源1208可由调制器1206控制以发射以一个或多个期望频率的模式所调制的光1210。被对象1204所反射的反射光1212可以被透镜1214聚集并且被像素阵列1216感测。像素阵列1216可以包括一个或多个像素电路1218。每个像素电路1218可以针对从传感器1202输出的图像的像素产生数据,对应于在相对于传感器1202的方向上从对象反射的光。
[0125]
混合器1220可以接收来自调制器1206输出的信号,使得它可以充当降频转换器。混合器1220可以基于例如所反射的光1212与所发射的光1210之间的相位移动来输出一个或多个相位图像1222。一个或多个相位图像1222的每个图像像素可以具有基于时间的相位,该时间用于所发射的光1210从光源行进到对象的表面并返回到传感器1202。光信号的相位可以通过透射光和反射光的比较来测量,例如,在四个点,这可以对应于来自调制器1206的信号周期上的多个位置,例如四个位置。可以计算这些点处的平均相位差。可以基于所反射的光的相位移动和光的波长来计算从传感器到对象表面的反射光波的点的深度。
[0126]
可以基于例如在阵列1216中的每个像素处所测量的反射光1212的一个或多个峰值幅度,将混合器1220的输出形成为一个或多个幅度图像1224。一些像素可以测量具有低峰值幅度的反射光1212,例如,低于预定阈值,这可能与大噪声相关。低峰值幅度可能由各种原因中的一种或多种引起,包括例如差的表面反射率、传感器与对象1204之间的长距离等。因此,幅度图像中的低幅度可以指示由深度图像的对应像素所指示的深度的低置信水平。在一些实施例中,与低置信水平相关联的深度图像的这些像素可被确定为无效。替代低幅度或除低幅度之外的其他标准可用作指示低置信度。在一些实施例中,用于相位测量的四个点的不对称可以指示低置信度。例如,可以通过一个或多个相位测量在一段时间内的标准偏差来测量不对称性。可用于分配低置信度的其他标准可包括像素电路的过饱和和/或欠饱和。另一方面,具有与高于阈值的置信水平相关联的深度值的深度图像的像素可被分配为有效像素。
[0127]
图11描绘了根据一些实施例的操作xr系统以重建3d环境的方法1000。方法1000可以开始于确定(动作1002)深度图像中的有效和无效像素。可以选择性地定义无效像素以包含深度图像中的模糊数据,例如使用启发式标准,或以其他方式向已分配给体素的距离分
配如此低的置信度,使得该体素可能不会在一些或所有处理操作中使用。在一些实施例中,无效像素可能由各种原因中的一个或多个引起,包括例如光亮的表面、在传感器操作范围之外的表面上进行的测量、由于捕获数据的不对称导致的计算错误、传感器的过饱和或欠饱和等。任何或所有以上或其他标准可用于使深度图像中的像素无效。
[0128]
图12描绘了根据一些实施例的确定深度图像中的有效和无效像素的方法1002。方法1002可以包括在由例如头部姿势、用户位置和/或环境中的物理对象的运动引起的用户的视场改变时,捕获(动作1102)深度信息(例如,红外强度图像)。方法1002可以基于所捕获的深度信息来计算(动作1104)一个或多个幅度图像和一个或多个相位图像。方法1002可以基于所计算的一个或多个幅度图像和一个或多个相位图像来计算(动作1106)深度图像,使得深度图像的每个像素具有相关联的幅度,这可以指示由深度图像的像素所指示的深度的置信水平。
[0129]
返回图11,处理可以基于有效和无效像素。在一些实施例中,具有低于阈值的置信水平的像素,或者以其他方式未通过有效标准和/或满足无效标准的像素可以被设置为无效像素。其他像素可以被视为有效。在一些实施例中,具有高于阈值的置信水平或以其他方式通过有效标准和/或满足有效标准的像素可被设置为有效像素。其他像素可以被视为无效。方法1000可以基于有效像素和/或无效像素来更新(动作1004)xr环境的3d重建。可以根据像素来计算体素的网格,例如图9a中所示。可以使用例如行进立方体算法,根据体素网格来计算环境中的表面。可以处理这些表面以识别前景对象和其他对象。可以以允许相对快速地处理和更新前景对象的方式来存储前景对象。例如,前景对象可以存储在对象地图中,如上所述。
[0130]
在一些实施例中,前景对象地图可以使用不同的数据来更新以将对象添加到地图而不是从地图中移除对象。例如,可以仅使用有效像素来添加对象,而可以使用一些无效像素来移除对象。图13描绘了根据一些实施例利用由传感器所测量的深度图像的有效像素来更新体素网格的方法1004。在图13的示例中,可以计算分配给每个体素的带符号距离和权重,因为每个新的深度传感器测量是基于例如运行平均值进行的。该平均值可以被加权以比先前的测量更偏向于最近的测量和/或偏向于具有更高置信度的测量。此外,在一些实施例中,被视为无效的测量可以根本不用于更新。方法1004可以包括基于深度图像的有效像素来计算(动作1302)带符号距离和权重,将所计算的权重与相应所存储的体素权重进行组合(动作1304),以及将所计算的带符号距离与相应所存储的体素的带符号距离进行组合(动作1306)。在一些实施例中,可以在动作1304之后并且基于动作1304的所组合的权重来执行动作1306。在一些实施例中,可以在动作1304之前执行动作1306。返回参照图11,在一些实施例中,在用有效像素更新3d重建之后,方法1000可以更新(动作1008)3d重建的表示。作为更新的结果,世界构建的表示可以具有不同的几何形状,包括例如不同的网格模型和具有不同形状的全局表面。在一些实施例中,更新可以包括从对象地图中移除对象,其中更新的体素指示检测到新对象和/或先前检测到的对象不再存在或已经移动,例如因为已经以足够的置信度检测到先前检测到的对象位置后面的表面。
[0131]
一些或所有无效体素也可用于处理以移除先前检测到的对象。图14中描绘了示例性深度图像1400a,显示了有效和无效像素。图14b描绘了示例性深度图像1400b,其是移除了无效像素的深度图像1400a。图14a和图14b的比较示出了具有无效像素的图像比移除了
无效像素的图像具有更多的数据。虽然该数据可能有噪声,但它可能足以识别对象是否存在,或者相反,不存在以便观察到更远的表面。因此,诸如在图14a中描绘的数据可用于更新对象地图以移除对象。这种更新可以用更多的数据进行,因此如果只有数据如图14b中所示,则发生得更快。由于更新以移除对象不涉及在地图中不准确地定位对象,因此可以实现更快的更新时间而没有引入错误的风险。
[0132]
可以以任何合适的方式使用无效像素来从对象地图中移除对象。例如,可以保持仅用有效像素所计算的单独的体素网格,用有效和无效像素两者所计算的单独的体素网格。替代地,可以单独处理无效像素以检测表面,然后在单独的步骤中使用这些表面来识别对象地图中不再存在的对象。
[0133]
在一些实施例中,为了更新表示深度图像1400a中所示的房间1402的体素网格,深度图像1400b中的每个有效像素可用于计算网格中一个或多个体素的值。对于一个或多个体素中的每个体素,可以基于深度图像计算带符号距离和权重。与体素相关联地所存储的带符号距离可以用例如所计算的带符号距离和与体素相关联地先前所存储的带符号距离的加权组合来更新。与体素相关联地所存储的权重可以与体素一起更新。尽管该示例被描述为更新深度图像的每个像素的体素,但是在一些实施例中,可以基于深度图像的多个像素来更新体素。在一些实施例中,对于网格中的每个体素,xr系统可以首先识别深度图像中的与该体素对应的一个或多个像素,然后基于所识别的像素来更新该体素。
[0134]
返回参照图11a,不管如何处理无效像素,在动作1006,方法1000可以用无效像素来更新xr环境的3d重建。在所示示例中,在捕获深度图像1400a之前,房间1402的表示包括沙发上的垫子的表面。在深度图像1400a中,与垫子对应的一组像素1404可以由于各种可能的原因被确定为无效。例如,垫子可能因为它覆盖有亮片而具有较差的反射率。动作1006可以基于无效像素更新体素,使得如果垫子表面已经被移除,则从房间1402的表示中移除它,并且如果它仍然在沙发上但是具有较差的反射率,则保留在房间1402的表示中,因为仅处理有效像素不会指示或不会快速或以高置信度指示垫子不再存在。在一些实施例中,动作1006可以包括基于由无效像素所指示的深度来推理表面的状态,并且当在先前指示存在垫子的位置后面检测到表面时,从对象地图中移除垫子。
[0135]
图15描绘了根据一些实施例的在获取新的深度图像时更新体素网格的方法1006。方法1006可以开始于基于深度图像的无效像素来计算(动作1502)带符号距离和权重。方法1006可以包括修改(动作1504)所计算的权重。在一些实施例中,可以基于捕获深度图像的时间来调整所计算的权重。例如,可以为最近捕获的深度图像分配更大的权重。
[0136]
图16描绘了根据一些实施例的修改所计算的权重的方法1504。方法1504可以包括,对于每个所计算的权重,确定(动作1602)在对应的所计算的带符号距离与相应所存储的带符号距离之间是否存在差异。当观察到差异时,方法1504可以减少(动作1604)所计算的权重。当没有观察到差异时,方法1504可以将所计算的权重分配(动作1606)为经修改的权重。例如,如果垫子被移除得太快,则深度图像中的无效像素可能包括比先前捕获的垫子表面的深度更大的深度,这可能表明垫子被移除。另一方面,如果垫子仍在沙发上但反射率较差,则深度图像中的无效像素可能包括与先前捕获的垫子表面的深度相当的深度,这可能表明垫子仍在沙发上。
[0137]
在动作1506处,方法1006可以将经修改的权重与体素中相应的先前所存储的权重
进行组合。在一些实施例中,对于每个体素,所组合的权重可以是先前所存储的权重和根据深度图像所计算的经修改权重的总和。在动作1508,方法1006可以确定每个所组合的权重是否高于预定值。可以基于无效像素的置信水平来选择预定值,使得具有较低置信水平的像素具有较小的权重。当所组合的权重高于预定值时,方法1006可以进一步修改所计算的权重。当所组合的权重低于预定值时,该方法可以继续组合(动作1510)对应所计算的带符号距离与相应所存储的带符号距离。在一些实施例中,如果所组合的权重单独指示与像素对应的表面应该被移除,则可以省略动作1510。
[0138]
在一些实施例中,当收集到新的深度图像时,体素网格中的每个体素可以具有所存储的权重的滚动平均值(rolling average)。每个新值都被加权以更快地显示应该保证从对象地图中添加或删除对象的变化。
[0139]
在一些实施例中,在用无效像素更新3d重建之后,方法1000可以更新(动作1008)世界构建的表示。在一些实施例中,动作1008可以基于更新像素中的带符号距离和权重从环境的3d表示中移除表面。在一些实施例中,动作1008可以基于更新像素中的带符号距离和权重将先前移除的表面添加回环境的3d表示。
[0140]
在一些实施例中,结合图11至图16描述的方法可以在xr系统的一个或多个处理器中执行。
[0141]
因此,已经描述了一些实施例的几个方面,应当理解,本领域技术人员将容易想到各种更改、修改和改进。
[0142]
作为一个示例,结合增强(ar)环境来描述实施例。应当理解,本文描述的一些或全部技术可以在mr环境中或更普遍地在其他xr环境和vr环境中应用。
[0143]
作为另一示例,结合诸如可穿戴设备之类的设备来描述实施例。应当理解,本文描述的一些或全部技术可以经由网络(例如云)、离散应用和/或设备、网络和离散应用的任何合适的组合来实现。
[0144]
作为另外的示例,结合基于飞行时间技术的传感器来描述实施例。应当理解,本文描述的一些或全部技术可以通过基于任何合适技术的其他传感器来实现,包括例如立体成像、结构光投影、和全光相机。
[0145]
这样的更改、修改和改进旨在成为本公开的一部分,并且旨在落入本公开的精神和范围内。此外,尽管指示了本公开的优点,但是应当理解,并非本公开的每个实施例将包括每个描述的优点。一些实施例可不实现在此以及在某些情况下被描述为有利的任何特征。因此,前面的描述和附图仅作为示例。
[0146]
可以以多种方式中的任何一种来实现本公开的上述实施例。例如,可以使用硬件、软件或其组合来实现实施例。当以软件实现时,软件代码可以在任何合适的处理器或处理器集合上被执行,无论是在单台计算机中提供还是在多台计算机中分布。这样的处理器可被实现为集成电路,在集成电路部件中具有一个或多个处理器,包括本领域已知的命名为诸如cpu芯片、gpu芯片、微处理器、微控制器或协处理器的可商用的集成电路部件。在一些实施例中,处理器可以在诸如asic的定制电路或通过配置可编程逻辑设备而生成的半定制电路中实现。作为另一替代方案,处理器可以是较大的电路或半导体设备的一部分,无论是可商购的、半定制的还是定制的。作为特定示例,一些可商购的微处理器具有多个核,使得这些核中的一个或子集可以构成处理器。但是,可以使用任何适当格式的电路来实现处理
器。
[0147]
此外,应当理解,计算机可以以多种形式中的任何一种来体现,例如机架式计算机、台式计算机、膝上型计算机或平板计算机。另外,计算机可被嵌入通常不被认为是计算机但具有适当处理能力的设备中,包括个人数字助理(pda)、智能电话或任何其他适当的便携式或固定电子设备。
[0148]
此外,计算机可具有一个或多个输入和输出设备。这些设备尤其可以用于呈现用户接口。可以用于提供用户接口的输出设备的示例包括用于视觉呈现输出的打印机或显示屏,以及用于听觉呈现输出的扬声器或其他声音生成设备。可以用于用户接口的输入设备的示例包括键盘和指向设备,例如鼠标、触摸板和数字化平板电脑。作为另一个示例,计算机可以通过语音识别或其他可听格式接收输入信息。在所示的实施例中,输入/输出设备被示为与计算设备物理上分开。然而,在一些实施例中,输入和/或输出设备可以物理地集成到与处理器或计算设备的其他元件相同的单元中。例如,键盘可被实现为触摸屏上的软键盘。在一些实施例中,输入/输出设备可以与计算设备完全断开,并且通过无线连接在功能上集成。
[0149]
这样的计算机可以通过任何适当形式的一个或多个网络互连,包括作为局域网或诸如企业网络或因特网之类的广域网。这样的网络可以基于任何适当的技术,并且可以根据任何适当的协议进行操作,并且可包括无线网络、有线网络或光纤网络。
[0150]
此外,本文概述的各种方法或过程可被编码为可在采用多种操作系统或平台中的任何一种的一个或多个处理器上执行的软件。另外,这样的软件可以使用多种合适的编程语言和/或编程或脚本工具中的任何一种来编写,并且还可被编译为在框架或虚拟机上执行的可执行机器语言代码或中间代码。
[0151]
在这方面,本公开可被体现为编码有一种或多种程序的计算机可读存储介质(或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、压缩光盘(cd)、光盘、数字视频盘(dvd)、磁带、闪存、现场可编程门阵列或其他半导体设备中的电路配置、或其他有形计算机存储介质),这些程序在一台或多台计算机或其他处理器上被执行时执行实现以上讨论的本公开的各种实施例的方法。从前述示例显而易见的是,计算机可读存储介质可以将信息保留足够的时间,以提供非暂时形式的计算机可执行指令。这样的一个或多个计算机可读存储介质可以是可移动的,使得可以将存储在其上的一个或多个程序加载到一个或多个不同的计算机或其他处理器上,以实现如上所述的本公开的各个方面。如本文所使用的,术语“计算机可读存储介质”仅包括可被认为是制造(即,制造品)或机器的计算机可读介质。在一些实施例中,本公开可被体现为除计算机可读存储介质之外的计算机可读介质,例如传播信号。
[0152]
本文在一般意义上使用术语“程序”或“软件”来指代可用于对计算机或其他处理器进行编程以实现如上所述的本公开的各种方面的任何类型的计算机代码或计算机可执行指令集。另外,应了解,根据此实施例的一方面,当被执行时执行本公开的方法的一个或多个计算机程序不需要驻留在单个计算机或处理器上,而是可以以模块化的方式分布在多个不同的计算机或处理器中来实现本公开的各个方面。
[0153]
计算机可执行指令可以采用多种形式,例如由一个或多个计算机或其他设备执行的程序模块。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对
象、部件、数据结构等。通常,在各种实施例中,程序模块的功能可以根据需要进行组合或分布。
[0154]
此外,数据结构可以以任何合适的形式被存储在计算机可读介质中。为了简化说明,数据结构可被显示为具有通过数据结构中的位置相关的字段。这样的关系同样可以通过在传达字段之间的关系的计算机可读介质中为具有位置字段的分配存储设备来实现。但是,可以使用任何合适的机制来建立数据结构的字段中的信息之间的关系,包括通过使用指针、标签或在数据元素之间建立关系的其他机制。
[0155]
本公开的各个方面可以单独地、组合地或以在前述实施例中未具体讨论的各种布置来使用,并且因此不限于应用于在前面的描述中阐述或在附图中示出的部件的细节和布置。例如,一个实施例中描述的方面可以以任何方式与其他实施例中描述的方面组合。
[0156]
此外,本公开可被体现为一种方法,其示例已被提供。作为方法的一部分执行的动作可以以任何合适的方式排序。因此,可以构建这样的实施例,其中以与所示出的顺序不同的顺序执行动作,这可包括同时执行即使在说明性实施例中被示为顺序动作的一些动作。
[0157]
在权利要求中使用序数术语(例如“第一”、“第二”、“第三”等)来修改权利要求元素本身并不表示一个权利要求元素相对于另一个权利要求具有任何优先权、在先权或顺序或执行方法的动作的时间顺序,而是仅用作标签,以区分具有某名称的一个权利要求元素与具有相同名称的另一个元素(但用于序数词)来区分这些权利要求元素。
[0158]
此外,本文中使用的措词和术语是出于描述的目的,并且不应被视为限制。本文中“包括”或“具有”、“包含”、“涉及”及其变体的使用意在涵盖其后列出的项目及其等同物以及附加项目。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献