CN117063205A - 在人工现实环境中生成和修改动态对象的表示 - Google Patents
在人工现实环境中生成和修改动态对象的表示 Download PDFInfo
- Publication number
- CN117063205A CN117063205A CN202280022789.3A CN202280022789A CN117063205A CN 117063205 A CN117063205 A CN 117063205A CN 202280022789 A CN202280022789 A CN 202280022789A CN 117063205 A CN117063205 A CN 117063205A
- Authority
- CN
- China
- Prior art keywords
- interest
- image
- user
- depth
- particular embodiments
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 79
- 238000005259 measurement Methods 0.000 claims abstract description 58
- 238000003860 storage Methods 0.000 claims description 38
- 230000033001 locomotion Effects 0.000 claims description 34
- 230000011218 segmentation Effects 0.000 claims description 34
- 238000010801 machine learning Methods 0.000 claims description 33
- 230000008859 change Effects 0.000 claims description 18
- 238000013528 artificial neural network Methods 0.000 claims description 12
- 230000015654 memory Effects 0.000 description 34
- 210000003128 head Anatomy 0.000 description 25
- 238000009877 rendering Methods 0.000 description 25
- 238000004891 communication Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 16
- 230000003190 augmentative effect Effects 0.000 description 15
- 238000005266 casting Methods 0.000 description 12
- 241001465754 Metazoa Species 0.000 description 9
- 238000001514 detection method Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000012952 Resampling Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 8
- 230000000007 visual effect Effects 0.000 description 8
- 238000013507 mapping Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 241000282414 Homo sapiens Species 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 230000004807 localization Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 241000282412 Homo Species 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 206010040026 Sensory disturbance Diseases 0.000 description 3
- 238000013475 authorization Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000004886 head movement Effects 0.000 description 3
- 238000007654 immersion Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 210000000707 wrist Anatomy 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000011521 glass Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 210000003423 ankle Anatomy 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 210000001217 buttock Anatomy 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 210000001513 elbow Anatomy 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 210000002683 foot Anatomy 0.000 description 1
- 210000004247 hand Anatomy 0.000 description 1
- 208000013057 hereditary mucoepithelial dysplasia Diseases 0.000 description 1
- RGNPBRKPHBKNKX-UHFFFAOYSA-N hexaflumuron Chemical compound C1=C(Cl)C(OC(F)(F)C(F)F)=C(Cl)C=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F RGNPBRKPHBKNKX-UHFFFAOYSA-N 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 210000003739 neck Anatomy 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004091 panning Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 210000002832 shoulder Anatomy 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000004470 vergence movement Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
- G06T7/55—Depth or shape recovery from multiple images
- G06T7/593—Depth or shape recovery from multiple images from stereo images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10024—Color image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30196—Human being; Person
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/20—Indexing scheme for editing of 3D models
- G06T2219/2004—Aligning objects, relative positioning of parts
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Hardware Design (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Architecture (AREA)
- Geometry (AREA)
- Processing Or Creating Images (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
一种方法包括使用用户穿戴的相机接收真实环境的图像,以及确定该图像中包括关注对象的部分。基于该图像中包括关注对象的部分,生成表示关注对象的表面。接收真实环境的与该图像中包括关注对象的部分相对应的深度测量值,并使用该深度测量值来确定表示关注对象的表面的深度。基于表面的深度在对应于真实环境的坐标系中设置表面的姿态,并且通过将虚拟对象的模型与表面进行比较来确定虚拟对象相对于关注对象的可见性。基于确定的该虚拟对象的可见性生成输出图像。
Description
技术领域
本公开总体上涉及增强现实环境、虚拟现实环境、混合现实(mixed-reality)环境或混合现实(hybrid-reality)环境。
背景技术
人工现实是在呈现给用户之前已经以某种方式进行了调整的现实形式,人工现实例如可以包括虚拟现实(virtual reality,VR)、增强现实(augmented reality,AR)、混合现实(mixed reality,MR)、混合现实(hybrid reality)、或它们的某种组合和/或衍生物。人工现实内容可以包括完全生成的内容、或与捕获到的内容(例如,真实世界照片)相结合的生成的内容。人工现实内容可以包括视频、音频、触觉反馈、或它们的某种组合,并且以上任何一种均可以以单通道或多通道呈现(例如,为观看者带来三维效果的立体视频)。人工现实可以与应用、产品、附件、服务、或它们的某种组合相关联,这些应用、产品、附件、服务、或它们的某种组合例如用于在人工现实中创建内容,和/或在人工现实中使用(例如,在人工现实中执行活动)。提供人工现实内容的人工现实系统可以在各种平台上实现,这些平台包括连接到主控计算机系统的头戴式显示器(head-mounted display,HMD 104)、独立HMD104、移动设备或计算系统、或能够向一位或多位观看者提供人工现实内容的任何其他硬件平台。
可以对机器学习模型进行训练以识别图像中已捕获的对象特征。然而,这类模型通常很大,需要进行许多操作。虽然大型且复杂的模型可以在具有快速处理器(例如,多个中央处理单元(central processing unit,“CPU”)和/或图形处理单元(graphicsprocessing unit,“GPU”))和大容量存储器(例如,随机存取存储器(random accessmemory,“RAM”)和/或高速缓存)的高配计算机上充分运行,但是这样的模型可能不能在具有性能低得多的硬件资源的计算设备上运行。需要来自模型的接近实时结果(例如,每秒10帧、20帧或30帧)的应用加剧了这一问题,上述应用例如为,基于在实况视频中检测到的特征来动态调整计算机生成的组件的增强现实应用。
发明内容
所公开的方法提供了用于通过检测、预测和生成表面以表示动态关注对象(例如,人、动物、车辆等)在真实环境中的运动来检测AR/VR/MR环境中的二维和三维虚拟对象的遮挡的技术。在高级别上,与人工现实系统相关联的计算系统可以接收环境的图像数据,并且检测人工现实环境中的一个或多个关注对象。例如,使用计算机视觉和/或机器学习模型,计算系统可以在显示给用户的人工现实环境中生成表示所检测到的真实关注对象(二维或三维)的表面并设置其姿态。具体公开的方法还可以确定表面的深度,并基于该深度来设置表面的姿态。姿态还可以基于对关注对象和/或HMD的用户在未来时间的移动的预测。在这样做时,计算系统可以向HMD的用户精确地预测并生成沉浸式人工现实环境的视图,而不管例如用户的头部或一个或多个对象在真实环境中的突然移动。尽管本公开的各部分具体描述了检测和预测真实环境的图像中的人的姿态,但是应当理解的是,可以结合这些技术来检测和预测真实环境中其他关注对象(例如,动物、车辆、投射物等)的姿态。
在特定实施例中,所生成的视图可以由计算系统中与设备(例如,膝上型计算机、手机、台式计算机、可穿戴设备)关联的一个或多个部件(例如,CPU、GPU等)来渲染。在特定实施例中,该设备与HMD上的计算系统通信,但是该设备可以物理地与HMD分开。作为示例而非限制,该设备可以是有线连接到HMD或与HMD无线通信的膝上型设备。作为另一示例而非限制,该设备可以是可穿戴的(例如,绑在手腕上的设备)、手持设备(例如,电话)或有线连接到HMD或与HMD无线通信的某种其它合适的设备(例如,膝上型计算机、平板电脑、台式机)。在特定实施例中,该设备可以向HMD发送该初始视图以供显示。在特定实施例中,该设备中生成初始视图的部件还可以为该视图生成表示关注对象的一个或多个表面。作为另一示例而非限制,HMD的机载计算系统可以在其从单独的计算系统(例如,从可穿戴设备、手持设备或膝上型设备的CPU或GPU)接收到初始视图之后,对一个或多个表面的姿态进行重新采样和调整,以考虑在渲染初始图像时可能发生的HMD的移动和/或关注对象的移动。
在特定实施例中,图形应用(例如,游戏、地图、内容提供应用等)可以构建场景图,该场景图与给定的视图位置和时间点一起使用以生成要在GPU上渲染的基元。场景图可以限定场景中对象之间的逻辑关系和/或空间关系。在特定实施例中,显示引擎还可以生成并存储这样的场景图:该场景图是完整应用场景图的简化形式。简化的场景图可以用于指定表面之间的逻辑关系和/或空间关系(例如,在3D空间中限定的由显示引擎渲染的基元(例如,四边形或轮廓),这些基元具有基于应用所渲染的主帧而生成的对应纹理)。存储场景图允许显示引擎将场景渲染到多个显示帧,从而针对当前视点(例如,头部位置)、当前对象位置(例如,它们可以相对于彼此移动)以及按照每个显示帧改变的其他因素来调整场景图中的每个元素。此外,显示引擎还可以基于场景图,对显示子系统引入的几何和颜色失真进行调整,然后显示引擎将各对象组合在一起以生成帧。存储场景图允许显示引擎可以在实际上以很低的速率运行GPU时,接近以所需的高帧速率来执行完全渲染这一结果。
根据本发明的第一方面,提供了一种方法,该方法包括由计算系统:使用用户穿戴的相机来接收真实环境的图像,该图像包括关注对象;确定图像的一部分包括该关注对象;基于确定的图像中包括该关注对象的部分,生成表示关注对象的表面;接收真实环境的与图像中包括该关注对象的部分相对应的深度测量值(depth measurement);基于深度测量值确定表示该关注对象的表面的深度;基于表面的深度,在对应于该真实环境的坐标系中设置该表面的姿态;通过将虚拟对象的模型与该表面进行比较,来确定虚拟对象相对于该关注对象的可见性;以及基于确定的该虚拟对象的可见性,生成输出图像。
优选地,设置该表面的姿态包括调整该表面的位置或取向以考虑对该关注对象的视角变化,该视角变化由以下导致:在捕获接收到的图像之后用户穿戴的相机的一个或多个移动;或者在捕获接收到的图像之后关注对象的一个或多个移动。
优选地,调整该表面的位置或取向是由计算系统的一个或多个部件执行的,该一个或多个部件物理地连接到该用户穿戴的头戴式设备。
优选地,确定该图像中包括关注对象的部分包括:使用机器学习模型的神经网络生成包围该关注对象的边界框;以及使用该边界框输出与该关注对象相关联的分割掩模。
优选地,该表面基于与关注对象相关联的分割掩模。
优选地,确定表示关注对象的表面的深度包括:从接收的深度测量值中去除一个或多个异常值;在去除该一个或多个异常值之后,生成包括接收的深度测量值的直方图;以及使用该直方图确定深度测量值的最频繁观测值。
优选地,该表面包括多个纹素,其中,每个纹素被分配如下值:所述值指定要给予该纹素的透明度级别。
优选地,深度测量值是在捕获该接收到的图像时相对于该相机的姿态进行计算的。
优选地,用户穿戴的相机连接到头戴式显示器。
优选地,坐标系被世界锁定到真实环境。
根据本发明的第二方面,提供了一种或多种计算机可读非暂态存储介质,其包含软件,该软件在被执行时能够操作以:使用用户穿戴的相机接收真实环境的图像,该图像包括关注对象;确定图像中的一部分包括该关注对象;基于确定的该图像中包括该关注对象的部分,生成表示该关注对象的表面;接收真实环境的与图像中包括该关注对象的部分相对应的深度测量值;基于深度测量值确定表示该关注对象的表面的深度;基于该表面的深度,在对应于该真实环境的坐标系中设置该表面的姿态;通过将虚拟对象的模型与该表面进行比较,来确定该虚拟对象相对于该关注对象的可见性;以及基于确定的虚拟对象的可见性,生成输出图像。
第二方面包括一种或多种计算机可读非暂态存储介质,该计算机可读非暂态存储介质包括指令,这些指令在由计算机执行时,使得计算机执行根据本发明第一方面和/或本发明第一方面的任何优选方面的方法。
优选地,设置表面的姿态包括调整表面的位置或取向以考虑对关注对象的视角变化,该视角变化由以下导致:在捕获接收到的图像之后用户穿戴的相机的一个或多个移动;或者在捕获该接收到的图像之后该关注对象的一个或多个移动。
优选地,调整该表面的位置或取向是由该计算系统的一个或多个部件执行,该一个或多个部件物理地连接到该用户穿戴的头戴式设备。
优选地,确定图像中包括该关注对象的部分包括:使用机器学习模型的神经网络生成包围该关注对象的边界框;以及使用该边界框输出与该关注对象相关联的分割掩模。
优选地,确定表示该关注对象的表面的深度包括:从接收的深度测量值中去除一个或多个异常值;在去除该一个或多个异常值之后,生成包括接收的深度测量值的直方图;以及使用该直方图确定深度测量值的最频繁观测值。
根据本发明的第三方面,提供了一种系统,该系统包括:一个或多个处理器;以及一个或多个计算机可读非暂态存储介质,该一个或多个计算机可读非暂态存储介质耦接到该一个或多个处理器中的一个或多个并且包括指令,这些指令在由该一个或多个处理器中的一个或多个执行时,能够操作以使得该系统:使用用户穿戴的相机接收真实环境的图像,该图像包括关注对象;确定该图像的一部分包括关注对象;基于确定的该图像中包括关注对象的部分,生成表示关注对象的表面;接收真实环境的与该图像中包括关注对象的部分相对应的深度测量值;基于深度测量值,确定表示关注对象的表面的深度;基于表面的深度,在对应于真实环境的坐标系中设置该表面的姿态;通过将虚拟对象的模型与该表面进行比较,来确定该虚拟对象相对于该关注对象的可见性;以及基于确定的该虚拟对象的可见性,生成输出图像。
优选地,设置表面的姿态包括调整表面的位置或取向以考虑对关注对象的视角变化,视角变化由以下导致:在捕获接收到的图像之后用户穿戴的相机的一个或多个移动;或者在捕获该接收到的图像之后该关注对象的一个或多个移动。
优选地,调整表面的位置或取向是由计算系统的一个或多个部件执行,该一个或多个部件物理地连接到该用户穿戴的头戴式设备。
优选地,确定该图像中包括该关注对象的部分包括:使用机器学习模型的第一神经网络生成包围该关注对象的边界框;以及使用该边界框输出与该关注对象相关联的分割掩模。
优选地,确定表示该关注对象的表面的深度包括:从接收的深度测量值中去除一个或多个异常值;在去除该一个或多个异常值之后,生成包括接收的深度测量值的直方图;以及使用该直方图确定深度测量值的最频繁观测值。
本文所公开的各实施例仅是示例,并且本公开的范围不限于这些实施例。特定实施例可以包括本文公开的这些实施例中的所有或一些部件、元件、特征、功能、操作或步骤,或者不包括这些部件、元件、特征、功能、操作或步骤。针对方法、存储介质、系统和计算机程序产品的所附权利要求中特别地披露了根据本发明的实施例,其中,在一个权利要求类别(例如方法)中提到的任何特征也可以主张在另一个权利要求类别(例如系统)中得到保护。所附权利要求中的从属关系或引用关系仅仅是出于形式上的原因而选择的。然而,也可以主张保护通过对任何多项先前权利要求的有意引用(特别是多个从属关系)而产生的任何主题,从而披露了多项权利要求及其特征的任何组合,并且不管所附权利要求中选择的从属关系如何,都可以主张保护该多项权利要求及其特征的任何组合。可主张保护的主题不仅包括所附多项权利要求中阐述的多个特征的多种组合,而且还包括该多项权利要求中的多个特征的任何其他组合,其中,该多项权利要求中提到的每个特征可以与该多项权利要求中的任何其他特征相组合、或者与多个其他特征的组合相组合。此外,可以在单个权利要求中主张保护本文中所描述或描绘的多个实施例和多个特征中的任何实施例和特征,和/或可以主张保护本文所描述或描绘的多个实施例和多个特征中的任何实施例和特征与本文所描述或描绘的任何实施例或特征的任何组合、或可以主张保护本文所描述或描绘的多个实施例和多个特征中的任何实施例和特征与所附权利要求的任何特征的任何组合。
附图说明
图1A示出了示例人工现实系统和用户。
图1B示出了示例增强现实系统。
图2示出了由与人工现实系统相关联的一个或多个相机捕获的真实环境的图像。
图3A示出了基于检测到的关注对象(例如,人)的实例而输出的边界框。
图3B示出了为表示真实环境的图像中的检测到的关注对象而生成的分割掩模。
图4示出了包括一个或多个表面的渲染的人工现实环境的视图。
图5示出了用于生成人工现实环境中的表面的姿态的处理流水线。
图6示出了用于生成包括表示关注对象的表面的输出图像的示例方法。
图7示出了显示引擎700的系统图。
图8示出了与社交网络系统相关联的示例网络环境。
图9示出了示例计算机系统。
具体实施方式
图1A示出了示例人工现实系统100和用户102。在特定实施例中,人工现实系统100可以包括头戴式设备(headset)104、控制器106和计算系统108。用户102可以穿戴头戴式设备104,该头戴式设备可以向用户102显示视觉人工现实内容。HMD 104可以包括音频设备,该音频设备可以向用户102提供音频人工现实内容。头戴式设备104可以包括眼睛跟踪系统以确定用户102的辐辏距离(vergence distance)。辐辏距离可以是从用户的眼睛到用户的眼睛集中在其上的对象(例如,真实世界对象或虚拟空间中的虚拟对象)的距离。头戴式设备104可以被称为头戴式显示器(head-mounted display,HMD)。一个或多个控制器106可以与人工现实系统100配对。在特定实施例中,一个或多个控制器106可以配备至少一个惯性测量单元(inertial measurement unit,IMU)和红外(infrared,IR)发光二极管(lightemitting diode,LED),以供人工现实系统100估计控制器的姿态和/或跟踪控制器的位置,使得用户102可以经由控制器106执行某些功能。在特定实施例中,该一个或多个控制器106可以配备有一个或多个可跟踪标记,该一个或多个可跟踪标记被分布以由计算系统108跟踪。该一个或多个控制器106可以包括触控板和一个或多个按钮。该一个或多个控制器106可以从用户102接收输入,并将输入中继到计算系统108。该一个或多个控制器106还可以向用户102提供触觉反馈。计算系统108可以通过有线或无线连接而连接到头戴式设备104和该一个或多个控制器106。该一个或多个控制器106可以包括硬件、软件和/或固件的组合,该硬件、软件和/或固件的组合在此未明确示出,以避免模糊本公开的其他方面。
人工现实系统100还可以包括计算机单元108。计算机单元可以是与HMD物理分开的独立单元,或者计算机单元可以与HMD集成。在计算机108是单独单元的实施例中,计算机108可以经由无线链路或有线链路通信地耦接到HMD。计算机108可以是高性能设备(例如,台式机或膝上型计算机),或者资源受限设备(例如,移动电话)。高性能设备可以具有专用的GPU和高容量或恒定电源。另一方面,资源受限设备可能没有GPU,并且资源受限设备的电池容量可能有限。因此,人工现实系统100实际可以使用的算法取决于其计算机单元108的能力。
图1B示出了示例增强现实系统100B。增强现实系统100B可以包括增强现实头戴式显示器(augmented reality head-mounted display,AR HMD)110(例如,眼镜),该AR HMD包括框架112、一个或多个显示器114以及计算系统120。显示器114可以是透明或半透明的,从而允许穿戴AR HMD 110的用户透过显示器114观看真实世界,同时允许向用户显示视觉人工现实内容。AR HMD 110可以包括音频设备,该音频设备可以向用户提供音频人工现实内容。AR HMD 110可以包括一个或多个相机,该一个或多个相机可以捕获环境的图像和视频。AR HMD 110可以包括眼睛跟踪系统,以跟踪穿戴AR HMD 110的用户的辐辏运动。除了在整个申请中所指定的情况外,使用“HMD”可以用于指HMD 104(其可以遮挡用户对真实环境的视线)或AR HMD 110(其可以允许用户看到真实世界并同时允许向用户显示视觉人工现实内容)。
增强现实系统100B还可以包括控制器,该控制器包括触控板和一个或多个按钮。控制器可以从用户接收输入,并将输入中继到计算系统120。控制器还可以向用户提供触觉反馈。计算系统120可以通过有线或无线连接而连接到AR HMD 110和控制器。计算系统120可以控制AR HMD 110和控制器以向用户提供增强现实内容及从用户接收输入。计算系统120可以是独立的主计算机系统、与AR HMD 110集成的机载计算机系统、移动设备或能够向用户提供人工现实内容及从用户接收输入的任何其他硬件平台。
HMD可以具有面向外部的相机,例如图1A所示的两个前置相机105A和105B。虽然只示出了两个前置相机105A和105B,但是HMD可以具有面向任何方向的任意数量的相机(例如,用于捕获天花板或室内照明的面向上的相机、用于捕获用户面部的一部分和/或身体的一部分的面向下的相机、用于捕获用户身后的一部分的后置相机、和/或用于捕获用户眼睛凝视以用于眼睛跟踪目的的内部相机)。面向外部的相机105A和105B被配置成捕获用户周围的物理环境,并且可以连续地这样做以生成帧序列(例如,作为视频)。
在特定实施例中,可能需要HMD在环境内的位姿(例如,位置和取向)。例如,为了在用户102在虚拟现实环境或增强现实环境中四处移动时为他渲染适当的显示,系统100将需要确定用户在任何时刻的位置和取向。系统100还可以基于HMD的位姿,确定相机105A和105B中的任一个的视点或用户双眼中的任一个的视点。在特定实施例中,HMD可以配备有惯性测量单元(“IMU”)。IMU生成的数据以及面向外部的相机105A和105B捕获的立体图像允许系统100使用例如同步定位与地图构建(simultaneous localization and mapping,SLAM)或其他合适的技术来计算HMD的位姿。
自存在以来,人工现实(例如,增强现实(AR)、虚拟现实(VR)、混合现实(MR))技术一直被这样一个问题所困扰,即响应于用户视角的突然变化和/或向用户显示的AR/VR/MR视图的突然变化而渲染对象的AR/VR/MR表示的延迟。例如,用户在观看场景时,可能突然需要能够移动其头部,并且渲染的图像可能需要通过调整呈现给用户的一个或多个虚拟表示的视图来立即响应。此外,环境中动态真实对象(例如,人、动物、车辆等)的突然移动也会对用户的场景视角带来轻微的变化,这可能会调整用户的视角。这些移动可能很小,但却是偶尔发生的,(即使并非不可能)也是很难预测的。
此外,这些移动可能会快速发生,需要快速修改人工现实环境的渲染视图,以考虑发生的视角变化。如果做得不够快,由此产生的延迟可能会导致用户体验到感觉失调,这可能会导致虚拟现实疾病或不适,或者至少破坏体验的沉浸式特点。例如,突然移动可能会导致被渲染且不正确地显示在真实对象上的虚拟内容。这在有大量动态对象(例如,人)的环境中尤为重要。与墙壁和大型家具不同,人是现实环境(特别是城市现实环境)中高度动态和频繁发生的特征。现实环境中的坐标锁定的虚拟对象会定期使人类在附近移动。在没有对这些移动进行适当检测和调整的情况下,这些坐标锁定的虚拟对象可能被渲染到比虚拟对象更接近用户的人身上,从而导致沉浸式体验的降低。因此,为了适当地满足用户对AR沉浸的期望,在人工现实环境中落后于其他真实对象(例如,人)的虚拟对象必须被其周围的真实对象遮挡和/或与其周围的真实对象混合。未能做到这一点将打破AR的沉浸感和对虚拟内容深度的感知。
传统的三维人工现实环境重建技术和算法可以随着时间的推移对关于真实环境的深度信息进行逐渐整合,以创建世界的3D网格。然而,这些方法本质上太慢,不能检测和重新渲染视图以考虑可能遮挡人工现实环境的高动态对象(例如,人、动物、车辆等)的移动。例如,重新渲染整个视图以考虑视角的这些变化将耗费大量资源,并且仅有可能以相对较低的帧速率(例如,60Hz,或每1/60秒一次)来这样做。因此,如下方式可能是不可行的:通过以足够快的速度(例如,200Hz,每1/200秒一次)重新渲染整个视图以考虑视角的变化来修改视图,以防止用户感知延迟,从而避免或充分降低感觉失调。
此外,传统的人工现实环境重建技术和算法可能需要昂贵的计算资源,这限制了使用足够紧凑以容纳在HMD(尤其是具有小外形要素的AR HMD)内的多个部件来重建人工现实环境的能力。然而,所涉及的时间尺度通常非常小,以至于使与HMD物理分开的更强大的系统(例如,单独的膝上型计算机或可穿戴设备)执行修改是不可行的,这是因为HMD必须发送捕获的图像以及关于HMD的当前位置和取向的信息,等待单独的系统检测图像中的对象并渲染新的视图,然后从该单独的系统接收新的视图。
这些传统方法的一种解决方案涉及生成和重新采样“表面”。表面可以是由显示引擎渲染的在3D空间中定义的一个或多个基元,例如四边形或轮廓,该一个或多个基元具有基于由应用渲染的主帧而生成的对应纹理。在特定实施例中,一个或多个表面可以表示对象在人工现实环境内的特定视图,其中表面对应于这样的一个或多个对象:该一个或多个对象预期作为一个单元由于视角的变化而一起移动/平移、倾斜、缩放、扭曲或以其他方式改变外观。该方法基本上可以是响应于用户的头部移动来调整视图的有效快捷方式,并且可以显著减少所需的处理,从而确保足够快地更新视图以充分减少延迟。在2019年9月27日提交的、申请号为16/586,590的美国专利申请中公开了用于生成和修改增强现实或虚拟现实环境中对象的表示的方法,该美国专利申请通过引用结合于此。在特定实施例中,与重新渲染整个视图不同,响应于突然移动而对表面进行重新采样可能足够有效,从而可以用于在规定的时间内利用HMD(尤其是可以设计成与传统眼镜非常相似的小外形要素的AR HMD)的计算系统的相对有限的处理能力来修改视图。通过简单地对表面进行重新采样,可以完全在HMD上执行修改,从而加快流程。
所公开的方法提供了用于通过检测、预测和生成表面来检测对AR/VR/MR环境中的二维和三维虚拟对象的遮挡的技术,该表面表示人工现实环境中的动态对象(例如,人、动物、车辆等)的运动。在高层次上,与人工现实系统相关联的计算系统可以接收环境的图像数据,并且检测人工现实环境中的一个或多个动态关注对象(本文可替换地被称为“动态对象”或“关注对象”)。例如,使用计算机视觉和/或机器学习模型,计算系统可以在显示给用户的人工现实环境中生成表示所检测到的真实关注对象(二维或三维)的表面并设置该表面的姿态。具体公开的方法还可以确定表面的深度,并基于深度值设置表面的姿态。姿态可以基于对关注对象和/或HMD的用户在未来时间的移动的预测。通过这样做,即使例如是在用户的头部或真实环境中的一个或多个对象突然移动的情况下,计算系统也可以精确地预测沉浸式人工现实环境并向HMD的用户渲染该沉浸式人工现实环境。尽管本公开的多个部分具体描述了检测和预测真实环境的图像中的人的姿态,但是应当理解的是,可以结合这些技术来检测和预测真实环境中其他关注对象(例如,动物、车辆、投射物等)的姿态。
本发明的实施例可以包括人工现实系统,或可以结合人工现实系统来实现。在特定实施例中,渲染人工现实环境以及生成其表面和修改这些表面所涉及的处理任务可以在两个或更多个计算系统之间拆分。作为示例而非限制,真实环境的视图最初可以由第一计算系统(例如,膝上型计算机、手机、台式计算机、可穿戴设备)渲染。渲染结果可以用于生成视图的一个或多个表面和/或表示在图像中检测到的动态真实对象的一个或多个表面。除了纹理、颜色和透明度信息外,这些表面还可以包括有关其在人工现实环境中的位置的信息。这些表面可以被传递到第二计算系统(例如,HMD上的机载计算系统)。HMD可以基于与这些表面(例如,相应关注对象的移动)相关联的信息并且基于穿戴HMD的用户的当前视角(例如,通过HMD的位置和取向确定)来扭曲视图内的这些表面。用户视角的任何变化(其可能由于例如(1)用户的轻微头部移动和(2)真实环境中关注对象的移动这两者而发生)可能在百分之一秒的量级上发生,这些变化可以通过接收到的图像数据和HMD上的传感器来跟踪,并且这些变化可以通过重新采样表面来说明,以渲染时间调整的视点。由于视点的调整,在重新采样表面时,这些表面可能平移/移动了、倾斜了、缩放了、扭曲了或以其他方式更改了外观。由于该视图不是从头开始重新渲染的,因此可以相对快速地(例如,以200Hz)修改该视图。在特定实施例中,第一计算系统与第二计算系统相比可能功率更大,因为第二计算系统(例如,HMD)可能具有有限的系统资源,这些系统资源在不会导致太大重量、尺寸和/或热量而不利于用户的舒适度的情况下可能不会明显增加。
在特定实施例中,计算系统内的岗哨模块(sentry module)可以连续接收由一个或多个相机捕获的真实环境的图像并对该图像进行分类,以检测真实环境的图像中的关注对象。图像可以由与人工现实系统相关联的一个或多个相机(例如,用户穿戴的HMD上的相机105A和105B)捕获。图2示出了由与人工现实系统相关联的一个或多个相机捕获的真实环境的图像200。图像200可以包括一个或多个关注对象(例如,人210)。在特定实施例中,图像200可以是较低分辨率和帧速率下的单眼图像(例如,640×640单色图像,以20Hz在左相机与右相机之间交替),该单眼图像仅被设计为检测用户视场内的动态对象。通过使用较低分辨率的图像来检测动态对象,由于消耗的这些帧已经被同步定位与地图构建(simultaneous localization and mapping,SLAM)子系统利用,因此实现了相当大的功率节约。在接收到图像200时,岗哨模块可以确定图像200的一部分包含一个或多个关注对象210(例如,人),并基于该确定对该图像进行分类。在特定实施例中,计算系统可以利用包括一个或多个神经网络的机器学习模型来检测关注对象。
例如,机器学习模型可以被配置成接收图像200或图像的经预处理的表示(例如,具有与图像的高度、宽度和颜色通道(例如,红色、绿色和蓝色)相对应的维度的三维矩阵)作为输入。机器学习模型被配置成提取图像的特征,例如关注对象210(例如,人),并且输出例如但不限于对象检测指示符(例如,人周围的边界框)、一个或多个关键点(例如,表示检测到的人的姿态)和/或分割掩模(例如,标识与检测到的人相对应的像素)。这些过程可以由一个或多个包括机器学习模型的神经网络来执行。机器学习模型的架构被设计成紧凑的(由此减少存储和内存需求)并且具有降低的复杂性(由此减少处理需求),从而机器学习模型可以在具有有限资源的设备上产生足够精确和快速的结果,以满足实时应用的需求(例如,每秒10帧、15帧或30帧)。与诸如基于ResNet或特征金字塔网络(Feature PyramidNetwork,FPN)的传统架构等传统架构相比,机器学习模型的架构在尺寸上要小得多,并且可以更快地生成预测(例如,大约快100倍)。
在特定实施例中,机器学习模型包括若干个高级部件,这些高级部件包括也被称为干线的骨干神经网络、区域建议网络(region proposal network,RPN)、检测头(例如,人检测器)、关键点头(keypoint head)和分割头(segmentation head)。这些部件中的每个部件可以被配置成神经网络,使得机器学习模型包括一个或多个神经网络。概念上,干线被配置成处理输入图像200并准备表示图像200的特征图(例如,初始的卷积输出)。RPN获取由干线生成的特征图,并输出N个建议的关注区域(region of interest,RoI),这些关注区域可以包括一个或多个检测到的关注对象200,例如人、汽车或任何其他类型的关注对象。然后,检测头可以检测N个RoI中的哪些RoI可能包含一个或多个关注对象,并输出对应的对象检测指示符,对象检测指示符可以定义图像200中包含关注对象的较小区域(例如,边界框)。在特定实施例中,边界框可以是能够完全包含关注对象的像素的最小或接近最小的矩形(或任何其他一个或多个几何形状)。对于被认为足够可能包含关注对象的RoI(其可以被称为目标区域定界),关键点头可以确定这些RoI各自的关键点映射,并且分割头可以确定这些RoI各自的分割掩模。在特定实施例中,检测头、关键点头和分割头可以并行地执行它们各自的操作。在其他实施例中,检测头、关键点头和分割头可以不并行执行它们的操作,而是采用多阶段处理方法,该多阶段处理方法具有减少计算量和加快整体操作的优点。
如所描述的,根据特定实施例的机器学习模型是紧凑的,并且针对推理时间速度对该机器学习模型进行了优化。在某些情况下,这种优化可能会导致预测结果的精确性不是最优的。为了补偿,特定实施例可以执行后处理以校正或调整该模型的预测。具体地,可以基于姿态模型自动校正由关键点头生成的关键点预测。在高层次上,姿态模型可以学习人类可能做出的姿态。使用姿态模型,可以自动调整由关键点头生成的关键点预测,以反映姿态模型已经学习的更可能的姿态。
在特定实施例中,机器学习模型可以生成围绕检测到的关注对象210(例如,人)的边界框。图3A示出了基于检测到的关注对象(例如,人)的实例而输出的边界框。矩形边界框320可以被表示为指示框的四个角的四个二维坐标。在确定存在关注对象210时,检测器使用例如机器学习模型(例如,掩模R-CNN)来在图像200中生成2D边界框320,该2D边界框包括关注对象210。在特定实施例中,机器学习模型可以附加地或替代地输出分割掩模,该分割掩膜识别属于检测到的实例的特定像素。图3B示出了为表示真实环境的图像200中的检测到的关注对象210而生成的分割掩模。例如,分割掩模325可以被表示为二维矩阵,其中每个矩阵元素对应于图像的像素,并且元素的值对应于相关联的像素是否属于所检测到的人。在特定实施例中,机器学习模型可以附加地或替代地将关键点映射到所检测的人的结构。关键点可以映射到所检测的人的肩部、肘部、手腕、手、臀部、膝盖、脚踝、脚、颈部、颌骨或任何其他关注的关节或结构。在特定实施例中,每个关键点可以被表示为二维坐标,并且该组关键点可以被表示为坐标阵列或坐标向量。虽然描述了用于检测到的人和分割信息的特定数据表示,但是本公开设想了这些信息的任何合适的数据表示。
在特定实施例中,计算系统可以使用图像中包括关注对象的部分来生成这样的表面:该表面表示要在人工现实环境的视图内显示的关注对象210。该表面可以基于边界框和/或分割掩模,并且表示应该出现在视图内的关注对象210,并且由此可能考虑了在捕获图像时用户从该视图对该对象的视角。表面的纹理数据可以由一个或多个子部分组成,该一个或多个子部分在本文中被称为“纹素”。这些纹素可以是聚集在一起以创建组成表面的纹素阵列的块(例如,矩形块)。作为示例而非限制,这些纹素可以是组成表面的连续块。出于说明的目的,可以将表面的纹素概念化为类似于图像的像素。表面可以由任何合适的设备产生。在特定实施例中,表面可以为其各纹素中的一个或多个纹素编码视觉信息(RGBA)(例如,作为纹理)。阿尔法分量可以是指定要给予纹素的透明度级别的值。作为示例而非限制,阿尔法值为0可以指示纹素是完全透明的,阿尔法值为1可以指示纹素是不透明的,并且介于0与1之间的阿尔法值可以指示介于完全透明与不透明之间的透明度级别(确切的透明度级别由该值确定)。表面可以支持任何合适的图像格式。为了节省资源,可以将表面作为阿尔法掩模来传输,该阿尔法掩模表示分割掩模中每个像素的遮挡和混合(例如,透明度)。阿尔法掩模可以是低分辨率纹理(64×64像素),这降低了功耗,在覆盖在遮挡的关注对象210上时提供了模糊(但美观的)边界,由于较小的分辨率而减少了延迟,并且提供了更好的可伸缩性(例如,以考虑图像中的多人、人群等)。
在特定实施例中,计算系统可以接收真实环境的与图像中包括关注对象的部分相对应的一个或多个深度测量值。在特定实施例中,深度测量值可以是稀疏深度测量值。深度测量值可以以各种方式来确定,例如基于立体图像和三角测量技术来确定,这是因为真实环境中的同一对象可以被两个相机105A和105B同时捕获。在特定实施例中,这些技术可以确定对关注对象210上的一个或多个点的深度测量值,这会导致关注对象210的不同深度测量值。例如,如果检测到的关注对象210是指向图像200中的用户的人,则这个人的进行指向的手(pointing hand)的深度测量值可能小于所确定的检测到的人的头部的深度测量值。尽管本公开描述了用于估计真实环境中的深度测量值的某些技术,但是应当理解,可以利用使用来自人工现实系统的真实环境的图像和/或传感器数据来确定深度测量值的任何合适的技术。
使用这些一个或多个深度测量值,计算系统可以确定表示图像200中的关注对象210(例如,图2中所示的人)的表面的深度并向该表面分配该深度。表面的深度可以是表示从捕获图像200的相机到所检测的真实环境中的关注对象210的距离的单个值。在特定实施例中,可以仅将表面的单个深度分配给图像200中检测到的关注对象210。尽管检测到的关注对象210的不同部分可以具有如前所述的多个深度测量值,但是仅将表面值的一个深度分配给检测到的关注对象210节省了用于设置表示人工现实环境中检测到的关注对象210的表面的姿态并在人工现实环境中渲染该表面的计算资源,而不会在人工现实环境的沉浸性方面产生可减值的损失(depreciable loss)。为了确定表面的单个深度,在特定实施例中,计算系统可以接收针对检测到的关注对象210测量的所有深度测量值,确定一个或多个异常值并从所接收的深度测量值中去除该一个或多个异常值,并创建剩余深度值的直方图。在特定实施例中,表示关注对象210的表面的深度可以是直方图中最频繁观察到的直条(bin)。作为另一示例,在一些实施例中,可以通过计算检测到的关注对象210的所有深度测量值中的最大值、最小值、平均值、中位数或某个百分位数(例如,957百分位数)值来确定表示关注对象210的表面的深度。
在特定实施例中,可以基于表示关注对象210的表面的深度,在对应于真实环境的坐标系(例如,已知的世界锁定坐标(x,y))中设置表面的姿态。表面的世界坐标可以基于人工现实环境中的绝对坐标(例如,在特定的(x,y)坐标处),或者表面的世界坐标可以相对于HMD的姿态、HMD、人工现实中的一个或多个其他表面或虚拟对象(例如,其被在相对于人工现实环境中的墙或虚拟咖啡桌的坐标处设置姿态)来确定。表示关注对象210的表面的深度允许计算系统相对于例如但不限于环境中的一个或多个其他真实对象或虚拟对象在人工现实环境中设置表面的姿态。以这种方式,例如,如果检测到的关注对象210经过虚拟对象的前方,则可以通过遮挡场景中表示该虚拟对象的表面的一部分来确定检测到的关注对象210相对于一个或多个其他真实对象或虚拟对象的适当遮挡。在特定实施例中,计算系统可以基于世界坐标域中的表面和/或关注对象210的该姿态来识别相机105A和105B的一个或多个关注区域(ROI),使得在随后的迭代中,只有部分图像被发送到检测模块以节省带宽和资源(例如,该模块可以扫描和分类每帧(例如,60fps)的ROI,但仅以较低的频率(例如,10fps)扫描和分类整个接收的图像)。
虽然所公开的实施例描述了使用图像数据生成二维边界框、分割掩模和2.5D表面以表示检测到的关注对象,但是应当理解,特定实施例可以允许计算系统使用例如包围体和三维分割技术(例如,3D掩模R-CNN)检测并以三维表示一个或多个关注对象210(例如,人)。
例如,计算系统可以接收基于场景的一个或多个三维深度测量值(例如,稀疏深度测量值)生成的场景的粗略三维网格,该场景可以包括例如一个或多个检测到的关注对象210。计算系统还可以接收从例如机器学习模型输出的图像中提取的检测到的关注对象210的二维分割掩模。在特定实施例中,场景的3D网格和提取的2D分割掩模这两者都是相对于同一视点定义的,使得2D分割掩模被投影并映射到3D网格。3D网格被投影到位于用户视点的相机的2D图像平面上,使得3D网格的三角形被投影到平坦2D平面。然后,可以使用例如机器学习模型将3D网格的所投影的三角形与2D分割掩模进行比较,以确定关注对象200的位置。在特定实施例中,这通过确定哪些三角形属于相应的检测到的关注对象以及哪些属于真实环境的其他真实对象或部件来实现。然后,可以更新3D网格中的对应三角形,以编码哪些三角形属于检测到的关注对象(实质上是创建3D网格的裁剪),然后可以使用该检测到的关注对象来确定遮挡。以此方式,可以将检测到的关注对象210的姿态设置成3D环境中的3D网格(而不是2.5D表示),并为该检测到的关注对象分配透明值(例如,不透明),该透明值可以结合本文所述的传统光线跟踪技术来使用。在特定实施例中,渲染表示关注对象的3D网格(而不是2.5D表面)允许计算系统以计算资源(例如,功率、带宽等)为代价来显示检测到的关注对象210的更美观且有纹理的描绘。
在特定实施例中,计算系统可以生成用于向用户显示的人工现实环境的场景的视图的初始输出图像,该初始输出图像可以包括例如表示一个或多个检测到的关注对象210的一个或多个表面。图4示出了包括一个或多个表面的渲染的人工现实环境的视图。作为示例而非限制,视图的该初始输出图像可以是AR人工现实环境的视图,该AR人工现实环境包括一组虚拟对象410(或者,如本文别处所讨论的,具有虚拟对象的VR场景)、以及表示关注对象210的一个或多个表面420,该虚拟对象例如为停放在道路上的虚拟汽车。计算系统可以利用光线投射或诸如光线跟踪等其他渲染过程来确定要在人工现实环境的视图内显示的一个或多个虚拟对象的视觉信息和位置信息。在特定实施例中,第一计算系统(例如,膝上型计算机、手机、台式计算机、可穿戴设备)可以执行该第一光线投射过程以渲染人工现实环境的视图。人工现实环境的“视图”可以指人工现实环境的用户视角,该用户视角可以例如基于HMD的当前位置和取向来确定。对光线投射过程的这种使用在本文可以被称为“可见性测试”,因为它可以用于通过将虚拟对象的模型与表面进行比较来确定虚拟对象410相对于关注对象210的可见性。光线投射过程最终可以用于将屏幕的像素与在对于人工现实环境的视图可见的任何对象上的交点相关联。
在特定实施例中,所生成的视图可以由计算系统的一个或多个部件(例如,CPU、GPU等)来渲染,该计算系统物理地连接到HMD。然而,HMD可能具有有限的系统资源和有限的电源,并且这些限制可能无法在不造成过太多重量、尺寸和/或热量从而会影响用户的舒适性的情况下显著减少。因此,HMD单侧处理渲染视图所涉及的所有处理任务可能并不可行。在特定实施例中,该一个或多个部件可以与可以用于渲染初始视图(例如,执行光线投射过程)的设备(例如,膝上型计算机、手机、台式机、可穿戴设备)相关联。在特定实施例中,该设备与HMD上的计算系统通信,但是该设备可以与HMD物理地分开。作为示例而非限制,该设备可以是有线连接到HMD或与HMD无线通信的膝上型设备。作为另一示例而非限制,该设备可以是可穿戴的(例如,绑在手腕上的设备)、手持设备(例如,电话)或有线连接到HMD或与HMD无线通信的某种其他合适的设备(例如,膝上型计算机、平板电脑、台式机)。在特定实施例中,该设备可以将该初始视图发送到HMD以供显示。
在特定实施例中,该设备的生成初始视图的部件还可以生成表示该视图的关注对象的一个或多个表面。作为另一示例而非限制,HMD的机载计算系统可以在其从单独的计算系统(例如,从可穿戴设备、手持设备或膝上型设备的CPU或GPU)接收初始视图之后生成一个或多个表面。在特定实施例中,出于效率目的,可以存在可以为视图生成的预定最大数量的表面(例如,16个表面)。尽管本公开集中于在AR HMD上向用户显示视图,但本公开考虑了在VR显示器或任何其他合适的设备上向用户显示场景。
在渲染人工现实环境的初始视图之后,计算系统可能需要对该视图进行一个或多个调整,以向用户精确地显示一个或多个表面420的当前姿态。对于通过例如AR HMD 110(其允许用户同时透视和感知其周围的真实环境)来显示人工现实而言,对这些调整的需要是独有的。例如,因为用户正在实时地体验人工现实环境,所以在执行本文所描述的过程以渲染虚拟现实环境的图像以供显示之后,计算系统可能落后于用户头部的当前姿态(例如,HMD姿态)和检测到的关注对象210的当前姿态大约100毫秒,从而导致与初始渲染的视图略有不同的视角。与之不同,当通过传统显示器(例如,平板电脑或移动设备)或通过完全遮挡用户对真实环境的视线的HMD(例如,图1A中描绘的HMD)向用户显示人工现实时,计算系统可以简单地延迟或滞后所显示的图像,使得所显示的图像匹配在人工现实环境内渲染和显示表示检测到的关注对象的一个或多个表面所需的时间(即,对整个场景进行滞后以考虑该处理时间)。
因此,如果更新视图以反映相对于人工现实环境(其允许用户感知其周围的真实环境)的该视角变化时存在显著的延迟,则用户可能能够感知该延迟,从而产生感觉失调。为了防止这种失调,向用户显示的内容可能需要以非常快的速度考虑用户视角的变化。此外,渲染的图像与用户正在体验的真实环境之间的这种延迟导致6个自由度,必须对这6个自由度进行预测以向用户实时精确地显示人工现实环境:表示用户头部在该延迟期内的移动的3个自由度,以及表示动态检测对象210在该延迟期内的移动的3个自由度。此外,重新渲染整个人工现实环境以考虑视角的这些变化需要时间。作为示例而非限制,即使使用强大的计算系统,也只能以这种方式以60Hz渲染帧,这意味着在1/60秒内发生的任何视角变化(例如,由于快速头部移动)将不会被渲染和显示的内容捕获到。此外,重新渲染整个视图以考虑视角的这些变化是一项需要大量资源的任务,该任务可能涉及执行大量的“可见性测试”以获取视觉信息(例如,颜色和透明度信息),以渲染该视图。
为了补救用户头部在该延迟期间的移动可能导致的视角的任何变化,而不是重新渲染整个视图,计算系统可以针对特定视图调整表示关注对象210的表面的姿态,以高效快速地处理渲染视图。这些调整可以考虑导致用户对人工现实环境(例如表示关注对象210的表面420)的视角的变化(例如,其是由于用户头部上的HMD移动到不同的位置和/或方向而导致的)的预测变化(例如,一起移动/平移、倾斜、缩放、扭曲或以其他方式改变外观)。
在特定实施例中,用于近似估计视图变化的一种这样的快捷方式可以涉及对视图内的表面进行重新采样(而不是重新渲染整个视图)。在特定实施例中,重新采样可能涉及执行第二光线投射过程,以确定从调整后的视角来看表面可能的近似值,该调整后的视角可能是由用户头部(以及HMD和相机)在该延迟期间的一个或多个移动所导致的。调整后的视角可以基于来自HMD的最新视点、位置和取向信息,该最新视点、位置和取向信息可以由计算系统(例如使用HMD上或跟踪HMD的远程设备上的惯性传感器、光学传感器、深度传感器和/或其他传感器)连续或半连续地获得,以确定在任何给定时间穿戴HMD的用户的视角。在特定实施例中,计算系统还可以连续或半连续地跟踪用户的眼睛位置(例如,以调整HMD的透镜所导致的失真,其可取决于用户的凝视)。在特定实施例中,还可以基于用户的凝视(例如,通过眼睛跟踪来确定)来确定最新视点。
通过仅对视图中有限数量的表面(例如,16个表面)进行重新采样,可以快速且足够快地修改该视图,以防止或减少用户对延迟的感知。作为示例而非限制,可以每1/200秒执行进一步的第二光线投射过程,以考虑因HMD的位置或取向的变化而可能发生的视角变化。在特定实施例中,HMD的机载计算系统可以通过执行光线投射过程来重新采样一个或多个表面以反映用户的最新视角。如果自上一个光线投射过程以来视角发生了变化,则假设的光线可能会相应地与表面的不同点相交。以这种方式基于重新采样来修改视图可能仅是近似于视图应该如何根据视角变化进行修改,并且该近似可能仅适用于视角的相对较小的改变。但这可能就是所需的全部,因为其目的是考虑在生成完全渲染的帧之间的相对较短的时间段(例如,在百分之一秒的数量级)内发生的变化。本质上,它可以是临时修复,直到可以重新渲染视图(例如,通过更强大的计算系统(例如,可穿戴设备))。作为示例而非限制,可以与HMD(例如,固定到用户腰带或腰部的可穿戴设备)分开的更强大的计算系统可以每1/60秒重新开始重新渲染视图,并且可以在渲染这些重新渲染的视图时将这些重新渲染的视图发送至HMD设备。在该示例中,在每1/60秒接收重新渲染的视图之间的时间内,HMD设备可以独立地修改表面(例如,每1/200秒),以考虑到用户视角的快速变化。
在特定实施例中,可以针对用户的每只眼睛单独执行光线投射过程,以考虑视点的微小变化(例如,基于眼睛的相对位置)。作为示例而非限制,可以针对与左眼相关联的屏幕和与右眼相关联的屏幕执行第一光线投射过程和第二光线投射过程。这些过程可以彼此独立地运行,甚至可能彼此不同步地运行。
为了对关注对象的一个或多个移动(即,本文描述的其他3个自由度)进行补救和调整,计算系统可以预测检测到的关注对象210在未来时间的姿态,并且随后对人工现实环境中的表面420进行重新采样。这可以通过使用t对t-1姿态预测器(使用已知的速度、移动、运动向量或其他基于物理的预测模型来预测检测到的人的移动)并将该预测应用于时间t+1以生成关注对象的未来姿态来完成。例如,使用在多个已知时间(例如,在时间t、t-1、t-2……t-n)检测到的关注对象210的一系列图像,计算系统可以通过使用已知技术来跟踪并确定表面420的位置、取向、速度、加速度,以预测表面420在时间t+1的姿态。作为实际示例,如果计算系统使用一系列图像确定在时间t,检测到的关注对象210是从用户的视角以3m/s的速度从左向右行走的人,则在时间t+1,计算系统可以预测表面420在时间t+1的姿态位于该表面在时间t的当前姿态的右侧3米处。尽管该示例将图像(和姿态)之间的时间描绘为一秒,但是应该理解,该预测可以以任何已知的时间间隔进行,以对应于图像捕获的速度。在其他实施例中,也可以使用机器学习模型(神经网络、LSTM、预测网络等)来实现对表面420的经时间调整的姿态预测。
表面的经时间调整的重新采样的姿态(考虑了所描述的6个自由度)可以被传输到HMD以供显示。计算系统可以基于所确定的虚拟对象的可见性来生成输出图像。生成输出图像可以在计算系统的GPU上通过渲染从用户的当前观看位置观察的表面来完成以供显示。基于该信息,计算系统可以基于根据最新用户头部姿态确定的相对遮挡以及所渲染的视图中的表面和/或虚拟对象的透明度来相应地在HMD上显示视图。可以使用二维表面(其可以是阿尔法掩模)来掩盖应该被真人遮挡的虚拟内容。例如,返回图4,如果表面420位于环境中虚拟对象410的一部分之前,如图4所示,则虚拟对象410的该部分将不被显示。然后可以相应地向用户显示沉浸式人工现实环境。
图5示出了用于在人工现实环境中生成表面的姿态的处理流水线。提出的流水线提供了几个优势。首先,流水线的灵活性使其能够进行调整,以适应其所在的计算系统的需求。例如,如果系统资源充足,则可以创建流水线的各个步骤的多个实例以减少延迟(例如,如果图像中存在多个关注关注对象)。如果系统资源稀缺,则以一定的延迟量为代价仅创建和操作流水线的一个实例。其次,可以使用本文描述的附加过程来增强流水线,该附加过程例如为生成被跟踪对象的关键点或基本骨架模型的步骤,从而潜在地增加了向前预测精度。
在步骤510,与人工现实系统相关联的计算系统从与该人工现实系统相关联的一个或多个相机接收真实环境的图像。在特定实施例中,可以以较低分辨率(例如,正常分辨率的1/8)和帧速率(例如,10fps)从与人工现实系统相关联的左相机或右相机接收一个或多个图像。在接收到该一个或多个图像时,岗哨模块可以基于是否在图像中检测到一个或多个检测到的关注对象(例如,人、动物、车辆等)来对该图像进行分类。该确定可以通过机器学习模型或其他适当的计算机视觉技术来进行。在特定实施例中,该模块可以被训练成识别特定类型的对象(例如,人)。如果在接收到的图像中没有检测到对象,则该过程可以返回到步骤610,在步骤610中,该模块可以继续接收真实环境的图像。在特定实施例中,该模块可以在人工现实系统的用户体验人工现实环境时,连续地接收来自相机的图像并对图像进行分类。
在步骤520,在检测到环境中的关注关注对象时,计算系统可以使用例如人检测器卷积神经网络(例如,掩模R-CNN)来生成围绕检测到的关注对象的实例的边界框。矩形边界框可以表示为指示边界框的四个角的四个二维坐标。
在步骤530,计算系统可以附加地或替代地输出分割掩模,该分割掩模识别属于检测到的关注对象的实例的特定像素。使用分割掩模,计算系统可以输出表示检测到的关注对象的二维表面,该二维表面可以在人工现实环境中渲染和显示以表示检测到的关注对象。
应当注意的是,通过机器学习模型(例如,神经网络)直接生成表面及其在空间中的姿态是有利的,因为这避免了任何软件或硬件光栅化以及伴随这些解决方案而来的竞争或延迟。使用传统的方法,会使用硬件GPU生成新的纹理并将该新的纹理栅格化到网格上。通过经由机器学习模型避开GPU,这一过程的时机变得更确定,并且延迟显著减少。
在步骤540,计算系统还可以确定深度值并将该深度值分配给表示图像中检测到的关注对象的表面。深度可以表示从用户穿戴的HMD到检测到的对象的距离。在特定实施例中,即使稀疏深度图可以为检测到的关注关注对象的不同部分提供不同的深度值,也可以仅向表面分配单个深度值。分配一个深度值节省了用于在人工现实环境中设置表面的姿态并渲染该表面的计算资源,而不会在人工现实环境的沉浸性方面产生可减值的损失。计算系统可以输出具有已知世界坐标和深度信息的表面(即,2.5维表面),该表面可以在人工现实环境中渲染和显示。为了节省资源,可以将表面作为阿尔法掩模来传输,该阿尔法掩模表示分割掩模中每个像素的遮挡和混合(例如,透明度)。
在步骤550,当检测到关注对象时,计算系统可以跟踪该对象在该图像中的位置以确定一个或多个关注区域。可以基于所接收的图像数据、用户的视场和HMD的当前姿态来确定关注区域。在特定实施例中,计算系统可以使用该一个或多个关注区域,使得在流水线的后续迭代中,仅将图像的部分发送到机器学习模型(例如,计算系统可以仅使用关注区域作为每个图像的输入(例如,其可以以例如较低分辨率和30fps的帧速率接收)来生成边界框和分割掩模),但是仅以较低频率(例如,10fps)使用整个图像作为输入来生成边界框和分割掩模)。仅使用关注区域减少了数据量,并因此通过减少岗哨模块和机器学习模型必须分析的图像的尺寸和面积,减少了将用于通过流水线的其余部分跟踪人的功率。例如,如果计算系统确定人位于图像的左上象限中,则计算系统可以确定该象限中的关注区域并使用该信息,使得机器学习模型仅分析后续帧中的左上象限。在特定实施例中,针对压缩子系统,对关注区域尺寸进行优化,以便最大化系统效率并最小化系统功耗。在特定实施例中,每个被跟踪的人需要其自己的关注区域。
在步骤560,计算系统的掩模预测器可以生成表面的姿态,该姿态考虑了执行本文所描述的过程以渲染人工现实环境的图像以供显示所需的延迟。这些调整可以考虑流水线的最后阶段,在显示之前,利用HMD上的时间扭曲引擎的能力来适当地对这些掩模进行上采样和过滤,以获得准确的世界尺寸。这一创新使跟踪和掩模生成流水线能够更高效地构建。通过仅创建一种尺寸的掩模纹理,我们消除了任何缩放或重新投影步骤,而是创建了一个有界问题,该问题利用为执行这些操作而设计的高效、专门构建的硬件模块,从而节省了功率并降低了复杂性。通过在HMD上使用时间扭曲引擎,可以绕过GPU,从而缩短延迟并节省资源。HMD上的时间扭曲引擎还允许以低于其显示的速率进行动画/渲染。
在适当的情况下,特定实施例可以重复图5的处理流水线的一个或多个步骤。尽管本公开将图5的处理流水线的特定步骤描述和图示为以特定顺序发生,但是本公开预期图6的处理流水线的任何适当步骤以任何适当的顺序发生。此外,尽管本公开描述和示出了包括图5的处理流水线的特定步骤的、用于在人工现实环境中生成表面的姿态的示例性处理流水线,但是本公开考虑了用于在人工现实环境中生成表面姿态的任何适当的处理流水线包括任何适当的步骤,这些适当的步骤在适当的情况下可以包括图5的处理流水线的所有步骤、一些步骤,或者不包括图5的处理流水线的步骤。此外,尽管本公开描述和图示了执行图5的处理流水线的特定步骤的特定部件、设备或系统,但是本公开考虑了执行图6的处理流水线的任何适当步骤的任何适当部件、设备或系统的任何适当组合。
图6示出了用于生成包括表示关注对象的表面的输出图像的示例方法600。该方法可以开始于步骤610,其中计算系统使用用户穿戴的相机接收真实环境的图像,该图像包括关注对象。在特定实施例中,图像可以由计算系统内的岗哨模块接收,该岗哨模块连续接收图像并对图像进行分类。在特定实施例中,关注对象可以是动态对象,例如人、动物、车辆等。在特定实施例中,图像可以包括多个关注对象(例如,人群、具有多个车辆的交通堵塞等)。
在步骤620,计算系统确定图像的一部分包括关注对象。该确定可以通过机器学习模块或其他适当的计算机视觉技术来进行。在特定实施例中,该模块可以被训练以识别特定类型的对象(例如,人、动物、车辆等)。在特定实施例中,机器学习模块可以输出对应于关注区域或关注对象的边界框或分割掩模。
在步骤630,计算系统基于确定的图像中包括关注对象的部分来生成表示关注对象的表面。该表面可以基于边界框和/或分割掩模,并且表示应该出现在视图内的关注对象,并且由此可以考虑在捕获图像时用户从该视图对该对象的视角。表面的纹理数据可以由一个或多个子部分组成,该一个或多个子部分在本文中被称为“纹素”。在特定实施例中,表面可以为其纹素中的一个或多个纹素编码视觉信息(RGBA)(例如,作为纹理)。阿尔法分量可以是指定要给予纹素的透明度级别的值。
在步骤640,计算系统接收真实环境的与图像中包括关注对象的部分相对应的深度测量值。深度测量值可以以各种方式确定,例如基于立体图像和三角测量技术来确定。在特定实施例中,这些技术可以确定对关注对象上的一个或多个点的深度测量值,这可以导致关注对象的不同深度测量值。
在步骤650,计算系统基于深度测量值来确定表示关注对象的表面的深度。表面的深度可以是表示从捕获图像的相机到真实环境中的检测到的关注对象的距离的单个值。为了确定表面的单个深度,在特定实施例中,计算系统可以接收针对检测到的关注对象测量的所有深度测量值,确定所接收的深度测量值中的一个或多个异常值并从所接收的深度测量值中去除该一个或多个异常值,以及创建剩余深度值的直方图。在特定实施例中,表示关注对象的表面的深度可以是直方图中最频繁观察到的直条。
在步骤660,计算系统基于表面的深度在对应于真实环境的坐标系中设置表面的姿态。表示关注对象的表面的深度允许计算系统相对于例如但不限于环境中的一个或多个其他真实对象或虚拟对象而在人工现实环境中设置表面的姿态。坐标系可以是基于人工现实环境中的绝对坐标的世界锁定坐标(例如,在特定的x,y坐标处),或者可以相对于HMD的姿态、HMD、人工现实中的一个或多个其他表面或虚拟对象(例如,相对于人工现实环境中的墙或虚拟咖啡桌的坐标处设置姿态)来确定表面的世界坐标。
在步骤670,计算系统通过将虚拟对象的模型与表面进行比较来确定虚拟对象相对于关注对象的可见性。计算系统可以利用光线投射或其他渲染过程(例如,光线跟踪)来确定一个或多个虚拟对象相对于要在人工现实环境的视图内显示的关注对象的视觉信息和位置信息。
在步骤680,计算系统基于所确定的虚拟对象的可见性来生成输出图像。输出图像可以是AR人工现实环境的视图,该AR人工现实环境包括一组虚拟对象410(或者,如本文在别处所讨论的,具有虚拟对象的VR场景)、以及表示关注对象的一个或多个表面,虚拟对象例如为停放在路上的虚拟汽车。光线投射过程最终可以用于将屏幕的像素与人工现实环境的视图可见的任何对象上的交点相关联。
在适当的情况下,特定实施例可以重复图6的方法的一个或多个步骤。尽管本公开将图6的方法的特定步骤描述和图示为以特定顺序发生,但是本公开考虑了图6的方法的任何适当步骤以任何适当的顺序发生。此外,尽管本公开描述和示出了用于生成包括表示关注对象的表面的输出图像的、包括图6的方法的特定步骤的示例方法,但是本公开考虑了用于生成包括表示关注对象的表面的输出图像的、包括任何合适步骤的任何合适的方法,在适当的情况下,这些合适步骤可以包括图6的方法的所有步骤、一些步骤或不包括图6的方法的任何步骤。此外,尽管本公开描述和图示了执行图6的方法的特定步骤的特定部件、设备或系统,但是本公开考虑了执行图6的方法的任何适当步骤的任何适当部件、设备或系统的任何适当组合。
图7示出了显示引擎700的系统图。显示引擎700可以包括四种类型的顶级块。如图7所示,这些块可以包括控制块710、变换块720a和720b、像素块730a和730b以及显示块740a和740b。显示引擎700的一个或多个部件可以被配置成经由一个或多个高速总线、共享存储器或任何其他合适的方法进行通信。如图7所示,显示引擎700的控制块710可以被配置成与变换块720a和720b以及像素块730a和730b通信。显示块740a和740b可以被配置成与控制块710通信。如在本文更详细地解释的,该通信可以包括数据以及控制信号、中断和其他指令。
在特定实施例中,控制块710可以从主渲染部件接收输入数据流760,并初始化显示引擎700中的流水线以完成渲染以用于显示。在特定实施例中,输入数据流760可以包括来自主渲染部件的数据和控制分组。该数据和控制分组可以包括诸如一个或多个包括纹理数据和位置数据的表面等信息以及附加渲染指令。控制块710可以根据需要将数据分发给显示引擎700的一个或多个其他块。控制块710可以为要显示的一个或多个帧启动流水线处理。在特定实施例中,HMD可以包括多个显示引擎700,并且每个显示引擎可以包括其自己的控制块710。
在特定实施例中,变换块720a和720b可以确定要在人工现实环境的视图中显示的表面的初始可见性信息。通常,变换块(例如,变换块720a和720b)可以从屏幕上的像素位置投射光线,并产生过滤命令(例如,基于双线性或其他类型的内插技术进行过滤)以发送到像素块730a和730b。变换块720a和720b可以从用户的当前视点(例如,其是使用惯性测量单元、眼睛跟踪器和/或任何合适的跟踪/定位算法(例如,同步定位与地图构建(simultaneous localization and mapping,SLAM))来确定的)执行光线投射到表面所定位的人工场景中,并且可以产生结果以发送到相应的像素块(像素块730a和730b)。
通常,根据特定实施例,变换块720a和720b可以各自包括四级流水线。变换块的各个级可以如下进行。光线投射器可以发出与一个或多个对准像素的阵列相对应的射线束,该一个或多个对准像素的阵列称为图块(tile)(例如,每个图块可以包括16×16个对准像素)。在进入人工现实环境之前,可以根据一个或多个变形网格来扭曲射线束。变形网格可以被配置成校正至少源于HMD的显示器750a和750b的几何变形效果。变换块720a和720b可以通过将每个图块的边界框与每个表面的边界框相比较来确定每个射线束是否与人工现实环境中的表面相交。如果射线束不与对象相交,则可以将该射线束丢弃。检测图块表面交点,并且将对应的图块-表面对725a和725b传递到像素块730a和730b。
通常,根据特定实施例,像素块730a和730b确定来自图块-表面对725a和725b的颜色值以产生像素颜色值。从控制块710接收和存储的表面纹理数据中对每个像素的颜色值进行采样(例如,作为输入数据流760的一部分)。像素块730a和730b分别从变换块720a和720b接收图块-表面对725a和725b,并调度双线性过滤。对于每个图块-表面对725a和725b,像素块730a和730b可以使用与投影图块与表面相交的位置相对应的颜色值来对图块内的像素的颜色信息进行采样。在特定实施例中,像素块730a和730b可以单独地处理每个像素的红色、绿色和蓝色分量。然后,像素块730a和730b可以分别将像素颜色值735a和735b输出到显示块740a和740b。
通常,显示块740a和740b可以从像素块730a和730b接收像素颜色值735a和735b,将数据的格式转换为更适合于显示器的扫描线输出,对像素颜色值735a和735b应用一个或多个亮度校正,并准备像素颜色值735a和735b以输出到显示器750a和750b。显示块740a和740b可以将由像素块730a和730b生成的图块级像素颜色值735a和735b转换为显示器750a和750b可能需要的扫描线顺序或行顺序数据。亮度校正可以包括任何所需的亮度校正、伽马映射和抖动。显示块740a和740b可以直接向显示器750a和750b提供像素输出745a和745b(例如,经校正的像素颜色值),或者可以以各种格式向显示引擎700外部的块提供像素输出745a和745b。例如,HMD可以包括附加的硬件或软件,以进一步定制后端色彩处理,以支持到显示器的更宽的接口,或优化显示速度或保真度。
图8示出了与社交网络系统相关联的示例网络环境800。网络环境800包括通过网络810彼此连接的客户端系统830、社交网络系统860和第三方系统870。尽管图8示出了客户端系统830、社交网络系统860、第三方系统870和网络810的特定布置,但是本公开考虑了客户端系统830、社交网络系统860、第三方系统870和网络810的任何合适的布置。作为示例而非限制,客户端系统830、社交网络系统860和第三方系统870中的两个或更多个可以绕过网络810而彼此直接连接。作为另一示例,客户端系统830、社交网络系统860和第三方系统870中的两个或更多个可以全部或部分地物理地或逻辑地彼此共存。此外,尽管图8示出了特定数量的客户端系统830、社交网络系统860、第三方系统870和网络810,但是本公开考虑了任何适当数量的客户端系统830、社交网络系统860、第三方系统870和网络810。作为示例而非限制,网络环境800可以包括多个客户端系统830、社交网络系统860、第三方系统870和网络810。
本公开考虑任何合适的网络810。作为示例而非限制,网络810的一个或多个部分可以包括自组织网络、内联网、外联网、虚拟专用网(virtual private network,VPN)、局域网(local area network,LAN)、无线LAN(WLAN)、广域网(wide area network,WAN)、无线WAN(WWAN)、城域网(metropolitan area network,MAN)、互联网的一部分、公共交换电话网(Public Switched Telephone Network,PSTN)的一部分、蜂窝电话网络或这些网络中的两个或更多个的组合。网络810可以包括一个或多个网络810。
链路850可以将客户端系统830、社交网络系统860和第三方系统870连接到通信网络810或彼此连接。本公开考虑了任何合适的链路850。在特定实施例中,一个或多个链路850包括一个或多个有线(例如,数字用户线路(Digital Subscriber Line,DSL)或电缆数据服务接口规范(Data Over Cable Service Interface Specification,DOCSIS))、无线(例如,诸如Wi-Fi或微波接入全球互操作性(Worldwide Interoperability forMicrowave Access,WiMAX))或光(例如,诸如同步光网络(Synchronous Optical Network,SONET)或同步数字体系(Synchronous Digital Hierarchy,SDH))链路。在特定实施例中,一个或多个链路850各自包括自组织网络、内联网、外联网、VPN、LAN、WLAN、WAN、WWAN、MAN、互联网的一部分、PSTN的一部分、基于蜂窝技术的网络、基于卫星通信技术的网络、另一链路850、或两个或更多个这样的链路850的组合。链路850不必在整个网络环境800中都相同。一个或多个第一链路850可以在一个或多个方面不同于一个或多个第二链路850。
在特定实施例中,客户端系统830可以是这样的电子设备:该电子设备包括硬件、软件或嵌入式逻辑部件或两个或更多个这样的部件的组合,并且能够执行由客户端系统830实现或支持的适当功能。作为示例而非限制,客户端系统830可以包括计算机系统,例如台式计算机、笔记本或膝上型计算机、上网本、平板计算机、电子书阅读器、GPS设备、相机、个人数字助理(personal digital assistant,PDA)、手持电子设备、蜂窝电话、智能手机、增强/虚拟现实设备、其他合适的电子设备或其任何合适的组合。本公开考虑了任何合适的客户端系统830。客户端系统830可以使客户端系统830处的网络用户能够访问网络810。客户端系统830可以使其用户能够与其他客户端系统830处的其他用户通信。
在特定实施例中,客户端系统830可以包括网络浏览器832,并且可以具有一个或多个附加组件、插件或其他扩展。客户端系统830处的用户可以输入统一资源定位符(Uniform Resource Locator,URL)或将网络浏览器832定向到特定服务器(例如,服务器862或与第三方系统870相关联的服务器)的其他地址,并且网络浏览器832可以生成超文本传输协议(Hyper Text Transfer Protocol,HTTP)请求并将该HTTP请求传送到服务器。服务器可以接受该HTTP请求,并响应于该HTTP请求向客户端系统830传送一个或多个超文本标记语言(Hyper Text Markup Language,HTML)文件。客户端系统830可以基于来自服务器的用于呈现给用户的HTML文件来渲染网页。本公开考虑了任何合适的网页文件。作为示例而非限制,网页可以根据特定需求从HTML文件、可扩展超文本标记语言(Extensible HyperText Markup Language,XHTML)文件或可扩展标记语言(Extensible Markup Language,XML)文件渲染。这样的页面还可以执行脚本、标记语言和脚本的组合等。在此,在适当的情况下,对网页的引用包含一个或多个对应的网页文件(浏览器可以使用该网页文件来渲染网页),反之亦然。
在特定实施例中,社交网络系统860可以是能够承载在线社交网络的网络可寻址计算系统。社交网络系统860可以生成、存储、接收和发送社交网络数据,例如用户简档数据、概念简档数据、社交图信息或与在线社交网络相关的其他合适的数据。社交网络系统860可以由网络环境800的其他部件直接访问或经由网络810访问。作为示例而非限制,客户端系统830可以使用网络浏览器832或与社交网络系统860相关联的本地应用(例如,移动社交网络应用、消息收发应用、另一合适的应用或其任何组合)来直接访问社交网络系统860或经由网络810访问社交网络系统860。在特定实施例中,社交网络系统860可以包括一个或多个服务器862。每个服务器862可以是单一服务器或跨越多个计算机或多个数据中心的分布式服务器。服务器862可以具有各种类型,例如但不限于网络服务器、新闻服务器、邮件服务器、消息服务器、广告服务器、文件服务器、应用服务器、交换服务器、数据库服务器、代理服务器、适合于执行本文描述的功能或过程的另一服务器,或其任何组合。在特定实施例中,每个服务器862可以包括硬件、软件或嵌入式逻辑部件或用于执行由服务器862实现或支持的适当功能的两个或更多个这样的部件的组合。在特定实施例中,社交网络系统860可以包括一个或多个数据存储库(data store)864。数据存储库864可以用于存储各种类型的信息。在特定实施例中,存储在数据存储库864中的信息可以根据特定数据结构来组织。在特定实施例中,每个数据存储库864可以是关联式、列式、关系型或其他合适的数据库。尽管本公开描述或示出了特定类型的数据库,但本公开考虑了任何合适类型的数据库。特定实施例可以提供这样的接口,所述接口使客户端系统830、社交网络系统860或第三方系统870能够管理、检索、修改、添加或删除存储在数据存储库864中的信息。
在特定实施例中,社交网络系统860可以在一个或多个数据存储库864中存储一个或多个社交图。在特定实施例中,社交图可以包括多个节点-其可以包括多个用户节点(每个对应于特定用户)或多个概念节点(每个对应于特定概念)-以及连接这些节点的多个边。社交网络系统860可以向在线社交网络的用户提供与其他用户通信和交互的能力。在特定实施例中,用户可以经由社交网络系统860加入在线社交网络,然后将连接(例如,关系)添加到他们想要连接到的社交网络系统860的多个其他用户。在本文中,术语“朋友”可以指用户经由社交网络系统860形成连接、关联或关系的、社交网络系统860的任何其他用户。
在特定实施例中,社交网络系统860可以向用户提供对由社交网络系统860支持的各种类型的物品或对象采取动作的能力。作为示例而非限制,物品和对象可以包括社交网络系统860的用户可能属于的群组或社交网络、用户可能感兴趣的事件或日历条目、用户可能使用的基于计算机的应用、允许用户经由服务购买或出售物品的交易、与用户可能执行的广告的交互、或其他合适的物品或对象。用户可以与能够在社交网络系统860中表示的或由第三方系统870的外部系统表示的任何东西交互,第三方系统870与社交网络系统860分离并且经由网络810耦接到社交网络系统860。
在特定实施例中,社交网络系统860可能够链接各种实体。作为示例而非限制,社交网络系统860可以使用户能够彼此交互并且从第三方系统870或其他实体接收内容,或者允许用户通过应用编程接口(application programming interface,API)或其他通信通道与这些实体交互。
在特定实施例中,第三方系统870可以包括一种或多种类型的服务器、一个或多个数据存储库、一个或多个接口(包括但不限于(一个或多个)API)、一个或多个网络服务、一个或多个内容源、一个或多个网络、或服务器可以与之通信的任何其他适当部件。第三方系统870可以由与操作社交网络系统860的实体不同的实体操作。然而,在特定实施例中,社交网络系统860和第三方系统870可以相互结合地操作以向社交网络系统860的用户或第三方系统870提供社交网络服务。在这个意义上,社交网络系统860可以提供平台或主干网(backbone),其他系统(例如,第三方系统870)可以使用该平台或主干网向互联网上的用户提供社交网络服务和功能。
在特定实施例中,第三方系统870可以包括第三方内容对象提供商。第三方内容对象提供商可以包括可以被传送到客户端系统830的一个或多个内容对象源。作为示例而非限制,内容对象可以包括关于用户感兴趣的事物或活动的信息,例如电影放映时间、电影评论、餐馆评论、餐馆菜单、产品信息和评论、或其他合适的信息。作为另一示例而非限制,内容对象可以包括激励内容对象,例如优惠券、折扣票、礼券或其他合适的激励对象。
在特定实施例中,社交网络系统860还包括用户生成的内容对象,这些内容对象可以增强用户与社交网络系统860的交互。用户生成的内容可以包括用户可以向社交网络系统860添加、上传、发送或“发布”的任何内容。作为示例而非限制,用户将帖子从客户端系统830传送到社交网络系统860。帖子可以包括诸如状态更新或其他文本数据、位置信息、照片、视频、链接、音乐或其他类似数据或媒体等数据。还可以由第三方通过“通信通道”(例如,新闻馈送或流)将内容添加到社交网络系统860。
在特定实施例中,社交网络系统860可以包括各种服务器、子系统、程序、模块、日志和数据存储库。在特定实施例中,社交网络系统860可以包括以下中的一者或多者:网络服务器、动作记录器、API请求服务器、相关性和排名引擎、内容-对象分类器、通知控制器、动作日志、第三方内容-对象-暴露日志、推理模块、授权/隐私服务器、搜索模块、广告定向模块、用户-界面模块、用户简档存储库、连接存储库(connection store)、第三方内容存储库或位置存储库。社交网络系统860还可以包括适当的部件,例如网络接口、安全机制、负载平衡器、故障转移服务器、管理和网络操作控制台、其他适当的部件,或它们的任何适当的组合。在特定实施例中,社交网络系统860可以包括用于存储用户简档的一个或多个用户简档存储库。用户简档可以包括例如传记信息、人口统计信息、行为信息、社会信息或其他类型的描述性信息,例如工作经验、教育历史、爱好或偏好、兴趣、亲密度或位置。兴趣信息可以包括与一个或多个类别相关的兴趣。类别可以是一般的,也可以是具体的。作为示例而非限制,如果用户“喜欢”关于某一品牌的鞋子的文章,则该类别可以是该品牌,或者是“鞋子”或“服装”的一般类别。连接存储库可以用于存储关于用户的连接信息。该连接信息可以指示具有相似或共同的工作经验、群组成员资格、爱好、教育历史、或以任何方式相关或共享共同属性的用户。连接信息还可以包括不同用户与内容(内部和外部)之间的用户定义的连接。网络服务器可以用于经由网络810将社交网络系统860链接到一个或多个客户端系统830或一个或多个第三方系统870。网络服务器可以包括邮件服务器或用于在社交网络系统860与一个或多个客户端系统830之间接收和路由消息的其他消息收发功能。API请求服务器可以允许第三方系统870通过调用一个或多个API来从社交网络系统860访问信息。动作记录器可以用于从网络服务器接收关于用户在社交网络系统860登录或退出社交网络系统860的动作的通信。结合动作日志,可以维护用户接触第三方内容对象时的第三方内容-对象日志。通知控制器可以向客户端系统830提供关于内容对象的信息。可以将信息作为通知推送到客户端系统830,或者可以响应于从客户端系统830接收的请求从客户端系统830取出信息。授权服务器可以用于实施社交网络系统860的用户的一个或多个隐私设置。用户的隐私设置确定如何共享与用户相关联的特定信息。授权服务器可以允许用户例如通过设置适当的隐私设置来选择加入或退出社交网络系统860记录他们的动作或与其他系统(例如,第三方系统870)共享他们的动作。第三方内容-对象存储库可以用于存储从第三方(例如,第三方系统870)接收的内容对象。位置存储库可以用于存储从与用户相关联的客户端系统830接收的位置信息。广告定价模块可以组合社会信息、当前时间、位置信息或其他合适的信息,以便以通知的形式向用户提供相关广告。
图9示出了示例计算机系统900。在特定实施例中,一个或多个计算机系统900执行本文所描述或示出的一种或多种方法的一个或多个步骤。在特定实施例中,一个或多个计算机系统900提供本文描述或示出的功能。在特定实施例中,在一个或多个计算机系统900上运行的软件执行本文所描述或示出的一种或多种方法的一个或多个步骤,或提供本文所描述或示出的功能。特定实施例包括一个或多个计算机系统900的一个或多个部分。在本文中,在适当的情况下,对计算机系统的引用可以包括计算设备,反之亦然。此外,在适当的情况下,对计算机系统的引用可以包括一个或多个计算机系统。
本公开考虑了任何合适数量的计算机系统900。本公开考虑了采用任何合适的物理形式的计算机系统900。作为示例而非限制,计算机系统900可以是嵌入式计算机系统、片上系统(system-on-chip,SOC)、单板计算机系统(single-board computer system,SBC)(例如计算机模块(computer-on-module,COM)或系统模块(system-on-module,SOM))、台式计算机系统、膝上型或笔记本计算机系统、交互式自助服务机、大型机、计算机系统组网、移动电话、个人数字助理(PDA)、服务器、平板计算机系统、增强现实/虚拟现实设备、或这些计算机系统中的两个或更多个的组合。在适当的情况下,计算机系统900可以包括一个或多个计算机系统900;计算机系统900可以是单一的或分布式的;跨多个位置的;跨多台机器的;跨多个数据中心的;或位于云(该云可以包括一个或多个网络中的一个或多个云组件)中。在适当的情况下,一个或多个计算机系统900可以在没有大量的空间限制或时间限制的情况下,执行本文所描述或示出的一种或多种方法中的一个或多个步骤。作为示例而非限制,一个或多个计算机系统900可以实时地或以批处理模式执行本文所描述或示出的一种或多种方法中的一个或多个步骤。在适当的情况下,一个或多个计算机系统900可以在不同的时间或在不同的位置执行本文所描述或示出的一种或多种方法中的一个或多个步骤。
在特定实施例中,计算机系统900包括处理器902、存储器(memory)904、存储装置(storage)906、输入/输出(input/output,I/O)接口908、通信接口910和总线912。尽管本公开描述和示出了具有处于特定布置的特定数量的特定部件的特定计算机系统,但是本公开考虑了具有处于任何合适的布置的任何合适数量的任何合适部件的任何合适的计算机系统。
在特定实施例中,处理器902包括用于执行指令的硬件,这些指令例如为,构成计算机程序的那些指令。作为示例而非限制,为了执行指令,处理器902可以从内部寄存器、内部高速缓冲存储器、存储器904、或存储装置906检索(或读取)这些指令;解码并执行这些指令;并且随后将一个或多个结果写入内部寄存器、内部高速缓冲存储器、存储器904或存储装置906。在特定实施例中,处理器902可以包括用于数据、指令或地址的一个或多个内部高速缓冲存储器。在适当的情况下,本公开内容考虑了包括任何合适数量的任何合适的内部高速缓冲存储器的处理器902。作为示例而非限制,处理器902可以包括一个或多个指令高速缓冲存储器、一个或多个数据高速缓冲存储器、和一个或多个转译后备缓冲器(translation lookaside buffer,TLB)。指令高速缓冲存储器中的指令可以是存储器904或存储装置906中的指令的副本,并且指令高速缓冲存储器可以加速处理器902对这些指令的检索。数据高速缓冲存储器中的数据可以是存储器904或存储装置906中的数据的副本,以供在处理器902处执行的指令对其进行操作;数据高速缓冲存储器中的数据可以是在处理器902处执行的先前指令的结果,以供在处理器902处执行的后续指令访问、或用于写入存储器904或存储装置906;或者数据高速缓冲存储器中的数据可以是其他合适的数据。数据高速缓冲存储器可以加速处理器902的读取操作或写入操作。多个TLB可以加速处理器902的虚拟地址转换。在特定实施例中,处理器902可以包括用于数据、指令或地址的一个或多个内部寄存器。在适当的情况下,本公开考虑了包括任何合适数量的任何合适的内部寄存器的处理器902。在适当的情况下,处理器902可以包括一个或多个算术逻辑单元(arithmetic logic unit,ALU);处理器902可以是多核处理器、或包括一个或多个处理器902。尽管本公开描述和示出了特定的处理器,但是本公开考虑了任何合适的处理器。
在特定实施例中,存储器904包括主存储器,该主存储器用于存储供处理器902执行的指令或供处理器902操作的数据。作为示例而非限制,计算机系统900可以将指令从存储装置906或另一个源(例如,另一个计算机系统900)加载到存储器904。然后,处理器902可以将这些指令从存储器904加载到内部寄存器或内部高速缓冲存储器。为了执行这些指令,处理器902可以从内部寄存器或内部高速缓冲存储器检索这些指令并对它们进行解码。在执行这些指令期间或之后,处理器902可以将一个或多个结果(该一个或多个结果可以是中间结果或最终结果)写入内部寄存器或内部高速缓冲存储器。然后,处理器902可以将这些结果中的一个或多个结果写入存储器904。在特定实施例中,处理器902仅执行一个或多个内部寄存器中或内部高速缓冲存储器中或存储器904(而不是存储装置906或其他地方)中的指令,并且仅对一个或多个内部寄存器或内部高速缓冲存储器中的、或存储器904(与存储装置906不同或其他位置)中的数据进行操作。一条或多条存储器总线(每条存储器总线可以包括地址总线和数据总线)可以将处理器902耦接到存储器904。如下所述,总线912可以包括一条或多条存储器总线。在特定实施例中,一个或多个存储器管理单元(memorymanagement unit,MMU)位于处理器902与存储器904之间,并且促进处理器902所请求的对存储器904的访问。在特定实施例中,存储器904包括随机存取存储器(random accessmemory,RAM)。在适当的情况下,该RAM可以是易失性存储器。在适当的情况下,该RAM可以是动态RAM(dynamic RAM,DRAM)或静态RAM(static RAM,SRAM)。此外,在适当的情况下,该RAM可以是单端口RAM或多端口RAM。本公开考虑了任何合适的RAM。在适当的情况下,存储器904可以包括一个或多个存储器904。尽管本公开描述和示出了特定的存储器,但是本公开考虑了任何合适的存储器。
在特定实施例中,存储装置906包括用于数据或指令的大容量存储装置。作为示例而非限制,存储装置906可以包括硬盘驱动器(hard disk drive,HDD)、软盘驱动器(floppydisk drive)、闪存、光盘、磁光盘、磁带、或通用串行总线(Universal Serial Bus,USB)驱动器、或这些存储装置中的两者或两者以上的组合。在适当的情况下,存储装置906可以包括可移动介质或不可移动(或固定)介质。在适当的情况下,存储装置906可以处于计算机系统900的内部或外部。在特定实施例中,存储装置906是非易失性固态存储器。在特定实施例中,存储装置906包括只读存储器(read-only memory,ROM)。在适当的情况下,该ROM可以是掩模编程ROM、可编程ROM(programmable ROM,PROM)、可擦除PROM(erasable PROM,EPROM)、电可擦除PROM(electrically erasable PROM,EEPROM)、电可改写ROM(electricallyalterable ROM,EAROM)或闪存、或这些ROM中的两者或两者以上的组合。本公开考虑采用任何合适的物理形式的大容量的存储装置906。在适当的情况下,存储装置906可以包括促进处理器902和存储装置906之间的通信的一个或多个存储装置控制单元。在适当的情况下,存储装置906可以包括一个或多个存储装置906。尽管本公开描述和示出了特定的存储装置,但是本公开考虑了任何合适的存储装置。
在特定实施例中,I/O接口909包括如下的硬件、软件或硬件和软件这两者:所述硬件、软件或硬件和软件这两者提供用于计算机系统900与一个或多个I/O设备之间的通信的一个或多个接口。在适当的情况下,计算机系统900可以包括这些I/O设备中的一个或多个I/O设备。这些I/O设备中的一个或多个I/O设备可以实现个人与计算机系统900之间的通信。作为示例而非限制,I/O设备可以包括键盘、小键盘、传声器、监视器、鼠标、打印机、扫描仪、扬声器、静态摄像头(still camera)、触控笔、输入板、触摸屏、跟踪球、摄像机、另一合适的I/O设备、或这些I/O设备中的两者或两者以上的组合。I/O设备可以包括一个或多个传感器。本公开考虑了任何合适的I/O设备和用于这些I/O设备的任何合适的I/O接口909。在适当的情况下,I/O接口909可以包括如下的一个或多个设备或软件驱动器:所述一个或多个设备或软件驱动器使处理器902能够驱动这些I/O设备中的一个或多个I/O设备。在适当的情况下,I/O接口909可以包括一个或多个I/O接口909。尽管本公开描述和示出了特定的I/O接口,但是本公开考虑了任何合适的I/O接口。
在特定实施例中,通信接口910包括如下的硬件、软件或硬件和软件这两者:所述硬件、软件或硬件和软件这两者提供一个或多个接口,该一个或多个接口用于计算机系统900与一个或多个其他计算机系统900或一个或多个网络之间的通信(例如,基于数据包(packet-based)的通信)。作为示例而非限制,通信接口910可以包括用于与以太网或其他基于线路的网络进行通信的网络接口控制器(network interface controller,NIC)或网络适配器,或者可以包括用于与无线网络(例如,WI-FI网络)进行通信的无线NIC(wirelessNIC,WNIC)或无线适配器。本公开考虑了任何合适的网络和用于该网络的任何合适的通信接口910。作为示例而非限制,计算机系统900可以与自组网、个人区域网(personal areanetwork,PAN)、局域网(local area network,LAN)、广域网(wide area network,WAN)、城域网(metropolitan area network,MAN)、或因特网的一个或多个部分、或这些网络中的两者或两者以上的组合进行通信。这些网络中的一个或多个网络的一个或多个部分可以是有线或无线的。作为示例,计算机系统900可以与无线PAN(wireless PAN,WPAN)(例如,蓝牙(BLUETOOTH)WPAN)、WI-FI网络、WI-MAX网络、蜂窝电话网络(例如,全球移动通信系统(Global System for Mobile Communications,GSM)网络)、或其他合适的无线网络、或这些网络中的两者或两者以上的组合进行通信。在适当的情况下,计算机系统900可以包括用于这些网络中的任一者的任何合适的通信接口910。在适当情况下,通信接口910可以包括一个或多个通信接口910。尽管本公开描述和示出了特定的通信接口,但是本公开考虑了任何合适的通信接口。
在特定实施例中,总线912包括如下的硬件、软件或硬件和软件这两者:所述硬件、软件或硬件和软件这两者将计算机系统900的多个部件彼此耦接。作为示例而非限制,总线912可以包括:加速图形端口(Accelerated Graphics Port,AGP)或其他图形总线、扩展工业标准结构(Enhanced Industry Standard Architecture,EISA)总线、前端总线(front-side bus,FSB)、超传输(HYPERTRANSPORT,HT)互连、工业标准结构(Industry StandardArchitecture,ISA)总线、无限带宽(INFINIBAND)互连、低引脚计数(low-pin-count,LPC)总线、存储器总线、微通道结构(Micro Channel Architecture,MCA)总线、外围组件互连(Peripheral Component Interconnect,PCI)总线、高速外围组件互连(PCI-Express,PCIe)总线、串行高级技术附件(serial advanced technology attachment,SATA)总线、视频电子标准协会局域(Video Electronics Standards Association local,VLB)总线、或另一合适的总线、或这些总线中的两者或两者以上的组合。在适当的情况下,总线912可以包括一条或多条总线912。尽管本公开描述和示出了特定的总线,但是本公开考虑了任何合适的总线或互连件。
在本文中,在适当的情况下,一种或多种计算机可读非暂态存储介质可以包括:一个或多个基于半导体的集成电路(integrated circuit,IC)或其他集成电路(例如,现场可编程门阵列(field-programmable gate array,FPGA)或专用IC(application-specificIC,ASIC))、硬盘驱动器(HDD)、混合硬盘驱动器(hybrid hard drive,HHD)、光盘、光盘驱动器(optical disc drive,ODD)、磁光盘、磁光盘驱动器、软盘、软盘驱动器(floppy diskdrives,FDD)、磁带、固态驱动器(solid-state drive,SSD)、RAM驱动器、安全数字卡(SECURE DIGITAL card)或安全数字驱动器、任何其他合适的计算机可读非暂态存储介质、或这些存储介质中的两者或两者以上的任何合适的组合。在适当的情况下,计算机可读非暂态存储介质可以是易失性的、非易失性的、或易失性和非易失性计算机可读非暂态存储介质的组合。
在本文中,除非另有明确地指示或上下文另有指示,否则“或”是包括性的而非排他性的。因此,在本文中,除非另有明确地指示或上下文另有指示,否则“A或B”是指“A、B、或A和B这两者”。此外,除非另有明确地指示或上下文另有指示,否则“和”既是共同的又是各自的。因此,在本文中,除非另有明确地指示或上下文另有指示,否则“A和B”是指“A和B,共同地或各自地”。
本公开的范围涵盖:本领域的普通技术人员将理解的、对本文所描述或示出的示例实施例的所有改变、替换、变化、变更和修改。本公开的范围不限于本文所描述或示出的示例实施例。此外,尽管本公开将本文中的各个实施例描述和示出为包括特定部件、元件、特征、功能、操作或步骤,但是本领域的普通技术人员将理解的是,这些实施例中的任何实施例可以包括本文中任何地方描述或示出的任何部件、元件、特征、功能、操作或步骤的任何组合或排列。此外,在所附权利要求中对装置或系统、或装置或系统中的部件(这些装置、系统、部件适于、被布置为、能够、被配置成、被实现为、可操作地或可使用以执行特定功能)的引用涵盖了该装置、系统、部件(无论该装置、系统、部件或者该特定功能是否被激活、开启或解锁),只要该装置、系统或部件是如此适于、被布置为、能够、被配置成、被实现为、可操作地或可使用。另外,尽管本公开将特定实施例描述或示出为提供特定优点,但是特定实施例可以不提供这些优点、提供这些优点中的一些或全部优点。
Claims (15)
1.一种方法,所述方法包括由计算系统:
使用用户穿戴的相机接收真实环境的图像,所述图像包括关注对象;
确定所述图像的一部分包括所述关注对象;
基于确定的所述图像中包括所述关注对象的部分,生成表示所述关注对象的表面;
接收所述真实环境的与所述图像中包括所述关注对象的部分相对应的深度测量值;
基于所述深度测量值,确定表示所述关注对象的表面的深度;
基于所述表面的深度,在对应于所述真实环境的坐标系中设置所述表面的姿态;
通过将虚拟对象的模型与所述表面进行比较,来确定所述虚拟对象相对于所述关注对象的可见性;以及
基于确定的所述虚拟对象的可见性,生成输出图像。
2.根据权利要求1所述的方法,其中,设置所述表面的姿态包括,调整所述表面的位置或取向以考虑对所述关注对象的视角变化,所述视角变化由以下导致:
在捕获接收到的所述图像之后所述用户穿戴的所述相机的一个或多个移动;或者
在捕获接收到的所述图像之后所述关注对象的一个或多个移动。
3.根据权利要求2所述的方法,其中,调整所述表面的位置或取向是由所述计算系统的一个或多个部件执行的,所述一个或多个部件物理地连接到所述用户穿戴的头戴式设备。
4.根据权利要求1所述的方法,其中,确定所述图像中包括所述关注对象的部分包括:
使用机器学习模型的神经网络生成包围所述关注对象的边界框;以及
使用所述边界框输出与所述关注对象相关联的分割掩模。
5.根据权利要求4所述的方法,其中,所述表面基于与所述关注对象相关联的所述分割掩模。
6.根据权利要求1所述的方法,其中,确定表示所述关注对象的表面的深度包括:
从接收的所述深度测量值中去除一个或多个异常值;
在去除所述一个或多个异常值之后,生成包括接收的所述深度测量值的直方图;以及
使用所述直方图确定所述深度测量值的最频繁观测值。
7.根据权利要求1所述的方法,其中,所述表面包括多个纹素,其中,每个纹素被分配如下值:所述值指定要给予所述纹素的透明度级别。
8.根据权利要求1所述的方法,其中,所述深度测量值是在捕获接收到的所述图像时相对于所述相机的姿态进行计算的。
9.根据权利要求1所述的方法,其中,所述用户穿戴的相机连接到头戴式显示器。
10.根据权利要求1所述的方法,其中,所述坐标系被世界锁定到所述真实环境。
11.一种或多种计算机可读非暂态存储介质,所述计算机可读非暂态存储介质包括指令,所述指令在由计算机执行时,使得所述计算机执行权利要求1至10中任一项所述的方法的步骤。
12.一种系统,所述系统包括:
一个或多个处理器;以及
一个或多个计算机可读非暂态存储介质,所述一个或多个计算机可读非暂态存储介质耦接到所述一个或多个处理器中的一个或多个并且包括指令,所述指令在由所述一个或多个处理器中的一个或多个执行时,能够操作以使得所述系统:
使用用户穿戴的相机接收真实环境的图像,所述图像包括关注对象;
确定所述图像的一部分包括所述关注对象;
基于确定的所述图像中包括所述关注对象的部分,生成表示所述关注对象的表面;
接收所述真实环境的与所述图像中包括所述关注对象的部分相对应的深度测量值;
基于所述深度测量值,确定表示所述关注对象的表面的深度;
基于所述表面的深度,在对应于所述真实环境的坐标系中设置所述表面的姿态;
通过将虚拟对象的模型与所述表面进行比较,来确定所述虚拟对象相对于所述关注对象的可见性;以及
基于确定的所述虚拟对象的可见性,生成输出图像。
13.根据权利要求12所述的系统,其中,设置所述表面的姿态包括调整所述表面的位置或取向以考虑对所述关注对象的视角变化,所述视角变化由以下导致:
在捕获接收到的所述图像之后所述用户穿戴的所述相机的一个或多个移动;或者
在捕获接收到的所述图像之后所述关注对象的一个或多个移动;并且
可选地,其中,调整所述表面的位置或取向是由所述计算系统的一个或多个部件执行的,所述一个或多个部件物理地连接到所述用户穿戴的头戴式设备。
14.根据权利要求12所述的系统,其中,确定所述图像中包括所述关注对象的部分包括:
使用机器学习模型的第一神经网络生成包围所述关注对象的边界框;以及
使用所述边界框输出与所述关注对象相关联的分割掩模。
15.根据权利要求12所述的系统,其中,确定表示所述关注对象的表面的深度包括:
从接收的所述深度测量值中去除一个或多个异常值;
在去除所述一个或多个异常值之后,生成包括接收的所述深度测量值的直方图;以及
使用所述直方图确定所述深度测量值的最频繁观测值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/206,541 US11335077B1 (en) | 2021-03-19 | 2021-03-19 | Generating and modifying representations of dynamic objects in an artificial reality environment |
US17/206,541 | 2021-03-19 | ||
PCT/US2022/020584 WO2022197825A1 (en) | 2021-03-19 | 2022-03-16 | Generating and modifying representations of dynamic objects in an artificial reality environment |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117063205A true CN117063205A (zh) | 2023-11-14 |
Family
ID=81328649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280022789.3A Pending CN117063205A (zh) | 2021-03-19 | 2022-03-16 | 在人工现实环境中生成和修改动态对象的表示 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11335077B1 (zh) |
EP (1) | EP4302274A1 (zh) |
CN (1) | CN117063205A (zh) |
TW (1) | TW202240542A (zh) |
WO (1) | WO2022197825A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220309708A1 (en) * | 2021-03-29 | 2022-09-29 | Infosys Limited | System and method for automated estimation of 3d orientation of a physical asset |
US11663781B1 (en) * | 2021-12-01 | 2023-05-30 | International Business Machines Corporation | Enhancements to virtual or augmented reality environments |
WO2024081288A1 (en) * | 2022-10-11 | 2024-04-18 | Meta Platforms Technologies, Llc | View synthesis pipeline for rendering passthrough images |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9122053B2 (en) * | 2010-10-15 | 2015-09-01 | Microsoft Technology Licensing, Llc | Realistic occlusion for a head mounted augmented reality display |
US10055892B2 (en) * | 2014-11-16 | 2018-08-21 | Eonite Perception Inc. | Active region determination for head mounted displays |
WO2017171568A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Apparatus and method for asynchronous texel shading |
US10943399B2 (en) * | 2017-08-28 | 2021-03-09 | Microsoft Technology Licensing, Llc | Systems and methods of physics layer prioritization in virtual environments |
CN110554770A (zh) * | 2018-06-01 | 2019-12-10 | 苹果公司 | 静态遮挡物 |
US11170577B2 (en) * | 2018-10-30 | 2021-11-09 | Facebook Technologies, Llc | Generating and modifying representations of objects in an augmented-reality or virtual-reality scene |
US11292129B2 (en) * | 2018-11-21 | 2022-04-05 | Aivot, Llc | Performance recreation system |
US10950034B1 (en) * | 2020-01-27 | 2021-03-16 | Facebook Technologies, Llc | Systems, methods, and media for generating visualization of physical environment in artificial reality |
-
2021
- 2021-03-19 US US17/206,541 patent/US11335077B1/en active Active
-
2022
- 2022-02-17 TW TW111105809A patent/TW202240542A/zh unknown
- 2022-03-16 EP EP22715258.4A patent/EP4302274A1/en active Pending
- 2022-03-16 CN CN202280022789.3A patent/CN117063205A/zh active Pending
- 2022-03-16 WO PCT/US2022/020584 patent/WO2022197825A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US11335077B1 (en) | 2022-05-17 |
TW202240542A (zh) | 2022-10-16 |
WO2022197825A1 (en) | 2022-09-22 |
EP4302274A1 (en) | 2024-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12067673B2 (en) | Systems, methods, and media for generating visualization of physical environment in artificial reality | |
US11854230B2 (en) | Physical keyboard tracking | |
US11335077B1 (en) | Generating and modifying representations of dynamic objects in an artificial reality environment | |
CN116964542A (zh) | 用于在虚拟现实中提供空间感知的系统和方法 | |
JP2023511639A (ja) | 人工現実における物理環境のリアルタイムの視覚化を表示するためのシステム、方法、およびメディア | |
US11451758B1 (en) | Systems, methods, and media for colorizing grayscale images | |
KR102612529B1 (ko) | 신규 뷰 합성을 위한 신경 블렌딩 | |
US12033270B2 (en) | Systems and methods for generating stabilized images of a real environment in artificial reality | |
CN115661408A (zh) | 在人工现实环境中生成和修改手的表示 | |
WO2024020258A1 (en) | Late stage occlusion based rendering for extended reality (xr) | |
US11410387B1 (en) | Systems, methods, and media for generating visualization of physical environment in artificial reality | |
US11210860B2 (en) | Systems, methods, and media for visualizing occluded physical objects reconstructed in artificial reality | |
CN116530078A (zh) | 用于显示从多个视角采集的经立体渲染的图像数据的3d视频会议系统和方法 | |
US11562529B2 (en) | Generating and modifying an artificial reality environment using occlusion surfaces at predetermined distances | |
US20220326527A1 (en) | Display System Optimization | |
US20240062425A1 (en) | Automatic Colorization of Grayscale Stereo Images | |
US11818474B1 (en) | Sparse RGB cameras for image capture | |
US20240153223A1 (en) | Reliable Depth Measurements for Mixed Reality Rendering | |
US20240119568A1 (en) | View Synthesis Pipeline for Rendering Passthrough Images | |
US20220230352A1 (en) | System and methods for graphics rendering and tracking | |
US20240119672A1 (en) | Systems, methods, and media for generating visualization of physical environment in artificial reality | |
WO2024081288A1 (en) | View synthesis pipeline for rendering passthrough images |
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 |