CN117242492A - 使用占用栅格的场景理解 - Google Patents

使用占用栅格的场景理解 Download PDF

Info

Publication number
CN117242492A
CN117242492A CN202280025517.9A CN202280025517A CN117242492A CN 117242492 A CN117242492 A CN 117242492A CN 202280025517 A CN202280025517 A CN 202280025517A CN 117242492 A CN117242492 A CN 117242492A
Authority
CN
China
Prior art keywords
occupancy grid
cell
user
grid
objects
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.)
Pending
Application number
CN202280025517.9A
Other languages
English (en)
Inventor
D·拉姆纳特
S·董
P·辛哈尔
K·古普塔
S·乔杜里
S·马亨德兰
A·卡莱卡纳
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.)
Magic Leap Inc
Original Assignee
Magic Leap Inc
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 Magic Leap Inc filed Critical Magic Leap Inc
Publication of CN117242492A publication Critical patent/CN117242492A/zh
Pending legal-status Critical Current

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/20Finite element generation, e.g. wire-frame surface description, tesselation
    • 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/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/013Eye tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/0304Detection arrangements using opto-electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/60Type of objects
    • G06V20/64Three-dimensional objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/70Labelling scene content, e.g. deriving syntactic or semantic representations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/004Annotating, labelling

Landscapes

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

Abstract

本文档描述了使用占用栅格的交叉现实系统的场景理解。在一个方面,方法包括识别使用物理环境的图像生成的物理环境的模型中的一个或多个对象。对于每个对象,在对象周围适配边界框。在对象周围的边界框内,生成包括多个单元的占用栅格。基于占用栅格的每个单元是否包括对象的一部分,向单元分配值。生成包括描述对象的占用栅格的信息的对象表示。将对象表示发送到一个或多个设备。

Description

使用占用栅格的场景理解
相关申请的交叉引用
本申请要求于2021年2月4日提交的美国临时申请No.63/145,868的权益,其全部内容通过引用并入本文。
技术领域
本公开涉及用于交叉现实系统的场景理解。
背景技术
计算机可以控制人类用户接口来创建X现实(XR或交叉现实)环境,其中用户感知的一些或全部XR环境是由计算机生成的。这些XR环境可以是虚拟现实(VR)、增强现实(AR)、以及混合现实(MR)环境,其中XR环境的一些或全部可以由计算机部分地使用描述环境的数据来生成。该数据可以描述例如虚拟对象,该虚拟对象可以以用户感觉或感知为物理世界的一部分并且可以与虚拟对象交互的方式被渲染。作为通过用户接口设备(例如头戴式显示设备)渲染和呈现数据的结果,用户可以体验这些虚拟对象。数据可以显示给用户观看,或者可以控制播放给用户听的音频,或者可以控制触觉(或触觉)界面,使得用户能够体验用户感测或感知为感觉虚拟对象的触摸感觉。
XR系统可用于许多应用,涵盖科学可视化、医疗培训、工程设计和原型制作、远程操作和远程呈现、以及个人娱乐等领域。与VR不同,AR和MR包括与物理世界的真实对象相关的一个或多个虚拟对象。虚拟对象与真实对象交互的体验极大地增强了用户使用XR系统的乐趣,并且还为各种应用打开了大门,这些应用提供有关如何改变物理世界的真实且易于理解的信息。
为了真实地渲染虚拟内容,XR系统可以构建系统的用户周围的物理世界的表示。例如,可以通过处理由构成XR系统一部分的可穿戴设备上的传感器所获取的图像来构建该表示。在这样的系统中,用户可以通过环顾用户打算在其中使用XR系统的房间或其他物理环境来执行初始化例程,直到系统获取足够的信息来构建该环境的表示。当系统运行并且用户在环境中移动或移动到其他环境时,可穿戴设备上的传感器可能会获取附加信息以扩展或更新物理世界的表示。
发明内容
该说明书总体描述了使用对象的占用栅格(occupancy grid)来创建和更新XR环境的系统和技术。占用栅格可以表示对象占用的环境的区域。在一些实施方式中,占用栅格包括三维栅格并且栅格的每个单元可以包括指示对象是否占用由单元所表示的环境的区域的值。三维栅格可以包含表示对象所在环境的整个区域的边界框。
占用栅格可用于更新表示物理世界的模型(例如网格),例如更新对象在环境内的位置。例如,可视化系统可以从一个或多个XR显示系统接收物理世界的图像。可视化系统可以分析图像以检测图像中的对象并确定对象在环境内的位置。可视化系统可以生成包括对象的占用栅格信息和边界框的对象表示并将对象表示发送到用户的XR显示系统,而不是更新模型并将模型发送到用户的XR显示系统。XR显示系统可以使用对象表示来更新模型。
一般而言,本说明书中描述的主题的一个创新方面可以体现在包括在使用物理环境的图像所生成的物理环境的模型中识别一个或多个对象的动作的方法中。对于每个对象,在该对象周围适配边界框。在对象周围的边界框内生成包括多个单元的占用栅格。基于占用栅格的每个单元是否包括对象的一部分,向单元分配值。生成包括描述对象的占用栅格的信息的对象表示。对象表示被发送到一个或多个设备。该方面的其他实施例包括对应的计算机系统、装置、以及记录在一个或多个计算机存储设备上的计算机程序,每个被配置为执行方法的动作。一个或多个计算机的系统可以被配置为凭借安装在系统上的软件、固件、硬件或它们的组合来执行特定的操作或动作,这些软件、固件、硬件或它们的组合在操作中引起或导致系统执行动作。一个或多个计算机程序可以被配置为凭借包括指令来执行特定的操作或动作,指令当由数据处理装置执行时,使得该装置执行动作。
上述和其他实施例可以各自任选地单独或组合地包括一个或多个以下特征。在一些方面,基于占用栅格的每个单元是否包括对象的一部分来向单元分配值包括:将第一值分配给包括对象的一部分的每个单元,以及将与第一值不同的第二值分配给不包括对象的任何部分的每个单元。
一些方面可以包括:检测一个或多个对象中的给定对象的变化,生成给定对象的新占用栅格,以及将给定对象的新占用栅格发送到一个或多个设备,而不是物理环境的更新模型。一个或多个设备中的每一个可以使用给定对象的新占用栅格来更新物理环境的本地(local)网格。
在一些方面,模型包括表示物理环境的多个体素。一些方面可以包括基于在体素中识别的对象的类型,向每个体素分配语义标签。一些方面可以包括:基于每个体素的语义标签,对体素进行聚类(cluster)。
本说明书中描述的主题可以在特定实施例中实现并且可以产生以下优点中的一个或多个。使用本文档中描述的场景理解技术可以利用有关物理环境中发现的对象的准确信息来重建物理环境。这种更准确的信息可以使更丰富的AR内容准确地放置在重建中。例如,知道对象是具有至少最小表面积的平坦表面的桌子使得游戏应用能够将适当的AR内容放置在桌子上。
生成表示由对象占用的环境区域的占用栅格,并将描述占用栅格的信息发送到AR系统,而不是更新模型,例如表示环境的栅格,减少了传输信息的延迟,并且大大减少了AR系统存储用于重建环境以供AR系统显示的信息所需的数据存储资源的量。占用栅格能够以紧凑的形式在重建和空间占用中准确放置对象,从而在不牺牲准确性的情况下提供数据存储和延迟优势。这还使得云中的服务器可以使用更强大的计算设备来执行大量计算,而不会增加更新模型的延迟,否则需要下载大型地图的完整网格。
此外,与表示对象所在区域的轮廓的边界框相比,占用栅格可以更好地反映对象的位置和占用情况。对每个对象使用占用栅格可以实现准确表示同一区域内多个对象的占用,例如,其座位位于桌子下方的椅子。
本说明书中描述的主题的一个或多个实施方式的细节在附图和下面的描述中阐述。本主题的其他特征、方面和优点将从说明书、附图和权利要求中变得显而易见。
附图说明
图1是示出简化的增强现实(AR)场景的示例的草图。
图2是示例简化AR场景的草图,示出了XR系统的示例性用例。
图3示出了其中AR系统被配置为提供AR内容与物理世界交互的体验的环境。
图4示出了为用户显示虚拟内容的示例AR显示系统。
图5A示出了当用户在物理世界环境中移动时佩戴渲染AR内容的AR显示系统的用户
图5B示出了观察光学组件和附属部件。
图6A示出了用于重建环境的示例管线。
图6B更详细地示出了示例管线的部件。
图7示出了示例AR显示系统的部件。
图8示出了示例占用栅格。
图9是用于生成对象的对象表示的示例过程的流程图。
图10是可以与本文档中描述的计算机实现的方法结合使用的计算系统的框图。
各个附图中相同的附图标号和标记指示相同的元件。
具体实施方式
该说明书一般描述了使用场景理解来提供包括在物理环境中检测到的对象的X现实(XR或交叉现实)场景的系统和技术。为了向多个用户提供真实的XR体验,XR系统必须了解用户的物理环境,以便正确关联虚拟对象相对于真实对象的位置。XR系统可以构建场景的环境地图,该环境地图可以根据用传感器所收集的图像和/或深度信息来创建,这些传感器是由XR系统的用户所佩戴的XR设备的一部分。
在XR系统中,每个XR设备都可以通过整合在某个时间点在扫描期间所收集的一个或多个图像中的信息来开发其物理环境的本地地图。在一些实施方式中,该地图的坐标系与启动扫描时设备的取向相关联。当用户与XR系统交互时,无论不同的会话与不同的用户相关联,每个用户都有自己的带有扫描环境的传感器的可穿戴设备,还是同一用户在不同的时间使用相同的设备,该取向可以在不同的会话之间发生变化。
然而,在XR系统上执行的应用可以基于持久空间信息来指定虚拟内容的位置,例如可以从规范地图获得的信息,与XR系统交互的多个用户可以以共享方式访问该规范地图。持久空间信息可以由持久地图来表示。持久地图可以存储在远程存储介质(例如,云)中。例如,由用户佩戴的可穿戴XR设备在打开之后可以从诸如云存储之类的持久存储中检索先前创建和存储的适当的存储地图。检索存储地图可以使得能够使用可穿戴设备,而无需使用可穿戴设备上的传感器扫描物理世界。替代地或附加地,系统/设备在进入物理世界的新区域时可以类似地检索适当的存储地图。
在多个设备之间共享有关物理世界的数据可以实现虚拟内容的共享用户体验。例如,可以访问相同存储地图的两个XR设备都可以相对于存储地图进行定位。一旦定位,用户的XR设备就可以渲染具有通过参考存储地图所指定的位置的虚拟内容,通过将该位置转换为由XR设备维护的参考系。XR设备可以使用该本地参考系来控制用户设备的显示以在指定位置渲染虚拟内容。
为了支持这些和其他功能,XR系统可以包含一些部件,这些部件基于用用户XR设备上的传感器所收集的有关物理世界的数据,开发、维护和使用持久空间信息,包括一个或多个存储地图。这些部件可以分布在XR系统上,其中一些部件可以在XR设备的头戴式部分上操作。其他部件可以在计算机上操作,该计算机与通过局域网或个域网耦合到头戴式部分的用户相关联。还有一些可以在远程位置处操作,例如在通过广域网访问的一个或多个服务器上。
这些部件例如可以包括地图合并部件,其可以从由一个或多个用户设备所收集的关于物理世界的信息中识别具有足够质量以存储为持久地图或存储在持久地图中的信息。地图合并部件可以接收来自XR设备的输入,并确定用于更新地图的输入部分的适用性,地图可以采用规范形式。地图可以提供给用户的XR设备。
场景理解部件可用于检测和/或识别对象、生成对象的表示、以及在地图内重建对象。对象识别可以指与环境场景中的对象的交互或智能。场景理解可以指理解场景语义和/或理解/提取关于场景的知识的能力。持久且可共享的对象/语义对于实现智能地图和多人(例如多人游戏)体验非常重要。
场景理解是识别场景的语义的能力,场景包括事物(例如,诸如墙壁、地板、天花板等背景)和对象。它允许区分场景语义,例如静态与动态、材料和照明。
场景理解可用于XR环境中的语义感知用户交互。例如,场景理解可用于定位地板、墙壁和天花板平面,以附着游戏内容;定位沙发、椅子、桌子、或其他家具的网格,以附着游戏内容;估计楼层和房间布局;光线投射以获取对象标签;和/或用于语义感知物理特性。
使用场景理解,地图可以包括有关物理环境中对象的更准确的信息。场景理解计算可以使用远程服务器来执行,例如在云中、远离用户的XR设备。这种基于云的方法可以支持使用相同地图的多用户应用,以在用户之间提供统一的体验。由于在某些实施方式中可能需要绘制非常大的区域,因此使用强大的服务器而不是用户的XR设备来生成和标记地图可能更实用且更快。这也使得此类计算能够离线执行,而不是实时处理。基于云的方法还可以支持企业一次性构建其环境的地图,并使用该地图与其他人共享场景理解技术所提供的扩展信息。这还使得可以根据来自不同生态系统的信息生成地图。
还可以基于从XR设备接收到的新图像和信息随着时间来更新地图。XR系统可以将对象的对象表示发送到XR设备,而不是基于新检测到的对象或先前检测到的对象的变化向XR设备提供完整更新的地图。对象表示可以包括例如表示由对象占用的物理环境的区域的占用栅格。在一些实施方式中,占用栅格包括三维栅格并且栅格的每个单元可以包括指示对象是否占用由单元表示的环境区域的值。三维栅格可以包含表示对象所在环境的整个区域的边界框。
XR设备可以使用对象表示来更新存储在XR设备处的地图,例如通过标记表示环境的网格和/或在地图内显示对象。这还使得XR系统或XR设备能够参考检测到的对象来显示其他对象。例如,如果检测到的对象是桌子,则XR设备可以使用占用栅格来确定由桌子的顶表面占用的环境的部分并在桌子的表面上显示对象。
本文描述的技术可以与多种类型的设备一起或单独使用,并用于多种类型的场景,包括提供增强或混合现实场景的具有有限计算资源的可穿戴或便携式设备。在一些实施方式中,这些技术可以由形成XR系统的一部分的一个或多个服务来实现。
图1是示出简化的增强现实(AR)场景100的示例的草图。AR场景100被描绘为其中AR技术的用户看到物理世界公园状的场景156,该场景以人、树、背景中的建筑物和混凝土平台158为特征。除了这些项目之外,AR技术的用户还感知到他们“看到”站在物理世界混凝土平台158上的机器人雕像157,以及似乎是大黄蜂的化身的卡通状化身角色152飞过,尽管这些元素,例如化身角色152和机器人雕像157并不存在于物理世界中。由于人类视觉感知和神经系统的极端复杂性,开发一种能够在其他虚拟或物理世界图像元素中实现舒适、自然、丰富的虚拟图像元素呈现的AR技术具有挑战性。
这样的AR场景可以通过基于跟踪信息构建物理世界的地图的系统来实现,使用户能够将AR内容放置在物理世界中,确定放置AR内容的物理世界的地图中的位置,保存AR场景,使得放置的AR内容可以在例如不同的AR体验会话期间重新加载以显示在物理世界中,并使多个用户能够共享AR体验。该系统可以构建和更新用户周围的物理世界表面的数字表示。该表示可用于渲染虚拟内容,以便看起来被用户与虚拟内容的渲染位置之间的物理对象完全或部分遮挡,以在基于物理特性的交互中放置虚拟对象,以及用于虚拟角色路径规划和导航,或用于使用有关物理世界的信息的其他操作。
图2是示例简化AR场景200的草图,示出了XR系统的示例性用例。示例场景200是具有墙壁、墙壁一侧上的书架、房间角落处的落地灯、地板、沙发和地板上的咖啡桌的客厅。除了这些物理物品之外,AR技术的用户还感知虚拟对象,例如沙发后面墙壁上的图像202、飞过门的鸟204、从书架上探出头来的鹿、以及放置在咖啡桌上的风车206形式的装饰。
对于墙壁上的图像202,AR技术不仅需要关于墙壁的表面的信息,还需要关于房间中的遮挡了图像的对象和表面的信息,例如灯的形状,以正确地渲染虚拟对象。对于飞翔的鸟204,AR技术需要关于房间周围的所有对象和表面的信息,以利用真实的物理特性来渲染鸟204,以避免对象和表面或者在鸟204碰撞时从它们上弹开。对于鹿来说,AR技术需要有关诸如地板或咖啡桌等表面的信息来计算鹿的放置位置。对于风车206,系统可以识别其是与桌子分离的对象,并且可以确定其是可移动的,而书架的角或墙壁的角可以确定是静止的。这种区别可以用于确定场景的哪些部分在各种操作中的每一个中被使用或更新。
虚拟对象可以放置在之前的AR体验会话中。当新的AR体验会话在客厅开始时,AR技术要求虚拟对象能够准确地显示在先前放置的位置处,并且从不同的角度都可以逼真地看到。例如,风车206应当被显示为立在书上,而不是在没有书的情况下在桌子上方的不同位置处漂移。如果新的AR体验会话的用户的位置没有准确定位在客厅中,则可能会发生这种漂移。作为另一示例,如果用户从与放置风车206时的视点不同的视点观看风车206,则AR技术需要显示的风车206的相应侧面。
场景可以经由包括多个部件的系统呈现给用户,包括可以刺激一个或多个用户感觉(例如视觉、声音和/或触摸)的用户界面。另外,该系统可以包括一个或多个传感器,其可以测量场景的物理部分的参数,包括用户在场景的物理部分内的位置和/或运动。此外,该系统可以包括一个或多个计算设备,以及相关联的计算机硬件,例如存储器。这些部件可以集成到单个设备中,也可以分布在多个互连的设备上。在一些实施方式中,这些部件中的一些或全部可以集成到可穿戴设备中。
图3示出了环境300,其中AR系统302被配置为提供AR内容与物理世界交互的体验。AR系统302可以包括显示器308。在示出的示例中,显示器308可以由用户作为头戴式装置的一部分佩戴,使得用户可以将显示器佩戴在他们的眼睛上,就像一副护目镜或眼镜一样。显示器308的至少一部分可以是透明的,使得用户可以观察透视现实310。透视现实310可以对应于在AR系统302的当前视点内的物理世界306的部分,其可以对应于用户佩戴结合了AR系统的显示器和传感器的头戴式装置来获取关于物理世界的信息的情况下的用户的视点。
AR内容还可以呈现在显示器308上,覆盖在透视现实310上。为了在显示器308上提供AR内容与透视现实310之间的准确交互,AR系统302可以包括被配置为捕获关于物理世界306的信息。
传感器322可以包括输出深度图312的一个或多个深度传感器。每个深度图312可以具有多个像素,每个像素可以表示在相对于深度传感器的特定方向上到物理世界306中的表面的距离。原始深度数据可以来自深度传感器以创建深度图。这种深度图的更新速度可以与深度传感器形成新图像的速度一样快,每秒可以更新数百或数千次。然而,该数据可能有噪声且不完整,并且在所示深度图上具有显示为黑色像素的孔。
该系统可以包括其他传感器,例如图像传感器。图像传感器可以获取单眼或立体信息,这些信息可以被处理以以其他方式表示物理世界。例如,可以在世界重建部件316中处理图像以创建网格,表示物理世界中对象的连接部分。有关此类对象的元数据(包括例如颜色和表面纹理)可以类似地通过传感器获取并存储为世界重建的一部分。
AR系统302还可以获取关于用户相对于物理世界的头部姿势(或“姿势”)的信息。在一些实施方式中,AR系统302的头部姿势跟踪部件可用于实时计算头部姿势。头部姿势跟踪部件可以在具有六个自由度的坐标系中表示用户的头部姿势,六个自由度包括例如在三个垂直轴上的平移(例如,前/后、上/下、左/右)以及围绕三个垂直轴的旋转(例如,俯仰、偏航、以及滚动)。在一些实施方式中,传感器322可包括可用于计算和/或确定头部姿势314的惯性测量单元(“IMU”)。深度图的头部姿势314可指示以六个自由度捕获深度图的传感器的当前视点,但是头部姿势314可以用于其他目的,诸如将图像信息与物理世界的特定部分相关联或者将佩戴在用户头部上的显示器的位置与物理世界相关联。
在一些实施方式中,头部姿势信息可以通过IMU之外的其他方式导出,例如通过分析图像中的对象。例如,头部姿势跟踪部件可以基于由相机捕获的视觉信息和由IMU捕获的惯性信息来计算AR设备与物理对象的相对位置和取向。然后,头部姿势跟踪部件可以通过例如将所计算的AR设备与物理对象的相对位置和取向与物理对象的特征进行比较来计算AR设备的头部姿势。在一些实施方式中,可以通过识别用一个或多个传感器322捕获的图像中的特征来进行该比较,这些特征随着时间的推移是稳定的,使得这些特征在捕获的图像上的位置随时间的变化可以与用户的头部姿势的变化相关联。
在一些实施方式中,AR设备可以根据在用户使用AR设备在物理世界中移动时捕获的一系列图像帧中的连续图像中识别的特征点来构建地图。尽管随着用户移动,每个图像帧可以从不同的姿势拍摄,但是系统可以通过将连续图像帧的特征与先前捕获的图像帧的特征进行匹配来调整每个连续图像帧的特征的取向以匹配初始图像帧的取向。连续图像帧的平移使得表示相同特征的点将匹配来自先前收集的图像帧的对应特征点,可用于对齐每个连续图像帧以匹配先前处理的图像帧的取向。所得到的地图中的帧可以具有当第一图像帧被添加到地图时建立的共同取向。该地图在公共参考系中具有一组特征点,可用于通过将来自当前图像帧的特征与地图进行匹配来确定用户在物理世界中的姿势。
除了能够跟踪用户在环境内的姿势之外,该地图还可以使得AR系统302的其他部件(例如世界重建部件316)能够确定物理对象相对于用户的位置。世界重建部件316可以接收深度图312和头部姿势314以及来自传感器322的任何其他数据,并且将该数据集成到重建318中。重建318可以比传感器数据更完整并且噪声更少。世界重建部件316可以使用来自多个视点的传感器数据随时间的空间和时间平均来更新重建318。
重建318可以包括以一种或多种数据格式的物理世界的表示,包括例如体素、网格、平面等。不同的格式可以表示物理世界的相同部分的替代表示或者可以表示物理世界的不同部分。在所示的示例中,在重建318的左侧,物理世界的部分被呈现为全局表面;在重建318的右侧,物理世界的部分被呈现为网格。
AR系统302可以随着时间的推移从物理世界的多个视点集成传感器数据。当包括传感器的设备移动时,可以跟踪传感器的姿势(例如,位置和取向)。由于传感器的框架(frame)姿势以及它与其他姿势的关系是已知的,物理世界的这些多个视点中的每一个都可以融合在一起形成物理世界的单个组合重建,这可以用作地图的提取(abstract)层并提供空间信息。通过使用空间和时间平均(即,随时间对来自多个视点的数据进行平均)或任何其他合适的方法,重建可以比原始传感器数据更完整且噪声更少。
在图3所示的示例中,地图表示单个可穿戴设备的用户所在的物理世界的一部分。在该场景中,与地图中的帧相关联的头部姿势可以表示为本地(local)头部姿势,指示相对于会话开始时单个设备的初始取向的取向。例如,当设备被打开或以其他方式操作以扫描环境以构建该环境的表示时,可以相对于初始头部姿势来跟踪头部姿势。
与表征物理世界的该部分的内容相结合,地图可以包括元数据。例如,元数据可以指示用于形成地图的传感器信息的捕获时间。替代地或附加地,元数据可以指示在捕获用于形成地图的信息时传感器的位置。位置可以直接表示,例如使用来自GPS芯片的信息,也可以间接表示,例如使用无线(例如Wi-Fi)签名,该签名指示在收集传感器数据时从一个或多个无线接入点接收到的信号强度,和/或在收集传感器数据时用户设备连接到的无线接入点的标识符,例如BSSID。
重建318可用于AR功能,例如产生物理世界的表面表示以用于遮挡处理或基于物理特性的处理。这种表面表示可以随着用户的移动或物理世界中的对象的变化而变化。重建318的各方面可以例如由部件320使用,部件320产生世界坐标中的变化的全局表面表示,其可以由其他部件使用。
AR内容可以基于该信息例如通过AR应用304来生成。AR应用304可以是例如游戏程序,其基于关于物理世界的信息执行一个或多个功能,例如视觉遮挡、基于物理特性的交互、以及环境推理。AR应用304可以通过从由世界重建部件316产生的重建318查询不同格式的数据来执行这些功能。在一些实施方式中,部件320可以被配置为当物理世界的感兴趣区域中的表示变化时输出更新。例如,该感兴趣区域可以被设置为近似系统的用户附近的物理世界的一部分,例如用户的视场内的部分,或者被投影(预测/确定)为进入用户的视场内。
AR应用304可以使用该信息来生成和更新AR内容。AR内容的虚拟部分可以结合透视现实310呈现在显示器308上,创建真实的用户体验。
在一些实施方式中,可以通过XR设备向用户提供AR体验,XR设备可以是可穿戴显示设备,其可以是可以包括远程处理和/或远程数据存储的系统的一部分,和/或在一些实现方式中,由其他用户佩戴的其他可穿戴显示设备。例如,世界重建316或其部分可以在远离用户的XR设备的基于云的系统中实现。
图4示出了为用户显示虚拟内容的示例AR显示系统400。系统400包括头戴式显示设备462(下文中称为“显示设备462”)以及各种机械和电子模块和系统,以支持显示设备462的功能。显示设备462可以被耦合到框架464,其可由显示系统用户或观看者460(下文中称为“用户460”)佩戴并且被配置为将显示设备462定位在用户460的眼睛前面。根据各种实施方式,显示设备462可以是顺序显示。显示设备462可以是单眼的或双眼的。在一些实施方式中,显示设备462可以是图3中的显示器308的示例。
在一些实施方式中,扬声器466被耦合到框架464并且被定位在用户460的耳道附近。在一些实施方式中,另一个扬声器(未示出)被定位在用户460的另一个耳道附近以提供立体声/可塑形声音控制。显示设备462诸如通过有线引线或无线连接468可操作地耦合到本地数据处理模块470,该本地数据处理模块470可以以多种配置安装,诸如固定地附接到框架464、固定地附接到用户560佩戴的头盔或帽子、嵌入耳机中、或以其他方式可拆卸地附接到用户460(例如,在背包式配置中、在带耦合式配置中)。
本地数据处理模块470可以包括处理器以及数字存储器,例如非易失性存储器,例如闪存,这两者都可以用于辅助数据的处理、缓存和存储。数据包括:a)从传感器捕获的数据(传感器可以例如可操作地耦合到框架464)或以其他方式附接到用户460,例如图像捕获设备(例如相机)、麦克风、惯性测量单元、加速计、指南针、GPS单元、无线电设备、和/或陀螺仪;和/或b)使用远程处理模块472和/或远程数据存储库474获取和/或处理的数据,可能用于在这样的处理或检索之后传递到显示设备462。
在一些实施方式中,可穿戴设备可以与远程部件通信。本地数据处理模块470可以通过通信链路476、478,例如经由有线或无线通信链路,分别可操作地耦合到远程处理模块472和远程数据存储库474,使得这些远程模块472、474可操作地彼此耦合并且可用作本地数据处理模块470的资源。在进一步的实施方式中,除了远程数据存储库474之外或作为远程数据存储库474的替代,可穿戴设备可以访问基于云的远程数据存储库和/或服务。在一些实施方式中,上述头部姿势跟踪部件可以至少部分地在本地数据处理模块470中实现。在一些实现方式中,图3中的世界重建部件416可以至少部分地在本地数据处理模块470中实现。例如,本地数据处理模块470可以被配置为执行计算机可执行指令以至少部分地基于至少一部分数据来生成地图和/或物理世界表示。
在一些实施方式中,本地数据处理模块470可以包括被配置为分析和处理数据和/或图像信息的一个或多个处理器(例如,图形处理单元(GPU))。在一些实施方式中,本地数据处理模块470可以包括单个处理器(例如,单核或多核ARM处理器),这将限制本地数据处理模块的计算预算但实现更小型的设备。在一些实施方式中,世界重建部件416可以使用小于单个高级RISC机器(ARM)核的计算预算来在非预定义空间上实时生成物理世界表示,使得单个ARM核的剩余计算预算可以被访问以用于其他用途,例如提取网格。
在一些实施方式中,远程数据存储库474可以包括数字数据存储设施,其可以通过互联网或“云”资源配置中的其他网络配置来获得。在一些实现方式中,所有数据都被存储并且所有计算都在本地数据处理模块470中执行,从而允许从远程模块完全自主地使用。在一些实施方式中,所有数据被存储并且所有或大部分计算在远程数据存储库474中执行,从而允许更小的设备。例如,世界重建可以全部或部分存储在该存储库474中。
在一些实施方式中,世界重建被存储在本地数据处理模块470中。本地数据处理模块470可以接收与位于物理世界中的对象相关的信息并且更新本地存储的世界重建。对象的信息可以包括描述对象在物理世界中的位置以及对象占用的物理世界的区域的信息。例如,对象的信息可以包括对象表示,该对象表示包括对象的边界框信息和对象的占用栅格。
在一些实施方式中,本地数据处理模块470可操作地耦合到电池482。在一些实施方式中,电池482是可拆卸电源,例如反压(counter)电池。在其他实施方式中,电池482是锂离子电池。在一些实施方式中,电池482包括可由用户460在系统480的非操作时间期间充电的内部锂离子电池和可拆卸电池,使得用户460可以操作系统480更长时间段而无需被连接到电源来给锂离子电池充电或者必须关闭系统480来更换电池。
图5A示出了佩戴AR显示系统的用户530,当用户430移动穿过物理世界环境532(下文中称为“环境532”)时渲染AR内容。AR系统沿着用户的移动路径捕获的信息可以被处理成一个或多个跟踪地图。用户530将AR显示系统定位在位置534处,并且AR显示系统记录可通行世界的环境信息,例如,物理世界中真实对象的数字表示,其可以被存储并随着物理世界中的真实对象相对于位置534的变化而更新。该信息可以被存储为与图像、特征、定向音频输入或其他期望数据组合的姿势。位置534被聚集到数据输入536并且至少由可通行世界模块538处理,可通行世界模块538可以例如通过在图4的远程处理模块572上进行处理来实现。在一些实施方式中,可通行世界模块538可以包括头部姿势部件514和世界重建部件516,使得处理后的信息可以与关于在渲染虚拟内容中使用的物理对象的其他信息相结合来指示对象在物理世界中的位置。
可通行世界模块538至少部分确定根据数据输入536所确定的AR内容540可以放置在物理世界中的位置以及如何放置。通过经由用户界面呈现AR内容和物理世界的表示,将AR内容“放置”在物理世界中,其中AR内容被渲染为与物理世界中的对象交互,并且物理世界中的对象被呈现为AR内容在适当时遮挡了用户对这些对象的视图。在一些实现中,可以通过从重建(例如,重建518)中适当地选择固定元素542(例如,桌子)的部分来放置AR内容,以确定AR内容540的形状和位置。作为示例,固定元素可以是桌子,并且虚拟内容可以被定位成使得它看起来在该桌子上。在一些实施方式中,AR内容可以被放置在视场544中的结构内,视场可以是当前视场或估计的未来视场。在一些实现方式中,AR内容可以相对于物理世界的模型546(例如,网格)被持久化。
如图所示,固定元素542用作物理世界内任何固定元素的代理(例如,数字副本),其可以存储在可通行世界模块538中,使得用户530可以感知固定元素542上的内容而无需系统必须在用户530每次看到固定元素542时映射到它。因此,固定元素542可以是来自先前建模会话的网格模型,或者是由单独的用户确定的,但仍然由可通行世界模块538存储以供多个用户将来参考。因此,可通行世界模块538可以从先前映射的环境识别环境532并显示AR内容,而无需用户530的设备首先映射全部或部分环境532,节省计算过程和周期并避免任何渲染的AR内容的延迟。
物理世界的网格模型546可以由AR显示系统创建,并且用于交互和显示AR内容540的适当表面和度量可以由可通行世界模块538存储以供用户530或其他用户将来检索,而无需需要完全或部分重新创建模型。在一些实施方式中,数据输入536是诸如地理位置、用户标识和当前活动之类的输入,以向可通行世界模块538指示一个或多个固定元素中的哪个固定元素542可用、哪个AR内容540最近(last)已被放置在固定元素542上,以及是否显示相同的内容(无论用户观看特定的可通行世界模型,这种AR内容都是“持久”内容)。
即使在对象被认为是固定的(例如,餐桌)的实施方式中,可通行世界模块538也可以不时地更新物理世界的模型中的那些对象,以考虑到物理世界中变化的可能性。固定对象的模型可以以非常低的频率更新。物理世界中的其他对象可能是移动的或不被视为固定的(例如,厨房椅子)。为了渲染具有真实感的AR场景,AR系统可以以比更新固定对象更高的频率更新这些非固定对象的位置。为了准确跟踪物理世界中的所有对象,AR系统可以从多个传感器(包括一个或多个图像传感器)获取信息。如下文更详细描述的,AR系统可以基于接收到的包括每个对象的占用栅格的对象表示来更新对象的模型。
图5B示出了观察光学组件548和附属部件。在一些实现方式中,指向用户眼睛549的两个眼睛跟踪相机550检测用户眼睛549的度量,例如眼睛形状、眼睑遮挡、瞳孔方向、和用户眼睛549上的闪烁。
在一些实施方式中,传感器之一可以是深度传感器551,例如飞行时间传感器,其向世界发射信号并检测来自附近对象的那些信号的反射以确定到给定对象的距离。例如,深度传感器可以快速确定对象是否已经进入用户的视场,无论是由于这些对象的运动还是用户姿势的变化。然而,关于用户视场中的对象的位置的信息可以替代地或附加地用其他传感器来收集。例如,深度信息可以从立体视觉图像传感器或全光传感器获得。
在一些实施方式中,世界相机552记录大于周边的视图以映射和/或以其他方式创建环境532的模型并检测可能影响AR内容的输入。在一些实施方式中,世界相机552和/或相机553可以是灰度和/或彩色图像传感器,其可以以固定时间间隔输出灰度和/或彩色图像帧。相机553还可以捕获特定时间在用户视场内的物理世界图像。基于帧的图像传感器的像素可以被重复采样,即使它们的值不变。世界相机552、相机553和深度传感器551中的每一个都具有各自的视场554、555和556,以从物理世界场景(例如物理世界环境532)收集数据并记录该物理世界场景。
惯性测量单元557可以确定观察光学组件548的移动和取向。在一些实施方式中,每个部件可操作地耦合到至少一个其他部件。例如,深度传感器551可操作地耦合到眼睛跟踪相机550,作为相对于用户眼睛549正在观看的实际距离的测量调节的确认。
在一些实施方式中,观察光学组件548可以包括两个世界相机552而不是四个。替代地或附加地,相机552和553不需要捕获它们的整个视场的可见光图像。观察光学组件548可以包括其他类型的部件。在一些实施方式中,观察光学组件548可以包括一个或多个动态视觉传感器(DVS),其像素可以异步响应超过阈值的光强度的相对变化。
在一些实施方式中,观察光学组件548可以不包括基于飞行时间信息的深度传感器551。在一些实施方式中,例如,观察光学组件548可以包括一个或多个全光相机,其像素可以捕获光强度和入射光的角度,根据其可以确定深度信息。例如,全光相机可以包括覆盖有透射衍射掩模(TDM)的图像传感器。替代地或附加地,全光相机可以包括图像传感器,该图像传感器包含角度敏感像素和/或相位检测自动对焦像素(PDAF)和/或微透镜阵列(MLA)。代替深度传感器551或除了深度传感器551之外,这样的传感器可以用作深度信息源。
还应当理解,图5B中的部件的配置是作为示例提供的。观察光学组件548可以包括具有任何合适配置的部件,其可以被设置为向用户提供对于特定部件组来说实用的最大视场。例如,如果观察光学组件548具有一个世界相机552,则世界相机可以放置在观察光学组件的中心区域而不是一侧。
来自观察光学组件548中的传感器的信息可以耦合到系统中的一个或多个处理器。处理器可以生成可以被渲染以便使用户感知与物理世界中的对象交互的虚拟内容的数据。该渲染可以以任何合适的方式实现,包括生成描绘物理对象和虚拟对象的图像数据。在其他示例中,可以通过调制用户通过其观看物理世界的显示设备的不透明度来在一个场景中描绘物理和虚拟内容。可以控制不透明度以便创建虚拟对象的外观并且还阻止用户看到物理世界中被虚拟对象遮挡的对象。在一些实施方式中,图像数据可以仅包括可以被修改的虚拟内容,使得当通过用户界面查看时,虚拟内容被用户感知为与物理世界真实地交互(例如,剪辑内容以考虑遮挡)。
观察光学组件548上显示内容以在特定位置处创建对象印象的位置可以取决于观察光学组件的物理特性。另外,用户头部相对于物理世界的姿势以及用户眼睛注视的方向可能影响在观察光学组件内容上的特定位置处显示的内容将出现在物理世界中的何处。如上所述的传感器可以收集该信息,和/或提供可以计算该信息的信息,使得接收传感器输入的处理器可以计算应该在观察光学组件548上的何处渲染对象以为用户创建期望的外观。
无论内容如何呈现给用户,都可以使用物理世界的模型,以便可以正确计算可以受物理对象影响的虚拟对象的特征,包括虚拟对象的形状、位置、运动和可见性。在一些实现方式中,模型可以包括物理世界的重建,例如重建518。
该模型可以根据从用户的可穿戴设备上的传感器所收集的数据来创建。然而,在一些实现中,模型可以根据多个用户收集的数据来创建,其可以聚集在远离所有用户的计算设备中(并且可以在“云中”)。该模型可以至少部分地由诸如图3的世界重建部件516的世界重建系统来创建。
图6A示出了用于生成环境的重建的示例管线600。重建可以包括以一种或多种数据格式的物理世界的表示,包括例如体素、网格、平面等。
可通行世界模块620可以与图5A的可通行世界模块538相同或相似,其从多个设备610收集数据611。可通行世界模块620可以由远离设备610的一个或多个远程服务器来实现,例如在基于云的环境中。
这些设备可以包括用户设备,例如用户佩戴的可穿戴XR设备。该数据可以包括例如深度图像(例如深度图312)和可选的彩色图像。对于每个图像,数据还可以包括设备610在设备610捕获图像时的姿势(例如,头部姿势)和位置信息。该信息提供了在捕获图像时设备610的取向和位置。
尽管被示出为单独的部件,但可通行世界模块620可以包括深度地图合并(DMM)引擎630和场景理解引擎650。可通行世界模块620可以聚合从多个设备610接收的图像和其他数据,并且将数据传送至DMM引擎630。
一般而言,DMM引擎630合并由图像表示的地图并重建物理世界的地图。在重建地图时,DMM引擎630生成各种类型的数据670来表示地图。如参考图6B更详细地描述的,该数据670包括在图像中检测/识别的对象的描述、表示由图像描绘的物理世界的图块、物理世界的网格、以及物理世界的平面。
场景理解引擎650可以利用与物理世界中的对象相关的附加数据来丰富由DMM引擎630生成的数据。例如,场景理解引擎650可以例如使用对象识别技术来识别对象,并且生成对象的标签。标签可以指示例如对象的类型和/或对象的身份。场景理解引擎650可以包括地图中的标签和呈现给用户的重建。场景理解引擎650还可以生成关于对象的附加信息,例如提取/生成对象680的表示以及生成表示对象占用的环境区域的占用栅格。设备611可以使用占用栅格来在重建中以适当的位置和取向显示对象,并将AR内容附加到对象。
图6B更详细地示出了示例管线600的部件。如图6B所示,多个设备610向可通行世界模块620提供数据,其包括DMM引擎630和场景理解引擎650。
DMM引擎630可以执行若干地图合并功能以使用从设备610接收到的数据重建物理世界的地图。具体地,DMM引擎630可以对从设备610接收到的深度图像631重新排序。例如,DMM引擎630可以基于位置和/或姿势对图像重新排序,以使相同或相邻区域的图像以新的顺序彼此靠近。
DMM引擎630可以执行深度融合操作632以融合图像以生成物理世界的单个组合重建。DMM引擎630可以使用针对每个图像接收的姿势信息来融合图像。DMM引擎630可以将图像融合在一起并创建由图像描绘的物理世界的体积表示。体积表示可以是体素的形式。每个体素可以对应于物理世界中预定体积的三维立方体,并且包括表面信息,指示体素所表示的体积中是否存在表面。
DMM引擎630还可以执行网格划分操作633以生成表示由图像描绘的物理世界的网格。网格是三维模型,表示物理世界中对象的连接部分。网格可以包括与环境的物理表面和物理世界的对象相对应的顶点、边和面。
DMM引擎630还可以执行平面ID匹配操作634以识别图像所描绘的物理世界中的平面、向平面分配标识符(“ID”)、以及将来自图像的平面与其他图像中的对应平面进行匹配。
DMM引擎630将体素表示、网格和关于平面的信息存储在存储器635中,存储器635可以被实现为随机存取存储器(RAM)。DMM引擎630还可以将地图或其体素表示分割成多个更小的图块,并将这些图块存储在存储器635中。DMM引擎635将在从设备610接收的图像中检测到的每个对象的描述641、图块642和网格643存储在存储器中。DMM引擎630还可以维护对象数据库644,其包括关于对象的信息和关于平面的信息,例如平面ID。该数据库644可用于查询平面或对象。
场景理解引擎650执行深度网络推理以识别网格643中的对象。场景理解引擎650可以使用经训练的机器学习模型(例如,经训练的深度神经网络模型)来识别网格中的对象。对于每个识别的对象,场景理解引擎650可以向包括对象的一部分的每个体素分配语义标签。例如,如果一组体素包括一把椅子,则可以为该组中的每个体素分配标签“椅子”。在一些实施方式中,场景理解引擎650使用三维语义分割网络来生成每体素语义标签。
场景理解引擎650可以执行聚类操作652以生成体素的聚类。每个聚类可以表示在网格643中识别的公共对象。如果存在相同类型的多个对象,则场景理解引擎650可以为该类型的对象的每个实例生成单独的聚类。在一些实施方式中,场景理解引擎650利用DBScan算法将语义标签聚集在一起以形成对象。
场景理解引擎650为每个对象(例如,对应于体素的聚类的每个对象)创建占用栅格。占用栅格可以表示对象占用的环境区域。在一些实施方式中,占用栅格包括三维栅格并且栅格的每个单元可以包括指示对象是否占用由该单元表示的环境区域的值。三维栅格可以包含表示对象所在环境的整个区域的边界框。
为了生成占用栅格,场景理解引擎650可以生成(例如适配(fit)或获得)对象的边界框。例如,场景理解引擎650可以在对象周围适配最小定向边界框以表示对象在网格内的几何位置。场景理解引擎650然后可以将边界框分割成三维的单元的栅格。场景理解引擎650然后可以评估栅格的每个单元以确定是否在单元内找到对象的任何部分。场景理解引擎650可以基于单元是否包括部分或对象来向每个单元分配值。例如,对于包括对象的一部分的单元,场景理解引擎650可以向该单元分配值1。如果单元没有被对象的任何部分占用,则场景理解引擎650可以向该单元分配不同的值,例如零值。
图8示出了示例占用栅格800。示例占用栅格表示由桌子810占用的物理世界的区域。占用栅格800的大小和形状基于生成的包围桌子810的边界框来确定。如图8所示,包括桌子810的一部分的每个单元具有值1,并且不包括桌子810的一部分的每个单元具有值0。为了清楚起见,图8仅示出占用栅格800一侧上的单元的值。
返回参考图6B,场景理解引擎650用占用栅格和关于检测到的对象的其他信息(例如,标识对象类型的标签、边界框信息等)来更新635协议缓冲器(protobuf)。然后移动数据到数据库644。
在一些实施方式中,场景理解引擎650为每个对象创建对象表示并用每个对象表示更新protobuf。对象表示可以包括关于对象的数据。例如,对象的对象表示可以包括地图标识符,例如稀疏地图标识符,其标识地图以及可选地标识对象所在的地图的版本。对象的对象表示可以包括该对象的唯一对象标识符。地图标识符和对象标识符可以是坐标系唯一ID(CFUID),其是跨多个或所有设备610的全局唯一标识符,用于表示地图和持久姿势标识符。
对象的对象表示可以包括语义标签标识符。语义标签标识符可以指示对象的类型或其他语义表示。例如,如果对象表示是房间中的椅子,则语义标签标识符可以是“椅子”。
对象的对象表示可以包括表示对象在地图或网格中的位置的边界框的边界框信息。边界框信息可以包括边界框的中心的坐标,例如x、y、z坐标。边界框信息还可以包括指示边界框在每个方向上从中心延伸的距离的信息,例如延伸x、延伸y和延伸z。边界框信息还可以包括指示边界框内的对象的姿势的信息。
对象的对象表示可以包括占用栅格信息。占用栅格信息可以包括指示栅格的每个单元的位置的信息,以及对于每个单元指示对象的一部分是否在该单元的值。
对象表示可以被发送到设备610,使得可以在向用户显示的重建中准确地显示对象。如果对象改变,例如对象的位置或姿势改变,则可以在从设备610接收的图像中检测到该改变。作为管线600的一部分,场景理解引擎650将生成对象的新的或更新的对象表示并将对象表示发送到设备610。
通过提供对象表示而不是网格,可以在设备610处以减少的延迟来更新重建,并且不占用与网格否则将占用的数据存储一样多的数据存储。占用栅格提供了优于使用更新网格的优点,例如,数据存储、延迟和带宽优点,以及优于边界框的优点。边界框本身并不能提供对对象几何形状的足够描述。相反,边界框仅指示对象的位置和取向。使用占用栅格,设备610和/或可通行世界模块620可以识别对象的平面和网格以放置AR内容。
使用占用栅格还使得设备610能够在查询时在设备610处标记平面和网格,而不会增加使用网格的延迟。这确保了对象信息相对于网格和平面的较小变化的一致性。
图7示出了示例AR显示系统700的部件。AR显示系统700可以包括与AR显示系统400相同或相似的部件。AR显示系统700还可以包括世界重建(WR)查询处理器710、WR引擎720、和存储在存储器中的对象描述732,例如,存储在双倍数据速率同步动态随机存取存储器(DDR SDRAM)存储器730中,如图7所示。
对象描述可以包括由图6A和6B的场景理解引擎650生成的对象表示。例如,可通行世界模块620可以将对象表示从对象数据库发送到AR显示系统700,作为设备610之一。
WR查询处理器710可以从应用(例如AR应用)接收查询,生成对查询的响应,并将响应发送到请求应用。查询可用于获取关于由地图表示的物理世界的信息,例如,从特定的角度来看。响应于查询,WR查询处理器710可以以一种或多种格式发送物理世界的表示。例如,当查询指示用于视觉遮挡或基于物理特性的交互时,WR查询处理器可以发送表面的表示。当查询指示用于环境推理时,WR查询处理器710可以发送物理世界的网格、平面和语义。
WR查询处理器710可以包括处理特定类型的查询的单独的查询处理器。例如,WR查询处理器710包括网格划分服务711,其可以识别响应于查询的网格并将该网格提供给请求应用。WR查询处理器710包括平面服务712,其可以识别响应于查询的平面并将该平面提供给请求应用。WR查询处理器710还包括语义服务713,其可以识别响应于查询的对象并向请求应用提供包括该对象或关于该对象的信息的网格。
WR引擎720包括网格划分信息721和平面信息723。WR引擎720可以使用网格划分信息721和平面信息723来重建网格和平面。例如,WR引擎720可以生成用于由AR显示系统700的显示器显示的物理世界的重建。WR引擎720可以使用对象信息(例如,对象表示)来用对象的标签来标记网格和平面。
WR引擎720还可以使用该信息将AR内容放置在对象上。例如,WR引擎720可以使用该信息来识别桌子的顶表面并将AR内容(例如,虚拟灯)放置在桌子的表面上。在特定示例中,WR引擎720可以例如基于包括桌子的一部分的单元以及这些单元的取向来识别包括桌子的顶表面的部分的占用栅格的单元。WR引擎720然后可以将虚拟灯的底部放置在网格内,刚好在桌子顶部的所识别的单元上方。
WR引擎720可以使用对象的占用栅格来标记平面。对于提取的每个平面,WR引擎720可以搜索对象数据库644并过滤掉具有与平面有重叠区域的边界框的对象并将它们保留为候选。对于每个平面的候选,WR引擎720可以使用平面上的顶点来检查它们的占用栅格并计算有多少顶点与占用栅格相交。该比率表示该平面是否可以与对象的占用栅格相匹配。
图9是用于生成对象的对象表示的示例过程900的流程图。过程900可以例如由图6A和6B的可通行世界模块620来执行,其可以在一个或多个计算机上实现。
在物理环境的模型中识别一个或多个对象(902)。该模型可以包括表示物理环境的一组体素。如上所述,体素可以由DMM引擎基于从一个或多个设备的传感器接收的图像和相关联的数据来生成。可以使用机器学习模型(例如经训练的深度神经网络)来识别对象。DMM引擎可以用语义标签来标记其中识别对象的每个体素,该语义标签指示在体素中识别的对象的类型。
边界框在每个识别的对象周围进行适配(904)。例如,可以检测对象的边缘,并且可以将边界框适配在对象周围,使得所有边缘都在框内。可以将边界框适配得尽可能小,同时确保整个对象位于边界框内。
为每个对象生成占用栅格(906)。占用栅格可以表示对象占用的环境区域。在一些实施方式中,占用栅格包括三维栅格。三维栅格可以包含适配在对象周围的边界框。
为每个对象的占用栅格的每个单元分配值(908)。可以为包括对象的一部分的每个单元分配第一值。可以为不包括对象的任何部分的每个单元分配与第一值不同的第二值。例如,可以为包括对象的一部分的每个单元分配值1,并且可以为不包括对象的一部分的每个单元分配值0。也可以使用其他适当的值。
为每个对象生成对象表示(910)。对象表示可以包括关于对象的数据。例如,对象的对象表示可以包括标识地图以及可选地标识对象所在的地图版本的地图标识符、对象的唯一对象标识符、指示类型的语义标签标识符、或对象的其他语义表示、表示对象在地图或网格中的位置的边界框的边界框信息、以及指示栅格的每个单元的位置的占用栅格信息、以及对于每个单元指示对象的一部分是否在单元中的值。
每个对象的对象表示被发送到一个或多个设备(912)。对象表示可以发送到一个或多个AR显示设备。然后,AR设备可以使用对象表示将AR内容与对象一起放置。
本说明书中描述的主题和功能操作的实施例可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件中实现,包括在本说明书中公开的结构及其结构等同物,或者以它们中的一个或多个的组合来实现。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上的计算机程序指令的一个或多个模块,用于由数据处理设备执行或控制数据处理设备的操作。替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以对信息进行编码以传输到合适的接收器装置以由数据处理设备执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储设备、或者它们中的一种或多种的组合。
术语“数据处理设备”指的是数据处理硬件并且涵盖用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或者多个处理器或计算机。该设备还可以是或者进一步包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该设备还可以可选地包括为计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们中的一个或多个的组合的代码。
计算机程序也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码,可以以任何形式的编程语言(包括编译或解释语言)来编写,或声明性或过程性语言来编写,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其他单元。计算机程序可以但不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本、专用于所讨论的程序的单个文件中、或多个协调文件中,例如,存储一个或多个模块、子程序或部分代码的文件。计算机程序可以部署为在一个计算机或多个计算机上执行,这些计算机位于一个站点或分布在多个站点并通过通信网络互连。
本说明书中描述的过程和逻辑流程可以由一个或多个可编程计算机来执行,该一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流程还可以由专用逻辑电路来执行,并且设备也可以被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适合于执行计算机程序的计算机包括例如通用或专用微处理器或两者,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储设备。一般而言,计算机还将包括或可操作地耦合以从用于存储数据的一个或多个大容量存储设备接收数据或向其传输数据或两者,例如磁盘、磁光盘或光盘。然而,计算机不需要有这样的设备。此外,计算机可以嵌入到另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器、或便携式存储设备,例如,通用串行总线(USB)闪存驱动器,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,包括例如半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有显示设备(例如CRT(阴极射线管)或LCD(液晶显示器)监视器)的计算机上实现,用于向用户显示信息,以及用户可以通过键盘和指点设备,例如鼠标或轨迹球,向计算机提供输入。其他类型的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;来自用户的输入可以以任何形式接收,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档以及从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收到的请求而将网页发送到用户设备上的网络浏览器。
本说明书中描述的主题的实施例可以在包括后端部件(例如,作为数据服务器)、或者包括中间件部件(例如,应用服务器)、或者包括前端部件(例如,客户端计算机)的计算系统中实现,客户端计算机具有图形用户界面或网络浏览器,用户可以通过其与本说明书中描述的主题的实现进行交互,或者一个或多个这样的后端、中间件或前端部件的任意组合。系统的部件可以通过任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如互联网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系是通过在各自的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器将数据(例如HTML页面)发送到用户设备,例如用于向与充当客户端的用户设备交互的用户显示数据并从用户接收用户输入。可以在服务器处从用户设备接收在用户设备处生成的数据(例如,用户交互的结果)。
图10中示出了一种此类计算机的示例,其示出了通用计算机系统1000的示意图。根据一种实现,系统1000可以用于与先前描述的任何计算机实现的方法相关联地描述的操作。系统1000包括处理器1010、存储器1020、存储设备1030、和输入/输出设备1040。每个部件1010、1020、1030和1040使用系统总线1050互连。处理器1010能够处理用于在系统1000内执行的指令。在一种实现中,处理器1010是单线程处理器。在另一实施方式中,处理器1010是多线程处理器。处理器1010能够处理存储在存储器1020或存储设备1030上的指令,以在输入/输出设备1040上显示用户界面的图形信息。
存储器1020在系统1000内存储信息。在一种实现方式中,存储器1020是计算机可读介质。在一种实施方式中,存储器1020是易失性存储单元。在另一实施方式中,存储器1020是非易失性存储单元。
存储设备1030能够为系统1000提供大容量存储。在一种实现方式中,存储设备1030是计算机可读介质。在各种不同的实施方式中,存储设备1030可以是软盘设备、硬盘设备、光盘设备、或磁带设备。
输入/输出设备1040为系统1000提供输入/输出操作。在一种实现方式中,输入/输出设备1040包括键盘和/或指向设备。在另一实施方式中,输入/输出设备1040包括用于显示图形用户界面的显示单元。
虽然本说明书包含许多具体的实现细节,但是这些不应被解释为对可能要求保护的范围的限制,而是对可能特定于特定实施例的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地在多个实施例中或以任何合适的子组合来实现。此外,虽然上面可能将特征描述为在某些组合中起作用,甚至最初如此要求保护,但在某些情况下,可以从该组合中删除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以针对子组合或变体的子组合。
类似地,虽然在附图中以特定顺序描绘了操作,但这不应被理解为要求以所示的特定顺序或连续的顺序来执行此类操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和部件的分离不应被理解为在所有实施例中都需要这样的分离,并且应该理解,所描述的程序部件和系统通常可以集成在一起在单个软件产品或打包成多个软件产品。
已经描述了主题的具体实施例。其他实施例在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。

Claims (21)

1.一种由一个或多个数据处理装置执行的方法,所述方法包括:
识别使用物理环境的图像所生成的所述物理环境的模型中的一个或多个对象;
对于每个对象:
在所述对象周围适配边界框;
在所述对象周围的所述边界框内,生成包括多个单元的占用栅格;
基于所述占用栅格的每个单元是否包括所述对象的一部分,向所述单元分配值;以及
生成对象表示,所述对象表示包括描述针对所述对象的所述占用栅格的信息;以及
将所述对象表示发送到一个或多个设备。
2.根据权利要求1所述的方法,其中,基于所述占用栅格的每个单元是否包括所述对象的一部分,向所述单元分配值包括:
向包括所述对象的一部分的每个单元分配第一值;以及
向不包括所述对象的任何部分的每个单元分配与所述第一值不同的第二值。
3.根据权利要求1所述的方法,还包括:
检测所述一个或多个对象中的给定对象的变化;
生成针对所述给定对象的新占用栅格;以及
向所述一个或多个设备发送针对所述给定对象的所述新占用栅格,而不是所述物理环境的更新模型。
4.根据权利要求3所述的方法,其中,所述一个或多个设备中的每个设备使用针对所述给定对象的所述新占用栅格来更新所述物理环境的本地网格。
5.根据权利要求1所述的方法,其中,所述模型包括表示所述物理环境的多个体素。
6.根据权利要求5所述的方法,还包括:基于在所述体素中识别的对象的类型,向每个体素分配语义标签。
7.根据权利要求6所述的方法,还包括:基于每个体素的所述语义标签,对体素进行聚类。
8.一种计算机实现的系统,包括:
一个或多个计算机;以及
一个或多个计算机存储设备,其与所述一个或多个计算机可互操作地耦合,并具有存储一个或多个指令的有形非暂时性机器可读介质,所述一个或多个指令在由所述一个或多个计算机执行时执行包括以下的操作:
识别使用物理环境的图像所生成的所述物理环境的模型中的一个或多个对象;
对于每个对象:
在所述对象周围适配边界框;
在所述对象周围的所述边界框内,生成包括多个单元的占用栅格;
基于所述占用栅格的每个单元是否包括所述对象的一部分,向所述单元分配值;以及
生成对象表示,所述对象表示包括描述针对所述对象的所述占用栅格的信息;以及
将所述对象表示发送到一个或多个设备。
9.根据权利要求8所述的计算机实现的系统,其中,基于所述占用栅格的每个单元是否包括所述对象的一部分,向所述单元分配值包括:
向包括所述对象的一部分的每个单元分配第一值;以及
向不包括所述对象的任何部分的每个单元分配与所述第一值不同的第二值。
10.根据权利要求8所述的计算机实现的系统,其中,所述操作包括:
检测所述一个或多个对象中的给定对象的变化;
生成针对所述给定对象的新占用栅格;以及
向所述一个或多个设备发送所述针对给定对象的所述新占用栅格,而不是所述物理环境的更新模型。
11.根据权利要求10所述的计算机实现的系统,其中,所述一个或多个设备中的每个设备使用针对所述给定对象的所述新占用栅格来更新所述物理环境的本地网格。
12.根据权利要求8所述的计算机实现的系统,其中,所述模型包括表示所述物理环境的多个体素。
13.根据权利要求12所述的计算机实现的系统,其中,所述操作包括:基于在所述体素中识别的对象的类型,向每个体素分配语义标签。
14.根据权利要求13所述的计算机实现的系统,其中,所述操作包括:基于每个体素的所述语义标签,对体素进行聚类。
15.一种非暂时性计算机可读介质,其存储可由计算机系统执行的一个或多个指令以执行包括以下的操作:
识别使用物理环境的图像所生成的所述物理环境的模型中的一个或多个对象;
对于每个对象:
在所述对象周围适配边界框;
在所述对象周围的所述边界框内,生成包括多个单元的占用栅格;
基于所述占用栅格的每个单元是否包括所述对象的一部分,向所述单元分配值;以及
生成对象表示,所述对象表示包括描述针对所述对象的所述占用栅格的信息;以及
将所述对象表示发送到一个或多个设备。
16.根据权利要求15所述的非暂时性计算机可读介质,其中,基于所述占用栅格的每个单元是否包括所述对象的一部分,向所述单元分配值包括:
向包括所述对象的一部分的每个单元分配第一值;以及
向不包括所述对象的任何部分的每个单元分配与所述第一值不同的第二值。
17.根据权利要求15所述的非暂时性计算机可读介质,其中,所述操作包括:
检测所述一个或多个对象中的给定对象的变化;
生成针对所述给定对象的新占用栅格;以及
向所述一个或多个设备发送针对所述给定对象的所述新占用栅格,而不是所述物理环境的更新模型。
18.根据权利要求17所述的非暂时性计算机可读介质,其中,所述一个或多个设备中的每个设备使用针对所述给定对象的所述新占用栅格来更新所述物理环境的本地网格。
19.根据权利要求15所述的非暂时性计算机可读介质,其中,所述模型包括表示所述物理环境的多个体素。
20.根据权利要求19所述的非暂时性计算机可读介质,其中,所述操作包括:基于在所述体素中识别的对象的类型,向每个体素分配语义标签。
21.根据权利要求20所述的非暂时性计算机可读介质,其中,所述操作包括:基于每个体素的所述语义标签,对体素进行聚类。
CN202280025517.9A 2021-02-04 2022-02-03 使用占用栅格的场景理解 Pending CN117242492A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202163145868P 2021-02-04 2021-02-04
US63/145,868 2021-02-04
PCT/US2022/015056 WO2022169938A1 (en) 2021-02-04 2022-02-03 Scene understanding using occupancy grids

Publications (1)

Publication Number Publication Date
CN117242492A true CN117242492A (zh) 2023-12-15

Family

ID=82742515

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280025517.9A Pending CN117242492A (zh) 2021-02-04 2022-02-03 使用占用栅格的场景理解

Country Status (5)

Country Link
US (1) US20240127538A1 (zh)
EP (1) EP4288935A4 (zh)
JP (1) JP2024506299A (zh)
CN (1) CN117242492A (zh)
WO (1) WO2022169938A1 (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9275308B2 (en) * 2013-05-31 2016-03-01 Google Inc. Object detection using deep neural networks
WO2017078777A1 (en) * 2015-11-04 2017-05-11 Intel Corporation Generating voxel representations and assigning trust metrics for ensuring veracity for use with multiple applications

Also Published As

Publication number Publication date
US20240127538A1 (en) 2024-04-18
WO2022169938A1 (en) 2022-08-11
EP4288935A4 (en) 2024-06-19
EP4288935A1 (en) 2023-12-13
JP2024506299A (ja) 2024-02-13

Similar Documents

Publication Publication Date Title
CN112805750B (zh) 跨现实系统
US11321924B2 (en) Caching and updating of dense 3D reconstruction data
US11238659B2 (en) Caching and updating of dense 3D reconstruction data
US11587298B2 (en) Caching and updating of dense 3D reconstruction data
US12100098B2 (en) Simple environment solver using planar extraction
US11423602B2 (en) Fast 3D reconstruction with depth information
US20230147759A1 (en) Viewpoint dependent brick selection for fast volumetric reconstruction
JP2022537817A (ja) 動的オクルージョンのための高速の手のメッシュ化
JP2024103610A (ja) クロスリアリティシステム
US20240127538A1 (en) Scene understanding using occupancy grids
US12100181B2 (en) Computationally efficient method for computing a composite representation of a 3D environment

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination