用于3D图形中运动矢量的方法和系统技术方案

技术编号:38756380 阅读:14 留言:0更新日期:2023-09-10 09:41
提供用于在3D计算机生成图像的上下文中生成运动矢量的各种方法。一种示例性方法包括:针对当前帧中要渲染的一个或多个对象的每个像素生成1相运动矢量(MV1)和0相运动矢量(MV0),每个MV1和MV0具有相关联的深度值,从而形成MV1纹理和MV0纹理;将所述MV1纹理转换为一组MV1块,并且将所述MV0纹理转换为一组MV0块;以及输出所述一组MV1块和所述一组MV0块以用于图像处理。用于图像处理。用于图像处理。

【技术实现步骤摘要】
用于3D图形中运动矢量的方法和系统


[0001]本文公开的主题的实施方案涉及三维(3D)计算机图形领域,并且更具体地涉及如何改进内插帧在3D环境内的渲染。

技术介绍

[0002]多年来,计算机处理能力的提高已使(例如视频游戏或某些动画的)实时视频渲染变得越来越复杂。例如,早期视频游戏的特征为像素化精灵在固定背景上移动,而当代视频游戏的特征为充满人物的逼真三维场景。同时,处理部件的小型化已使移动装置(诸如手持式视频游戏装置和智能手机)能够有效地支持高帧速率、高分辨率视频的实时渲染。
[0003]3D图形视频可以多种不同的帧速率和屏幕分辨率输出。可能期望将具有3D图形的视频从一个帧速率(和/或分辨率)转换至另一个帧速率(和/或分辨率)。为了节省算计能力同时仍然提高帧速率,可使用内插帧而不是渲染视频内的所有帧。内插帧可通过使用运动矢量(在本文中也称为MV)有效地生成,运动矢量跟踪对象在当前帧(CF)与先前帧(PF)之间的位置差异。

技术实现思路

[0004]本文公开用于在3D计算机图形的上下文中计算和传输运动矢量的实施方案。在一个实例中,一种方法包括:针对当前帧中要渲染的一个或多个对象的每个像素生成1相运动矢量(MV1)和0相运动矢量(MV0),每个MV1和MV0具有相关联的深度值,从而形成MV1纹理和MV0纹理;将所述MV1纹理转换为一组MV1块,并且将所述MV0纹理转换为一组MV0块;以及输出所述一组MV1块和所述一组MV0块以用于图像处理。
附图说明
[0005]图1示出算计系统的示例性图。
[0006]图2是示意性地示出用于传输和使用运动矢量数据的管线的示例性框图。
[0007]图3示出示例性3D坐标系和3D空间中的两个点。
[0008]图4示出示例性2D坐标系和2D空间中的两个点。
[0009]图5示出根据本公开的一个实例的说明用于创建2.5D块MV0和2.5D块MV1并将其输出到图像处理模块的方法的流程图。
[0010]图6示出根据本公开的一个实例的说明用于采用逐像素运动矢量作为输入来计算块运动矢量的方法的流程图。
[0011]图7示意性地示出逐像素MV转换成块MV的实例。
[0012]图8示意性地示出根据本公开的实例的用于将数据划分为两个分离的通道的三种不同方法。
具体实施方式
[0013]本文描述用于计算运动矢量以用于在帧内插、帧速率转换或其他动作中使用的系统和方法。如先前所解释,可生成跟踪对象在当前帧(CF)与先前帧(PF)之间的位置差异的运动矢量。如本文所解释,可利用两种类型的运动矢量(1相MV(MV1)和0相MV(MV0))来对帧进行内插。MV0代表从PF到CF的运动,并且MV1代表从CF到PF的运动。生成屏幕上的每个像素(或像素组)的MV,从而形成屏幕上的像素的纹理或MV的集合。如本文所用,纹理被定义为从帧中的像素的集合到一个或多个数字(例如,矢量的分量或单个数字)的集合的映射。
[0014]如果在帧速率转换过程中使用运动矢量,则典型的渲染引擎仅输出二维的MV1纹理。因此,纹理不含有深度内容,并且仅包括有关如在虚拟相机的参考系中查看到的相对屏幕位置变化的信息。利用逐像素运动矢量的深度可告知如何算计块运动矢量的2D分量。块运动矢量可表示像素块(例如,五乘五的像素块)的运动矢量的平均值,并且可用于帧内插或其他图像处理任务以便例如减少处理需求。特定深度范围内的场景区域称为前景(靠近相机)、背景(远离相机)或中间范围(介于前景与背景之间)。在图像处理中可能期望确定以下哪个深度范围支配每个像素块:前景、背景或中间范围。
[0015]作为一个实例,两个对象可定位在距(虚拟)相机或视点的不同距离处。如果两个对象在相同方向上以相等的世界空间距离移动,则较远的对象可在眼睛空间中看起来移动较小距离,从而产生视差效应,其中更远离视点的对象看起来比更靠近视点的对象移动得少。
[0016]在块中的大多数像素在背景中的情况下,大多数像素将具有小MV,因为MV是从相机/视点的角度评估的。如果块中的少量像素例如位于前景中,则前景像素将具有幅值较大的运动矢量。如果要对块内的所有运动矢量求平均,则前景的(相对较少的)MV将支配平均MV。这可能歪曲背景像素的相对小的明显运动,反而有利于前景像素的MV。背景MV的幅值也可能强烈地受相机移动的影响。背景内像素的MV也可能是大的,潜在地以不期望的方式增加平均值的误差。
[0017]通过在像素MV中包括深度信息,可解析每个块的主导深度范围:前景、背景或中间范围。然后可忽视块内未落入主导范围的运动矢量值以利于评估仅主导范围内的像素的平均值。在块由背景像素支配的情况下,所得的运动矢量可更紧密地匹配帧内发生的运动。
[0018]所添加的深度信息还可为图像处理模块提供另外的灵活性。MV的深度分量可例如用作加权函数的输入,所述加权函数进而可用于对不同深度的区域应用不同水平的图像校正。
[0019]因此,根据本文描述的实施方案,可将深度纹理附加到MV1,这通过考虑深度变化而允许更准确的帧内插。此外,可类似地生成具有深度的MV0纹理。MV0和MV1两者可用作帧速率转换算法的输入,这有助于内插步骤。
[0020]此外,每一帧可由两种对象组成:具有运动矢量的对象和不具有运动矢量的对象。以运动矢量为特征的对象可包括移动的人物或其他对象、用户的视图以及游戏中地图的部分。不具有运动矢量的对象可包括例如烟雾效应、全屏或局部屏幕场景转变(例如淡入淡出和擦除)、叠加(诸如图形用户界面元素和枪标线(gun reticule))、和/或粒子效应。通过将具有运动矢量的对象与不具有运动矢量的对象分离,可执行改进的图像处理。传统上,算法可尝试排除以不具有运动矢量的对象为特征的屏幕区域。然而,这种方法并不完美并且可
能在帧速率转换的过程期间导致附近对象的混合。因此,在传输到图像处理器之前分离具有运动矢量和不具有运动矢量的对象可减少由传统已知的排除方法引起的伪影。对象的分离可产生两个通道,所述两个通道一起构成帧数据。
[0021]传统上,运动矢量也是在逐个像素的基础上采样的,这样的屏幕上的每个像素具有相关联的MV0和MV1。然而,运动矢量的采样分辨率可动态地降低或提高。降低分辨率也可能降低MV计算所需的算计能力。由于许多装置(例如智能手机)的算计资源和电池寿命有限,算计成本的降低可节省处理能力和电池寿命。如本文所描述,“逐像素”或“逐个像素”可能不是指单独像素,而是可以是指在评估运动矢量的上下文中的像素的集合。在一些实施方案中,可通过在计算MV时降低采样分辨率来执行低分辨率MV生成。例如,可仅针对x方向上的每第四个像素和y方向上的每第四个像素算计MV。
[0022]首先在逐个像素的基础上生成这里描述的运动矢量,然后将其转化为具有深度纹理的块形式。由于具有MV的对象和不具有MV的对象可在每一帧内分开,所以块MV然后可与含有具有MV的对象的帧数据或含有不具有MV的对象的帧数据一起传输到本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种方法,其包括:针对当前帧中要渲染的一个或多个对象的每个像素生成1相运动矢量(MV1)和0相运动矢量(MV0),每个MV1和MV0具有相关联的深度值,从而形成MV1纹理和MV0纹理;将所述MV1纹理转换为一组MV1块,并且将所述MV0纹理转换为一组MV0块;以及输出所述一组MV1块和所述一组MV0块以用于图像处理。2.如权利要求1所述的方法,其中每个MV1表示所述像素处的对象从所述当前帧到先前帧的位置变化,并且其中每个MV0表示所述像素处的所述对象从所述先前帧到所述当前帧的位置变化。3.如权利要求1所述的方法,其中将所述MV1纹理转换为所述一组MV1块包括:针对多个像素块中的每个像素块识别所述像素块中的像素类型的分布;以及基于所述像素类型的分布将每个像素块转换为相应的MV1块。4.如权利要求3所述的方法,其中基于所述像素类型的分布将每个像素块转换为相应的MV1块包括:确定第一所选择像素块具有非双峰分布,使得仅存在或主要存在中间范围像素,并且作为响应,对所述第一所选择像素块中的仅中间范围像素计算平均MV1;确定第二所选择像素块具有双峰分布,使得所述第二所选择像素块包括至少一个前景像素和至少一个背景像素,并且作为响应,对所述第二所选择像素块中的仅前景像素计算平均MV1;以及将每个平均MV1设置为所述相应的MV1块的MV1值。5.如权利要求1所述的方法,其中将所述MV0纹理转换为所述一组MV0块包括:针对多个像素块中的每个像素块识别所述像素块中的像素类型的分布;以及基于所述像素类型的分布将每个像素块转换为相应的MV0块。6.如权利要求5所述的方法,其中基于所述像素类型的分布将每个像素块转换为相应的MV0块包括:确定第一所选择像素块具有非双峰分布,使得仅存在或主要存在中间范围像素,并且作为响应,对所述第一所选择像素块中的仅中间范围像素计算平均MV0;确定第二所选择像素块具有双峰分布,使得所述第二所选择像素块包括至少一个前景像素和至少一个背景像素,并且作为响应,对所述第二所选择像素块中的仅前景像素计算平均MV0;以及将每个平均MV0设置为所述相应的MV0块的MV0值。7.如权利要求1所述的方法,其中输出所述一组MV1块和所述一组MV0块包括:输出所述一组MV1块和所述一组MV0块与帧级元数据和图像数据以用于图像处理。8.如权利要求7所述的方法,其中将所述图像数据分离成具有运动矢量的对象和不具有运动矢量的对象,并且所述具有运动矢量的对象在与所述不具有运动矢量的对象分离的通道上发送。9.如权利要求8所述的方法,其中不具有运动矢量的对象包括:叠加、粒子效应、场景转变、GUI元素、枪标线、和/或烟雾效应。10.如权利要求1所述的方法,其还包括:对每个MV0和每个MV1应用双重确认过程,其中所述双重确认过程包括确认每个相关联的深度值。
11.如权利要求10所述的方法,其中应用所述双重确认过程包括:基于最近的双重确认MV1和/或MV0调整一个或多个未确认的MV1和/或MV0。12.如权利要求10所述的方法,其中应用所述双重确认过程包括:针对所述当前帧中的所选择像素,响应于所选择像素在所述当前帧中的坐标匹配使用所选择像素的所述MV1或所述MV0映射回先前帧的所述像素的坐标,对所选择像素的所述MV1或所述MV0进行双重确认,所选择像素的所述坐标包括深度坐标。13.一种用于渲染3D图形的系统,其包括:一个或多个处理器和非暂时性存储器,所述一个或多个处理器和非暂时性存储器被分配以形成:3D运动矢量模块,所述3D运动矢量模块被配置为从游戏引擎接收3D模型...

【专利技术属性】
技术研发人员:张洪敏司马苗韩宗明刘贡献陈军华程国华刘宝辰N
申请(专利权)人:逐点半导体上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1