(映维网Nweon 2022年03月17日)AR头显可以基于用户的头部姿势呈现虚拟图像,以便虚拟对象看起来是锚定到周围物理环境中的固定位置。佩戴者的头部姿势同时可用于重新投影虚拟图像,以补偿虚拟图像渲染时间和虚拟图像显示时间之间头部姿势的变化。例如,可以基于初始头部姿势(例如在渲染虚拟图像时或之前确定的头部姿势)渲染虚拟图像,然后基于更新的头部姿势(例如在渲染虚拟图像之后感测的头部姿势)重新投影虚拟图像。
渲染和显示时间之间的延迟的来源不尽相同,例如从图形处理单元向显示器传输虚拟图像之间的时间。当虚拟图像从远程设备传输到显示虚拟图像的显示器时,与传输相关的延迟或会更大。另外,由于读出数据和发射形成虚拟图像的光所需的时间,虚拟图像的显示本身会导致延迟。
在名为“Manipulator-based image reprojection”的专利申请中,微软介绍了一种减少延迟的方法。具体来说,发明主要描述了一种图像重投影方法。
在一个示例中,虚拟图像可以基于用户手部位置或用户操纵的输入设备的位置进行呈现。用户的手部或由用户操纵的输入设备可以称为“操纵器”,而基于操纵器位置渲染的虚拟图像可以称为“操纵器附加内容”或“操纵器附加”。
操纵器的使用可能会在操纵器附加内容的渲染和显示时间之间引入额外的延迟,例如由于处理操纵器位置、更新场景图和/或其他与模拟相关的动作。所述延迟和其他延迟可能会导致操纵器附加内容似乎落后于操纵器的移动,操纵器移动和操纵器附加内容的移动之间的脱节在增强现实体验中可能尤其明显,而这会减损用户的混合现实体验。
图1A-1B示出了包括操纵器附加内容的图像100的重投影。如下所述,通过重投影图像100产生的重投影图像经由显示器104呈现在头显设备102。图像100包括虚拟围栏106和虚拟手部模型108形式的机械手附加内容。其中,虚拟手部模型108显示在根据佩戴用户手部移动而更新的位置。在渲染图像100时,用户手部的位置允许系统根据在渲染时或之前确定的手部位置而在位置112渲染手部模型108。但在渲染图像100之后,用户手部的位置以及用户头部的姿势发生变化。为了补偿渲染图像100后用户110的运动,系统可以根据之后确定的用户头部姿势重新投影图像。
图1B显示了通过重投影图像100产生的重投影图像114。重新投影的图像114经由显示器104呈现在头显102。作为用户手部位置变化的结果,手部模型108显示在更新位置116。但基于用户的头部姿势重新投影图像100在重新投影的图像114中产生伪影。在这个例子中,重投影产生了一个导致虚拟栅栏106变形的孔118,并省略了本来应该显示在重投影图像114中的图像内容。例如,孔118可能是由手部模型108遮挡虚拟围栏106造成。一般来说,诸如操纵器附加内容的大幅运动或快速运动等因素可能会在基于头部姿势的重投影生成图像中产生伪影。由于用户可以相对容易地感知它们,孔118和其他伪影会减损用户的混合现实体验。
微软提出的专利正是为了解决所述问题。图2示出了一个示例数据处理管道200,通过所述管道可以分别重新投影机械手附加内容和非机械手附加内容。在所描绘的示例中,管道200接收第一渲染图像202,第一渲染图像202包括与参考帧关联且未附加的内容。管道200进一步接收包括与操纵器参考帧相关联的内容的第二渲染图像204。操纵器参考帧可与用户手部和/或由用户操纵的输入设备相关联。例如,输入设备可以是手持式控制器,。
基于用户的头部姿势重新投影第一渲染图像202,从而产生第一重新投影图像206。头部姿势可以以任何合适的方式确定。作为一个示例,头显设备可包括运动传感系统,以输出佩戴用户的头部姿势或用于确定头部姿势的数据。
可以以任何适当的方式执行第一渲染图像202的重投影。作为一个示例,第一渲染图像202的像素p.sub.render的位置可以根据以下内容重新投影:p.sub.latest=(X.sub.latest*X.sup.-1.sub.render)p.sub.render,其中p.sub.latest是像素的最终重新投影位置,X.sub.latest是在第一渲染图像的渲染时间之后确定的头部姿势,而X.sup-1.sub.render则是在第一个渲染图像的渲染时间或之前确定的头部姿势的inverse。在一个示例中,X.sub.latest*X.sup-1.sub.render可以是表示能够相乘的仿射变换的矩阵(例如4乘以4)。可以对第一渲染图像202的任意适当数量的像素进行重投影,以产生第一重投影图像206。在一个示例中,可以对第一渲染图像202的每个像素进行重投影,从而产生第一重投影图像206。
基于用户头部姿势和操纵器的姿势重新投影第二渲染图像204,从而产生第二重新投影图像208。如上所述,集成在头显设备中的运动传感系统或任何其他合适的机制可用于确定头部姿势。同样,可以以任何合适的方式确定操纵器的姿势。作为一个示例,头显设备可包括用于捕获代表操纵器的图像数据的成像系统,然后处理图像数据以确定操纵器姿势。如果操纵器是手,可以使用手部追踪技术来确定操纵器姿势。在其他示例中,操纵器可以是包括集成运动传感系统的输入设备。在所述示例中,可基于来自输入设备运动传感系统的输出来确定操纵器姿势。
作为一个示例,第二渲染图像204的像素prender可以根据以下内容重新投影:p.sub.latest=(X.sub.latest*M.sub.latest*M.sup.-1.sub.render*X.sup.-l.sub.-render)p.sub.latest,其中p.sub.latest是像素的最终重新投影位置,X.sub.latest是在第二个渲染图像的渲染时间之后确定的头部姿势,M.sub.latest是在第二个渲染图像的渲染时间之后确定的操纵器姿势,M.sup-1.sub.render是在第二个渲染图像的渲染时间或之前确定的操纵器姿势的inverse,X.sup-1.sub.render是在第二个渲染图像的渲染时间或之前确定的头部姿势的inverse。
在一个示例中,X.sub.latest、M.sub.latest、M.sup-1.sub.render和X.sup-1.sub.render可以是表示可以相乘的仿射变换的矩阵(例如,4乘以4)。可以对第二渲染图像204的任何适当数量的像素进行重投影,以产生第二重投影图像208。在一个示例中,第二渲染图像204的每个像素可以重投影以产生第二重投影图像208。
在重投影之后,合成第一和第二重投影图像206和208,从而产生合成图像210。构图可以包括任何合适的图像处理步骤。合成图像210包括与第一重投影图像206中的参考帧相关联的重投影内容,以及与第二重投影图像208中的操纵器参考帧相关联的重投影内容。
然而,与仅基于头部姿势重投影机械手附加内容的重投影管道相比,合成图像210不包括重投影过程产生的伪影。通过重新投影分别包括和不包括操纵器附加内容的单独图像,可以减轻虚拟图像(例如第一渲染图像202中的虚拟栅栏)的遮挡,进而减少或消除重新投影伪影。
另外,可以通过基于渲染操纵器附加内容之后确定的操纵器姿势执行重投影来减少操纵器附加内容的移动中的延迟,从而增强用户的混合现实体验沉浸感。
在一个示例中,可以基于操纵器的姿势更新表示图像中运动的运动向量。作为一个示例,在将包含非操纵器附加内容的图像与包含操纵器附加内容的一个或多个图像合成时,可以基于操纵器姿势更新运动向量,例如通过一个或多个矩阵变换。操纵器姿势可以在合成时间或合成时间之前确定。
基于操纵器姿势更新运动向量可以通过捕获在运动向量的初始生成之后发生的操纵器运动,在对应于运动向量的像素中产生更具代表性的运动指示。以这种方式更新的运动矢量可用于任何合适的目的,例如重投影。另外,可以以任何合适的方式获得运动向量,例如通过从呈现操纵器附加内容的应用程序接收或请求运动向量,和/或通过从两个或多个图像之间的运动导出运动向量。
图4示出了示例性头显400。在增强现实实现中,显示器402可以呈现世界锁定的增强现实对象。随着头显设备400的姿势改变,锁定的增强现实对象看起来都会随着用户的视角而移动。所以,即便头显设备400的姿势改变,世界锁定的增强现实对象看起来依然保持在物理空间中的固定位置。
成像系统412可以以任何合适的形式收集周围物理空间的图像数据,例如图像和视频。由成像系统412收集的图像数据可用于测量周围物理空间的物理属性。尽管示例图仅示出了三个图像传感器412A-412C,但成像系统可以实现任何适当数量的图像传感器。作为示例,成像系统412可以包括一对灰阶摄像头,其配置为在单个颜色通道中收集图像数据。
可选地,成像系统412可以包括一个或多个彩色摄像头,其配置为在可见光谱中的一个或多个彩色通道(例如RGB)中收集图像数据;可选地,成像系统412可以包括一个或多个配置为收集深度数据的深度摄像头。在一个示例中,深度数据可以采用二维深度映射的形式。其中,二维深度映射具有多个深度像素,每个深度像素指示从对应的深度摄像头到周围物理空间中的对应表面的深度。深度摄像头可以采用任何合适的形式,例如飞行时间深度摄像头或结构光深度摄像头。
机载计算机404可以使用来自成像系统412的数据来检测运动。在一个示例中,头显设备400可以通过经由捕捉操纵器运动的成像系统412获取图像数据来捕捉佩戴者执行的操纵器运动。在一个示例中,头显设备400可以基于经由成像系统412获取的图像数据来制定铰接式手部追踪数据。头显设备400同时可以通过成像系统412对输入设备进行成像。机载计算机404可以使用来自成像系统412的数据来确定方向/位置和定向数据,从而在真实环境中实现头显设备400的位置/运动追踪。
IMU 414可以配置为向机载计算机404提供头显设备400的位置和/或方向数据。在一个实现中,来自成像系统412和IMU 414的位置和方向数据可结合使用以确定头显设备400的位置和方向。在又一实施例中,可以通过视觉惯性SLAM来计算头显设备400的姿势。
图5示出的重投影流程图方法可以由头显设备400实现。
在502,方法500包括接收包括与参考帧相关联的内容的第一渲染图像。例如,参考帧可以与头显设备或其他显示设备的用户相关联。接收第一渲染图像可以包括接收503表示第一渲染图像中的运动的第一多个运动矢量。在504,方法500包括接收包括与操纵器参考帧相关联的内容的第二渲染图像。操纵器参考帧506可对应于用户的手和用户操作的输入设备中的一个或多个。第二渲染图像可以包括508个与对应于左操纵器的第一操纵器参考帧相关联的内容,以及与对应于右操纵器的第二操纵器参考帧相关联的内容。接收第二渲染图像还可以包括接收509表示第二渲染图像中的运动的第二多个运动矢量。
在510,方法500包括基于用户的头部姿势重新投影第一渲染图像,从而产生第一重新投影图像。重投影第一渲染图像可包括基于头部姿势重投影511第一多个运动向量。在512,方法500包括基于用户的头部姿势和操纵器的姿势重新投影第二渲染图像,从而产生第二重新投影图像。重投影可以包括调整图像中一个或多个像素的位置,例如通过矩阵变换)。第二渲染图像可以基于514在第二渲染图像的渲染时的第一操纵器姿势以及在第一姿势之后确定的操纵器的第二姿势来重新投影。重投影第二渲染图像可包括515基于头部姿势和操纵器的姿势重投影第二多个运动向量。
在一个示例中,第二渲染图像可以包括与对应于左操纵器和右操纵器之一的第一操纵器参考帧相关联的内容。可以基于用户的头部姿势以及左操纵器和右操纵器之一的姿势重新投影第二渲染图像。在516,方法500可以包括接收第三渲染图像,第三渲染图像包括与对应于左操纵器和右操纵器中的另一个的第二操纵器参考帧相关联的内容。接下来,基于用户的头部姿势以及左操纵器和右操纵器中的另一个的姿势重新投影第三渲染图像,从而产生第三重投影图像。
在518,方法500包括合成重新投影的图像,从而产生合成图像。在520,方法500包括基于最近确定的头部姿势重新投影合成图像。在522,方法500包括输出合成图像以供显示。
相关专利:Microsoft Patent | Manipulator-based image reprojection
名为“Manipulator-based image reprojection”的微软专利申请最初在2020年8月提交,并在日前由美国专利商标局公布。