首页 / 国际专利分类库 / 物理 / 教育;密码术;显示;广告;印鉴 / 基于注视位置的稳定性平面确定

基于注视位置稳定性平面确定

申请号 CN201580023255.2 申请日 2015-04-23 公开(公告)号 CN106462370B 公开(公告)日 2019-08-06
申请人 微软技术许可有限责任公司; 发明人 A·A·米哈尔; R·S·K·叙尔文; Q·S·C·米勒; A·A-A·基普曼;
摘要 本文描述了用于确定 稳定性 平面来减少在单应变换被应用到包括3D几何形状和/或多个非共面平面的场景时出现的误差的各 实施例 。这样的实施例可例如在在头戴式显示(HMD)设备上显示图像时被使用,但不被限制于此。在一个实施例中,生成被 渲染 的图像,确定用户的注视 位置 ,并且基于所确定的注视位置来确定与单应变换相关联的稳定性平面。这可涉及基于用户的注视位置来确定单应变换的定义稳定性平面的变量。单应变换被应用到被渲染的图像以从而生成经更新的图像,并且接着显示该经更新的图像的至少一部分。
权利要求

1.一种用于在显示器上显示图像的方法,所述方法包括:
生成包括3D几何形状的场景的被渲染的图像;
确定用户的注视位置
基于所确定的注视位置来确定与单应变换相关联的稳定性平面,其中所述稳定性平面是在所述单应变换被应用于包括3D几何形状的所述场景的所述被渲染的图像时在没有误差的情况下被正确地变换的单平面;
将所述单应变换应用到所述被渲染的图像以生成包括3D几何形状的所述场景的经更新的图像;以及
在所述显示器上显示包括3D几何形状的所述场景的所述经更新的图像的至少一部分。
2.如权利要求1所述的方法,其特征在于,确定所述稳定性平面包括基于所确定的注视位置来确定所述单应变换的定义所述稳定性平面的变量。
3.如权利要求1所述的方法,其特征在于,确定所述稳定性平面包括:
确定所述注视位置的深度;以及
基于所述注视位置的深度来确定所述稳定性平面的深度。
4.如权利要求1所述的方法,其特征在于,基于所述用户的所确定的注视位置来确定所述稳定性平面包括:
标识在所述注视位置处或在所述注视位置的一范围内的虚拟对象;以及基于所标识的虚拟对象来确定所述稳定性平面。
5.如权利要求4所述的方法,其特征在于,基于所标识的虚拟对象来确定所述稳定性平面包括基于所标识的虚拟对象的深度和定向来确定稳定性平面深度和稳定性平面定向。
6.如权利要求5所述的方法,其特征在于:
当所标识的虚拟对象是平面二维虚拟对象时,将所述稳定性平面深度和所述稳定性平面定向确定为分别等于所标识的平面二维虚拟对象的深度和定向;以及当所标识的虚拟对象是细长的三维虚拟对象时,将所述稳定性平面深度和所述稳定性平面定向确定为分别等于沿着所标识的细长的三维虚拟对象的细长的长度将所述三维虚拟对象平分的平面的深度和定向。
7.如权利要求4所述的方法,其特征在于,当所标识的虚拟对象包括多个子部分时,基于所标识的虚拟对象来确定所述稳定性平面包括:
基于所述子部分中最靠近所述注视位置的一个子部分来确定所述稳定性平面;或基于所述子部分中的两个或更多个子部分通过取决于所述两个或更多个子部分中的每一个子部分有多靠近所述注视位置来对所述两个或更多个子部分中的每一个子部分对所述稳定性平面的影响进行加权来确定所述稳定性平面。
8.如权利要求1所述的方法,其特征在于,当多个虚拟对象被显示时,基于所述用户的所确定的注视位置来确定所述稳定性平面包括:
基于所述虚拟对象中的两个或更多个虚拟对象通过取决于所述两个或更多个虚拟对象中的每一个虚拟对象有多靠近所述注视位置来对所述两个或更多个虚拟对象中的每一个虚拟对象对所述稳定性平面的影响进行加权来确定所述稳定性平面。
9.一种用于在显示器上显示图像的设备,包括:
确定用户的注视位置的眼睛跟踪器;
一个或多个处理器,所述一个或多个处理器生成包括3D几何形状的场景的被渲染的图像,基于所述用户的所述注视位置来确定与单应变换相关联的稳定性平面,其中所述稳定性平面是在所述单应变换被应用于包括3D几何形状的所述场景的所述被渲染的图像时在没有误差的情况下被正确地变换的单平面,以及将所述单应变换应用到所述被渲染的图像以生成包括3D几何形状的所述场景的经更新的图像;以及
与所述一个或多个处理器通信并显示包括3D几何形状的所述场景的所述经更新的图像的至少一部分的显示器;
其中所述一个或多个处理器基于所述注视位置来确定所述单应变换的定义所述稳定性平面的变量。
10.如权利要求9所述的设备,其特征在于,所述设备包括头戴式显示(HMD)设备。
11.一种包括用于执行如权利要求1-8中的任一项所述的方法的装置的计算机系统
12.一种具有指令的计算机可读存储介质,所述指令在被执行时使机器执行如权利要求1-8中的任一项所述的方法。

说明书全文

基于注视位置稳定性平面确定

[0001] 背景
[0002] 增强现实(AR)涉及提供经增强的现实世界环境,其中用计算机生成的虚拟数据来增强或修改对现实世界环境(或表示现实世界环境的数据)的感知。例如,可使用诸如相机或话筒等传感输入设备实时地捕捉表示现实世界环境的数据,并用包括虚拟图像和虚拟声音的计算机生成的虚拟数据来增强该数据。虚拟数据还可包括与现实世界环境有关的信息,诸如与现实世界环境中的现实世界对象相关联的文本描述。一些AR环境内的对象可包括现实对象(即,存在于特定现实世界环境中的对象)和虚拟对象(即,不存在于该特定现实世界环境中的对象)。
[0003] 为了将虚拟对象逼真地集成到AR环境中,AR系统通常执行包括映射和本地化的若干任务。映射涉及生成现实世界环境的映射的过程。本地化涉及相对于现实世界环境的映射来定位特定视点或姿态的过程。在一些情况下,AR系统可实时本地化在现实世界环境内移动的移动设备的姿态,以便确定与该移动设备相关联的、需要随该移动设备在现实世界环境中移动而被增强的特定姿态。
[0004] AR环境可使用电子显示器(例如,与头戴式显示设备集成的LED显示器)来被提供到移动设备的最终用户(更一般地也被称为用户)。电子显示器可通过调制被提供到电子显示器(诸如液晶(LCOS)显示器)上的光或通过在电子显示器(例如,OLED显示器)内生成光来对最终用户显示虚拟对象的图像。
[0005] 为了生成逼真的AR环境,实现低等待时间是重要的,其部分地可通过增加速率来实现。例如,对于佩戴了头戴式显示(HMD)设备的最终用户而言,如果在最终用户的头转动离开特定姿态的时间与虚拟对象的图像基于该特定姿态被显示的时间之间流逝的时间太多,则虚拟对象将看上去偏离其在AR环境内预期的位置。例如,该图像可能看上去没有与预期的现实世界位置或对象对齐,其是不理想的。
[0006] 概述
[0007] 一种将AR系统的帧速率增加为超过AR系统的核心渲染线的帧速率以及减少等待时间的方式是将后期图形调整应用到被渲染的图像以生成经更新的图像以供显示。本文中描述的这种后期图形调整可使用具有相关联的稳定性平面的单应变换来执行。本技术的一些实施例涉及用于确定稳定性平面来减少并较佳地最小化在单应变换被应用到包括3D几何形状和/或多个非共面平面(例如,近平面和远平面)的场景时发生的误差的技术。
[0008] 更一般地,描述了用于在显示设备的显示器(诸如头戴式显示(HMD)设备或某个其他透视显示设备的显示器,但不被限制于此)上显示图像的技术。在一实施例中,生成被渲染的图像。附加地,确定用户的注视位置,并且基于所确定的注视位置来确定与单应变换相关联的稳定性平面。单应变换被应用到被渲染的图像以从而生成经更新的图像,并且接着该经更新的图像的至少一部分被显示在显示器上。在一实施例中,确定稳定性平面可涉及,基于注视位置来确定单应变换的定义该稳定性平面的变量。例如,指定稳定性平面的深度的变量可被使得等于注视位置的深度。对于另一示例,在注视位置处或在注视位置的某一范围内的虚拟对象可被标识,并且稳定性平面可基于所标识的虚拟对象来确定。这可包括基于所标识的虚拟对象的深度和定向来确定稳定性平面深度和稳定性平面定向。
[0009] 提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。
[0010] 附图简述
[0011] 图1是可在其中实施所公开的技术的联网计算环境的一个实施例的框图
[0012] 图2A描绘了与第二移动设备通信的移动设备的一个实施例。
[0013] 图2B描绘了HMD的一部分的一个实施例。
[0014] 图3A描绘了用于按比用于核心渲染流水线的渲染帧速率大的帧速率来生成和显示与虚拟对象相关联的图像的系统的一个实施例。
[0015] 图3B描绘了显示器的一个实施例。
[0016] 图3C描绘了显示器的一替换实施例。
[0017] 图4A描绘了被预先渲染的图像的一部分以及基于该被预先渲染的图像的经更新的图像的一个实施例。
[0018] 图4B描绘了被预先渲染的图像以及被用于生成经更新的图像(或目标图像)的采样区域的一个实施例。
[0019] 图4C描绘了被预先渲染的图像以及滚动缓冲器对被预先渲染的图像的应用的一个实施例。
[0020] 图5A描绘了将后期图形调整应用到被渲染的图像以生成经更新的图像的一个实施例。
[0021] 图5B描绘了与显示器相关联的显示序列的一个实施例。
[0022] 图5C描绘了与显示器相关联的显示序列的替换实施例。
[0023] 图6A是描述了用于按比渲染帧速率大的帧速率来生成并显示与虚拟对象相关联的图像的方法的一个实施例的流程图
[0024] 图6B是描述了用于使用与显示器集成的电路来作出对被提供到该显示器的被渲染的图像的图形调整的方法的一个实施例的流程图。
[0025] 图7A是描述了用于按比渲染帧速率大的帧速率来生成并显示与虚拟对象相关联的图像的方法的一替换实施例的流程图。
[0026] 图7B是描述了用于生成被渲染的图像的过程的一个实施例的流程图。
[0027] 图8是描述用于基于注视位置来确定稳定性平面并且在生成要被显示的经更新的图像时使用该稳定性平面的方法的一个实施例的流程图。
[0028] 图9描绘了用于基于注视位置来确定稳定性平面的一个实施例。
[0029] 图10描绘了用于基于注视位置来确定稳定性平面的另一个实施例。
[0030] 图11是移动设备(诸如但不限于,HMD设备)的一个实施例的框图。
[0031] 详细描述
[0032] 描述了用于按比渲染帧速率大的帧速率来生成和显示与增强现实(AR)环境内的一个或多个虚拟对象相关联的图像并用于改进虚拟对象稳定性的技术。所显示的图像可包括被预先渲染的场景(即,按渲染帧速率被渲染的被前向预测的场景)的后期图形调整以合并更高频率的姿态估计。渲染帧速率可对应于用于渲染与头戴式显示设备(HMD)的姿态相关联的图像的最小时间。在一些实施例中,HMD可确定与HMD的将来位置和朝向相关联的被预测的姿态(例如,HMD的将来10ms或20ms的被预测的姿态),基于被预测的姿态来生成被预先渲染的图像,在生成被预先渲染的图像后或与被渲染的图像被生成的同时确定与HMD相关联的经更新的姿态,基于经更新的姿态和被预先渲染的图像来生成经更新的图像以及在HMD上显示经更新的图像。经更新的图像可经由被预先渲染的图像的单应变换和/或像素偏移调整来生成。在一些情况下,经更新的图像可通过显示器内的电路来生成。
[0033] 在一些实施例中,被预测的姿态可基于HMD的当前位置和朝向以及HMD的就在确定被预测的姿态之前的加速度和速度来确定(例如,通过基于HMD的在确定被预测的姿态之前5ms或10ms的移动来外插被预测的姿态)。经预测的姿态可基于按比渲染帧速率更高的频率被提供到姿态跟踪器的经更新的姿态信息来确定。在一个示例中,经更新的姿态信息可使用低等待时间惯性测量单元(IMU)或IMU和基于相机的姿态跟踪的组合来生成。经更新的图像可包括对被预先渲染的图像的至少一部分的图像旋转、平移、重新调整大小(例如,伸展或收缩)、移位或倾斜以校正被预测的姿态和经更新的姿态之间的区别(例如,对在生成被预先渲染的图像时的不正确的姿态预测进行补偿)。经更新的图像可经由被预先渲染的图像的单应变换来生成。在一些情况下,单应变换可包括仿射变换。经更新的图像可使用像素偏移调整或单应变换和像素偏移调整的组合来生成。在一些情况下,单应变换和/或像素偏移调整可在核心渲染流水线的下游生成(例如,使用与显示器集成的控制器或处理器)。在一个实施例中,像素偏移调整可使用显示器来执行,该显示器合并用于允许在该显示器的像素阵列内的像素值的移位的移位寄存器或其他电路(例如,类似于电荷耦合设备的操作)。
[0034] 在一些实施例中,包括被前向预测的被渲染的图像的后期图形调整的经更新的图像可使用具有变化的计算复杂度的各种图像重投影技术来生成。图像重投影技术可包括每像素重投影(例如,其中被渲染的图像的每个像素基于经更新的姿态被重投影),多平面单应性(例如,其中与3D场景内的多个平面相关联的多个被渲染的图像被用于生成合成的经更新的图像),单平面单应性(例如,其中与3D场景内的单平面相关联的单个被渲染的图像被用于生成经更新的图像),仿射单应性以及基于像素偏移的调整。3D场景内的2D平面(或一个或多个2D平面的集合)可基于HMD的最终用户已经在特定时间段内聚焦在哪些虚拟对象来确定。在一个示例中,眼睛跟踪可被用于确定特定时间段内(例如,先前的50ms或500ms内)被最频繁查看的虚拟对象。在单平面的情况下,单平面可基于特定时间段内被最频繁查看的虚拟对象的深度来选择(即,单平面可基于增强现实环境内被最频繁查看的虚拟对象的位置来设置)。在多个平面的情况下,增强现实环境内的虚拟对象可基于到多个平面的邻近度来被分割到多个组中;例如,如果近的平面是对于第一虚拟对象而言最靠近的平面,则第一虚拟对象可被映射到该近的平面,并且如果远的平面是对于第二虚拟对象而言最靠近的平面,则该第二虚拟对象可被映射到该远的平面。接着可基于该近的平面来生成包括第一虚拟对象的第一被渲染的图像,并且基于该远的平面来生成包括第二虚拟对象的第二被渲染的图像。
[0035] 在一些实施例中,可对被预先渲染的图像的不同部分执行不同的图形调整以合并更高频率的姿态估计。在一个示例中,与HMD的在第一时间点的第一姿态相关联的第一单应变换可被应用到被预先渲染的图像的第一部分(例如,被预先渲染的图像的顶部)并且与HMD的在第一时间点后的第二时间点的第二姿态相关联的第二单应变换可被应用到被预先渲染的图像中不同于第一部分的第二部分(例如,被预先渲染的图像的底部)。在扫描显示或渐进扫描显示的情况下,第一单应变换可被应用到与扫描线的第一集合相关联的像素并且第二单应变换可被应用到与不同于扫描线的第一集合的扫描线的第二集合相关联的像素。在一个实施例中,第一单应变换可被应用到单个第一扫描线并且第二单应变换可被应用到单个第二扫描线(即,单应变换可在每扫描线的基础上被应用)。
[0036] 以下描述的一些实施例涉及确定稳定性平面来减少在单应变换被应用到包括3D几何形状和/或多个非共面平面的场景时出现的误差。在一些这样的实施例中,生成被渲染的图像,确定用户的注视位置,并且基于所确定的注视位置来确定与单应变换相关联的稳定性平面。这可涉及,基于用户的注视位置来确定单应变换的定义稳定性平面的变量。单应变换被应用到被渲染的图像以从而生成经更新的图像,并且接着显示该经更新的图像的至少一部分。
[0037] 生成现实的增强现实环境所具有的一个问题涉及等待时间或其中对应于HMD的特定姿态的世界定的虚拟对象的图像被显示给HMD的最终用户的时间的量。例如,如果在最终用户的头转动离开特定姿态的时间与虚拟对象的图像基于该特定姿态被显示的时间之间流逝的时间太多,则虚拟对象将看上去偏离其在增强现实环境内预期的位置或在该位置周围抖动(即,图像可能看上去不与预期的现实世界位置或对象对齐)。由此,存在向最终用户显示虚拟对象的被正确对齐的图像以提升虚拟对象稳定性并提升增强现实体验的需要。
[0038] 图1是可在其中实施所公开的技术的联网计算环境100的一个实施例的框图。联网计算环境100包括通过一个或多个网络180互连的多个计算设备。所述一个或多个网络180允许一特定计算设备连接到另一计算设备以及与其通信。所描绘的计算设备包括移动设备11、移动设备12、移动设备19和服务器15。在一些实施例中,所述多个计算设备可以包括未示出的其他计算设备。在一些实施例中,所述多个计算设备可以包括比图1所示的计算设备的数目更多或更少的计算设备。所述一个或多个网络180可以包括诸如企业专用网络之类的安全网络、诸如无线开放式网络之类的不安全网络、局域网(LAN)、广域网(WAN)、以及因特网。所述一个或多个网络180中的每个网络可以包括集线器、网桥、路由器、交换机、以及有线传输介质,比如有线网络或直接线连接。
[0039] 可包括补充信息服务器或应用服务器的服务器15可允许客户端从该服务器下载信息(例如,文本、音频、图像和视频文件)或者执行与存储在该服务器上的特定信息相关的搜索查询。一般而言,“服务器”可以包括在客户端-服务器关系中充当主机的硬件设备、或者与一个或多个客户端共享资源或为所述一个或多个客户端执行工作的软件过程。客户端-服务器关系下的计算设备之间的通信可以通过由客户端向服务器发送要求访问特定资源或执行特定工作的请求来发起。服务器随后可以执行所请求的动作并且将响应发送回客户端。
[0040] 服务器15的一个实施例包括网络接口155、处理器156、存储器157和翻译器158,所有这些都彼此通信。网络接口155允许服务器15连接到一个或多个网络180。网络接口155可以包括无线网络接口、调制解调器、和/或有线网络接口。处理器156允许服务器15执行存储在存储器157中的计算机可读指令以执行在此讨论的过程。翻译器158可包括用于将第一文件格式的第一文件翻译成第二文件格式的对应第二文件的映射逻辑(即,第二文件可以是经翻译的版本的第一文件)。可使用文件映射指令来配置翻译器158,该文件映射指令提供用于将第一文件格式的文件(或其部分)映射成第二文件格式的对应文件的指令。
[0041] 移动设备19的一个实施例包括网络接口145、处理器146、存储器147、相机148、传感器149、以及显示器150,所有这些都彼此通信。网络接口145允许移动设备19连接到一个或多个网络180。网络接口145可以包括无线网络接口、调制解调器、和/或有线网络接口。处理器146允许移动设备19执行存储在存储器147中的计算机可读指令以执行在此讨论的过程。相机148可以捕捉环境的色彩图像和/或深度图像。移动设备19可包括捕捉环境的图像的面向外的相机以及捕捉移动设备的最终用户的图像的面向内的相机。传感器149可生成与移动设备19相关联的运动和/或定向信息。在一些情况下,传感器149可包括惯性测量单元(IMU)。显示器150可显示数字图像和/或视频。显示器150可包括透视显示器。显示器150可包括LED或OLED显示器。
[0042] 在一些实施例中,包括网络接口145、处理器146、存储器147、相机148以及传感器149的移动设备19的各组件可被集成在单芯片基片上。在一示例中,网络接口145、处理器
146、存储器147、相机148、传感器149可被集成成为片上系统(SOC)。在其他实施例中,网络接口145、处理器146、存储器147、相机148和传感器149可被集成在单个封装中。
[0043] 在一些实施例中,通过采用相机148、传感器149,和运行在处理器146上的姿势识别软件,移动设备19可提供自然用户界面(NUI)。使用自然用户界面,人的身体部位和移动可被检测、解释、以及用于控制计算应用的各方面。在一个示例中,利用自然用户界面的计算设备可推断与计算设备交互的人的意图(例如,最终用户执行了特定姿势来控制该计算设备)。
[0044] 联网计算环境100可以为一个或多个计算设备提供计算环境。云计算指的是基于因特网的计算,其中共享的资源、软件和/或信息通过因特网(或其他全局网络)被按需提供给一个或多个计算设备。基于在计算机网络图中使用的云图来将因特网描绘成对其所表示的底层基础设施的抽象,术语“云”被用作对因特网的比喻。
[0045] 在一个示例中,移动设备19包括向头戴式显示(HMD)设备的最终用户提供增强现实环境或混合现实环境的头戴式显示设备。HMD设备(在本文中也被简单地称为HMD)可包括视频透视和/或光学透视系统。最终用户佩戴的光学透视HMD可允许(例如经由透明透镜)对现实世界环境的实际直接查看,并且同时可将虚拟对象的图像投影到最终用户的视野中,由此用虚拟对象来增强最终用户所感知的现实世界环境。
[0046] 通过利用HMD,佩戴HMD的最终用户可在现实世界环境(例如,起居室)中四处移动,并感知覆盖有虚拟对象的图像的现实世界的视图。虚拟对象可以看起来保持与现实世界环境的相干空间关系(即,当最终用户在现实世界环境中转动他们的头或移动时,显示给该最终用户的图像将改变,使得虚拟对象看起来像被最终用户感知的那样存在于该现实世界环境内)。虚拟对象还可看起来相对于最终用户的视点是固定的(例如,无论最终用户如何在现实世界环境中转动他们的头或移动,总是出现在最终用户视的右上角的虚拟菜单)。在一个实施例中,现实世界环境的环境映射可由服务器15(即,在服务器侧)来执行,而相机本地化可在移动设备19上(即,在客户端侧)执行。虚拟对象可包括与现实世界对象相关联的文本描述。
[0047] 在一些实施例中,移动设备(诸如移动设备19)可与云中的服务器(诸如服务器15)通信,并可提供与移动设备相关联的服务器位置信息(例如,经由GPS坐标的移动设备的位置)和/或图像信息(例如,与在移动设备的视野内检测到的对象有关的信息)。作为响应,服务器可基于提供给该服务器的位置信息和/或图像信息向移动设备传送一个或多个虚拟对象。在一个实施例中,移动设备19可指定用于接收一个或多个虚拟对象的特定文件格式,并且服务器15可向移动设备19传送特定文件格式的文件内包含的一个或多个虚拟对象。
[0048] 在一些实施例中,HMD(诸如移动设备19)可使用从面向外的相机捕捉到的环境的图像,以便相对于该环境的3D图确定对应于这些图像的六自由度(6DOF)姿态。6DOF姿态可包括与HMD在该环境内的位置和定向相关联的信息。6DOF姿态可用于定位HMD并生成虚拟对象的图像,以使得这些虚拟对象看起来存在于该环境内的合适位置处。关于确定6DOF姿态的更多信息可在题为例如“Distributed Asynchronous Localization and Mapping for Augmented Reality(增强现实的分布式异步定位和映射)”的美国专利申请13/152,220中找到。关于执行对移动设备的姿态估计和/或定位的更多信息可在例如题为“Mobile Camera Localization Using Depth Maps(使用深度图的移动相机定位)”的美国专利申请13/017,474中找到。
[0049] 在一些实施例中,HMD(诸如移动设备19)可按比用于渲染核心流水线或渲染GPU的渲染帧速率大的帧速率来在增强现实(AR)环境内显示虚拟对象的图像。HMD可基于按比渲染帧速率高的频率提供的经更新的姿态估计来修改按渲染帧速率被渲染的被预先渲染的图像或被前向预测的图像。在一些实施例中,HMD可基于被预测的姿态按渲染帧速率(例如,每16ms)生成被预先渲染的图像,在生成被预先渲染的图像后确定与HMD相关联的一个或多个经更新的姿态(例如,每2ms),基于一个或多个经更新的姿态和被预先渲染的图像来生成一个或多个经更新的图像,并且在HMD上显示一个或多个经更新的图像。在一些情况下,一个或多个经更新的图像可使用显示器(诸如显示器150)内的电路经由单应变换和/或像素偏移调整来生成。
[0050] 图2A描绘了与第二移动设备5通信的移动设备19的一个实施例。移动设备19可包括透视HMD。如所描绘的,移动设备19经由有线连接6与移动设备5通信。然而,移动设备19还可经由无线连接与移动设备5通信。移动设备5可由移动设备19用来卸载计算密集的处理任务(例如,渲染虚拟对象),并将可被用来提供增强现实环境的虚拟对象信息和其他数据存储在移动设备19上。移动设备5还可向移动设备19提供与移动设备5相关联的运动和/或定向信息。在一个示例中,运动信息可包括与移动设备5相关联的速度或加速度,并且定向信息可包括欧拉角,其提供围绕特定坐标系统或参照系的转动信息。在一些情况中,移动设备5可包括运动和定向传感器,诸如惯性测量单元(IMU),以便获得与移动设备5相关联的运动和/或定向信息。
[0051] 图2B描绘了HMD(诸如图1的移动设备19)的一部分的一个实施例。仅描绘了HMD 200的右侧。HMD 200包括右镜腿202、鼻梁204、镜片216、以及眼镜框214。右镜腿202包括与处理单元236通信的捕捉设备213(例如,前置相机和/或话筒)。捕捉设备213可包括用于记录数字图像和/或视频的一个或多个相机,并可将视觉记录传送到处理单元236。一个或多个相机可捕捉色彩信息、IR信息、和/或深度信息。捕捉设备213还可包括用于记录声音的一个或多个话筒,并可将音频记录传送到处理单元236。
[0052] 右镜腿202还包括生物测定传感器220、眼睛跟踪系统221、机230、运动和定向传感器238、GPS接收器232、电源239、以及无线接口237,所有这些都与处理单元236通信。生物测定传感器220可包括用于确定与HMD 200的最终用户的脉搏或心率相关联的一个或多个电极,以及用于确定与HMD 200的最终用户相关联的体温的温度传感器。在一个实施例中,生物测定传感器220包括压着最终用户太阳穴的脉搏速率测量传感器。运动和定向传感器238可以包括三轴磁计、三轴陀螺仪、和/或三轴加速度计。在一个实施例中,运动和定向传感器238可包括惯性测量单元(IMU)。GPS接收器可确定与HMD 200相关联的GPS位置。处理单元236可以包括一个或多个处理器和用于存储将要在所述一个或多个处理器上执行的计算机可读指令。存储器还可存储要在一个或多个处理器上执行的其它类型的数据。
[0053] 在一个实施例中,眼睛跟踪系统221可包括一个或多个面向内的相机。在另一实施例中,眼睛跟踪系统221可包括眼睛跟踪照明源和相关联的眼睛跟踪图像传感器。在一个实施例中,眼睛跟踪照明源可包括以大约预定IR波长或一定范围的波长发射的一个或多个红外(IR)发射器(诸如红外发光二极管(LED)或激光器(例如,VCSEL))。在一些实施例中,眼睛跟踪传感器可包括用于跟踪闪光位置的IR相机或IR位置敏感检测器(PSD)。关于眼睛跟踪系统的更多信息可在2008年7月22提交的标题为“Head Mounted Eye Tracking and Display System(头戴式眼睛跟踪和显示系统)”的美国专利7,401,920,以及2011年9月26日提交的标题为“Integrated Eye Tracking and Display System(集成眼睛跟踪和显示系统)”的美国专利申请13/245,700中找到。
[0054] 在一个实施例中,镜片216可包括透视显示器,处理单元236生成的图像由此可被投影和/或显示在透视显示器上。透视显示器可通过调制被提供到该显示器(诸如硅上液晶(LCOS)显示器)的光或通过在该显示器(诸如OLED显示器)内生成光来显示虚拟对象的图像。捕捉设备213可被校准,使得捕捉设备213所捕捉的视野对应于HMD 200的最终用户所看到的视野。耳机230可用于输出与虚拟对象的投影图像相关联的声音。在一些实施例中,HMD 200可包括两个或更多个前置相机(例如,每个镜腿上一个相机),以便从与前置相机所捕捉的视野相关联的立体信息中获得深度。两个或更多个前置相机还可包括3D、IR、和/或RGB相机。也可从利用来自运动技术的深度的单个相机中获取深度信息。例如,可从单个相机获取两个图像,这两个图像与在不同的时间点的、两个不同的空间点相关联。然后,给定与两个不同空间点有关的位置信息的情况下,可执行视差计算。
[0055] 在一些实施例中,HMD 200可使用注视检测元件和与一个或多个人类眼睛元素(诸如角膜中心、眼球旋转的中心、或瞳孔中心)有关的三维坐标系,来为最终用户眼睛中的每只眼睛执行注视检测。注视检测可被用于标识最终用户聚焦在视野内的何处,并且更具体地,被用于确定最终用户的注视位置。注视检测元件的示例可包括生成闪光的照明器和用于捕捉表示所生成的闪光的数据的传感器。在一些情况中,角膜中心可以基于两次闪光使用平面几何来确定。角膜中心链接瞳孔中心和眼球的旋转中心,这可被当作用于确定处于某种注视或观看角度的最终用户的眼睛的光轴的固定位置。注视检测可例如由以上参考图2B描述的眼睛跟踪系统221来执行,但不被限制于此。例如,还可能基于如被IMU或其他定向传感器确定的头部位置来估计注视位置。
[0056] 在一个实施例中,处理单元236可包括用于生成被预先渲染的图像的核心渲染流水线(例如,包括一个或多个图形处理单元)并且与镜片216相关联的显示器可基于与HMD 200相关联的后期姿态信息来对被预先渲染的图像执行后期图形调整。由于经更新的姿态信息可按比用于核心渲染流水线的最大渲染帧速率更高的频率来提供,后期图形调整可按大于该最大渲染帧速率的频率来被应用到被预先渲染的图像。
[0057] 图3A描绘了用于按比用于核心渲染流水线的渲染帧速率大的帧速率来生成和显示与虚拟对象(或一个以上的虚拟对象)相关联的图像的系统的一个实施例。如描绘的,渲染模302可生成对应于HMD的特定姿态的被预先渲染的图像。特定姿态可通过姿态估计模块312被提供到渲染模块302。姿态估计模块312可基于HMD的移动历史来预测HMD的将来姿态。在一些实施例中,姿态估计模块312可预测HMD的多于一个的将来姿态(例如,对于HMD而言三个可能的将来姿态),并且渲染模块302可生成对应于该多于一个的将来姿态的多个被预先渲染的图像。当经更新的姿态信息变得可用时,该多于一个的将来姿态中最接近的姿态(即,最佳预测姿态)以及该最接近的姿态的对应的被预先渲染的图像可被用于通过对该最接近的姿态的对应的被预先渲染的图像应用后期图形调整来生成经更新的图像。在一个实施例中,当经更新的姿态信息变得可用时,替代于与该多于一个的将来姿态中最接近的姿态相关联的被预先渲染的图像被选择,经更新的图像可使用从对应于该多于一个的将来姿态的多个被预先渲染的图像中外插和/或内插的图像来生成。
[0058] 在一些情况下,姿态估计模块312可根据基于相机的姿态跟踪信息和/或基于相机的姿态跟踪信息与低等待时间IMU运动信息的组合来确定HMD的当前姿态。姿态估计模块312可通过外插HMD的先前移动(例如,在确定当前姿态前5ms(毫秒)或10ms的HMD的移动)来预测HMD的将来姿态。
[0059] 后期重投影(LSR)模块308可基于由姿态估计模块312提供的经更新的姿态估计信息来对由渲染模块302生成的被预先渲染的图像执行后期图形调整。在一个实施例中,渲染模块302可每16ms或每32ms生成被预先渲染的图像并且LSR模块308可每2ms或每4ms生成经调整的图像(即,LSR模块308可按比渲染模块302的最大渲染帧速率大的帧速率来向显示器310提供图像)。如描绘的,LSR模块308包括图像调整模块304和像素调整模块306。图像调整模块304可通过向被预先渲染的图像应用单应(homographic)变换(例如,应用单平面单应性或多平面单应性)来生成经调整的图像。在一个示例中,图像调整模块304可将仿射变换应用到被预先渲染的图像。像素调整模块306可执行图像的二维像素移位。被像素调整模块
306像素移位的图像可包括被预先渲染的图像的一部分或由图像调整模块304生成的图像的一部分。在一些情况下,LSR模块308可通过将单应变换应用到被预先渲染的图像并接着将像素偏移调整应用到经由单应变换生成的图像来生成经调整的图像。由LSR模块308生成的经调整的图像可被显示在显示器310上。在一个实施例中,显示器310可包括OLED显示器。
[0060] 在一些实施例中,LSR模块308的各部分可与显示器310集成。在一个示例中,像素调整模块306可使用显示器310内用于允许显示器310的像素阵列内的像素值的移位的移位寄存器或其他电路来执行。在另一示例中,图像调整模块304和像素调整模块306两者可由与显示器310集成的控制器或处理器来执行。
[0061] 图3B描绘了图3A中的显示器310的一个实施例。如描绘的,显示器包括由行驱动器322和数据线驱动器224驱动的像素阵列320。像素阵列320包括多个像素321。在一个实施例中,每个像素321可包括OLED像素。每个OLED像素可包括一OLED以及用于控制该OLED的电路组。行驱动器322可驱动行线(或扫描线)以用于选择像素阵列320内的特定像素行以及用于将对应于数据线驱动器324的数据线连接到特定像素行中的像素。与行驱动器322相关联的每个行线可连接到特定像素行的每个像素内的锁存TFT。锁存TFT可将存储电容器与数据线中的特定数据线(例如,连接到像素阵列的某一列中的每个像素的特定列数据线)隔离。存储电容器可被用于存储用于偏置驱动OLED的第二TFT的栅极的电压。控制器326可通过控制行驱动器322和数据线驱动器324来将像素值加载到像素阵列320内。控制器326可访问存储在缓冲器328中的被缓冲的图像并在将像素值加载到像素阵列320之前执行图像调整。
[0062] 在一个实施例中,控制器326可对存储在缓冲器328中的图像(或图像的一部分)执行特定单应变换并接着将经调整的图像加载到像素阵列320内以供显示。控制器326还可对存储在缓冲器328中的图像执行像素偏移调整(例如,通过将图像的像素值在X方向上移位第一像素偏移并在Y方向上移位第二像素偏移)。
[0063] 图3C描绘了图3A中的显示器310的一替换实施例。如描绘的,显示器包括由行驱动器322和数据线驱动器224驱动的像素阵列330。像素阵列330包括多个像素331。在一个实施例中,每个像素331可包括OLED像素。每个OLED像素可包括一OLED、用于控制该OLED的第一组电路以及用于在像素阵列330内执行像素移位的第二组电路。像素阵列330可包括相邻像素之间用于促进像素阵列内像素值的移位的像素互连333。在一个实施例中,被锁存的数据值可被垂直地(即,在列方向上)和/或水平地(即,在行方向上)在相邻像素之间移位。在另一实施例中,存储在特定像素的存储电容器上的数据值可被用于驱动像素阵列330内的多个OLED之一(即,而非物理地移位被锁存的数据值,每个像素内的复用器可被用于选择正确的被锁存的数据值来应用到其对应的OLED)。
[0064] 行驱动器322可驱动行线(或扫描线)以用于选择像素阵列330内的特定像素行以及用于将对应于数据线驱动器324的数据线连接到特定像素行中的像素。与行驱动器322相关联的每个行线可连接到特定像素行的每个像素内的锁存TFT。锁存TFT可将存储电容器与数据线中的特定数据线(例如,连接到像素阵列的某一列中的像素的特定列数据线)隔离。存储电容器可被用于存储用于偏置驱动OLED的第二TFT的电压(例如,用于控制第二TFT的栅极)。在一个实施例中,每个像素331可包括复用器,该复用器用于选择多个被锁存的数据值(每个被存储在像素阵列内的存储电容器上)之一来用于驱动TFT,该TFT驱动该像素的OLED。在一些情况下,复用器可允许将像素阵列330内所显示的像素值在X方向上移位第一像素偏移并在Y方向上移位第二像素偏移。控制器332可通过控制行驱动器322和数据线驱动器324来将像素值加载到像素阵列330内。控制器332可在将像素值加载到像素阵列330中之前执行图像调整。控制器332可包括用于对被提供到显示器310的图像信息进行缓冲的存储器缓冲器。
[0065] 在一个实施例中,控制器332可对图像执行特定单应变换,接着将与该图像相关联的像素值加载到像素阵列330中。控制器可随后通过移位像素阵列331内的像素值来执行像素偏移调整。在一个示例中,每个像素内的被锁存的数据值可经由像素互连333在像素阵列内被垂直地(即,在列方向上)和/或水平地(即,在行方向上)移位。在另一示例中,被锁存的数据值可被用于通过在像素阵列330的每个像素331内并入复用器来驱动像素阵列330内的多个OLED之一。在一些情况下,像素阵列330可利用CMOS背板。在其他情况下,像素阵列330可利用CCD背板。
[0066] 图4A描绘了被预先渲染的图像412的一部分以及基于该被预先渲染的图像412的经更新的图像414。如所描绘的,被预先渲染的图像412可基于HMD的初始姿态估计(例如,将来8ms或16ms的HMD的预测的姿态)被渲染。可基于HMD的当前位置和朝向以及HMD的就在确定初始姿态估计之前的加速度和速度来确定该初始姿态估计。被预先渲染的图像412可包括基于初始姿态估计的被渲染的图像并且可使用GPU或其他渲染系统来被渲染,该其他渲染系统具有在给定特定姿态的情况下将三维场景渲染成二维图像的能力。经更新的姿态估计可基于经更新的姿态信息来确定,该经更新的姿态信息是在确定初始姿态估计之后的时间点处被获取的。在一个示例中,经更新的姿态信息可根据基于相机的姿态跟踪信息和/或基于相机的姿态跟踪信息和对应于HMD的低等待时间IMU运动信息的组合来生成。
[0067] 在一些实施例中,经更新的图像414可通过基于经更新的姿态估计和初始姿态估计之间的姿态区别来将图像变换应用到被预先渲染的图像412来生成。在一些实施例中,图像变换可包括对被预先渲染的图像412的至少一部分的图像旋转、平移、重新调整大小(例如,伸展或收缩)、移位或倾斜。经更新的图像414可经由被预先渲染的图像412的单应变换来生成。在一些情况下,单应变换可包括多平面单应性、单平面单应性和/或仿射单应性。
[0068] 在一些实施例中,经更新的图像414可通过将像素偏移调整应用到被预先渲染的图像402来生成。像素偏移调整的程度可取决于经更新的姿态估计和初始姿态估计之间的区别。如描绘的,虚拟对象(即,虚拟圆柱体)的图像413已经在X维度和Y维度两者上被像素移位(例如,向左4像素并且向上3像素)。在一个实施例中,经更新的图像414使用像素偏移调整或单应变换和像素偏移调整的组合来生成。单应变换和/或像素偏移调整可使用与显示器集成的控制器或处理器来生成。在一些情况下,像素偏移调整可使用显示器来执行,该显示器合并用于允许在该显示器的像素阵列内的像素值的移位的移位寄存器或其他电路。
[0069] 图4B描绘了被预先渲染的图像422以及被用于基于该被预先渲染的图像422的各部分来生成经更新的图像(或目标图像)的采样区域424和426的一个实施例。如描绘的,被预先渲染的图像422包括虚拟对象421(即,虚拟圆柱体)的图像。在一个实施例中,采样区域424可对应于用于生成第一经更新的图像的第一单应变换并且采样区域426可对应于用于生成第二经更新的图像的第二单应变换。单应信息可包括被预先渲染的图像(即,源图像或源帧)内的像素(或点)与经更新的图像(即,目标图像或目标帧)内的点之间的加权映射。采样区域的四个角可对应于对应的经更新的图像的四个角。在一个实施例中,与采样区域424相关联的四边形区域(即,源图像内的第一点子集)可被映射到与经更新的图像相关联的第二四边形区域(即,目标图像内的第二点子集)。在一些情况下,采样区域424可从核心渲染流水线或渲染GPU的帧缓冲器内的图像的一部分中得出。在仿射单应性的情况下,源图像内的第一平行四边形区域内的点可被映射到目标图像内的第二平行四边形区域内的点(或到包括矩形区域的整个目标图像)。
[0070] 如描绘的,源图像可以比对应的目标图像大。源图像可被过渲染以考虑当前视点或姿态之外的潜在头部移动。在一个示例中,源图像可包括为1920像素乘1080像素的图像并且目标图像可包括为1366像素乘768像素的图像。假设一对一映射,采样区域424和426可均包括为1366像素乘768像素的图像。在一些实施例中,目标图像内的每个像素可对应于源图像内的四个或更多个像素的加权映射。从源图像的采样区域的源像素到目标图像的目标像素的映射可包括对源像素的双线性过滤(或其他纹理过滤)。在一些情况下,失真校正映射可在应用单应变换之前被应用到源图像。
[0071] 在一个实施例中,采样区域424(以及第一单应变换)可与HMD在第一时间点的第一姿态(或第一预测的姿态)相关联并且采样区域426(以及第二单应变换)可与HMD的在第一时间点之后的第二时间点(例如,在第一时间点之后的2ms或4ms)的第二姿态(或第二预测的姿态)相关联。在一个示例中,第一预测的姿态可对应于将来4ms的预测的姿态,并且第二预测的姿态可对应于将来8ms的预测的姿态。对应于第一单应变换的第一经更新的图像可在对应于第二单应变换的第二经更新的图像显示之前被显示。第一经更新的图像可在第二经更新的图像在被生成的同时被显示。
[0072] 在一个实施例中,图4B中的采样区域424可对应于用于生成目标图像的第一部分(例如,目标图像的顶部)的第一单应变换并且图4B中的采样区域426可对应于用于生成目标图像的第二部分(例如,目标图像的底部)的第二单应变换。
[0073] 图4C描绘了图4B的被预先渲染的图像422的一个实施例,其中滚动缓冲器432(例如,跨越特定数量的行或扫描线)被应用到被预先渲染的图像422。在一些情况下,被预先渲染的图像422可包括多个片段(例如,每个跨越10行)并且滚动缓冲器432可对应于该多个片段中在特定时间点的一个片段(例如,滚动缓冲器432可按从顶部到底部的顺序在该多个片段中的每一个片段之间移动)。滚动缓冲器432可确定被预先渲染的图像422内可在特定时间点对其进行操作的源像素。在一些情况下,单应变换可应用到滚动缓冲器432内的源像素子集(例如,对应于图4B的采样区域424与被滚动缓冲器432指向的源图像行的重叠)。
[0074] 将滚动缓冲器应用到源图像的概念也可被应用到目标图像。在一些实施例中,单应变换可对应于目标图像内的目标像素子集。例如,滚动缓冲器可被应用到目标图像,使得单应性(或其他图像变换)被应用到目标像素子集。目标像素子集可对应于目标图像内的扫描线集合(例如,目标像素子集包括跨越目标图像的20行的像素)。在这种扫描显示的情况下,图像重投影技术可被应用到将在特定时间段内被更新的像素(例如,单应变换仅需要应用到目标图像内将在下2ms内被显示或更新的那些像素)。
[0075] 图5A描绘了将后期图形调整应用到被渲染的图像以生成经更新的图像的一个实施例。经更新的图像可使用HMD来显示。如描绘的,被渲染的图像(图像X)在时间T2之前可用。取决于用于生成被渲染的图像的核心渲染流水线,用于渲染被渲染的图像的整体时间可以例如是16ms、30ms或60ms。在被渲染的图像变得在时间T2可用之前,姿态估计(P1)可在时间T1被启动并被用于基于被渲染的图像来在时间T2之前生成经更新的图像(图像A)。经更新的图像(图像A)可使用HMD的显示器在时间T2和T6之间被显示。在一个实施例中,姿态估计(P1)可对应于在时间T4(或在其间图像使用HMD被投影的另一时间点)的HMD的被预测的姿态。在一些实施例中,被预测的姿态的时间可对应于从被渲染的图像(图像X)中得到的经更新的图像(图像A)的显示的中间显示时间。经更新的图像的显示的中间显示时间可对应于投影的中心光子或投影时间的中间点。在时间T5,第二姿态估计(P2)可被启动并被用于在时间T6之前生成第二经更新的图像(图像B)。第二经更新的图像(图像B)可在时间T6处开始被显示。
[0076] 在一个示例中,显示器可每4ms(即,在T2和T6之间的时间可以是4ms)显示经更新的图像。在被渲染的图像(图像X)变得可用之前,对应于经更新的图像的中间显示时间的被预测的姿态可被确定。由于被预测的姿态在时间T1处被启动并且经更新的图像将被显示达4ms,被预测的姿态可对应于从时间T1起将来3ms的被预测的姿态。对中间显示时间的前向预测的一个原因是由于显示等待时间引起的错误可在大约中间显示时间被最小化或居中。
[0077] 在一个实施例中,显示器可包括场序彩色显示器并且经更新的图像(图像A)可对应于第一色彩场(例如,红色图像)并且第二经更新的图像(图像B)可对应于第二色彩场(例如,绿色图像)。在这种情况下,姿态估计(P1)可被用于生成与第一色彩场相关联的经更新的图像(图像A)并且第二姿态估计(P2)可被用于生成与第二色彩场相关联的第二经更新的图像(图像B)。在一些情况下,经更新的图像(图像A)可使用被渲染的图像(图像X)的像素偏移调整来生成并且第二经更新的图像(图像B)可使用对被渲染的图像(图像X)的单应变换和/或被渲染的图像(图像X)的第二像素偏移调整来生成。场序彩色显示器可包括例如OLED显示器或LCOS显示器。
[0078] 在一个实施例中,显示器可包括以单极方式来驱动的LCOS显示器,其中驱动电压可在图像投影期间被反转以防止液晶降级。由于每个色彩场投影可对应于正投影(例如,图像投影的前2ms)和负投影(例如,图像投影的最后2ms)两者,第一经更新的图像可在正投影期间被投影并且第二经更新的图像可在负投影期间被投影,从而有效地使显示帧速率翻倍。在一些情况下,第一经更新的图像可通过与LCOS显示器集成的电路经由第一像素偏移调整来生成,并且第二经更新的图像可通过与LCOS显示器集成的电路经由第二像素偏移调整来生成。
[0079] 图5B描绘了与显示器相关联的显示序列的一个实施例。显示序列可对应于场序彩色显示或非场序彩色显示。在一个实施例中,与红、绿和蓝色彩场中的每个色彩场相关联的图像可在不同的时间点被加载到显示器中。例如,与红色彩场相关联的第一图像(加载(Load)R)可在时间T0和T1之间被加载到显示器中,与绿色彩场相关联的第二图像(加载G)可在时间T1和T2之间被加载到显示器中,并且与蓝色彩场相关联的第三图像(加载B)可在时间T2和T3之间被加载到显示器中。随着第二图像(加载G)被加载到显示器中,与第一图像的单应变换相对应的红色单应图像(R-H)以及与先前加载的蓝色图像的第二像素偏移调整相对应的经蓝色像素调整的图像(B-P2)可被显示在显示器上。随着第三图像(加载B)被加载到显示器中,与第二图像的单应变换相对应的绿色单应图像(G-H)以及与红色单应图像(R-H)的第一像素偏移调整相对应的经红色像素调整的图像(R-P1)可被显示在显示器上。在时间T3和T4之间,与第三图像的单应变换相对应的蓝色单应图像(B-H)可被显示,同时与红色单应图像(R-H)的第二像素偏移调整相对应的经红色像素调整的图像(R-P2)以及与绿色单应图像(G-H)的第一像素偏移调整相对应的经绿色像素调整的图像(G-P1)被显示。在时间T4和T5之间,随着下一红色彩场图像被加载到显示器中,与绿色单应图像(G-H)的第二像素偏移调整相对应的经绿色像素调整的图像(G-P2)以及与蓝色单应图像(B-H)的第一像素偏移调整相对应的经蓝色像素调整的图像(B-P1)被显示。在一些情况下,显示器可包括OLED显示器并且时间T1和T5之间的时间可包括大约8ms。该实施例在场序彩色显示被使用时有利地减少了色彩分离伪像。
[0080] 在一个实施例中,对被加载的彩色图像的单应变换和对所显示的图像的任何像素偏移调整可由显示器内的线路来执行。在另一实施例中,对彩色图像的单应变换和对所显示的图像的任何像素偏移调整可由主机设备来执行并被传送到显示器。
[0081] 图5C描绘了与显示器相关联的显示序列的替换实施例。显示序列可对应于场序彩色显示或非场序彩色显示。在一个实施例中,与红、绿和蓝色彩场中的每个色彩场相关联的图像可在不同的时间点被加载到显示器中。例如,与红色彩场相关联的第一图像(R-L)可在时间T0和T1之间被加载到显示器中,与绿色彩场相关联的第二图像(G-L)可在时间T1和T2之间被加载到显示器中,并且与蓝色彩场相关联的第三图像(B-L)可在时间T2和T3之间被加载到显示器中。随着第二图像(G-L)被加载到显示器中,与第一图像的单应变换相对应的红色单应图像(R-H)、与先前被记载的蓝色图像的第二像素偏移调整相对应的经蓝色像素调整的图像(B-P2)以及与先前被加载的绿色图像的第三像素偏移调整相对应的经绿色像素调整的图像(G-P3)可被显示在显示器上(即,G-P3图像可在G-L图像被加载到显示器中的同时被显示)。随着第三图像(B-L)被加载到显示器中,与第二图像的单应变换相对应的绿色单应图像(G-H)、与红色单应图像(R-H)的第一像素偏移调整相对应的经红色像素调整的图像(R-P1)以及与先前被加载的蓝色图像的第三像素偏移调整相对应的经蓝色像素调整的图像(B-P3)可被显示在显示器上(即,B-P3图像可在B-L图像被加载到显示器中的同时被显示)。在时间T3和T4之间,与第三图像的单应变换相对应的蓝色单应图像(B-H)可被显示,同时与红色单应图像(R-H)的第二像素偏移调整相对应的经红色像素调整的图像(R-P2)以及与绿色单应图像(G-H)的第一像素偏移调整相对应的经绿色像素调整的图像(G-P1)被显示。在时间T4和T5之间,随着下一红色彩场图像被加载到显示器中,与绿色单应图像(G-H)的第二像素偏移调整相对应的经绿色像素调整的图像(G-P2)、与蓝色单应图像(B-H)的第一像素偏移调整相对应的经蓝色像素调整的图像(B-P1)以及与先前被加载的红色图像的第三像素偏移调整相对应的经红色像素调整的图像(R-P3)可被显示在显示器上(即,R-P3图像可在下一红色图像被加载到显示器中的同时被显示)。在一些情况下,显示器可包括具有图像缓冲器的OLED显示器并且时间T1和T5之间的时间可包括大约8ms,该图像缓冲器用于在显示其他图像的同时允许新的图像被加载。
[0082] 在一个实施例中,对被加载的彩色图像的单应变换和对所显示的图像的任何像素偏移调整可由显示器内的线路来执行。在另一实施例中,对彩色图像的单应变换和对所显示的图像的任何像素偏移调整可由主机设备来执行并被传送到显示器。
[0083] 图6A是描述了用于按比渲染帧速率大的帧速率来生成并显示与虚拟对象相关联的图像的方法的一个实施例的流程图。在一个实施例中,图6A的过程由诸如图1中的移动设备19的HMD来执行。
[0084] 在步骤602,与HMD相关联的姿态历史被获取。姿态历史可包括HMD的随着时间推移的位置、朝向和移动。在步骤604,HMD的当前姿态被确定。当前姿态可使用基于相机的姿态跟踪来确定。在步骤606,基于当前姿态和姿态历史来确定HMD的被预测的姿态。被预测的姿态可对应于第一时间点(例如,从当前姿态被确定时起将来8ms或16ms)。
[0085] 在步骤608,基于被预测的姿态来生成被渲染的图像。被渲染的图像可使用GPU或其他渲染系统来被渲染,该其他渲染系统具有在给定被预测的姿态的情况下将三维场景渲染成二维图像的能力。在步骤610,对应于第一时间点的HMD的经更新的姿态被确定。经更新的姿态可使用基于相机的姿态跟踪信息和/或基于相机的姿态跟踪信息和低等待时间IMU运动信息的组合来确定。
[0086] 在步骤612,被预测的姿态与经更新的姿态之间的姿态区别被确定。姿态区别可确定要被应用到被渲染的图像的一部分以对在生成被渲染的图像时的不正确的姿态预测进行补偿的图像调整的程度。
[0087] 在步骤614,基于姿态区别来生成经更新的图像。经更新的图像可经由被渲染的图像的一部分的单应变换来生成。在一些情况下,单应变换可包括仿射变换。经更新的图像还可使用像素偏移调整或单应变换和像素偏移调整的组合来生成。在一些情况下,单应变换和/或像素偏移调整可使用与HMD的显示器集成的控制器或处理器来生成。在一个实施例中,像素偏移调整可使用HMD的显示器来执行,该显示器合并用于允许在该显示器的像素阵列内的像素值的移位的移位寄存器或其他电路。在步骤616,经更新的图像被显示在HMD上。经更新的图像可使用与HMD集成的OLED显示器来显示。
[0088] 图6B是描述了用于使用与显示器集成的电路来作出对被提供到该显示器的被渲染的图像的图形调整的方法的一个实施例的流程图。在一个实施例中,图6B的过程由诸如图1中的显示器150的显示器来执行。
[0089] 在步骤632,从主机获取图像。主机可包括用于生成虚拟对象的图像的核心渲染流水线。在步骤634,通过将单应变换应用到该图像来生成第一经更新的图像。单应变换可包括仿射变换。在步骤636,第一经更新的图像被加载到显示器的像素阵列中。显示器可包括OLED显示器。在步骤638,第一经更新的图像可使用该显示器来被显示。
[0090] 在步骤640,第二经更新的图像可通过在像素阵列内移位第一经更新的图像来生成。在一个实施例中,像素阵列内被锁存的数据值可被垂直地(即,在列方向上)和/或水平地(即,在行方向上)在相邻像素之间移位。在另一实施例中,存储在像素阵列内的数据值可驱动该像素阵列内的多个LED之一(即,而非物理地移位被锁存的数据值,每个像素内的复用器可被用于选择正确的被锁存的数据值来应用到其对应的LED)。在步骤642,第二经更新的图像被显示在显示器上。
[0091] 图7A是描述了用于按比渲染帧速率大的帧速率来生成并显示与虚拟对象相关联的图像的方法的一替换实施例的流程图。在一个实施例中,图7A的过程由诸如图1中的移动设备19的HMD来执行。
[0092] 在步骤702,与HMD相关联的第一被预测的姿态被确定。HMD的第一被预测的姿态可基于HMD的姿态历史来确定并且可对应于将来时间点,在该将来时间点期间,基于第一被预测的姿态的图像可使用HMD的显示器被显示或投影。在步骤704,基于第一被预测的姿态来生成被渲染的图像。被渲染的图像可使用GPU或其他渲染系统来被渲染,该其他渲染系统具有在给定第一被预测的姿态的情况下将三维场景渲染成二维图像的能力在一些情况下,渲染系统可采取30ms或60ms来渲染被渲染的图像。由渲染系统生成的每个被渲染的图像可与元数据相关联,该元数据标识被渲染的图像从中生成的特定姿态。用于生成被渲染的图像的过程的一个实施例稍后参考图7B来描述。
[0093] 在步骤706,HMD的第二被预测的姿态被确定。第二被预测的姿态可包括经更新的姿态(例如,基于HMD的经更新的位置和运动信息的经更新的姿态估计在确定第一被预测的姿态之前不可用)。在一些情况下,第二被预测的姿态可通过外插基于相机的姿态跟踪信息和/或基于相机的姿态跟踪信息和低等待时间IMU运动信息的组合来确定。
[0094] 在一些实施例中,第二被预测的姿态可与从被渲染的图像中得到的经更新的图像的显示的中间显示时间相对应。经更新的图像的中间显示时间可对应于经更新的图像的投影的中心光子或经更新的图像的投影时间的中间点。
[0095] 在步骤708,第一被预测的姿态与第二被预测的姿态之间的姿态区别被确定。姿态区别可确定要被应用到被渲染的图像的一部分以对在生成被渲染的图像时的不正确的姿态预测进行补偿的图像调整的程度。在一些实施例中,如果姿态区别低于区别阈值,则后续图形调整可包括像素偏移调整。如果姿态区别大于或等于区别阈值,则后续图形调整可包括单应性。
[0096] 在步骤710,基于姿态区别以及被渲染的图像的至少一部分来生成经更新的图像。经更新的图像可经由被渲染的图像的一部分的单应变换来生成。在一些情况下,单应变换可包括多平面单应性、单平面单应性和/或仿射单应性。经更新的图像还可使用像素偏移调整或单应变换和像素偏移调整的组合来生成。在一些情况下,单应变换和/或像素偏移调整可使用与HMD的显示器集成的控制器或处理器或使用在显示器内集成的定制电路来生成。
在一个实施例中,像素偏移调整可使用HMD的显示器来执行,该显示器合并用于允许在该显示器的像素阵列内的像素值的移位的移位寄存器或其他电路。在步骤712,经更新的图像被显示在HMD上。经更新的图像可使用与HMD集成的OLED显示器或LCOS显示器来显示。
[0097] 图7B是描述了用于生成被渲染的图像的过程的一个实施例的流程图。图7B中描述的过程是用于实现图7A中步骤704的过程的一个示例。在一个实施例中,图7B的过程由诸如图1中的移动设备19的HMD来执行。
[0098] 在步骤722,HMD的被预测的姿态被获取。被预测的姿态可通过查询姿态估计模块(诸如图3A中的姿态估计模块312)来获取。在步骤724,被HMD的最终用户聚焦的虚拟对象被标识。在一个实施例中,眼睛跟踪可被用于确定在特定时间段内被最终用户聚焦的一组被查看的虚拟对象。虚拟对象可被标识为该组被查看的虚拟对象中被最频繁查看的虚拟对象。虚拟对象可与距HMD的深度或距离相关联。
[0099] 在步骤726,基于虚拟对象在增强现实环境内的位置来确定稳定性平面。稳定性平面可与虚拟对象在增强现实环境内的位置一致。在这种情况下,稳定性平面(以及对应的被渲染的图像)可随着最终用户随着时间推移将他们的焦点在增强现实环境内的虚拟对象之间转移来在进行中被确定(即,稳定性平面在增强现实环境内的位置可基于在特定时间段期间被最频繁查看的虚拟对象在增强现实环境内的位置来移位)。在步骤728,基于被预测的姿态和稳定性平面来生成被渲染的图像。被渲染的图像可包括稳定性平面内的二维图像。在步骤730,被渲染的图像被输出。
[0100] 关于如何确定稳定性平面的附加细节以及用于确定稳定性平面的替代技术在以下被描述。然而,在开始本描述之前,首先进一步解释术语稳定性平面以及进一步描述稳定性平面在执行单应变换时可如何被使用是有用的。
[0101] 单应变换使用单应变换来执行,其也被知晓为单应性。单应变换是描述从一个视点创建的平面图像中的点在从另一视点查看时如何呈现的投影变换,其中每个视点包括某一定向和某一位置。如果被渲染的场景是单平面(在单平面中仅包括一个或多个平坦2D对象),则单应变换可在没有误差的情况下进行。然而,当被应用到包括3D几何形状的场景或被应用到包括多个非共面平面(例如,近平面和远平面)的场景时,将存在由该变换导致的至少一些误差。例如,当单应变换被应用到包括3D几何形状的场景的被渲染的位图(而非被应用到被用于渲染包括3D几何形状的场景的位图的原始3D几何形状)时,在该场景的被渲染的位图中将只有一个单平面将被正确地变换(即,没有误差)。该将被正确地变换的单平面在本文中被称为稳定性平面。换言之,稳定性表面被定义为如下:包括3D几何形状的场景中在将投影变换应用到包括3D几何形状的场景的被渲染的位图而非应用到原始场景几何形状时被正确地变换(不具有误差)的单平面。
[0102] 如以上提到的,可基于虚拟对象在增强现实环境内的位置以及更具体地,基于最终用户聚焦的虚拟对象的位置(其在场景包括最终用户可选择来聚焦的多个不同的虚拟对象的场景的情况下尤其有用)来确定稳定性表面。关于如何实现这点的一些附加细节以及用于确定稳定性平面的替代技术现在将被描述。
[0103] 稳定性平面可包括深度和定向两者,其中定向不需要平行于查看平面(其中查看平面总是平行于显示器的平面)。因此,稳定性平面可通过从相机位置到稳定性平面的距离(其指示深度)以及稳定性平面的法向向量(其指示定向)来定义。例如,以下等式是使用稳定性平面的单应性(H)的一个示例:
[0104] H=K2*R2*(I*((c2–c1)*n')/d1)*R1'*inv(K1)
[0105] 其中:
[0106] K是相机校准矩阵(从图像转换到相机坐标);
[0107] R是与相机位置相关联的旋转;
[0108] c是在世界坐标中的相机位置;
[0109] n是稳定性平面的法向向量;
[0110] d是从相机位置到稳定性平面的距离;
[0111] I(即“i”的大写字母)是单位矩阵;
[0112] 单引号指示矩阵转置;
[0113] inv()表示反演器矩阵;并且
[0114] 数字后缀表示初始视点相较于最终视点,例如c1和c2。
[0115] 在以上示例性的单应性等式中,变量“n”和“d”取决于被选择的或更一般地被确定的稳定性平面。更具体地,对于以上示例性单应性等式,变量“n”和“d”对应于稳定性平面,其中变量“d”指定稳定性平面的深度,而变量“n”指定与稳定性平面正交(即,垂直)的向量。其他单应变换可类似地具有取决于稳定性平面的变量。因此,以上单应性等式仅仅是一个示例,其不旨在进行限制。
[0116] 图8的流程图现在将被用于进一步描述用于确定稳定性平面以及在生成基于被预先渲染的图像的经更新的图像以供显示时使用该稳定性平面的方法。参考图8,在步骤802,渲染一图像。在步骤802处渲染的图像可以例如是被前向预测的被渲染的图像,但不被限制于此。在步骤804,确定用户的注视位置。步骤804可通过使用眼睛跟踪器(例如,眼睛跟踪器221)执行眼睛跟踪以确定用户的注视位置来实现。还可能在没有眼睛跟踪器221,以及更一般地,在不执行眼睛跟踪的情况下来执行步骤804。在一实施例中,步骤804可通过例如使用惯性测量单元(IMU)或其他定向传感器执行头部跟踪来确定用户的头部位置来实现。接着可基于用户的头部位置来估计注视位置。对于更具体的示例,基于用户的头部位置,可以存在关于用户聚焦于正被显示的特定虚拟对象的确定,并且注视位置可被估计为在用户聚焦的虚拟对象的中心(或该虚拟对象的某个其他部分)处。
[0117] 依然参考图8,在步骤806,基于所确定的注视位置,存在关于与单应变换相关联的稳定性平面的确定。步骤806的根据各个实施例的附加细节在以下被描述。在步骤808,单应变换被应用到被渲染的图像(该图像在步骤802被渲染)以从而生成经更新的图像。单应变换可包括多平面单应性、单平面单应性和/或仿射单应性,但不被限制于此。在步骤810,经更新的图像的至少一部分被显示在HMD设备或包括透视显示器的某个其他显示设备上。经更新的图像还可能被显示为非透视类型的显示。
[0118] 根据一实施例,步骤806涉及基于所确定的注视位置来确定单应变换的定义稳定性平面的变量。作为一个示例,步骤806可涉及确定以上讨论的示例性单应性等式中的变量“n”和“d”。在某些实施例中,稳定性平面的深度可被确定为等于注视位置的深度。这样的确定不需要考虑用户所聚焦的虚拟对象(如果有的话)。替代地,眼睛跟踪器(例如221)和/或头部跟踪器可被用于标识处于用户的注视位置处(或在某一范围内)的虚拟对象,并且稳定性平面可基于所标识的虚拟对象来确定。这可如何被完成的示例在下文中被讨论。
[0119] 当所标识的虚拟对象是平面二维虚拟对象(例如,挂在虚拟墙上的虚拟纸张)时,稳定性平面深度和稳定性平面定向可被确定为分别等于所标识的平面二维虚拟对象的深度和定向。图9示出挂在虚拟墙上的虚拟纸张902的示例。图9中还显示了可响应于检测到用户正注视或聚焦于虚拟纸张902而被确定的示例性稳定性平面904。
[0120] 用户正注视或聚焦于的所标识的虚拟对象可替代地是细长的三维虚拟对象,诸如图10中显示的虚拟火车1002。根据一实施例,当在这种情况下时,稳定性平面深度和稳定性平面定向可被确定为分别等于沿着所标识的细长的三维虚拟对象的细长的长度来将该虚拟对象平分的平面的深度和定向。图10中还显示了可响应于检测到用户正注视或聚焦于虚拟火车1002而被确定的示例性稳定性平面1004。
[0121] 用户正注视或聚焦于的所标识的虚拟对象可替代的是基本上非平面的对象,诸如虚拟球。根据一实施例,当在这种情况下时,稳定性平面深度可被确定为等于虚拟对象(例如,虚拟球)的中心的深度,并且稳定性平面定向可被确定为平行于查看平面并由此平行于显示器。用另一种方式来解释,在用户正注视或聚焦于的虚拟对象是基本上非平面的虚拟对象的情况下,稳定性平面可被确定为是将基本上非平面的虚拟对象平分并平行于查看平面的平面。
[0122] 这也在以下实施例的范围中:该实施例选择稳定性平面作为将(用户正注视或聚焦于的)虚拟对象平分并平行于查看平面的平面,其中虚拟对象具有一个或多个平面表面。然而,这很可能导致相比于参考图9和10描述的实施例被执行会出现的变换误差而言更多的变换误差。此外,注意的是,阅读本说明书的本领域的技术人员能够理解用于基于注视位置来确定稳定性平面的其他技术在本技术的一实施例的范围内。
[0123] 在另一实施例中,如果用户正注视特定的三维虚拟对象,该三维虚拟对象具有相比于该虚拟对象的任一其他表面而言更显著可见的面向相机的表面,则可基于最显著可见的表面来确定稳定性平面。例如,稳定性平面可被确定为与该最显著可见的表面共面或尽可能共面。替代地,稳定性平面可基于用户正注视的虚拟对象的多个(全部或一些)可见表面例如通过以下来确定:基于每个可见表面在被显示时有多可见来对每个可见表面对稳定性平面的影响进行加权。例如,该表面越可见,则其被加权越多,并且反之亦然。
[0124] 如果同时存在多个被显示的虚拟对象,并且用户正注视该多个虚拟对象中的特定一个,则稳定性平面可仅仅基于用户正注视的虚拟对象例如使用以上描述的实施例之一来被确定。替代地,稳定性平面可基于多个(全部或一些)被显示的虚拟对象例如使用以上描述的实施例之一通过以下来确定:基于每个虚拟对象有多靠近注视位置来对每个虚拟对象对稳定性平面的影响进行加权。例如,虚拟对象越靠近注视位置,则其被加权越多,并且反之亦然。
[0125] 还有可能被显示的虚拟对象非常大和/或非常靠近显示器,使得虚拟对象占据视野的全部或大部分。在这种情况下,稳定性平面可基于虚拟对象的几何形状的局部子集来确定。例如,在一个实施例中,所确定的稳定性平面可将用户正注视的(虚拟对象的)子部分平分。在另一实施例中,所确定的稳定性平面可以与用户正注视的虚拟对象的子部分的最可见表面共面或尽可能的共面。更一般地,当用户正注视的虚拟对象占据至少一指定百分比(例如,至少50%,但不被限制于此)的视野并包括多个子部分时,稳定性平面可基于子部分中最靠近注视位置的一个子部分来确定。还有可能稳定性平面可基于被显示的虚拟对象的多个(全部或一些)子部分例如通过基于每个子部分有多靠近注视位置来对每个子部分对稳定性平面的影响进行加权来确定。例如,虚拟对象的一子部分越靠近注视位置,则其被加权越多,并且反之亦然。
[0126] 以上描述的各实施例对增强现实HMD以及其他类型的透视显示器时尤其有用。此外,以上描述的各实施例还可与虚拟现实HMD以及其他不是透视类型显示器的显示器一起使用。
[0127] 图11是移动设备1100(诸如图1中的移动设备19)的一个实施例的框图。移动设备可以包括已经整合了无线接收机/发射机技术的膝上型计算机、袖珍计算机、移动电话、HMD、个人数字助理、以及手持式媒体设备。
[0128] 移动设备1100包括一个或多个处理器1112以及存储器1110。存储器1110包括应用1130和非易失性存储1140。存储器1110可以是任何种类的存储器存储介质类型,包括非易失性和易失性存储器。移动设备操作系统处理移动设备1100的不同操作,并可包含用于操作的用户界面,如拨打和接听电话呼叫、文本消息收发、检查语音邮件等。应用1130可以是任何种类的程序,如用于照片和/或视频的相机应用、地址簿、日历应用、媒体播放器、因特网浏览器、游戏、闹钟应用、以及其它应用。存储器1110中的非易失性存储组件1140可以包含诸如音乐、照片、联系人数据、日程安排数据、以及其它文件之类的数据。
[0129] 一个或多个处理器1112与透视显示器1109进行通信。透视显示器1109可显示与现实世界环境相关联的一个或多个虚拟对象。所述一个或多个处理器1112还与下列各项通信:RF发射机/接收机1106,其又耦合到天线1102;红外发射机/接收机1108;全球定位服务(GPS)接收器1165;以及移动/定向传感器1114,其可以包括加速度计和/或磁力计。RF发射机/接收机1108可以通过诸如蓝牙 或IEEE 802.11标准之类的各种无线技术标准来实现无线通信。加速度计可能已经结合在移动设备中以实现诸如下列应用:智能用户界面应用,其让用户通过姿势输入命令;以及定向应用,其可以在移动设备被旋转时将显示自动地从竖向改变成横向。可以,例如,通过微机电系统(MEMS)来提供加速度计,该微机电系统是构建在半导体芯片上的微小机械器件(微米尺寸)。可以感测加速度方向、以及定向、振动和震动。所述一个或多个处理器1112还与响铃器/振动器1116、用户界面小键盘/屏幕1118、扬声器1120、话筒1122、相机1124、光传感器1126和温度传感器1128进行通信。用户界面小键盘/屏幕可以包括触敏屏幕显示器。
[0130] 所述一个或多个处理器1112控制无线信号的发射和接收。在发射模式期间,所述一个或多个处理器1112向RF发射机/接收机1106提供来自话筒1122的语音信号,或其它数据信号。发射机/接收机1106通过天线1102来发射信号。响铃器/振动器1116被用于向用户发传入呼叫、文本消息、日历提醒、闹钟提醒或其它通知等信号。在接收模式期间,RF发射机/接收机1106通过天线1102接收来自远程站的语音信号或数据信号。所接收到的语音信号被提供给扬声器1120,而接收到的其它数据信号被适当地处理。
[0131] 另外,可以使用物理连接器1188来将移动设备1100连接到诸如AC适配器或加电对接底座之类的外部电源,以便对电池1104进行再充电。物理连接器1188还可被用作到外部计算设备的数据连接。该数据连接允许诸如将移动设备数据与另一设备上的计算数据进行同步等操作。
[0132] 所公开的技术可用各种其它通用或专用计算系统环境或配置来操作。适合结合本技术中使用的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包含上述系统或设备中的任一个的分布式计算环境等。
[0133] 所公开的技术可在诸如程序模块等由计算机执行的计算机可执行指令的通用上下文中描述。一般而言,如此处所述的软件和程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构和其它类型的结构。硬件或硬件和软件的组合可以替代在此描述的软件模块
[0134] 所公开的技术也可以在任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质两者中。
[0135] 出于本文档的目的,与所公开的技术相关联的每个过程可以持续地并由一个或多个计算设备来执行。该过程中的每个步骤都可由与在其他步骤中所使用的那些计算设备相同或不同的计算设备来执行,且每个步骤不必由单个计算设备来执行。
[0136] 出于本文的目的,说明书中引述的“一实施例”、“一个实施例”、“某些实施例”或“另一实施例”可被用于描述不同的实施例并且不必然指的是同一实施例。
[0137] 出于本文的目的,连接可以是直接连接或间接连接(例如,经由另一方)。
[0138] 出于本文的目的,术语对象的“集合”指的是一个或多个对象的“集合”。
[0139] 尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
QQ群二维码
意见反馈