CN114341943A - 使用平面提取的简单环境求解器 - Google Patents

使用平面提取的简单环境求解器 Download PDF

Info

Publication number
CN114341943A
CN114341943A CN202080060983.1A CN202080060983A CN114341943A CN 114341943 A CN114341943 A CN 114341943A CN 202080060983 A CN202080060983 A CN 202080060983A CN 114341943 A CN114341943 A CN 114341943A
Authority
CN
China
Prior art keywords
corner points
user
plane
physical world
planar
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
CN202080060983.1A
Other languages
English (en)
Inventor
B·J·乌斯钦斯基
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 CN114341943A publication Critical patent/CN114341943A/zh
Pending legal-status Critical Current

Links

Images

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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/187Segmentation; Edge detection involving region growing; involving region merging; involving connected component labelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/564Depth or shape recovery from multiple images from contours
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/593Depth or shape recovery from multiple images from stereo images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/20Scenes; Scene-specific elements in augmented reality scenes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/18Eye characteristics, e.g. of the iris
    • G06V40/193Preprocessing; Feature extraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • G06T2207/10021Stereoscopic video; Stereoscopic image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/04Architectural design, interior design

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Ophthalmology & Optometry (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)
  • Image Generation (AREA)

Abstract

提供了一种重建环境的方法。该方法为各种XR应用提供环境的新鲜和准确的3D重建数据,以短的处理时间且低的计算资源和存储空间使用率。3D重建数据被构造为在用户之间有效共享,以实现多用户体验。该方法包括获得环境的平面片段,通过例如对平面片段进行过滤和分组或用户对平面片段的特殊选择来识别环境的表面平面,以及基于表面平面来推断环境的拐角点。当XR应用需要时,拐角点用于构建环境的3D表示。

Description

使用平面提取的简单环境求解器
技术领域
本申请总体上涉及使用3D世界重建来渲染场景的交叉现实***。
背景技术
计算机可以控制人类用户接口以创建X现实(XR或交叉现实)环境,在该环境中,由计算机生成被用户所感知(perceive)的XR环境的部分或全部。这些XR环境可以是虚拟现实(VR)、增强现实(AR)和混合现实(MR)环境,其中XR环境的部分或全部可以由计算机部分地使用描述该环境的数据生成。该数据可以描述例如虚拟对象,该虚拟对象可以以用户感应(sense)或感知为物理世界的一部分并且可以与虚拟对象交互的方式来渲染。由于数据是通过用户接口设备(例如,头戴式显示设备)渲染和呈现的,因此用户可能体验到这些虚拟对象。数据可以显示给用户看,或者可以控制播放给用户听的音频,或者可以控制感触(tactile)(或触觉(haptic))接口,从而使用户能够体验到用户感应或感知到感觉虚拟对象的触摸感觉。
XR***可对许多应用很有用,跨越科学可视化、医学培训、工程设计和原型制作、远程操纵和远程呈现以及个人娱乐等领域。与VR相比,AR和MR包括一个或多个与物理世界的真实对象相关的虚拟对象。虚拟对象与真实对象交互的体验极大地增强了用户使用XR***的乐趣,也为各种应用打开了大门,这些应用呈现了关于如何改变物理世界的现实且易于理解的信息。
XR***可以将***的用户周围的物理世界表示为“网格”。网格可以由多个相互连接的三角形表示。每个三角形具有连接物理世界内的对象的表面上的点的边,使得每个三角形表示表面的一部分。关于表面的一部分的信息(例如颜色、纹理或其他属性)可以关联地存储在三角形内。在操作中,XR***可以处理图像信息以检测点和表面,从而创建或更新网格。
发明内容
本申请的方面涉及用于快速生成包含计算机生成对象的环境的方法和设备。如本文所述的技术可以一起、单独或以任何合适的组合使用。
一些实施例涉及一种便携式电子***。所述便携式电子***包括:传感器和处理器,传感器被配置为捕获关于物理世界的信息,处理器被配置为执行计算机可执行指令以至少部分地基于所捕获的关于所述物理世界的信息来计算所述物理世界的部分的三维3D表示。所述计算机可执行指令包括用于以下的指令:从传感器捕获的信息中提取多个平面片段;至少部分地基于所述多个平面片段,识别多个表面平面;以及至少部分地基于所述多个表面平面,推断所述物理世界的所述部分的多个拐角点。
在一些实施例中,所述计算机可执行指令还包括用于以下的指令:使用所述拐角点来构建所述物理世界的所述部分的网格模型。
在一些实施例中,所述多个表面平面是至少部分地基于来自佩戴所述便携式电子***的至少一部分的用户的输入来识别的。
在一些实施例中,所述便携式电子***包括收发器,所述收发器被配置用于通过计算机网络与提供远程存储器的设备进行通信。
在一些实施例中,所述处理器实现被配置为向应用提供所述物理世界的所述部分的所述3D表示的服务。
在一些实施例中,所述服务将所述拐角点保存在本地存储器中或将所述拐角点传送到云存储器作为所述物理世界的所述部分的所述三维3D表示。
在一些实施例中,识别所述多个表面平面包括:确定在所述多个平面片段的平面片段法线组之中是否存在主要平面片段法线;当所述确定指示所述组中的主要平面片段法线时,将所述主要平面片段法线设置为表面平面法线;以及当所述确定指示没有所述组中的主要平面片段法线时,根据所述组中的所述平面片段法线中的至少一部分计算所述表面平面法线。
在一些实施例中,计算所述表面平面法线包括:计算所述组中的所述平面片段法线中的至少一部分的加权平均。
在一些实施例中,推断所述物理世界的所述部分的所述多个拐角点包括:将所述多个表面平面中的第一表面平面和第二表面平面延伸到无穷;以及获得与所述第一表面平面和所述第二表面平面相交的边界线。
在一些实施例中,推断所述物理世界的所述部分的多个拐角点还包括:通过使所述边界线与第三表面平面相交来推断所述多个拐角点中的一个拐角点。
一些实施例涉及一种非暂时性计算机可读介质,其被编码有多个计算机可执行指令,所述多个计算机可执行指令在由至少一个处理器执行时执行一种用于提供物理世界的部分的三维3D表示的方法,在所述3D表示中,所述物理世界的所述部分用多个拐角点来表示。所述方法包括:捕获关于所述物理世界的在用户的视野(FOV)内的部分的信息;从所捕获的信息中提取多个平面片段;从所述多个平面片段中识别多个表面平面;以及基于所识别的多个表面平面中的表面平面的相交,计算表示所述物理世界的所述部分的多个拐角点。
在一些实施例中,所述方法包括计算第一多个拐角点是否形成闭合。
在一些实施例中,计算闭合是否被形成包括:确定接合所述第一多个拐角点的边界线是否可以被连接以限定接合并界定闭合体积的表面。
在一些实施例中,所述物理世界的所述部分是所述物理世界的第一部分,所述用户是第一用户,所述多个拐角点是第一多个拐角点;以及所述方法还包括:从第二用户接收所述物理世界的第二部分的第二多个拐角点;以及至少部分地基于所述第一多个拐角点和所述第二多个拐角点,提供所述物理世界的所述3D表示。
在一些实施例中,所述用户是第一用户,所述方法还包括:通过计算机网络传送根据所捕获的关于所述物理世界的在所述第一用户的视野内的所述部分的信息所计算的拐角点;在由第二用户所使用的XR设备处接收所传送的拐角点;以及基于所接收的多个拐角点,用所述XR设备向所述第二用户渲染关于所述物理世界的所述部分的信息。
在一些实施例中,所述方法包括:计算用于所述拐角点的元数据,所述元数据指示所述拐角点之间的位置关系。
在一些实施例中,所述方法包括:保存包括相应的元数据的所述拐角点,以使得所述拐角点可由包括所述用户在内的多个用户检索。
一些实施例涉及一种操作交叉现实***以重建环境的方法。所述交叉现实***包括处理器,所述处理器被配置为与由用户所佩戴的传感器通信地处理图像信息,所述传感器针对所述传感器的视野中的各个区域生成深度信息。所述方法包括:从所述深度信息中提取多个平面片段;向所述用户显示所提取的平面片段;接收指示多个表面平面的用户输入,每个表面平面表示界定所述环境的表面;以及至少部分地基于所述多个表面平面,计算所述环境的多个拐角点。
在一些实施例中,所述方法包括:确定所述多个拐角点是否形成闭合。
在一些实施例中,所述方法包括:当确定所述闭合被形成时,存储所述拐角点。
附图说明
附图不是旨在按比例绘制。在附图中,在各个附图中示出的每个相同或几乎相同的部件由相同的数字表示。为了清楚起见,并非每个部件都会在每个附图中被标记。在附图中:
图1是示出根据一些实施例的简化的增强现实(AR)场景的示例的示意图。
图2是示出根据一些实施例的包括视觉遮挡、基于物理的交互和环境推理的示例性世界重建用例的示例性简化AR场景的草图。
图3是示出根据一些实施例的AR***中的数据流的示意图,该AR***被配置为提供AR内容与物理世界交互的体验。
图4是示出根据一些实施例的AR显示***的示例的示意图。
图5A是示出根据一些实施例的当用户穿戴随着用户通过物理世界环境移动时渲染AR内容的AR显示***的示意图。
图5B是示出根据一些实施例的观看光学组件和附属部件的示意图。
图6是示出根据一些实施例的使用世界重建***的AR***的示意图。
图7A是示出根据一些实施例的离散为体素的3D空间的示意图。
图7B是示出根据一些实施例的相对于单个视点的重建范围的示意图。
图7C是示出根据一些实施例的相对于单个位置处的重建范围的感知范围的示意图。
图8A至8F是示出根据一些实施例的通过从多个位置和视点观看物理世界中的表面的图像传感器将该表面重建为体素模型的示意图。
图9是示出根据一些实施例的由包括体素的砖块所表示的场景、场景中的表面、以及捕获深度图像中的表面的深度传感器的示意图。
图10A是示出由八个砖块表示的3D空间的示意图。
图10B是示出图10A的砖块中的体素栅格的示意图。
图11是示出根据一些实施例的平面提取***的示意图。
图12是示出根据一些实施例的具有关于平面提取的细节的图11的平面提取***的各部分的示意图。
图13是示出根据一些实施例的由包括体素的砖块表示的场景以及场景中的示例性平面数据的示意图。
图14是示出根据一些实施例的图11的平面数据存储库的示意图。
图15是示出根据一些实施例的当将平面查询发送给图11的平面数据存储库时的平面几何提取的示意图。
图16A是示出根据一些实施例的生成图15的平面覆盖点的示意图。
图16B是示出根据一些实施例的可从示例性栅格化平面掩模(mask)中提取的各种示例性平面几何图形表示的示意图。
图17示出了根据一些实施例的用于场景的网格。
图18A示出了根据一些实施例的由外部矩形平面表示的图17的场景。
图18B示出根据一些实施例的由内部矩形平面表示的图17的场景。
图18C示出根据一些实施例的由多边形平面表示的图17的场景。
图19示出根据一些实施例的通过对图17中所示的网格进行平面化具有去噪的网格的图17的场景。
图20是示出根据一些实施例的操作AR***以生成环境的3D重建的方法的流程图。
图21是示出根据一些实施例的至少部分地基于在图20中获得的平面片段(segment)来识别表面平面的方法的流程图。
图22是示出根据一些实施例的推断图20中的拐角点(corner point)的方法的流程图。
图23是示出根据一些实施例的被配置为执行图20的方法的AR***的简化示意图。
图24是示出根据一些实施例的环境的平面片段提取的简化示意图。
图25是示出根据一些实施例的基于图24中的环境的所提取的平面片段而识别(identify)的表面平面的简化示意图。
图26是示出根据一些实施例的通过相交图25中的两个墙壁平面而得到的边界线的简化示意图。
图27是示出根据一些实施例的通过使图26中的边界线分别与图25中的地板平面和天花板平面相交而推断出的拐角点的简化示意图。
图28是示出根据一些实施例的至少部分地基于拐角点的图24中的环境的3D重建的示意图。
具体实施方式
本文描述了用于在X现实(XR或交叉现实)***中创建和使用环境(例如室内环境)的三维(3D)世界重建的方法和设备。通常,环境的3D表示是通过扫描整个环境来构建的,整个环境包括例如墙壁、地板和天花板,其中XR***由用户持有和/或佩戴。XR***生成密集网格来表示环境。发明人已经认识到并意识到密集网格可以包括对于由XR***执行的特定任务而言不必要的细节。例如,***可能会构建一个密集网格模型,其中包含许多三角形来表示墙壁上的小缺陷并表示墙壁上的任何装饰,但该模型可能被应用使用,该应用呈现覆盖墙壁的表面的虚拟对象或识别墙壁的位置或计算墙壁的面积——这些任务可能不会受到墙壁上的小缺陷的影响,或者如果由于墙壁的表面的装饰而无法准确计算墙壁的面积,则可能无法完成任务。这种应用的示例可能包括家庭承包应用,其中表示房间结构的数据可能就足够了,以及诸如“Dr.Grordbort’s Invaders”之类的游戏需要表示墙壁的区域的数据,允许为邪恶的机器人打开端口孔,并且由于装饰覆盖墙壁表面,可能会给出墙壁空间不足的错误消息。
发明人已经认识到并赞赏将房间或环境的其他部分快速且准确地表示为一组拐角点的技术。拐角点可以通过以下来获得:识别表面平面,表示环境的表面,例如任何墙壁、地板和/或天花板。可以根据由可穿戴设备上的传感器所收集的信息来计算表面平面,该可穿戴设备可用于扫描环境的一部分。传感器可以提供深度和/或图像信息。XR***可以从深度和/或图像信息中获得平面片段。每个平面片段可以指示平面的取向,该平面片段由例如平面法线表示。XR***然后可以从一个或多个平面片段的组中识别环境的表面平面。在一些实施例中,表面平面可以由操作XR***的用户特别地选择。在一些实施例中,XR***可以自动识别表面平面。
可以使用环境的拐角点快速且准确地重建环境的3D表示。例如,可以从拐角点生成环境的简单网格表示,并代替或补充以传统方式计算的网格。在一些实施例中,对于多用户体验,可以在涉及环境的XR体验中在多个用户之间传输拐角点。环境的拐角点可以比环境的密集网格传输得更快。此外,与扫描整个环境的密集网格相比,基于环境的拐角点构建环境的3D表示消耗更少的计算能力、存储空间和网络带宽。
如本文所述的技术可以与多种类型的设备一起或单独用于多种类型的场景,包括具有提供交叉现实场景的有限计算资源的可穿戴或便携式设备。在一些实施例中,这些技术可以由形成XR***的一部分的服务来实施。执行重建环境的简单信息就足够的任务的应用可以与该服务交互以获得一组拐角点,有或没有关于这些点界定的点和/或表面的相关联的元数据,以呈现关于环境的信息。例如,应用可以相对于这些表面渲染虚拟对象。例如,应用可以渲染虚拟图片或挂在墙壁上的其他对象。作为另一个示例,应用可以在墙壁上渲染虚拟颜色叠加层(overlay)以改变其感知颜色,或者可以在环境的表面上显示标签,例如指示表面的区域的标签,覆盖该表面所需的油漆量、或可能计算的关于环境的其他信息。
AR***概述
图1-2示出了这样的场景。为了说明的目的,AR***被用作XR***的示例。图3-8示出了示例性AR***,其包括可以根据本文描述的技术进行操作的一个或多个处理器、存储器、传感器和用户接口。
参考图1,描绘了一个户外AR场景4,其中AR技术的用户看到了物理世界公园状的设置6,其特征在于人、树、背景中的建筑物以及混凝土平台8。除了这些项目之外,AR技术的用户还认为他们“看到”了站在物理世界混凝土平台8上的机器人雕像10、以及飞行着的看起来像是大黄蜂的拟人化的卡通般的化身角色2,即使这些元素(例如,化身角色2和机器人雕像10)在物理世界中不存在。由于人类视觉感知和神经***的极端复杂性,因此要产生一种在其他虚拟或物理世界图像元素中促进虚拟图像元素的舒适的、感觉自然的、丰富的呈现的AR技术是有挑战的。
这样的AR场景可以通过包括世界重建部件的***来实现,该***可以构建和更新用户周围的物理世界表面的表示。该表示可用于在基于物理的交互中遮挡渲染、放置虚拟对象,以及用于虚拟角色路径规划和导航,或用于其中使用关于物理世界的信息的其他操作。图2描绘了AR场景200的另一示例,其示出了根据一些实施例的示例性世界重建用例,包括视觉遮挡202、基于物理的交互204和环境推理206。
示例性场景200是具有墙壁、墙壁一侧上的书架、房间角落处的落地灯、地板、沙发和地板上的咖啡桌的客厅。除了这些物理项目之外,AR技术的用户还感知虚拟对象,诸如沙发后面墙上的图像、飞过门的鸟儿、从书架上窥视的鹿、以及具有放在咖啡桌上的风车形式的装饰品。对于墙壁上的图像,AR技术不仅需要关于墙壁的表面的信息,还需要关于房间内正遮挡图像的对象和表面的信息(例如灯的形状)以正确渲染虚拟对象。对于飞翔的飞鸟,AR技术需要关于房间周围所有对象和表面的信息,用于以逼真的物理效果渲染鸟儿,以避开对象和表面或在鸟儿碰撞时反弹。对于鹿,AR技术需要关于表面(例如,地板或咖啡桌)的信息,以计算鹿的放置位置。对于风车,***可以标识其是与桌子分离的对象,并且可以推理它是可移动的,而书架的角落或墙壁的角落可被推理为是固定的。这样的区别可以用于推理关于场景的哪些部分在各种操作的每一个操作中被使用或更新。
可以通过包括多个部件的***向用户呈现场景,多个部件包括可以刺激一个或多个用户感应(包括视觉声音和/或触摸)的用户接口。另外,该***可包括可以测量场景的物理部分的参数(包括用户在场景的物理部分内的位置和/或运动)的一个或多个传感器。此外,该***可包括具有相关联的计算机硬件(例如存储器)的一个或多个计算设备。这些部件可以集成到单个设备中,也可以分布在多个互连的设备中。在一些实施例中,这些部件中的一些或全部可以集成到可穿戴设备中。
图3描绘了根据一些实施例的被配置为提供AR内容与物理世界306交互的体验的AR***302。AR***302可包括显示器308。在所示的实施例中,显示器308可以由用户作为头戴式耳机的一部分来佩戴,使得用户可以像一副护目镜或眼镜一样将显示器戴在他们的眼睛上。显示器的至少一部分可以是透明的,使得用户可以观察透视现实(see-throughreality)310。透视现实310可以对应于物理世界306在AR***302的当前视点内的部分,在用户正戴着并入了AR***的显示器和传感器的头戴式耳机来获取关于物理世界的信息的情况下,AR***302的当前视点可对应于用户的视点。
AR内容也可被呈现在显示器308上,覆盖在透视现实310上。为了在显示器308上提供AR内容和透视现实310之间的准确交互,AR***302可包括被配置为捕获关于物理世界306的信息的传感器322。
传感器322可包括输出深度图312的一个或多个深度传感器。每个深度图312可具有多个像素,每个像素可表示在相对于深度传感器的特定方向上到物理世界306中的表面的距离。原始深度数据可来自深度传感器以创建深度图。这样的深度图可与深度传感器可以形成新图像的速度一样快地被更新,每秒可达成百上千次。但是,该数据可能有噪声且不完整,并且在所示的深度图上具有被显示为黑色像素的孔。
***可包括其他传感器,例如图像传感器。图像传感器可获取可以以其他方式被处理以表示物理世界的信息。例如,可以在世界重建部件316中处理图像以创建网格,网格表示物理世界中对象的连接部分。关于这些对象的元数据,包括例如颜色和表面纹理,可以类似地用传感器获取并存储为世界重建的一部分。
***还可以获取关于用户相对于物理世界的头部姿势(headpose)的信息。在一些实施例中,传感器310可包括可用于计算和/或确定头部姿势314的惯性测量单元。用于深度图的头部姿势314可指示传感器以例如六个自由度(6DoF)捕获深度图的当前视点,但是头部姿势314可用于其他目的,诸如将图像信息与物理世界的特定部分相关或将佩戴在用户头上的显示器的位置与物理世界相关。在一些实施例中,头部姿势信息可以以不同于IMU的其他方式(例如,分析图像中的对象)来推导。
世界重建部件316可接收来自传感器的深度图312和头部姿势314以及任何其他数据,并将该数据集成到重建318中,重建318可至少看起来是单个的组合的重建。重建318可比传感器数据更完整并且噪声更少。世界重建部件316可使用随时间变化的来自多个视点的传感器数据的空间和时间平均来更新重建318。
重建318可包括具有包括例如体素、网格、平面等的一种或多种数据格式的物理世界的表示。不同格式可表示物理世界的相同部分的替代表示,或者可表示物理世界的不同部分。在所示的示例中,在重建318的左侧,物理世界的部分被呈现为全局表面;在重建318的右侧,物理世界的部分被呈现为网格。
重建318可用于AR功能,诸如产生物理世界的表面表示以用于遮挡处理或基于物理的处理。该表面表示可随着用户移动或物理世界中对象的变化而变化。重建318的各方面可例如由产生在世界坐标中变化的全局表面表示的部件320使用,该变化的全局表面表示可由其他部件使用。
AR内容可以基于该信息例如由AR应用304来生成。AR应用304可以是例如基于关于物理世界的信息(例如,视觉遮挡、基于物理的交互和环境推理)执行一个或多个功能的游戏程序。它可以通过查询来自世界重建部件316产生的重建318的不同格式的数据来执行这些功能。在一些实施例中,部件320可被配置为当物理世界的感兴趣区域中的表示变化时输出更新。该感兴趣区域例如可被设置为近似于***的用户的附近的物理世界的一部分,例如用户视野内的部分,或者被投影(预测/确定)为进入用户的视野。
AR应用304可使用该信息来生成和更新AR内容。AR内容的虚拟部分可与透视现实310结合被呈现在显示器308上,从而创建逼真的用户体验。
在一些实施例中,可以通过可穿戴显示***向用户提供AR体验。图4示出了可穿戴显示***80(以下称为“***80”)的示例。***80包括头戴式显示设备62(以下称为“显示设备62”)以及各种机械和电子模块和***以支持显示设备62的功能。显示设备62可耦合至框架64,框架64可由显示***用户或观看者60(以下称为“用户60”)佩戴并且被配置为将显示设备62定位在用户60的眼睛的前面。根据各种实施例,显示设备62可以是顺序显示器(sequential display)。显示设备62可以是单眼或双眼的。在一些实施例中,显示设备62可以是图3中的显示器308的示例。
在一些实施例中,扬声器66耦合到框架64并被定位在用户60的耳道附近。在一些实施例中,未示出的另一扬声器定位在用户60的另一耳道附近,以提供立体声/可整形(shapeable)声音控制。显示设备62例如通过有线引线或无线连接68可操作地耦合到本地数据处理模块70,该本地数据处理模块70可以以各种配置来安装,例如固定地附接到框架64,固定地附接到由用户60佩戴的头盔或帽子,嵌入耳机中、或以其他方式可拆卸地连接到用户60(例如,以背包式配置,以皮带耦合式配置)。
本地数据处理模块70可包括处理器以及数字存储器,例如非易失性存储器(例如闪存),两者均可以用于协助数据的处理、缓存和存储。数据包括a)从传感器(其可以例如可操作地耦合到框架64)捕获的或以其他方式附接到用户60(例如图像捕获设备(例如相机)、麦克风、惯性测量单元、加速度计、指南针、GPS单元、无线电设备和/或陀螺仪)的,和/或b)使用远程处理模块72和/或远程数据存储库74获取的数据,可能用于在这样的处理或检索之后传递给显示设备62。本地数据处理模块70可以通过通信链路76、78(例如经由有线或无线通信链路)可操作地分别耦合到远程处理模块72和远程数据存储库74,使得这些远程模块72、74可操作地彼此耦合并且可用作本地处理和数据模块70的资源。在一些实施例中,图3中的世界重建部件316可以至少部分地在本地数据处理模块70中实现。例如,本地数据处理模块70可被配置为执行计算机可执行指令以至少部分地基于至少该数据的一部分来生成物理世界表示。
在一些实施例中,本地数据处理模块70可包括被配置为分析和处理数据和/或图像信息的一个或多个处理器(例如,图形处理单元(GPU))。在一些实施例中,本地数据处理模块70可包括单个处理器(例如,单核或多核ARM处理器),这将限制模块70的计算预算但是启用更小型的设备。在一些实施例中,世界重建部件316可使用小于单个ARM核的计算预算来在非预限定空间上实时生成物理世界表示,使得可以访问单个ARM核的剩余计算预算以用于其他目的,例如提取网格。
在一些实施例中,远程数据存储库74可包括数字数据存储设施,其可以通过因特网或“云”资源配置中的其他网络配置来使用。在一些实施例中,所有数据被存储并且所有计算在本地数据处理模块70中被执行,从而允许来自远程模块的完全自主的使用。世界重建例如可以全部或部分地存储在该存储库74中。
在一些实施例中,本地数据处理模块70可操作地耦合到电池82。在一些实施例中,电池82是可拆卸电源,例如在反压(counter)电池上方。在其他实施例中,电池82是锂离子电池。在一些实施例中,电池82既包括在***80的非操作时间期间可由用户60充电的内部锂离子电池又包括可拆卸电池,使得用户60可以在更长的时间段内操作***80而不必连接到电源以对锂离子电池充电或者必须关闭***80以更换电池。
图5A示出了在用户30在物理世界环境32(以下称为“环境32”)中移动时佩戴渲染AR内容的AR显示***的用户30。用户30将AR显示***放置在位置34处,并且AR显示***记录可通行(passable)世界相对于位置34的环境信息(例如,物理世界中的真实对象的数字表示,其可被存储并随着物理世界中的真实对象的变化来更新),例如与映射特征或定向音频输入有关的姿势。位置34被聚集到数据输入36,并且至少由可通行世界模块38处理,这例如可以通过在图4的远程处理模块72上的处理来实现。在一些实施例中,可通行世界模块38可包括世界重建部件316。
可通行世界模块38确定AR内容40可以如从数据输入36确定的那样被放置在物理世界中的位置和方式。通过经由用户接口呈现物理世界的表示和AR内容,AR内容被“放置”在物理世界中,其中AR内容被渲染为好像正在与物理世界中的对象进行交互,并且物理世界中的对象被渲染为好像在适当时AR内容正遮挡用户对这些对象的视线。在一些实施例中,可以通过从重建(例如重建318)中适当地选择固定元素42(例如桌子)的部分来确定AR内容40的形状和位置来放置AR内容。作为示例,固定元素可以是桌子,并且虚拟内容可被放置为使得它看起来好像在该桌子上。在一些实施例中,可以将AR内容放置在视野44中的结构内,该视野可以是当前视野或估计的未来视野。在一些实施例中,可以相对于物理世界的映射网格模型46放置AR内容。
如所描绘的,固定元素42用作物理世界内的任何固定元素的代理,其可被存储在可通行世界模块38中,使得用户30可以感知固定元素42上的内容,而***不必每当用户30看到它时就映射到固定元素42。固定元素42可以因此是来自先前的建模会话的映射网格模型,或者是根据单独的用户确定的,但是都被存储在可通行世界模块38上,以供多个用户将来参考。因此,可通行世界模块38可以从先前映射的环境中识别环境32并显示AR内容,而无需用户30的设备首先映射环境32,从而节省了计算过程和周期并且避免了任何渲染的AR内容的延迟。
物理世界的映射网格模型46可由AR显示***创建,并且将用于交互和显示AR内容40的适当的表面和度量可被映射并存储在可通行世界模块38中,以供用户30或其他用户将来检索,而无需重新映射或建模。在一些实施例中,数据输入36是诸如地理位置、用户标识和当前活动之类的输入,以向可通行世界模块38指示一个或多个固定元素中的哪个固定元素42可用、哪个AR内容40最后被放置在固定元素42上、以及是否显示该相同的内容(无论用户观看特定的可通行世界模型与否,该AR内容都是“持久(persistent)”内容)。
即使在对象被认为是固定的实施例中,可通行世界模块38也可以不时被更新以考虑物理世界中变化的可能性。固定对象的模型可以以非常低的频率被更新。物理世界中的其他对象可能是移动的,也可能不被视为是固定的。为了渲染具有真实感的AR场景,AR***可以以比用于更新固定对象的频率高得多的频率更新这些非固定对象的位置。为了能够准确跟踪物理世界中的所有对象,AR***可以从多个传感器(包括一个或多个图像传感器)中提取信息。
图5B是观看光学组件48和附属部件的示意图。在一些实施例中,指向用户眼睛49的两个眼睛跟踪相机50检测用户眼睛49的度量,例如眼睛形状、眼睑遮挡、瞳孔方向和用户眼睛49上的闪烁。在一些实施例中,传感器之一可以是深度传感器51,例如飞行时间传感器,向世界发射信号并检测来自附近对象的这些信号的反射以确定到给定的对象的距离。例如,深度传感器可以快速确定对象是否由于这些对象的运动或由于用户姿势的改变而进入用户的视野。然而,可以替代地或附加地,用其他传感器收集关于对象在用户的视野中的位置的信息。例如,深度信息可以从立体视觉图像传感器或全光传感器获得。
在一些实施例中,世界相机52记录大于***的视图以映射环境32并检测可能影响AR内容的输入。在一些实施例中,世界相机52和/或相机53可以是灰度和/或彩色图像传感器,其可以以固定时间间隔输出灰度和/或彩色图像帧。相机53还可在特定时间捕获用户视野内的物理世界图像。基于帧的图像传感器的像素也可以被重复采样,即使它们的值不变。世界相机52、相机53和深度传感器51中的每一个具有相应的视野54、55和56,以从物理世界场景收集数据并记录物理世界场景,例如图5A中描绘的物理世界环境32。
惯性测量单元57可以确定观看光学组件48的运动和取向。在一些实施例中,每个部件可操作地耦合到至少一个其他部件。例如,深度传感器51可操作地耦合到眼睛跟踪相机50,作为对相对于用户眼睛49正看着的实际距离的所测量的调节(accommodation)的确认。
应当理解,观看光学组件48可以包括图5B所示的一些部件,并且可以包括代替所示部件或除了所示部件之外的部件。在一些实施例中,例如,观看光学组件48可以包括两个世界相机52,而不是四个世界相机。替代地或附加地,相机52和53不需要捕获它们全视野的可见光图像。观看光学组件48可以包括其他类型的部件。在一些实施例中,观看光学组件48可包括一个或多个动态视觉传感器(DVS),其像素可异步响应超过阈值的光强度的相对变化。
在一些实施例中,观看光学组件48可以不包括基于飞行时间信息的深度传感器51。在一些实施例中,例如,观看光学组件48可包括一个或多个全光相机,其像素可捕获光强度和入射光的角度,从中可以确定深度信息。例如,全光相机可以包括覆盖有透射衍射掩模(TDM)的图像传感器。替代地或附加地,全光相机可以包括包含角度敏感像素和/或相位检测自动对焦像素(PDAF)和/或微透镜阵列(MLA)的图像传感器。这种传感器可以作为深度信息的来源,代替或补充深度传感器51。
还应该理解,图5B中的部件的配置作为示例示出。观看光学组件48可以包括具有任何合适配置的部件,其可以被设置为向用户提供对于特定部件组而言实用的最大视野。例如,如果观看光学组件48具有一个世界相机52,则世界相机可以被放置在观看光学组件的中心区域而不是一侧。
来自观看光学组件48中的传感器的信息可以耦合到***中的一个或多个处理器。处理器可生成可被渲染以使得用户感知与物理世界中的对象交互的虚拟内容的数据。该渲染可以以任何合适的方式来实现,包括生成描绘物理和虚拟对象的图像数据。在其他实施例中,可以通过调制用户通过其观看物理世界的显示设备的不透明度来在一个场景中描绘物理和虚拟内容。可以控制不透明度,以创建虚拟对象的外观,并且还阻止用户看到物理世界中被虚拟对象遮挡的对象。在一些实施例中,图像数据可以仅包括可以被修改的虚拟内容,使得当通过用户界面观看时,虚拟内容被用户感知为与物理世界真实地交互(例如,剪辑内容以解决遮挡)。无论如何向用户呈现内容,都需要物理世界的模型,以便可受物理对象影响的虚拟对象的特性,包括虚拟对象的形状、位置、运动和可见性,可被正确计算。在一些实施例中,模型可包括物理世界的重建,例如重建318。
可以根据从用户的可穿戴设备上的传感器所收集的数据创建该模型。但是,在一些实施例中,可以根据多个用户所收集的数据创建模型,该数据可被聚集在远离所有用户的计算设备中(并且可以在“云中”)。
可以至少部分地通过世界重建***(例如,图6中更详细地描绘的图3的世界重建部件316)来创建模型。世界重建部件316可包括感知模块160,感知模块160可生成、更新和存储物理世界的一部分的表示。在一些实施例中,感知模块160可以将传感器的重建范围内的物理世界的部分表示为多个体素。每个体素可以对应于物理世界中预定体积的3D立方体,并且包括表面信息,该表面信息指示在该体素表示的该体积中是否存在表面。可以向体素分配值,该值指示它们的对应体积是否已被确定为包括物理对象的表面,被确定为为空还是尚未用传感器测量并且因此其值是未知的。应当理解,不需要显式地存储指示被确定为空或未知的体素的值,因为可以以任何合适的方式将体素的值存储在计算机存储器中,包括不存储关于被确定为空的或未知的体素的信息。
图7A描绘了离散为体素102的3D空间100的示例。在一些实施例中,感知模块160可以确定感兴趣的对象并设置体素的体积,以便捕获感兴趣的对象的特征并避免冗余信息。例如,感知模块160可被配置为标识较大的对象和表面,例如墙壁、天花板、地板和大型家具。因此,可以将体素的体积设置为相对大的大小,例如4cm3的立方体。
包括体素的物理世界的重建可被称为体积模型。随着传感器在物理世界中移动,随着时间的推移可创建用于创建体积模型的信息。当包括传感器的可穿戴设备的用户四处移动时,可发生这种运动。图8A-F描绘了将物理世界重建为体积模型的示例。在所示示例中,物理世界包括图8A中所示的表面的一部分180。在图8A中,在第一位置的传感器182可具有视野184,在该视野184内该表面的部分180是可见的。
传感器182可以是任何合适的类型,例如深度传感器。但是,深度数据可从图像传感器获得或以其他方式获得。感知模块160可从传感器182接收数据,并且然后如图8B所示设置多个体素186的值,以表示由传感器182在视野184中可见的表面的部分180。
在图8C中,传感器182可移动到第二位置并具有视野188。如图8D所示,另一组体素变得可见,并且这些体素的值可被设置为指示该表面已经进入传感器182的视野188的部分的位置。可以将这些体素的值添加到用于该表面的体积模型。
在图8E中,传感器182可进一步移动到第三位置并且具有视野190。在所示示例中,该表面的附加部分在视野190中变得可见。如图8F所示,另一组体素可变得可见,并且这些体素的值可被设置为指示该表面已经进入传感器182的视野190的部分的位置。这些体素的值可被添加到用于该表面的体积模型中。如图6所示,该信息可作为体积信息162a被存储为持久世界的一部分。也可以存储关于该表面的信息,例如颜色或纹理。这样的信息可被存储为例如体积元数据162b。
除了生成用于持久世界表示的信息之外,感知模块160还可以标识并输出AR***的用户周围的区域中的变化的指示。这种变化的指示可以触发对作为持久世界的一部分存储的体积数据的更新,或者触发其他功能,诸如触发生成AR内容的触发部件304以更新该AR内容。
在一些实施例中,感知模块160可以基于带符号的距离函数(SDF)模型来标识变化。感知模块160可被配置为接收诸如深度图160a和头部姿势160b之类的传感器数据,并且然后将传感器数据融合到SDF模型160c中。深度图160a可以直接提供SDF信息,并且图像可被处理以获得SDF信息。SDF信息表示距用于捕获该信息的传感器的距离。由于那些传感器可以是可穿戴单元的一部分,因此SDF信息可以从可穿戴单元的角度以及因此从用户的角度表示物理世界。头部姿势160b可以使SDF信息能够与物理世界中的体素相关。
回到图6,在一些实施例中,感知模块160可生成、更新和存储物理世界在感知范围内的部分的表示。感知范围可以至少部分地基于传感器的重建范围来确定,该重建范围可以至少部分地基于传感器的观察范围的极限来确定。作为特定示例,使用有源IR脉冲操作的有源深度传感器可以在一定距离范围内可靠地操作,从而创建传感器的观察范围,该观察范围可以从几厘米或几十厘米到几米。
图7B描绘了相对于具有视点106的传感器104的重建范围。可以基于由传感器104捕获的数据来构建视点106内的3D空间的重建。在所示的示例中,传感器104的观察范围为40cm至5m。在一些实施例中,可以将传感器的重建范围确定为小于传感器的观察范围,因为接近其观察极限的传感器输出可更加嘈杂、不完整和不准确。例如,在所示的40cm至5m的示例中,对应的重建范围可被设置为从1至3m,并且使用传感器收集的指示该范围之外的表面的数据可以不被采用。
在一些实施例中,感知范围可大于传感器的重建范围。如果使用关于物理世界的数据的部件164需要关于感知范围内的区域的数据,这些区域在物理世界在当前重建范围之内的部分之外,则可以从持久世界162中提供该信息。相应地,通过查询可以容易地访问关于物理世界的信息。在一些实施例中,可以提供API以响应这样的查询,从而提供关于用户的当前感知范围的信息。这样的技术可减少访问现有重建所需的时间并提供改善的用户体验。
在一些实施例中,感知范围可以是与围绕用户位置为中心的边界框相对应的3D空间。随着用户移动,在感知范围内的可通过部件164查询的物理世界的部分可以与用户一起移动。图7C描绘了以位置112为中心的边界框110。应当理解,边界框110的大小可被设置为以合理的扩展包围传感器的观察范围,因为用户不能以不合理的速度移动。在所示示例中,用户佩戴的传感器的观察极限为5m。边界框110被设置为20m3的立方体。
返回图6,世界重建部件316可包括可与感知模块160交互的附加模块。在一些实施例中,持久世界模块162可以基于感知模块160获取的数据来接收物理世界的表示。持久世界模块162还可包括各种格式的物理世界的表示。例如,可以存储诸如体素的体积元数据162b以及网格162c和平面162d。在一些实施例中,可以保存其他信息,例如深度图。
在一些实施例中,感知模块160可包括以各种格式(包括例如网格160d、平面和语义160e)生成用于物理世界的表示的模块。这些模块可以基于在生成表示时一个或多个传感器的感知范围内的数据以及在先前时间捕获的数据和持久世界162中的信息来生成表示。在一些实施例中,这些部件可以在利用深度传感器捕获的深度信息上进行操作。然而,AR***可包括视觉传感器,并且可以通过分析单眼或双眼视觉信息来生成这样的表示。
在一些实施例中,这些模块可以在物理世界的区域上操作。当感知模块160检测到物理世界在其他子区域中的变化时,那些模块可被触发以更新物理世界的子区域。例如,可以通过在SDF模型160c中检测新表面或其他标准(例如改变表示该子区域的足够数量的体素的值)来检测这种变化。
世界重建部件316可包括可从感知模块160接收物理世界的表示的部件164。关于物理世界的信息可由这些部件根据例如来自应用的使用请求来拉取(pull)。在一些实施例中,可以例如经由对预标识区域中的变化或感知范围内的物理世界表示的变化的指示,将信息推送给使用部件。部件164可包括例如执行用于视觉遮挡、基于物理的交互以及环境推理的处理的游戏程序和其他部件。
响应于来自部件164的查询,感知模块160可以以一种或多种格式发送对物理世界的表示。例如,当部件164指示该使用是用于视觉遮挡或基于物理的交互时,感知模块160可发送表面的表示。当部件164指示该使用是用于环境推理时,感知模块160可以发送物理世界的网格、平面和语义。
在一些实施例中,感知模块160可包括格式化信息以提供部件164的部件。这种部件的示例可以是光线投射部件160f。使用部件(例如,部件164)例如可以从特定视角查询关于物理世界的信息。光线投射部件160f可以从该视点从视野内的物理世界数据的一个或多个表示中选择。
从前面的描述中应该理解,感知模块160或AR***的另一部件可以处理数据以创建物理世界的部分的3D表示。可以通过至少部分地基于相机平截头体和/或深度图像挑选3D重建体积的部分、提取和保留平面数据、捕获、保留和更新允许本地更新同时保持邻居一致性的区块中的3D重建数据、向生成此类场景的应用提供遮挡数据(其中,遮挡数据是从一个或多个深度数据源的组合中推导的)、和/或执行多级网格简化来减少要处理的数据。
世界重建***可以从物理世界的多个视点随时间积分传感器数据。当包括传感器的设备移动时,可以跟踪传感器的姿势(例如,位置和取向)。由于传感器的框架姿势是已知的及其与其他姿势如何相关,物理世界的这些多个视点中的每个视点可被融合在单个的组合的重建。通过使用空间和时间平均(即,随时间推移从多个视点对数据进行平均),重建可以比原始传感器数据更完整并且噪声更少。
重建可包含不同复杂级别的数据,包括例如原始数据(例如实时深度数据)、融合的体积数据(例如体素)和计算的数据(例如网格)。
在一些实施例中,AR和MR***表示具有规则体素栅格的3D场景,其中每个体素可包含有符号的距离场(SDF)值。SDF值描述了体素位于要重建的场景中的表面的内部还是外部以及从体素到该表面的距离。计算表示场景所需体积的3D重建数据需要大量的存储器和处理能力。由于3D重建所需的变量数量随处理的深度图像数量立方增长,对于表示较大空间的场景,这些要求也随之增加。
本文描述的是减少处理的有效方式。根据一些实施例,场景可由一个或多个砖块表示。每个砖块可包括多个体素。处理的以生成场景的3D重建的砖块可以通过以下来选择:基于从图像传感器的视野(FOV)推导的平截头体和/或使用深度传感器创建的场景的深度图像(或“深度图”)挑选表示该场景的砖块集。
深度图像可具有一个或多个像素,每个像素表示到场景中的表面的距离。这些距离可以与相对于图像传感器的位置有关,从而从图像传感器输出的数据可被选择性地处理。图像数据可以针对表示3D场景的包含从图像传感器的视角(或“视点”)可见的表面的部分的那些砖块来处理。可以省略一些或所有剩余砖块的处理。通过这种方法,所选择的砖块可以是可能包含新信息的砖块,该新信息可以通过挑选图像传感器的输出不太可能提供关于其的有用信息的砖块来获得。从图像传感器输出的数据不太可能提供有关比深度图所指示的表面更靠近或更远离图像传感器的砖块的有用信息,因为这些砖块是空的空间或在表面的后面并且因此未描绘在来自图像传感器的图像中。
图9示出了沿平行于y坐标和z坐标的平面的场景400的截面图。XR***可以通过体素栅格504表示场景400。常规的XR***可以基于传感器406捕获的每个新深度图像来更新体素栅格的每个体素,传感器406可以是图像传感器或深度传感器,使得从体素栅格生成的3D重建可以反映场景中的变化。以这种方式进行更新可消耗大量的计算资源,并且还由于例如繁重的计算而导致的时间延迟从而在XR***的输出处引起伪像。
在此描述的是例如通过至少部分基于图像传感器406的相机平截头体404和/或由图像传感器捕获的深度图像挑选体素栅格504的部分,来提供具有计算资源利用率低的准确3D重建数据的技术。
在所示的示例中,图像传感器406捕获包括场景400的表面402的深度图像(未示出)。该深度图像可以以捕获某个参考点与场景400中的表面之间的距离的任何便利方式被存储在计算机存储器中。在一些实施例中,深度图像可被表示为在平行于x轴和y轴的平面中的值,如图9所示,其中参考点是坐标系的原点。X-Y平面中的位置可以对应于相对于参考点的方向,并且那些像素位置处的值可指示在由平面中的坐标所指示的方向上从参考点到最近的表面的距离。这样的深度图像可以包括在平行于x轴和y轴的平面中的像素的栅格(未示出)。每个像素可指示在特定方向上从图像传感器406到表面402的距离。在一些实施例中,深度传感器可能无法测量在特定方向上到表面的距离。例如,如果该表面超出图像传感器406的范围,则可导致这种情况。在一些实施例中,深度传感器可以是基于反射能量来测量距离的有源深度传感器,但是表面可能不反射足够的能量来进行准确的测量。因此,在一些实施例中,深度图像可能有“孔”,在这些孔处的像素未被分配值。
在一些实施例中,深度图像的参考点可以变化。这样的配置可允许深度图像表示整个3D场景中的表面,而不限于相对于特定参考点具有预定和有限角度范围的部分。在这样的实施例中,深度图像可指示当图像传感器406移动通过六个自由度(6DOF)时到表面的距离。在这些实施例中,深度图像可包括用于多个参考点中的每一个参考点的像素集。在这些实施例中,可以基于“相机姿势”来选择深度图像的一部分,“相机姿势”表示在捕获图像数据时图像传感器406所指向的方向和/或取向。
图像传感器406可具有视野(FOV),其可以由相机平截头体404表示。在一些实施例中,通过假设图像传感器406可以提供的最大深度410和/或图像传感器406可以提供的最小深度412,可以将所描绘的无限相机平截头体减小为有限的3D梯形棱柱408。3D梯形棱柱408可以是在六个平面处界定的凸多面体。
在一些实施例中,一个或多个体素504可被分组为砖块502。图10A示出了场景400的一部分500,其包括八个砖块502。图10B示出了包括83个体素504的示例性砖块502。参考图9,场景400可包括一个或多个砖块,在图4所示的视图中示出了其中的十六个。每个砖块可通行砖块标识例如[0000]-[0015]来标识。
几何图形提取***
在一些实施例中,几何图形提取***可以在用相机和/或传感器扫描场景时提取几何图形,这允许可以适应动态环境变化的快速有效的提取。在一些实施例中,几何图形提取***可以将提取的几何图形保留在本地和/或远程存储器中。保留的几何图形可具有唯一的标识,使得例如在不同的时间戳和/或来自不同应用的不同查询可以共享保留的几何图形。在一些实施例中,几何提取***可以根据各个查询来支持几何图形的不同表示。在下面的图11-19的描述中,平面被用作示例性几何图形。应当理解,几何图形提取***可以检测其他几何图形,以代替平面或除了平面之外用于后续处理中,包括例如圆柱体、立方体、线、角或诸如玻璃表面或孔之类的语义。在一些实施例中,本文关于几何图形提取所描述的原理可以适用于对象提取等。
图11示出了根据一些实施例的平面提取***1300。平面提取***1300可包括深度融合1304,其可接收多个深度图1302。多个深度图1302可以由佩戴深度传感器的一个或多个用户创建、和/或从本地/远程存储器下载。多个深度图1302可表示相同表面的多个视图。多个深度图之间可存在差异,这可以通过深度融合1304来调和。
在一些实施例中,深度融合1304可以生成SDF 1306。网格砖块1308可以通过例如在对应的砖块(例如,图13中的砖块[0000]至[0015])上应用移动立方体算法(marchingcube algorithm)而从SDF 1306中提取。平面提取1310可以检测网格砖块1308中的平面平面并且至少部分地基于网格砖块1308提取平面。平面提取1310还可以至少部分地基于对应的网格砖块来提取每个砖块的面元。面元网格可包括网格中的顶点,但不包括连接相邻顶点的边缘,使得存储面元比网格消耗更少的存储空间。平面数据存储库1312可以保留提取的平面和面元。
在一些实施例中,XR应用或XR***的其它部件164可以通过平面查询1314从平面数据存储库1312请求并获得平面,平面查询1314可以由应用程序接口(API)发送。例如,应用可以向平面提取***1300发送关于其位置的信息,并请求其附近的所有平面(例如,在五米半径内)。平面提取***1300然后可以搜索其平面数据存储库1312,并且将所选择的平面发送给该应用。平面查询1314可包括诸如该应用在哪需要平面、该应用需要哪种平面、和/或该平面应看起来如何的信息(例如,水平、垂直或成角度,这可以通过检查平面数据存储库中平面的原始法线(primitive normal)来确定)。
图12示出了根据一些实施例的平面提取***1300的部分1400,其示出了关于平面提取1310的细节。平面提取1310可包括将每个网格砖块1308划分成子砖块1402。可以对每个子砖块1402进行平面检测1404。例如,平面检测1404可以:在子砖块中比较每个网格三角形的原始法线;将具有小于预定阈值的原始法线差异的那些网格三角形合并为一个网格三角形;以及将面积大于预定面积值的网格三角形标识为平面。
图13是示出根据一些实施例的由包括体素的砖块[0000]至[0015]表示的场景1500以及包括该场景中的砖块平面1502、全局平面1504和面元1506的示例性平面数据的示意图。图13示出了被划分为四个子砖块1508的砖块[0011]。应当理解,可以将网格砖块划分为任何合适数量的子砖块。由平面检测1404检测的平面的粒度(granularity)可以由子砖块的大小来确定,而砖块的大小可以由存储体积3D重建数据的本地/远程存储器的粒度来确定。
回到图12,平面检测1404可以至少部分地基于针对网格砖块中的每个子砖块的检测平面来确定每个网格砖块的砖块平面(例如,砖块平面1502)。平面检测1404还可以确定延伸多于一个砖块的全局平面(例如,全局平面1504)。
在一些实施例中,平面提取1310可包括平面更新1406,平面更新1406可以至少部分地基于由平面检测1404检测的平面来更新存储在平面数据存储库1312中的现有砖块平面和/或全局平面。平面更新1406可包括添加附加的砖块平面、移除一些现有的砖块平面、和/或用由平面检测1404检测到并对应于相同砖块的砖块平面来替换一些现有的砖块平面,以使得该场景中的实时变化保留在平面数据存储库1312中。平面更新1406还可包括将由平面检测1404检测的砖块平面聚合到现有的全局平面,例如,当砖块平面被检测到与现有全局平面相邻时。
在一些实施例中,平面提取1310可以进一步包括平面合并和拆分1408。例如,当砖块平面被添加并连接两个全局平面时,平面合并可以将多个全局平面合并为一个大的全局平面。平面拆分可将一个全局平面拆分为多个全局平面,例如,当全局平面中间的砖块平面被移除时。
图14示出了根据一些实施例的平面数据存储库1312中的数据结构。由平面ID1612索引的全局平面1614可以处于该数据结构的最高级别。每个全局平面1614可包括多个砖块平面和与对应的全局平面相邻的砖块的面元,使得可以为每个砖块保留一个砖块平面,而当全局平面的边缘不合格为用于对应砖块的砖块平面时可以准确地呈现全局平面。在一些实施例中,与全局平面相邻的砖块的面元而不是场景中所有砖块的面元被保留,因为这足以准确地呈现全局平面。例如,如图13所示,全局平面1504跨砖块[0008]至[0010]和[0006]延伸。砖块[0006]具有砖块平面1502,砖块平面1502不是全局平面1504的一部分。利用平面数据存储库1312中的数据结构,当平面查询请求全局平面1504时,砖块[0006]和[0012]的面元被检查以确定全局平面1504是否延伸到砖块[0006]和[0012]中。在所示的示例中,面元1506指示全局平面1504延伸到砖块[0006]中。
回到图14,全局平面1614可以与对应的砖块平面1610双向关联。砖块可以通过砖块ID 1602来标识。砖块可被划分为包括至少一个平面的平面砖块1604和不包括平面的非平面砖块1606。平面砖块和非平面砖块的面元都可被保留,这取决于砖块是否与全局平面相邻而不取决于该砖块是否包括平面。应当理解,在XR***正观看场景时,无论是否存在平面查询1314,都可以将平面连续保留在平面数据存储库1312中。
图15示出了根据一些实施例的当应用向平面数据存储库1312发送平面查询1314时可以提取平面以供该应用使用的平面几何图形提取1702。平面几何图形提取1702可被实现为API。平面查询1314可指示请求的平面几何图形表示,例如外部矩形平面、内部矩形平面或多边形平面。根据平面查询1314,平面搜索1704可以在平面数据存储库1312中搜索并获得平面数据。
在一些实施例中,来自平面覆盖点1706的栅格化可生成平面覆盖点。在图16A中示出了示例。存在四个砖块[0000]-[0003],每个砖块具有砖块平面1802。通过将砖块平面的边界点投影到全局平面1804上,生成平面覆盖点1806(或“栅格化点”)。
回到图15,来自平面覆盖点1706的栅格化还可以从该平面覆盖点生成栅格化的平面掩模。根据平面查询1314所请求的平面几何图形表示,可以分别通过内部矩形提取1708、外部矩形提取1710和多边形提取1712来提取内部矩形平面表示、外部矩形平面表示和多边形平面表示。在一些实施例中,应用可以在发送平面查询后的几毫秒内接收请求的平面几何图形表示。
图16B中示出了示例性栅格化的平面掩模1814。根据栅格化的平面掩模,可生成各种平面几何图形表示。在所示的示例中,通过连接栅格化的平面掩模的一些平面覆盖点来生成多边形1812,以使得该掩模中的平面覆盖点中没有一个在多边形外部。生成外部矩形1808,以使得外部矩形1808是围绕栅格化的平面掩模1814的最小矩形。内部矩形1810通过以下操作来生成:将“1”分配给具有两个平面覆盖点的砖块,而将“0”分配给没有两个平面覆盖点的砖块以形成栅格化栅格,确定被标记为“1”并在平行于砖块的边缘的线上对齐的砖块组(例如,砖块[0001]、[0005]、[0009]和[0013]作为一组,砖块[0013]-[0015]作为一组),并为每个确定的组生成一个内部矩形,使得该内部矩形是围绕相应组的最小矩形。
图17示出了根据一些实施例的用于场景1900的网格。图18A-C示出了根据一些实施例的分别由外部矩形平面、内部矩形平面和多边形平面表示的场景1900。
图19示出了场景1900的噪声较小的3D表示,其是通过基于提取的平面数据(例如图18A-C所示的平面)将图17所示的网格平面化而获得的。
环境重建
在一些实施例中,环境的一部分,例如室内环境,可以由一组拐角点来表示,具有或不具有关于它们所界定(bound)的那些点或表面的元数据。可以通过感知模块160(图6)或任何其他合适的部件来实现如本文所述的用于简单地表示环境的一部分的技术。描述该表示的这种信息可以被存储为持久(persist)世界模型162的一部分,而不是如上所述的密集网格或其他表示,或作为如上所述的密集网格或其他表示的补充。替代地或附加地,那些拐角点可以被转换为模仿使用如上所述的其他技术所计算的表示的格式。作为一个具体示例,作为一组拐角点的环境的表示可以被转换为简单的网格并且被存储为网格162c。替代地或附加地,识别出的每个墙壁可以被存储为平面162d。
当部件164需要关于存储了这种表示的物理世界的一部分的信息时,该部件164可以使用对感知模块160的调用或以任何其他合适的方式访问持久世界模型162来获得该表示。在一些实施例中,可以每当请求关于物理世界的那部分的信息时来提供该表示。在一些实施例中,请求信息的部件164可以指定简单表示是合适的或所请求的。例如,应用可以使用指示物理世界的简化表示是适合或所请求的参数而调用到持久世界模型162。
可以根据表示环境中的表面(例如墙壁、地板和/或天花板)的表面平面来确定拐角点。表面平面可以从利用XR***中的可穿戴或其他部件上的传感器所收集的数据中得出。数据可以表示平面片段,其可以对应于通过处理如上所述的图像、距离或其他传感器数据而检测到的墙壁或其他表面的部分。
在一些实施例中,可以通过基于平面片段而识别环境的表面平面来重建环境,例如室内环境。在一些实施例中,平面片段可以由界定平坦表面的三个或更多个点来表示。可以计算针对平面片段的平面片段法线。作为具体示例,可以使用四个点来限定空间中的四边形,该四边形适配在平面片段内或包围平面片段。平面片段法线可以指示平面片段的取向。平面片段法线可以与指示平面片段的区域的值相关联。
在一些实施例中,可以从例如持久世界162的已保存的数据中获得平面片段。可替换地或附加地,由用可穿戴设备提供的软件开发工具包(SDK)所提供的功能可以处理传感器数据以生成平面片段。在一些实施例中,可以通过使用AR设备扫描环境的一部分来获得平面片段,这可以用作“初始扫描”。在一些实施例中,可以预先确定初始扫描的长度,例如几分钟或几秒,以便获得足够的平面片段来重建环境。在一些实施例中,初始扫描的长度可以是动态的,在获得足以重建环境的平面片段时结束。
在一些实施例中,平面片段可以源自一个或多个砖块平面。在一些实施例中,平面片段的形状可以是随机的,这取决于AR设备在预定时间内捕获的深度和/或图像信息。在一些实施例中,平面片段的形状可以与另一个平面片段相同或不同。
在一些实施例中,AR***可以被配置为获得足以识别环境的所有表面平面的多个平面片段。在一些实施例中,平面片段的数量可以对应于环境的表面平面的数量。例如,对于具有天花板、地板和四个墙壁的房间,当天花板和地板之间的距离已知时,每个对应于四个墙壁的四个平面片段可能足以重建房间。在该示例性场景中,AR***可以将每个平面片段设置为表面平面。
在一些实施例中,初始扫描可以持续几分钟或几秒钟。在一些实施例中,获得的平面片段的数量可能多于环境的平面表面的数量。表面平面过滤器可以被配置为通过例如过滤掉不必要的平面片段并将多个平面片段组合为一个来处理所获得的用于环境的表面平面的平面片段。在一些实施例中,可以处理平面片段以形成可能表示同一表面的不同部分的平面片段组。可以从每个组中导出可以被建模为无限范围的表面的表面平面,并用于确定界定环境的表面的交点,从而可以识别拐角点。在一些实施例中,表面平面可以由三个或更多点来表示,这些点界定了从中导出表面平面的平面片段组。可以根据表示表面平面的点来计算表面平面法线。表面平面法线可以指示表面平面延伸的平面的取向。
在一些实施例中,环境的拐角点可以通过将环境的第一和第二相邻表面平面视为延伸到无穷远并识别这些平面相交的边界线来推断。然后边界线可以与第三表面平面相交,并且在一些实施例中,与第四表面平面相交,以识别边界线的端点。可以基于一个或多个标准将第一和第二表面平面选择为相邻的,例如:平面是否相交而不穿过其他表面平面,平面是否相交于距可穿戴设备的用户的距离,该距离符合房间的估计的最大尺寸,或用于识别每个表面平面的平面片段的质心的接近度。第一和第二表面平面可以选自具有大致垂直取向的那些平面,使得它们表示界定环境的部分的墙壁。可以使用标准,例如法线在0度的某个阈值角度内,来选择垂直平面。第三和第四表面平面可以选自具有水平取向的平面,例如法线在90度的某个阈值角度内。在一些实施例中,阈值角度对于水平面和垂直面可能不同。例如,阈值角度对于水平面可能更大,以识别表示例如倾斜天花板的平面。在一些实施例中,配备有可穿戴设备的SDK可以根据例如指示所请求的表面平面的类型(包括例如天花板平面、地板平面和墙壁平面)的用户请求来提供表面平面。
无论选择表面平面进行处理的方式如何,都可以处理相邻垂直平面的组合以识别其他边界线,然后这些边界线可以进一步与一个或多个水平平面相交以识别拐角点。AR***可以迭代该过程,直到推断/确定环境的拐角点的完整集合。当所识别的拐角点限定封闭空间时,可以确定完整集合。如果在初始扫描期间获得的信息不足以形成闭合,则可以执行额外的扫描。
图20示出了根据一些实施例的操作AR***以生成环境的3D重建的示例性方法2000。结合图20至图29描述的方法可以在XR***的一个或多个处理器中执行。方法2000可以从提取(动作2002)环境的平面片段开始。
提取平面片段在图24中示出,其描绘了示例性环境2500。在该示例中,环境2500是艺术博物馆中的房间2502。房间2502可以由天花板2504、地板2506和墙壁2508界定。墙壁2508可以用来展示一件或多件艺术品,例如具有平坦表面的绘画2510和具有弯曲表面的艺术品2512。应当理解,方法2000不限于重建如房间2502的房间,并且可以应用于重建任何种类的环境,包括但不限于具有多个天花板、多个地板或拱形天花板的房间。
该环境2500内的用户2516A-2516C可以佩戴相应的AR设备2514A-2514C。AR设备2514A-2514C可以具有对应的视野2518A-2518C。在其对应的视野内,在初始扫描期间,AR设备可以获得平面片段2520。在一些实施例中,AR设备可以从AR设备中的传感器所捕获的深度和/或图像和/或其他信息中提取平面片段。AR设备可以表示具有限定位置、取向和该平面片段所包含的区域的信息的平面片段。例如,平面片段可以由三个或更多的点来表示,这些点界定了一个区域,该区域相对于用户具有相似深度或以其他方式识别为平坦表面。在一些实施例中,每个点可以由其在坐标系中的位置来表示。在一些实施例中,坐标系可以是固定的,例如使用环境中的参考作为原点,这使得更容易在用户之间共享。在一些实施例中,坐标系可以是动态的,例如,使用用户的位置作为原点,这简化了数据并减少了向用户显示环境所需的计算。
对于每个平面片段,可以计算平面片段法线2522。在一些实施例中,平面片段法线可以是矢量的格式。平面片段法线可以指示相应的平面片段的取向。平面片段法线也可以具有一个值,表示由平面片段所覆盖的区域的大小。
回到图20所示,方法2000可以包括至少部分地基于所获得的平面片段来识别(动作2004)一个或多个表面平面。在一些实施例中,表面平面可以由用户特别地(ad hoc)识别。在图24所示的示例中,FOV 2518B内所提取的平面片段可以显示在AR设备2514B上并且对用户2516B可见。用户可以通过例如指向显示在AR设备2514B上的平面片段来向AR设备2514B指示平面片段法线2524应该被设置为针对墙壁的主要(dominant)表面平面法线。
在一些实施例中,表面平面可以通过方法自动地或半自动地识别,无需或需要部分用户输入。图21描绘了根据一些实施例的用于动作2004的示例性方法2100。方法2100可以开始于基于一个或多个标准将获得的平面片段分成(动作2102)不同的组。
在一些实施例中,平面片段可以利用用户输入进行分组。在图24所示的示例中,用户2516A可以向AR设备2514A指示在FOV 2518A内显示的四个平面片段之一应该被设置为第一组。AR设备可以被配置为将该用户输入解释为指示FOV 2518A内的剩余平面片段应该被设置为与第一组不同的第二组,使得用户可以指向一个平面片段,以及然后快速继续前进以扫描环境的不同空间。在一些情况下,部分用户输入可以加速方法2100的执行。
在所示实施例中,至少一个这样的标准是基于相应的平面片段法线。在一些实施例中,具有在误差范围内的平面片段法线的平面片段可以被分组在一起。在一些实施例中,误差范围可以是预定的,例如低于30度、低于20度或低于10度。在其他实施例中,可以动态地确定组的边界,例如通过使用聚类算法。作为另一示例,可以基于平面片段之间的距离对平面片段进行分组。两个平面片段之间的距离可以例如在第一平面片段的质心处、在平行于该平面片段的法线的方向上进行测量。可以测量从质心到与包含第二平面片段的平面的交点的距离。
替代地或附加地,一个或多个标准可用于从组中选择或排除平面片段。例如,可以仅处理高于阈值大小的平面片段。替代地或附加地,可以排除太大的平面片段,以致它们大于房间的可能尺寸。分类可以基于其他标准,例如平面片段的取向,使得可以仅处理水平或垂直的墙壁片段,或具有以其他方式可能表示墙壁、地板或天花板的取向的墙壁片段。可以替代地或附加地使用其他特性,例如墙壁片段的颜色或纹理。同样,距用户或其他参考点的距离可用于将平面片段分配给组。例如,距离可以在平行于平面片段的法线的方向上进行测量,或者使用将同一表面的片段分组在一起的其他标准来测量。
不管平面片段如何被选择和分组,然后可以处理组,使得从每个组中的平面片段导出表面平面。在动作2104,可以确定在针对每个组中的平面片段法线中是否存在主要平面片段法线。在一些实施例中,主要平面片段法线可以通过比较与平面片段法线相关联的平面片段的大小来确定,该大小可以由表示与平面片段法线相关联的平面片段的区域的值来指示。如果平面片段法线与明显大于其他平面片段的平面片段相关联,则与明显更大的平面片段相关联的平面片段法线可以被选择为主要平面片段法线。
平面片段的大小的统计分布可用于确定是否存在主要平面法线。例如,如果最大的平面片段超过一组中其他平面片段的平均大小超出一个标准差,则它可以被选为主要平面片段法线。不管如何确定主要平面片段法线,在动作2106,可以将主要平面片段法线设置为表面平面法线,然后可以将其用于限定表示表面的表面平面。
如果作为在动作2104处的处理的结果没有检测到主要平面片段法线,则在动作2108处,可以从组中的平面片段的平面片段法线导出表面平面法线。图21示出了例如可以将该组中的所选平面片段法线的加权平均设置为表面法线。权重可以与与平面片段法线相关联的平面片段的大小成比例,使得结果可能受到测量相同或相似取向的表面区域的影响。
所选择的平面片段法线可以包括该组中的所有平面片段法线,或者通过例如去除与小于值阈值(例如,多个砖块平面),和/或具有在阈值之外的取向的平面片段相关联的平面片段法线而选择的组中的所有平面片段法线的一部分。该选择可以在任何合适的时间执行,并且可以例如作为动作2108的一部分来执行,或者可以替代地或附加地作为在动作2102中将平面片段分成组的一部分来执行。
在动作2110,方法2000可以基于表面平面法线导出表面平面。当检测到主要平面片段法线时,可以将与主要平面片段对应的平面片段保存为表面平面。当没有检测到主要平面片段法线时,可以通过动作2108导出表面平面。不管表面平面法线是如何确定的,表面平面可以由三个或更多点来表示,这可以被视为表示与表面平面法线垂直的无限平面(例如,如图所示的表面平面2616)。在一些实施例中,表面平面可以包括元数据,元数据包括例如平面片段的组在何处为中心或在该组中的平面片段中检测到多少表面区域。在一些实施例中,表面平面可以是环境的表面的片段(例如,如图所示的表面平面2614),其可以具有与平面片段相同的格式。
参考图25,其描绘了根据一些实施例的环境2500的简化示意图2600,示意图2600可以包括表面平面2602-2620,其可以基于图24中所提取的平面片段2520来识别。在图25的图示中,表面平面显示为截断,使得它们可以被示出,但是应该理解,表面平面可能没有与其相关联的面积,因为它们可以被视为是无限的。作为示例,表面平面2610可以至少部分地基于由用户2516B佩戴的AR设备2514B所捕获的平面片段来识别(图24)。在所示示例中,具有平坦表面的绘画2510和具有弯曲表面的艺术品2512在视野2518B内。从艺术品中提取的平面片段可以在计算表面平面之前被移除,因为对于弯曲平面的平面法线可能超出误差范围。从绘画中提取的平面片段可以在计算表面平面之前被移除,因为对于绘画的平面法线的值可能明显小于从其后面的墙壁中提取的平面片段的值。作为另一示例,可以至少部分地基于由用户2516A佩戴的AR设备2514A所提取的平面片段来识别表面平面2614和2616。所提取的平面片段可以分成两组,分别用于计算表面平面2614和2616。
回到图20,方法2000可以包括至少部分地基于表面平面来推断(动作2006)环境的一个或多个拐角点。图22描绘了根据一些实施例的用于动作2006的方法2300。方法2300可以通过将两个墙壁平面(例如,表面平面2602和2606)延伸(动作2302)到无穷远开始。在一些实施例中,墙壁平面可以选自具有大体垂直取向的那些平面,使得它们表示界定环境的部分的墙壁。在一些实施例中,方法2300可以包括跟踪从相交表面平面到另一个相交表面平面的路径,例如,在由墙壁平面限定的方向上。如果路径形成回路,则方法2300可确定形成闭合。如果路径遇到与一个平面相交但不与第二平面相交的所识别的表面平面,这表明路径中断,则方法2300可以确定没有闭合。在一些实施例中,可以计算墙壁平面之间的中心到中心距离(例如,图26中的d)。方法2300可以从具有最小中心到中心距离的两个墙壁平面开始。
方法2300可以包括获得(动作2304)与两个墙壁平面两者相交的边界线。该线可以通过操纵这里描述的几何结构的计算表示的计算来获得。例如,如图26所示,边界线2702与两个表面平面2602和2606相交。在动作2306,可以通过使边界线与相应的地板平面相交来推断一个或多个第一拐角点。例如,如图27所示,通过使边界线2702与地板平面2622相交来推断第一拐角点2802。在动作2308,可以通过使边界线与相应的天花板平面相交来推断一个或多个第二拐角点。如图27所示,通过使边界线2702与天花板平面2620相交来推断第二拐角点2804。尽管所示房间2500具有一个天花板和一个地板,但是应该理解一些房间可以具有多个天花板或地板。例如,两个地板平面过渡处的边界线可能导致两个第一拐角点。类似地,两个天花板平面过渡处的边界线可能导致两个第二拐角点。
参考回到图20,方法2000可以包括确定(动作2008)所推断的拐角点是否界定了封闭空间,使得可以确认该组点是房间或者内部环境的准确表示。在一些实施例中,如果连接拐角点的边界线可以被连接以限定接合并界定闭合体积的表面,则该确定指示形成闭合。在一些实施例中,如果由拐角点界定的墙壁平面形成环路,则该确定指示形成闭合。
在一些实施例中,当计算指示形成了闭合时,在动作2010中,可以保存拐角点——例如,它们可以存储在本地存储器中和/或通过计算机网络通信以存储在远程存储器中。当计算结果指示尚未形成闭合时,动作2002-2006中的一些动作可以重复多次,直到形成闭合或检测到数据错误。例如,在每次迭代中,可能会收集或访问额外的数据,以便在动作2002中使用更多的平面片段,从而增加形成闭合的机会。在一些实施例中,错误可能意味着所推断的拐角点不在可修正为简单表示的空间中。在一些实施例中,响应于错误,***可以呈现用户界面,通过以下为用户提供干预选项:例如指示在传感器未检测到平面片段的位置存在表面平面或指示在***错误地分组了一些提取的平面片段的位置没有表面平面。
在所示示例中,在动作2012中,AR***确定是否需要新的平面片段。当确定需要新的平面片段时,方法2000可以执行动作2002以捕获额外的平面片段。当确定不需要新的平面片段并且取而代之的是,例如,所捕获的平面片段应该被重新分组时,方法2000可以执行动作2004以获得额外的表面平面和/或替换现有的表面平面。
图23描绘了示出根据一些实施例的被配置为执行方法2000的***2400的简化示意图。***2400可以包括云存储器2402和被配置为与云存储器2402和其他AR设备通信的AR设备2514A、2514B和2514C。第一AR设备2514A可以包括第一本地存储器,其存储从由第一AR设备所提取的平面片段所推断的第一拐角点。第二AR设备2514B可以包括第二本地存储器,其存储从由第二AR设备所提取的平面片段所推断的第二拐角点。第三AR设备2514C可以包括第三本地存储器,其存储从由第三AR设备所提取的平面片段所推断的第三拐角点。
在一些实施例中,当在第一AR设备上运行的应用需要环境2500的3D表示时,第一AR设备可以从云存储器检索第二拐角点和第三拐角点以构建房间2500的3D表示,例如,图28中所示的网格模型2900。网格模型可以有多种用途。例如,网格模型2900可以被在AR设备上运行的家庭承包应用用来计算覆盖房间2500所需的油漆量。与使用通过扫描整个房间获得的传统模型相比,网格模型2900可以通过部分扫描房间来实现,同时给出准确和快速的结果。
在一些实施例中,在多用户体验中,AR设备可以一起扫描环境。AR设备可以与识别出的拐角点相互通信,从而以比单个用户以更少的时间识别环境的所有拐角点。
结论
因此,已经描述了一些实施例的几个方面,应当理解,本领域技术人员将容易想到各种更改、修改和改进。
作为一个示例,结合增强(AR)环境来描述实施例。应当理解,本文描述的一些或全部技术可以在MR环境中或更普遍地在其他XR环境和VR环境中应用。
作为另一示例,结合诸如可穿戴设备之类的设备来描述实施例。应当理解,本文描述的一些或全部技术可以经由网络(例如云)、离散应用和/或设备、网络和离散应用的任何合适的组合来实现。
这样的更改、修改和改进旨在成为本公开的一部分,并且旨在落入本公开的精神和范围内。此外,尽管指示了本公开的优点,但是应当理解,并非本公开的每个实施例将包括每个描述的优点。一些实施例可不实现在此以及在某些情况下被描述为有利的任何特征。因此,前面的描述和附图仅作为示例。
可以以多种方式中的任何一种来实现本公开的上述实施例。例如,可以使用硬件、软件或其组合来实现实施例。当以软件实现时,软件代码可以在任何合适的处理器或处理器集合上被执行,无论是在单台计算机中提供还是在多台计算机中分布。这样的处理器可被实现为集成电路,在集成电路部件中具有一个或多个处理器,包括本领域已知的命名为诸如CPU芯片、GPU芯片、微处理器、微控制器或协处理器的可商用的集成电路部件。在一些实施例中,处理器可以在诸如ASIC的定制电路或通过配置可编程逻辑设备而生成的半定制电路中实现。作为另一替代方案,处理器可以是较大的电路或半导体设备的一部分,无论是可商购的、半定制的还是定制的。作为特定示例,一些可商购的微处理器具有多个核,使得这些核中的一个或子集可以构成处理器。但是,可以使用任何适当格式的电路来实现处理器。
此外,应当理解,计算机可以以多种形式中的任何一种来体现,例如机架式计算机、台式计算机、膝上型计算机或平板计算机。另外,计算机可被嵌入通常不被认为是计算机但具有适当处理能力的设备中,包括个人数字助理(PDA)、智能电话或任何其他适当的便携式或固定电子设备。
此外,计算机可具有一个或多个输入和输出设备。这些设备尤其可以用于呈现用户接口。可以用于提供用户接口的输出设备的示例包括用于视觉呈现输出的打印机或显示屏,以及用于听觉呈现输出的扬声器或其他声音生成设备。可以用于用户接口的输入设备的示例包括键盘和指向设备,例如鼠标、触摸板和数字化平板电脑。作为另一个示例,计算机可以通过语音识别或其他可听格式接收输入信息。在所示的实施例中,输入/输出设备被示为与计算设备物理上分开。然而,在一些实施例中,输入和/或输出设备可以物理地集成到与处理器或计算设备的其他元件相同的单元中。例如,键盘可被实现为触摸屏上的软键盘。在一些实施例中,输入/输出设备可以与计算设备完全断开,并且通过无线连接在功能上集成。
这样的计算机可以通过任何适当形式的一个或多个网络互连,包括作为局域网或诸如企业网络或因特网之类的广域网。这样的网络可以基于任何适当的技术,并且可以根据任何适当的协议进行操作,并且可包括无线网络、有线网络或光纤网络。
此外,本文概述的各种方法或过程可被编码为可在采用多种操作***或平台中的任何一种的一个或多个处理器上执行的软件。另外,这样的软件可以使用多种合适的编程语言和/或编程或脚本工具中的任何一种来编写,并且还可被编译为在框架或虚拟机上执行的可执行机器语言代码或中间代码。
在这方面,本公开可被体现为编码有一种或多种程序的计算机可读存储介质(或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、压缩光盘(CD)、光盘、数字视频盘(DVD)、磁带、闪存、现场可编程门阵列或其他半导体设备中的电路配置、或其他有形计算机存储介质),这些程序在一台或多台计算机或其他处理器上被执行时执行实现以上讨论的本公开的各种实施例的方法。从前述示例显而易见的是,计算机可读存储介质可以将信息保留足够的时间,以提供非暂时形式的计算机可执行指令。这样的一个或多个计算机可读存储介质可以是可移动的,使得可以将存储在其上的一个或多个程序加载到一个或多个不同的计算机或其他处理器上,以实现如上所述的本公开的各个方面。如本文所使用的,术语“计算机可读存储介质”仅包括可被认为是制造(即,制造品)或机器的计算机可读介质。在一些实施例中,本公开可被体现为除计算机可读存储介质之外的计算机可读介质,例如传播信号。
本文在一般意义上使用术语“程序”或“软件”来指代可用于对计算机或其他处理器进行编程以实现如上所述的本公开的各种方面的任何类型的计算机代码或计算机可执行指令集。另外,应了解,根据此实施例的一方面,当被执行时执行本公开的方法的一个或多个计算机程序不需要驻留在单个计算机或处理器上,而是可以以模块化的方式分布在多个不同的计算机或处理器中来实现本公开的各个方面。
计算机可执行指令可以采用多种形式,例如由一个或多个计算机或其他设备执行的程序模块。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、部件、数据结构等。通常,在各种实施例中,程序模块的功能可以根据需要进行组合或分布。
此外,数据结构可以以任何合适的形式被存储在计算机可读介质中。为了简化说明,数据结构可被显示为具有通过数据结构中的位置相关的字段。这样的关系同样可以通过在传达字段之间的关系的计算机可读介质中为具有位置字段的分配存储设备来实现。但是,可以使用任何合适的机制来建立数据结构的字段中的信息之间的关系,包括通过使用指针、标签或在数据元素之间建立关系的其他机制。
本公开的各个方面可以单独地、组合地或以在前述实施例中未具体讨论的各种布置来使用,并且因此不限于应用于在前面的描述中阐述或在附图中示出的部件的细节和布置。例如,一个实施例中描述的方面可以以任何方式与其他实施例中描述的方面组合。
此外,本公开可被体现为一种方法,其示例已被提供。作为方法的一部分执行的动作可以以任何合适的方式排序。因此,可以构建这样的实施例,其中以与所示出的顺序不同的顺序执行动作,这可包括同时执行即使在说明性实施例中被示为顺序动作的一些动作。
在权利要求中使用序数术语(例如“第一”、“第二”、“第三”等)来修改权利要求元素本身并不表示一个权利要求元素相对于另一个权利要求具有任何优先权、在先权或顺序或执行方法的动作的时间顺序,而是仅用作标签,以区分具有某名称的一个权利要求元素与具有相同名称的另一个元素(但用于序数词)来区分这些权利要求元素。
此外,本文中使用的措词和术语是出于描述的目的,并且不应被视为限制。本文中“包括”或“具有”、“包含”、“涉及”及其变体的使用意在涵盖其后列出的项目及其等同物以及附加项目。

Claims (20)

1.一种便携式电子***,包括:
传感器,被配置为捕获关于物理世界的信息;
处理器,被配置为执行计算机可执行指令以至少部分地基于所捕获的关于所述物理世界的信息来计算所述物理世界的部分的三维3D表示,其中,所述计算机可执行指令包括用于以下的指令:
从传感器捕获的信息中提取多个平面片段;
至少部分地基于所述多个平面片段,识别多个表面平面;以及
至少部分地基于所述多个表面平面,推断所述物理世界的所述部分的多个拐角点。
2.根据权利要求1所述的便携式电子***,其中,所述计算机可执行指令还包括用于以下的指令:使用所述拐角点来构建所述物理世界的所述部分的网格模型。
3.根据权利要求1所述的便携式电子***,其中,所述多个表面平面是至少部分地基于来自佩戴所述便携式电子***的至少一部分的用户的输入来识别的。
4.根据权利要求1所述的便携式电子***,包括:
收发器,被配置用于通过计算机网络与提供远程存储器的设备进行通信。
5.根据权利要求1所述的便携式电子***,其中,所述处理器实现被配置为向应用提供所述物理世界的所述部分的所述3D表示的服务。
6.根据权利要求5所述的便携式电子***,其中,所述服务将所述拐角点保存在本地存储器中或将所述拐角点传送到云存储器作为所述物理世界的所述部分的所述三维3D表示。
7.根据权利要求1所述的便携式电子***,其中,识别所述多个表面平面包括:
确定在所述多个平面片段的平面片段法线组之中是否存在主要平面片段法线;
当所述确定指示所述组中的主要平面片段法线时,将所述主要平面片段法线设置为表面平面法线;以及
当所述确定指示没有所述组中的主要平面片段法线时,根据所述组中的所述平面片段法线中的至少一部分计算所述表面平面法线。
8.根据权利要求7所述的便携式电子***,其中,
计算所述表面平面法线包括:计算所述组中的所述平面片段法线中的至少一部分的加权平均。
9.根据权利要求1所述的方法,其中,推断所述物理世界的所述部分的所述多个拐角点包括:
将所述多个表面平面中的第一表面平面和第二表面平面延伸到无穷;以及
获得与所述第一表面平面和所述第二表面平面相交的边界线。
10.根据权利要求9所述的方法,其中,推断所述物理世界的所述部分的多个拐角点还包括:
通过使所述边界线与第三表面平面相交来推断所述多个拐角点中的一个拐角点。
11.至少一种非暂时性计算机可读介质,其被编码有多个计算机可执行指令,所述多个计算机可执行指令在由至少一个处理器执行时执行一种用于提供物理世界的部分的三维3D表示的方法,在所述3D表示中,所述物理世界的所述部分用多个拐角点来表示,所述方法包括:
捕获关于所述物理世界的在用户的视野(FOV)内的部分的信息;
从所捕获的信息中提取多个平面片段;
从所述多个平面片段中识别多个表面平面;以及
基于所识别的多个表面平面中的表面平面的相交,计算表示所述物理世界的所述部分的多个拐角点。
12.根据权利要求11所述的方法,包括:
计算第一多个拐角点是否形成闭合。
13.根据权利要求12所述的方法,其中,
计算闭合是否被形成包括:确定接合所述第一多个拐角点的边界线是否可以被连接以限定接合并界定闭合体积的表面。
14.根据权利要求11所述的方法,其中:
所述物理世界的所述部分是所述物理世界的第一部分,
所述用户是第一用户,
所述多个拐角点是第一多个拐角点;以及
所述方法还包括:
从第二用户接收所述物理世界的第二部分的第二多个拐角点;以及
至少部分地基于所述第一多个拐角点和所述第二多个拐角点,提供所述物理世界的所述3D表示。
15.根据权利要求11所述的方法,其中:
所述用户是第一用户,以及
所述方法还包括:
通过计算机网络传送根据所捕获的关于所述物理世界的在所述第一用户的视野内的所述部分的信息所计算的拐角点;
在由第二用户所使用的XR设备处接收所传送的拐角点;以及
基于所接收的多个拐角点,用所述XR设备向所述第二用户渲染关于所述物理世界的所述部分的信息。
16.根据权利要求11所述的方法,包括:
计算用于所述拐角点的元数据,所述元数据指示所述拐角点之间的位置关系。
17.根据权利要求16所述的方法,包括:
保存包括相应的元数据的所述拐角点,以使得所述拐角点可由包括所述用户在内的多个用户检索。
18.一种操作交叉现实***以重建环境的方法,所述交叉现实***包括处理器,所述处理器被配置为与由用户所佩戴的传感器通信地处理图像信息,所述传感器针对所述传感器的视野中的各个区域生成深度信息,所述方法包括:
从所述深度信息中提取多个平面片段;
向所述用户显示所提取的平面片段;
接收指示多个表面平面的用户输入,每个表面平面表示界定所述环境的表面;以及
至少部分地基于所述多个表面平面,计算所述环境的多个拐角点。
19.根据权利要求18所述的方法,还包括:
确定所述多个拐角点是否形成闭合。
20.根据权利要求19所述的方法,还包括:
当确定所述闭合被形成时,存储所述拐角点。
CN202080060983.1A 2019-07-03 2020-06-25 使用平面提取的简单环境求解器 Pending CN114341943A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962870193P 2019-07-03 2019-07-03
US62/870,193 2019-07-03
PCT/US2020/039631 WO2021003058A1 (en) 2019-07-03 2020-06-25 Simple environment solver using planar extraction

Publications (1)

Publication Number Publication Date
CN114341943A true CN114341943A (zh) 2022-04-12

Family

ID=74066427

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080060983.1A Pending CN114341943A (zh) 2019-07-03 2020-06-25 使用平面提取的简单环境求解器

Country Status (5)

Country Link
US (2) US11508141B2 (zh)
EP (1) EP3994673A4 (zh)
JP (1) JP2022539160A (zh)
CN (1) CN114341943A (zh)
WO (1) WO2021003058A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI766218B (zh) * 2019-12-27 2022-06-01 財團法人工業技術研究院 三維平面重建方法、三維平面重建系統與計算裝置
EP4182922A1 (en) * 2020-07-16 2023-05-24 Sony Interactive Entertainment Inc. Influencer stream customization for follower viewers
CN113240789B (zh) * 2021-04-13 2023-05-23 青岛小鸟看看科技有限公司 虚拟对象构建方法及装置
US11562529B2 (en) * 2021-06-23 2023-01-24 Meta Platforms Technologies, Llc Generating and modifying an artificial reality environment using occlusion surfaces at predetermined distances
US11961184B2 (en) 2021-09-17 2024-04-16 Samsung Electronics Co., Ltd. System and method for scene reconstruction with plane and surface reconstruction
KR102669261B1 (ko) * 2021-10-15 2024-05-28 (주)이머시브캐스트 클라우드 xr 기반의 프로그램 가상화 방법
US20240029363A1 (en) * 2022-07-20 2024-01-25 Qualcomm Incorporated Late stage occlusion based rendering for extended reality (xr)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2465793A (en) * 2008-11-28 2010-06-02 Sony Corp Estimating camera angle using extrapolated corner locations from a calibration pattern
US9934611B2 (en) * 2013-09-11 2018-04-03 Qualcomm Incorporated Structural modeling using depth sensors
CN106663411A (zh) * 2014-11-16 2017-05-10 易欧耐特感知公司 用于增强现实准备、处理和应用的***和方法
US11927965B2 (en) * 2016-02-29 2024-03-12 AI Incorporated Obstacle recognition method for autonomous robots
US10650552B2 (en) * 2016-12-29 2020-05-12 Magic Leap, Inc. Systems and methods for augmented reality
US10809795B2 (en) * 2017-05-31 2020-10-20 Occipital, Inc. Six degree of freedom tracking with scale recovery and obstacle avoidance
US10816334B2 (en) 2017-12-04 2020-10-27 Microsoft Technology Licensing, Llc Augmented reality measurement and schematic system including tool having relatively movable fiducial markers
JP7220717B2 (ja) * 2017-12-22 2023-02-10 マジック リープ, インコーポレイテッド レイキャスティングおよびライブ深度を使用したオクルージョンレンダリングの方法
CN108961395B (zh) * 2018-07-03 2019-07-30 上海亦我信息技术有限公司 一种基于拍照重建三维空间场景的方法
US10733800B2 (en) * 2018-09-17 2020-08-04 Facebook Technologies, Llc Reconstruction of essential visual cues in mixed reality applications
EP3991091A4 (en) * 2019-06-26 2023-11-08 Magic Leap, Inc. CAPACING AND UPDATE OF DENSE 3D RECONSTRUCTION DATA

Also Published As

Publication number Publication date
WO2021003058A1 (en) 2021-01-07
US20210004630A1 (en) 2021-01-07
US20230037459A1 (en) 2023-02-09
EP3994673A1 (en) 2022-05-11
US11508141B2 (en) 2022-11-22
JP2022539160A (ja) 2022-09-07
EP3994673A4 (en) 2023-10-04

Similar Documents

Publication Publication Date Title
CN114332332B (zh) 用于生成场景中的表面的三维重建的方法和设备
US11508141B2 (en) Simple environment solver using planar extraction
CN114051629A (zh) 密集3d重建数据的缓存和更新
US11423602B2 (en) Fast 3D reconstruction with depth information
JP2022533207A (ja) 稠密3d再構築データのキャッシュおよび更新
US11620792B2 (en) Fast hand meshing for dynamic occlusion
JP2024506299A (ja) 占有率グリッドを使用した場面理解

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