使用深度信息来外推出二维图像的系统和方法与流程

文档序号:25038201发布日期:2021-05-11 17:11阅读:79来源:国知局
使用深度信息来外推出二维图像的系统和方法与流程

背景

虚拟现实(vr)和增强现实(ar)头戴式装置(headset)在越来越多的活动中使用,越来越受欢迎。这种头戴式装置可以将视觉信息整合到用户的视野中,以增强他们周围的事物,或者允许他们步入沉浸式三维(3d)虚拟环境。虽然vr和ar头戴式装置通常用于游戏和其他娱乐目的,但它们也通常用于娱乐以外的目的——例如,政府可以使用它们进行军事训练模拟,医生可以使用它们练习外科手术,工程师可以使用它们作为可视化辅助工具。vr和ar系统在促进各种情境下人与人之间的人际互动方面的实用性也越来越得到认可。

以足够快的速率渲染令人信服、逼真的vr或ar环境以创建存在感,可能对硬件资源有所要求。通常,vr和ar硬件需要是紧凑的、节能的,但同时又是非常强大的。对于vr或ar应用,帧(或静态图像)通常根据用户的移动而生成,并且慢帧速率可能会被视为断断续续或闪烁。因此,许多vr或ar应用理想地以高帧速率(例如,大于每秒90帧)被观看,以产生无断续和无闪烁的视觉效果。出于这个原因,vr和ar应用通常会附带一组推荐的硬件规格,可能会建议这些硬件规格以理想地观看vr或ar应用。不幸的是,满足这些推荐的硬件规格并且能够实现高帧速率的当前vr和ar系统对于许多人和/或组织来说可能是不可访问的或负担不起的。因此,本公开识别并解决了对系统和方法的需求,该系统和方法使得能够以较低的帧速率来观看理想地以高帧速率被观看的vr或ar应用,这可以允许用户在更负担得起的最小规格硬件和系统上观看这些应用。

概述

如下文将更详细描述的,本公开描述了使用深度信息来外推出二维(2d)图像的系统和方法。在一个示例中,一种用于使用深度信息来外推出2d图像的计算机实现的方法可以包括:(1)接收描绘演进的3d场景和演进的3d场景中的元素的第一2d帧,(2)接收描绘演进的3d场景和元素的第二2d帧,(3)从第一2d帧和第二2d帧导出2d运动向量,每个2d运动向量包括从第一2d帧中的元素的坐标到第二2d帧中的该元素的坐标的估计偏移,(4)接收演进的3d场景的深度信息,(5)使用2d运动向量和深度信息来外推出合成2d帧,以及(6)向用户显示合成2d帧。

在一些示例中,第一2d帧和第二2d帧可以以期望的帧速率的一半从演进的3d场景被顺序地渲染,第一2d帧和第二2d帧可以以期望的帧速率的一半被顺序显示给用户,并且显示合成2d帧的步骤可以包括以期望的帧速率显示合成2d帧。在其他示例中,第一2d帧、第二2d帧和第三2d帧可以从演进的3d场景被顺序地渲染;第一2d帧和第二2d帧可以以期望的帧速率被顺序显示给用户;并且显示合成2d帧的步骤可以包括(1)确定第三2d帧未能及时渲染来以期望的帧速率显示给用户,以及(2)以期望的帧速率显示合成2d帧来代替第三2d帧。

在一些示例中,使用2d运动向量和深度信息来外推出合成2d帧的步骤可以包括通过对2d运动向量应用加权滤波器来从2d运动向量中去除噪声,并且深度信息可以用于导出加权滤波器的权重。在至少一个示例中,加权滤波器可以是中心加权的中值滤波器。在一些示例中,使用2d运动向量和深度信息来外推出合成2d帧的步骤可以包括(1)使用深度信息来将2d运动向量转换为3d运动向量,以及(2)使用3d运动向量来外推出合成2d帧。

在一些示例中,从第一2d帧和第二2d帧导出2d运动向量的步骤可以包括(1)将第一2d帧和第二2d帧作为输入发送到硬件运动估计器,以及(2)接收作为硬件运动估计器的输出的2d运动向量。在一些示例中,第一2d帧和第二2d帧可以从vr应用或ar应用被接收。在一些示例中,使用2d运动向量和深度信息来外推出合成2d帧的步骤可以包括:通过至少部分地基于2d运动向量和深度信息扭曲(warp)第二2d帧来从第二2d帧导出合成2d帧。在一些示例中,该计算机实现的方法还可以包括跟踪用户在物理世界中的平移运动,并且在导出多个二维运动向量之前,使用深度信息来重新投影(reproject)第二二维帧的像素元素,以考虑用户的平移运动。

此外,用于使用深度信息来外推出2d图像的相应系统可以包括存储在存储器中的几个模块,包括(1)帧接收模块,其接收(a)描绘演进的3d场景的第一2d帧和(b)描绘演进的3d场景的第二2d帧,(2)导出模块,其从第一2d帧和第二2d帧导出2d运动向量,每个2d运动向量包括从第一2d帧中的元素的坐标到第二2d帧中的该元素的坐标的估计偏移,(3)深度信息接收模块,其接收演进的3d场景的深度信息,(4)外推模块,其使用2d运动向量和深度信息来外推出合成2d帧,以及(5)显示模块,其向用户显示合成2d帧。该系统还可以包括至少一个处理器,该至少一个处理器执行帧接收模块、导出模块、深度信息接收模块、外推模块和显示模块。

在一些示例中,第一2d帧和第二2d帧可以以期望的帧速率的一半从演进的3d场景被顺序地渲染,第一2d帧和第二2d帧可以以期望的帧速率的一半被顺序显示给用户,并且显示模块可以以期望的帧速率显示合成2d帧。在其他示例中,第一2d帧、第二2d帧和第三2d帧可以从演进的3d场景被顺序地渲染;显示模块可以以期望的帧速率向用户顺序显示第一2d帧和第二2d帧;并且显示模块可以通过以下方式显示合成2d帧:(1)确定第三2d帧未能及时渲染来以期望的帧速率显示给用户,以及(2)以期望的帧速率显示合成2d帧来代替第三2d帧。

在一些示例中,外推模块可以使用2d运动向量和深度信息,通过对2d运动向量应用加权滤波器来从2d运动向量中去除噪声来外推出合成2d帧,并且深度信息可以用于导出加权滤波器的权重。在至少一个示例中,加权滤波器可以是中心加权的中值滤波器。在一些示例中,外推模块可以使用2d运动向量和深度信息,通过以下方式来外推出合成2d帧:(1)使用深度信息将2d运动向量转换为3d运动向量,以及(2)使用3d运动向量来外推出合成2d帧。

在一些示例中,导出模块可以通过以下方式从第一2d帧和第二2d帧导出2d运动向量:(1)将第一2d帧和第二2d帧作为输入发送到硬件运动估计器,以及(2)接收作为硬件运动估计器的输出的2d运动向量。在一些示例中,帧接收模块可以从vr应用或ar应用接收第一2d帧和第二2d帧。在一些示例中,外推模块可以使用2d运动向量和深度信息,通过至少部分地基于2d运动向量和深度信息扭曲第二2d帧,来从第二2d帧外推出合成2d帧。

在一些示例中,上述方法可以被编码为计算机可读介质上的计算机可读指令。例如,一种计算机可读介质可以包括一个或更多个计算机可执行指令,该一个或更多个计算机可执行指令当由计算设备的至少一个处理器执行时,可以使计算设备:(1)接收描绘演进的3d场景和演进的3d场景中的元素的第一2d帧,(2)接收描绘演进的3d场景和元素的第二2d帧,(3)从第一2d帧和第二2d帧导出2d运动向量,每个2d运动向量包括从第一2d帧中的元素的坐标到第二2d帧中的该元素的坐标的估计偏移,(4)接收演进的3d场景的深度信息,(5)使用2d运动向量和深度信息来外推出合成2d帧,以及(6)向用户显示合成2d帧。在一些示例中,第一2d帧和第二2d帧可以以期望的帧速率的一半从演进的3d场景被顺序地渲染,第一2d帧和第二2d帧可以以期望的帧速率的一半被顺序显示给用户,并且计算机可执行指令还可以使计算设备以期望的帧速率显示合成2d帧。

根据本文描述的一般原理,来自上面提到的实施例中的任一个的特征可以彼此组合地被使用。当结合附图和权利要求阅读下面的详细描述时,这些和其他实施例、特征和优点将被更充分地理解。

附图简述

附图示出了许多示例性实施例,并且是说明书的一部分。连同下面的描述一起,这些附图展示并解释了本公开的各种原理。

图1是根据一些实施例的示例性显示系统的框图。

图2是根据一些实施例的示例性3d场景的俯视图。

图3是根据一些实施例的图2所示的示例性3d场景的前视图。

图4是根据一些实施例的图2所示的示例性3d场景的另一俯视图。

图5是根据一些实施例的图2所示的示例性3d场景的另一前视图。

图6是示出根据一些实施例的示例性帧速率的时序图。

图7是示出根据一些实施例的示例性帧速率的时序图。

图8是根据一些实施例的、描绘图2和图3所示的示例性3d场景的示例性2d帧的框图。

图9是根据一些实施例的、描绘图4和图5所示的示例性3d场景的示例性2d帧的框图。

图10是根据一些实施例的示例性深度信息的框图。

图11是用于使用深度信息来外推出2d帧的示例性方法的流程图。

图12是根据一些实施例的示例性2d运动向量的框图。

图13是根据一些实施例的用于使用深度信息来在位置上(positionally)重新投影渲染的2d帧的示例性数据流程的流程图。

图14是根据一些实施例的示例性3d运动向量的框图。

图15是根据一些实施例的示例性2d合成帧的框图。

在全部附图中,相同的参考符号和描述指示相似的但不一定相同的元件。虽然本文所述的示例性实施例容许各种修改和替代的形式,但是特定的实施例在附图中作为示例被示出并且在本文将被详细描述。然而,本文描述的示例性实施例并不旨在受限于所公开的特定形式。更确切地,本公开涵盖落在所附权利要求的范围内的所有修改、等同物和替代方案。

示例性实施例的详细描述

本公开总体上涉及一种帧速率平滑技术,该技术使用深度信息从渲染的2d帧的序列来外推出合成2d帧。如下文将更详细解释的,本公开的实施例可以使用来自演进的3d场景的深度信息和来自从该3d场景渲染的2d帧的运动估计来外推出补充的合成2d帧。在一些示例中,每当vr或ar应用以低于显示器的期望或最佳帧速率的帧速率渲染3d场景时,本文描述的系统和方法可以显示这些补充的合成2d帧,这可以确保vr或ar体验对于用户来说保持平滑和令人愉悦。附加地或替代地,本文所述的系统和方法可以为运行在无法以显示器的期望或最佳帧速率渲染2d帧的硬件上的vr或ar应用显示补充的合成2d帧,这可以改善在先前无法带来令人愉悦的vr或ar体验的较低性能硬件上的vr或ar体验。在至少一个示例中,通过为由vr或ar应用渲染的每个2d帧显示合成2d帧,本文描述的系统和方法可以使vr或ar应用能够以显示器的期望或最佳帧速率的一半渲染2d帧,这可以将从3d场景产生2d帧所需的中央处理单元(cpu)和/或图形处理单元(gpu)时间减半。

下面将参考图1提供使用深度信息来外推出2d帧的示例系统的详细描述。将结合图2-5提供对示例演进3d场景的详细描述。图6和7将提供用于显示2d帧的示例帧速率的详细描述。另外,将结合图8-10和12-15提供示例2d帧、深度信息和运动向量的详细描述。此外,将结合图11提供使用深度信息来外推出2d帧的方法的详细描述。

图1是用于向用户显示描绘演进的3d场景的2d帧序列的示例性系统100的框图。如该图所示,系统100可以包括管理演进的3d场景104的应用102。在一些示例中,应用102可以表示管理由用户通过头戴式显示系统观看的演进的交互式3d环境的vr应用或ar应用。在一些示例中,应用102可以使用cpu和/或gpu来管理或渲染3d场景104。显示器108可以表示任何合适的显示屏或显示屏的组合,例如液晶显示(lcd)屏、有机发光二极管(oled)屏(例如,有源矩阵oled屏)、等离子显示屏和/或任何其他合适的显示屏。在一些示例中(例如,当结合在头戴式显示系统中时),显示器108可以包括用户左眼可见的左侧和用户右眼可见的右侧。在一些示例中,显示器108的左侧和右侧可用于显示一对立体的分离图像,其将3d场景104的左眼视图和右眼视图描绘为单个3d图像。

在一些实施例中,术语“三维场景”可以指几何数据的任何3d表示或模型,其可用于执行计算和/或渲染2d图像。在一些示例中,术语“三维场景”可以指vr或ar交互式环境的3d表示或模型。在一些示例中,三维场景可以包括可以位于3d空间内的3d对象或元素。3d场景可以随着时间演进,使得3d场景中的3d对象或元素相对于彼此和/或用户或相机视角移动。

图2-5示出了示例性3d场景104。如这些图中所示,3d场景104可以包括前景(foreground)对象202、中景(middle-ground)对象204和背景(background)对象206。在该示例中,前景对象202可以相对于视角208从右向左(即,在负的x方向上)移动,中景对象204可以相对于视角208从左向右(即,在正的x方向上)移动,并且背景对象206可以相对于视角208静止。图2和图3分别示出了在从视角208来看前景对象202和中景对象204与背景对象206重叠但彼此不重叠时的第一时间,3d场景104的俯视图和前视图。图4和图5分别示出了在从视角208来看前景对象202和中景对象204与背景对象206重叠并且前景对象202与中景对象204重叠时的后续时间,3d场景104的俯视图和前视图。

回到图1,应用102可以将3d场景104渲染成2d帧106(1)-(n)的序列,以通过显示器108显示给用户。在应用102是vr或ar应用的示例中,应用102可能需要渲染3d场景104两次,一次以左眼视角,一次以右眼视角。在这样的示例中,2d帧106(1)-(n)可以表示针对左眼视角或右眼视角渲染的2d帧。

在一些示例中,应用102可以以低于期望的帧速率(例如,低于显示器108的最佳帧速率或低于用来观看vr或ar环境的最佳帧速率)将3d场景104顺序地渲染为2d帧。在一些情况下,由于缺乏足够的硬件资源,应用102可能无法以期望的或最佳的帧速率将3d场景104顺序地渲染为2d帧106(1)-(n)。在这些情况下,如下文将解释的,本文描述的系统可以用合成2d帧122(1)-(n)来补充2d帧106(1)-(n),以便经由显示器108以期望的或最佳的帧速率显示2d帧(即,渲染的2d帧和合成2d帧)。

图6示出了示例时序图600,其示出了示例性帧速率(即,每秒45帧),应用102可以以该帧速率从3d场景104渲染2d帧106(1)-(n)。在该示例中,显示器108能够以每秒90帧(即,每11毫秒(ms)显示一帧)显示2d帧,但是显示器108只能以每秒45帧(即,它们被应用102渲染的速率)显示2d帧106(1)-(n)。如该示例所示,显示器108可以在2d帧106(1)-(n)之间显示合成2d帧122(1)-(n),使得2d帧106(1)-(n)和合成2d帧122(1)-(n)一起以每秒90帧的速率被显示。

在一些示例中,应用102可以尝试以期望的或最佳的帧速率将3d场景104顺序地渲染为2d帧106(1)-(n)。在一些示例中,应用102通常可以以期望的或最佳的帧速率将3d场景104渲染为2d帧106(1)-(n),但是可能偶尔将2d帧106(1)-(n)中的一些2d帧渲染得太慢,以至于无法跟上期望的或最佳的帧速率。在这些示例中,本文描述的系统可以用合成帧122(1)-(n)补充应用102能够渲染的2d帧。

图7示出了示例时序图700,其示出了示例性帧速率(即,每秒90帧),应用102可以以该帧速率来尝试从3d场景104渲染2d帧106(1)-(n)。在该示例中,显示器108能够以每秒90帧显示2d帧。如图7所示,应用102可能无法足够快地渲染2d帧106(3)使其以每秒90帧的速率被显示。然而,如该示例所示,显示器108可以在2d帧106(2)和106(4)之间显示合成2d帧122(1)和122(2),使得2d帧106和合成2d帧122一起可以以每秒90帧的速率被显示。

图8和图9示出了从3d场景104渲染的示例2d帧。在一些示例中,应用102可以从视角208将如图2和图3所示的3d场景104渲染为图8所示的2d帧106(1)。在该示例中,2d帧106(1)可以包括像素元素(例如,像素、块或宏块(macroblock))的列800和像素元素的行802。如图8所示,2d帧106(1)描绘了前景对象202和中景对象204与背景对象206重叠但彼此不重叠。稍后,应用102可以从视角208将如图4和图5所示的3d场景104渲染为如图9所示的2d帧106(2)。在该示例中,2d帧106(2)可以包括像素元素的列900和像素元素的行902。如图9所示,2d帧106(2)描绘了前景对象202和中景对象204与背景对象206重叠并且前景对象202与中景对象204重叠。

除了从3d场景104渲染2d帧之外,应用102还可以被配置成为从3d场景104渲染的每个2d帧生成深度信息。例如,应用102可以生成分别对应于2d帧106(1)-(n)的深度信息110(1)-(n)。在一些实施例中,术语“深度信息”可以指3d场景中元素的深度的任何测量值,其映射到2d帧中描绘该元素的像素元素。深度信息可以使用任何合适的格式来表示。在一些示例中,深度信息可以使用合适的线性格式或合适的非线性格式来表示。图10示出了从3d场景104导出的示例性深度信息。在该示例中,深度信息110(1)可以对应于2d帧106(1)。如所示的,深度信息110(1)可以包括元素的列1000(每个列对应于列800之一)和元素的行1002(每个行对应于行802之一)。在该示例中,元素1004和1008可以表示背景对象206的深度测量值,元素1006可以表示中景对象204的深度测量值,并且元素1010可以表示前景对象202的深度测量值。图10中包含的深度测量值主要是为了说明的目的,并不旨在穷举或限制于所示的精确形式。

如图1所示,示例系统100可以包括一个或更多个模块,用于通过显示器108显示2d帧。如下文将更详细地解释的,系统100可以包括(1)帧接收模块112,其接收描绘3d场景104的2d帧106(1)-(n),(2)导出模块114,其从2d帧106(1)-(n)导出2d运动向量116(1)-(n),(3)深度信息接收模块118,其接收演进的3d场景104的深度信息110(1)-(n),(4)外推模块120,其使用2d帧106(1)-(n)、2d运动向量116(1)-(n)和深度信息110(1)-(n)来外推出合成2d帧122(1)-(n),以及(5)显示模块124,其通过显示器108向用户显示2d帧106(1)-(n)和/或合成2d帧122(1)-(n)。虽然作为单独的元件被示出,但是图1中描绘的一个或更多个模块可以代表单个模块或应用的部分。

图11是用于使用深度信息来外推出2d图像的示例性计算机实现的方法1100的流程图。图11中所示的步骤可以由任何合适的计算机可执行代码和/或计算系统(包括图1所示的系统)来执行。在一个示例中,图1中所示的每个步骤可以表示算法,其结构包括多个子步骤和/或由多个子步骤表示,将在下面更详细地提供子步骤的示例。

如图11所示,在步骤1102,本文描述的一个或更多个系统可以接收描绘演进的3d场景的2d帧。例如,帧接收模块112可以从应用102接收描绘3d场景104的2d帧106(1)-(n)。通常,本文描述的系统可以从应用102以显示器的期望或最佳帧速率或低于显示器的期望或最佳帧速率接收描绘3d场景104的2d帧106(1)-(n)。

在步骤1104,本文描述的一个或更多个系统可以从2d帧导出2d运动向量。例如,导出模块114可以从连续的2d帧106(1)-(n)导出2d运动向量116(1)-(n)。在一些实施例中,术语“二维运动向量”可以指运动序列中两个连续的2d帧的元素之间的运动的任何估计。在一些示例中,术语“二维运动向量”可以指两个帧的像素或宏块之间的运动的像素级或宏块级估计。在一些实施例中,术语“二维运动向量”可以指在运动序列中的两个连续帧中发现的对象或特征之间的运动的对象级或特征级估计。

图12示出了从如图8和图9所示的2d帧106(1)和106(2)导出的示例性2d运动向量116(1)。如2d帧106(1)和2d帧106(2)所描绘的,前景对象202从右向左移动,中景对象204被示为从左向右移动,并且背景对象206被示为静止。2d运动向量116(1)可以包括2d帧106(1)和106(2)的每个像素元素的运动估计或测量值。如图12所示,2d运动向量116(1)可以包括元素的列1200(每个列对应于列800之一或列900之一)和元素的行1202(每个行对应于行802之一或行902之一)。在该示例中,元素1204和1208中的每一个可以包含背景对象206的估计运动向量,元素1206中的每一个可以包含中景对象204的估计运动向量,并且元素1210中的每一个可以包含前景对象202的估计运动向量。图12中包含的运动估计主要是为了说明的目的,并不旨在穷举或限制于所示的精确形式。

本文描述的系统可以以多种方式从2d帧导出2d运动向量。在一个示例中,导出模块114可以使用硬件运动估计器(例如,能够估计两个帧之间的运动的gpu)来从2d帧导出2d运动向量。例如,导出模块114可以将连续的2d帧对106(1)-(n)传递给硬件运动估计器126,并且可以接收到2d运动向量116(1)-(n)中的相应一个2d运动向量,其包含连续的2d帧对106(1)-(n)之间的运动估计。通常,本文描述的系统可以在显示2d帧的同时从2d帧异步地导出运动向量。

在一些情况下,从演进的3d场景渲染的连续2d帧之间发生的一些运动(例如,视差运动(parallaxmotion))可能是由用户在物理世界中的平移运动引起的。典型地,当用户在物理世界中平移移动时,代表用户视点(pointofview)的相机的位置可以相对于3d场景被更新以反映用户的平移移动。因此,3d场景中的对象可以由相机从稍微不同的视点进行渲染,这可能导致对象在连续2d帧中的位置不同,即使对象没有相对于3d场景移动。在一些示例中,从连续2d帧导出的2d运动向量可以捕获或表示完全或部分地由用户的平移运动引起的运动的估计。在这些示例中,当这些2d运动向量和一个或更多个连续2d帧被用于外推合成2d帧(如下所述)时,可以考虑用户的平移运动。

在一些示例中,本文描述的系统可以使用各种硬件传感器(例如,固定的室内传感器(stationaryroomsensor)和/或附着于身体的传感器(body-attachedsensor))来精确地测量用户在物理世界中的平移运动。虽然在外推2d帧时可以使用估计的2d运动向量来考虑用户平移运动的影响,但是基于传感器对用户平移运动的测量来外推出2d帧可能是考虑这种运动的更准确的方式。因此,本文描述的系统可以使用传感器对用户平移运动的测量来在位置上重新投影(例如,在位置上扭曲)渲染的2d帧的像素元素以考虑这种运动,然后使用在位置上重新投影的2d帧来导出考虑其他运动的2d运动向量。在一些示例中,通过在位置上重新投影2d帧的像素元素以考虑用户的平移运动,本文描述的系统可以有效地从2d帧中滤除用户平移运动的运动效果。

在一个示例中,本文描述的系统可以通过首先使用深度信息将2d帧的像素元素在位置上投影到3d空间(例如,将2d帧的像素元素从屏幕空间投影到相机空间或世界空间),来重新投影2d帧的像素元素以考虑用户的平移运动。在一些示例中,本文描述的系统可以使用逆投影矩阵或高度图(heightmap)来将2d帧的像素元素在位置上投影到3d空间。接下来,本文描述的系统可以调整3d投影以考虑用户的平移运动(例如,通过在相机空间中移动3d投影的点来反映用户的平移运动)。最后,本文描述的系统可以将调整后的3d投影重新投影回2d帧(例如,使用投影矩阵)。

图13示出了示例性数据流程1300,用于基于由运动传感器1304跟踪的用户的物理世界平移运动1302,使用深度信息110(1)来在位置上重新投影渲染的2d帧106(1)。在该示例中,本文描述的系统可以使用逆投影矩阵1306和深度信息110(1)来将渲染的2d帧106(1)的像素元素在位置上投影到相机空间作为3d投影1308。然后,本文描述的系统可以调整3d投影1308以考虑运动1302(例如,通过变换相机空间中的3d投影1308的点以反映运动1302)。在一些示例中,3d投影1308的调整可以产生新的深度信息1310。最后,本文描述的系统可以使用投影矩阵1312将3d投影1308重新投影回2d帧1314。在一些示例中,本文描述的系统和方法可以使用2d帧1314来代替渲染的2d帧106(1),和/或可以使用深度信息1310来代替深度信息110(1)。

在步骤1106,本文描述的一个或更多个系统可以接收演进的3d场景的深度信息。例如,深度信息接收模块118可以从应用102接收3d场景104的深度信息110(1)-(n)。

在步骤1108,本文描述的一个或更多个系统可以使用2d运动向量和深度信息来外推出合成2d帧。例如,外推模块120可以使用2d运动向量116(1)-(n)和深度信息110(1)-(n)来外推出合成帧122(1)-(n)。通常,本文描述的系统可以在接收和显示渲染的2d帧的同时异步地外推出合成2d帧。

本文描述的系统可以使用2d运动向量和深度信息以多种方式来外推出合成2d帧。通常,外推模块120可以使用2d或3d运动向量,通过根据渲染的2d帧的像素元素的相关联的运动向量来扭曲(例如,变形(distort)、变换或重新映射)渲染的2d帧的像素元素来外推出合成2d帧。由于与在先前时间从3d场景渲染的2d帧的像素元素相关联的运动向量可以预测该像素元素在随后时间预期所在的位置,因此本文描述的系统可以使用与2d帧的像素元素相关联的运动向量来预测这些像素元素在随后时间预期所在的位置,并且相应地重新映射2d帧的像素元素,从而外推出新的合成2d帧。

使用图9、图12和图15作为示例,外推模块120可以通过根据2d帧106(2)的像素元素的相关联的运动向量来扭曲2d帧106(2)的像素元素,从图9中的2d帧106(2)外推出图15中的合成2d帧122(1)。如图15所示,合成2d帧122(1)可以包括像素元素的列1500(每个列对应于列900之一)和像素元素的行1502(每个行对应于行902之一)。在该示例中,运动向量1204和1208可以指示2d帧106(2)中对应于背景对象206的像素元素应该保持静止而不应该被扭曲或重新映射,运动向量1206可以指示2d帧106(2)中对应于中景对象204的像素元素应该被扭曲或重新映射到右边,并且运动向量1210可以指示2d帧106(2)中对应于前景对象202的像素元素应该被扭曲或重新映射到左边。

在一个示例中,估计的2d运动向量可能包含不想要的噪声,并且外推模块120可以在使用2d运动向量扭曲2d帧之前,使用降噪滤波器121(例如,中值滤波器或中心加权的中值滤波器)来从估计的2d运动向量中去除噪声。在一些示例中,本文描述的系统可以使用深度信息来导出滤波器权重,使得元素的滤波值更多地受到处于相同或相似深度的相邻元素的影响,而更少地受到不处于相同或相似深度的相邻元素的影响。使用深度信息来给降噪滤波器加权可以提高滤波后的运动向量的准确性,因为处于相同深度的运动向量可能与相同的3d对象相关联,而不处于相同深度的运动向量不太可能与相同的3d对象相关联。

在一些示例中,本文描述的系统可以使用深度信息来将2d运动向量转换为3d运动向量,然后使用3d运动向量来外推出合成2d帧。在一些示例中,本文描述的系统可以比较与从其导出2d运动向量的两个2d帧相关联的深度信息,以确定对于运动估计的深度分量。这些深度分量可与2d运动向量相结合,以生成可用于外推出合成2d帧的3d运动向量。图14示出了从深度信息110(1)和110(2)以及2d运动向量116(1)导出的示例性3d运动向量117(1)。3d运动向量117(1)可以包括2d帧106(1)和106(2)的每个像素元素的运动估计或测量值。如图14所示,3d运动向量117(1)可以包括元素的列1400(每个列对应于列800之一或列900之一)和元素的行1402(每个行对应于行802之一或行902之一)。在该示例中,元素1404和1408中的每一个可以包含背景对象206的估计3d运动向量,元素1406中的每一个可以包含中景对象204的估计3d运动向量,并且元素1410中的每一个可以包含前景对象202的估计3d运动向量。图14中包含的运动估计主要是为了说明的目的,并不旨在穷举或限制于所示的精确形式。

在一些示例中,本文描述的系统可以通过(1)将3d运动向量投影到2d运动向量以及(2)使用投影的2d运动向量外推出合成2d帧(例如,使用上述方法),来使用3d运动向量外推出合成2d帧。在将3d运动向量投影到2d运动向量之前,本文描述的系统可以对3d运动向量执行一个或更多个操作。例如,在将3d运动向量投影到2d运动向量之前,本文描述的系统可以从3d运动向量中去除噪声(例如,通过对多个3d运动向量应用合适的加权滤波器)。

如图11所示,在步骤1110,本文描述的一个或更多个系统可以向用户显示合成2d帧。例如,显示模块124可以通过显示器108向用户显示合成帧122(1)-(n)中的一些或全部。

本文描述的系统可以以多种方式执行步骤1110。在一些示例中,每当应用以低于显示器的期望或最佳帧速率的帧速率渲染3d场景时,本文描述的系统和方法可以显示合成2d帧。例如,如图6所示,应用102可以以每秒45帧的速率渲染2d帧106(1)-(n),并且显示器108可以在2d帧106(1)-(n)之间显示合成2d帧122(1)-(n),使得2d帧106(1)-(n)和合成2d帧122(1)-(n)一起以每秒90帧的速率被显示。在另一个示例中,如图7所示,应用102可能无法足够快地渲染2d帧106(3)使其以每秒90帧的速率被显示。然而,如该示例所示,显示器108可以在2d帧106(2)和106(4)之间显示合成2d帧122(1)和122(2),使得2d帧106和合成2d帧122一起可以以每秒90帧的速率被显示。在一些示例中,当应用未能以期望的或最佳的帧速率提交帧时,本文描述的系统可以指示或促使应用降低其渲染帧速率(例如,降低到期望的或最佳的帧速率的一半),并且可以使用外推出的合成2d帧来提供中间帧。

如上面所解释的,本公开的实施例可以使用来自演进的3d场景的深度信息和来自从3d场景渲染的2d帧的运动估计来外推出补充的合成2d帧。在一些示例中,每当vr或ar应用以低于显示器的期望或最佳帧速率的帧速率渲染3d场景时,本文描述的系统和方法可以显示这些补充的合成2d帧,这可以确保vr或ar体验对于用户来说保持平滑和令人愉悦。附加地或替代地,本文所述的系统和方法可以为运行在无法以显示器的期望或最佳帧速率渲染2d帧的硬件上的vr或ar应用显示补充的合成2d帧,这可以改善在先前无法带来令人愉悦的vr或ar体验的较低性能硬件上的vr或ar体验。在至少一个示例中,通过为由vr或ar应用渲染的每个2d帧显示合成2d帧,本文描述的系统和方法可以使vr或ar应用能够以显示器的期望或最佳帧速率的一半渲染2d帧,这可以将从3d场景产生相同数量的2d帧所需的中央处理单元(cpu)和/或图形处理单元(gpu)时间减半。

在一些示例中,本文描述的系统和方法可以在两个先前的2d帧中检查活动性(animation)、相机平移、头部平移等,来预测后续2d帧。本文描述的系统和方法可以将活动性、相机平移、头部平移等表示为2d运动向量,这些2d运动向量在某些情况下可能有噪声。在使用2d运动向量来生成外推出的2d帧之前,本文描述的系统和方法可以将加权滤波器应用于2d运动向量,该加权滤波器的权重是从深度信息中导出的,这可以降低在2d运动向量中发现的噪声,从而提高从2d运动向量生成的外推出的2d帧的质量。在一些示例中,系统和方法可以使用深度信息来将2d运动向量转换为3d运动向量,3d运动向量可以代替2d运动向量被用于生成外推出的2d帧。

如上面所详述的,本文描述和/或示出的计算设备和系统广泛地表示能够执行计算机可读指令(例如在本文描述的模块内包含的那些指令)的任何类型或形式的计算设备或系统。在它们的最基本的配置中,这些计算设备可以各自包括至少一个存储器设备和至少一个物理处理器。

在一些示例中,术语“存储器设备”通常指能够存储数据和/或计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。在一个示例中,存储器设备可以存储、加载和/或维护本文描述的一个或更多个模块。存储器设备的示例包括但不限于随机存取存储器(ram)、只读存储器(rom)、闪存、硬盘驱动器(hdd)、固态驱动器(ssd)、光盘驱动器、高速缓存、这些部件中的一个或更多个的变形或组合、或者任何其他合适的储存存储器。

在一些示例中,术语“物理处理器”通常指能够解释和/或执行计算机可读指令的任何类型或形式的硬件实现的处理单元。在一个示例中,物理处理器可以访问和/或修改存储在上述存储器设备中的一个或更多个模块。物理处理器的示例包括但不限于微处理器、微控制器、中央处理单元(cpu)、实现软核处理器的现场可编程门阵列(fpga)、专用集成电路(asic)、这些部件中的一个或更多个的部分、这些部件中的一个或更多个的变形或组合、或任何其他合适的物理处理器。

尽管被示为单独的元件,但是本文描述和/或示出的模块可以表示单个模块或应用的部分。此外,在某些实施例中,这些模块中的一个或更多个可以表示一个或更多个软件应用或程序,其当由计算设备执行时可以使计算设备执行一个或更多个任务。例如,本文描述和/或示出的一个或更多个模块可以表示被存储和配置为在本文描述和/或示出的一个或更多个计算设备或系统上运行的模块。这些模块中的一个或更多个还可以表示被配置为执行一个或更多个任务的一个或更多个专用计算机的全部或部分。

此外,本文描述的一个或更多个模块可以将数据、物理设备和/或物理设备的表示从一种形式变换成另一种形式。例如,本文所述的一个或更多个模块可以接收从演进的3d场景渲染的两个2d帧和3d场景的深度信息,将两个2d帧变换成2d运动向量,将变换的结果输出到用于从2d帧、2d运动向量和3d场景的深度信息来外推出合成2d帧的系统,使用变换的结果从2d帧、2d运动向量和3d场景的深度信息外推出合成2d帧,并向用户显示合成2d帧。附加地或可替代地,本文所述的一个或更多个模块可以通过在计算设备上执行、在计算设备上存储数据、和/或以其他方式与计算设备交互来将处理器、易失性存储器、非易失性存储器和/或物理计算设备的任何其他部分从一种形式变换成另一种形式。

在一些实施例中,术语“计算机可读介质”通常指能够存储或携带计算机可读指令的任何形式的设备、载体或介质。计算机可读介质的示例包括但不限于传输类型介质(例如载波)以及非暂时性类型介质(例如磁性存储介质(例如,硬盘驱动器、磁带驱动器和软盘)、光学存储介质(例如,光盘(cd)、数字视频磁盘(dvd)和蓝光磁盘)、电子存储介质(例如,固态驱动器和闪存介质)以及其他分布系统)。

本公开的实施例可以包括人工现实系统或者结合人工现实系统来实现。人工现实是一种在呈现给用户之前已经以某种方式进行了调整的现实形式,其可以包括例如虚拟现实(vr)、增强现实(ar)、混合现实(mixedreality,mr)、混杂现实(hybridreality)或其某种组合和/或衍生物。人工现实内容可以包括完全生成的内容或者与所捕获的(例如,真实世界)内容组合地生成的内容。人工现实内容可以包括视频、音频、触觉反馈或它们的某种组合,它们中的任何一个都可以在单个通道或多个通道(例如向观看者产生三维效果的立体视频)中呈现。此外,在一些实施例中,人工现实还可以与应用、产品、附件、服务或其某种组合相关联,这些应用、产品、附件、服务或其某种组合用于例如在人工现实中创建内容和/或在人工现实中以其他方式被使用(例如在人工现实中执行活动)。提供人工现实内容的人工现实系统可以在各种平台上实现,这些平台包括连接到主计算机系统的头戴式显示器(hmd)、独立的hmd、移动设备或计算系统、或者能够向一个或更多个观看者提供人工现实内容的任何其他硬件平台。

在本文描述和/或示出的过程参数和步骤的顺序仅作为示例被给出,并且可以根据需要而变化。例如,虽然本文示出和/或描述的步骤可以以特定顺序被示出或讨论,但是这些步骤不必需要以所示出或讨论的顺序来被执行。本文描述和/或示出的各种示例性方法也可以省略在本文描述或示出的一个或更多个步骤,或者包括除了那些所公开的步骤之外的附加步骤。

提供前面的描述是为了使本领域的其他技术人员能够最好地利用本文公开的示例性实施例的各个方面。该示例性描述并不旨在是穷尽的或受限于所公开的任何精确形式。许多修改和变化是可能的,而不偏离本公开的精神和范围。本文公开的实施例应当在所有方面被认为是说明性的而不是限制性的。在确定本公开的范围时,应当参考所附权利要求及其等同物。

除非另外提出,否则如在说明书和权利要求中使用的术语“连接到”和“耦合到”(及其派生词)应被解释为允许直接和间接(即,经由其他元件或部件)连接。此外,如在说明书和权利要求中使用的术语“一个(a)”或“一个(an)”应被理解为意指“至少一个”。最后,为了容易使用,如在说明书和权利要求中使用的术语“包括(including)”和“具有”(及其派生词)与词“包括(comprising)”可互换并具有与词“包括(comprising)”相同的含义。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1