用于视频编码的自适应搜索窗口定位的方法和系统与流程

文档序号:17977858发布日期:2019-06-21 23:54阅读:212来源:国知局
用于视频编码的自适应搜索窗口定位的方法和系统与流程

本申请要求2014年8月1日提交的美国专利申请号14/450,094的权益,所述美国专利申请以引用的方式并入本文中,就好像是完全陈述那样。

发明领域

本申请总体上涉及视频编码,并且更具体地,涉及运动补偿预测。

背景

视频编码器通常应用运动补偿预测,以便通过利用连续视频帧之间的时间相关性来减少编码的数据量。运动补偿预测是根据参考视频帧的变换来描述当前视频帧的过程。运动补偿预测基于以下事实:一个视频帧与另一个视频帧之间的唯一差异通常是摄像机移动的结果或者帧中对象移动的结果。这意味着表示一个帧的许多信息将与下一个帧中所使用的信息相同。

运动补偿预测由以下组成:为当前帧中的每个块找到参考帧内的“最佳可能”匹配。然而,就计算复杂性和存储带宽而言,搜索整个参考帧是价格高昂的。因此,软件和硬件视频编码器的实际实现方式搜索位于预测运动矢量周围的参考帧内的选择区(即搜索范围),所述预测运动矢量基于先前编码块来计算。

此外,在许多情况下,编码器不包含存储整个参考帧的足够大的存储器。因此,在实践中,视频编码器通常仅存储参考帧的子集(即搜索窗口)。此搜索窗口的中心通常在参考帧中的相应地定位的块(即共位块)上。预测运动矢量随后限制为保持在此搜索窗口内部。搜索区是搜索窗口与搜索范围之间的重叠区域。

就计算复杂性和存储带宽而言,搜索窗口越大,视频编码过程变得越昂贵。具体地,搜索窗口越大,所需的存储器占用就越大,并且视频编码器的硬件实现方式的成本就越高。

另一方面,对于快速运动帧,由于对象将很可能移动到搜索窗口外部,所以较小的搜索窗口可能导致用于有效地捕获运动的运动补偿预测过程失败。实际上,这将导致将当前块编码成具有高能残差的帧内预测块或帧间预测块。在这两种情况下,编码器的率失真(R-D)性能将分别受到影响。因此,将需要较高的比特率来对视频帧进行编码。

概述

因此,所需要的是可使用具有有限存储器的视频编码器来有效地对快速运动视频进行编码的系统和方法。

在某些情况下,实施方案包括一种方法,所述方法用于:基于由产生参考视频帧和当前视频帧的应用程序所接收的运动信息来生成运动提示,以及将运动提示提供给视频以引导由视频编码器执行的运动补偿预测过程来对当前视频帧进行编码。此运动提示可用于更好地定位参考视频帧中的搜索窗口,以更好地捕获参考视频帧中的像素块的运动。因为搜索窗口更好地定位在参考视频帧中,所以可在不牺牲编码图像质量的水平的情况下减小执行所述编码过程所需的存储器。

下文参照附图详细地描述各实施方案的另外特征和优点,以及实施方案的结构和操作。应注意,各实施方案不限于本文所述的特定实施方案。本文呈现此类实施方案仅用于说明目的。基于本文中所包含的教义,其他实施方案对于相关领域普通技术人员将是显而易见的。

附图简述

并入本文并且形成本说明书的一部分的附图示出本公开的实施方案,并且与描述一起,进一步用于解释本公开的原理并且用于使相关领域技术人员能够制作并使用各实施方案。

图1示出可实现本公开的实施方案的系统的功能框图。

图2示出通常由视频编码器采用以使用参考视频帧来对当前视频帧进行编码的运动补偿预测过程。

图3示出根据本公开的实施方案的用于利用与呈现的视频帧相关联的运动提示以更有效地对所呈现的视频帧进行编码的系统的功能框图。

图4示出根据本公开的实施方案的将呈现的视频帧划分成区域和子区域,以便使用运动提示来更有效地对所呈现的视频帧进行编码。

图5示出根据本公开的实施方案的识别搜索窗口位置,以便使用运动提示来更有效地对所呈现的视频帧进行编码。

图6示出根据本公开的实施方案的识别额外的搜索窗口位置,以便使用运动提示来更有效地对所呈现的视频帧进行编码。

图7示出根据本公开的实施方案的用于使用运动提示来引导由视频编码器所执行的运动补偿预测过程的方法的流程图。

图8示出根据本公开的实施方案的用于生成运动矢量的系统的功能框图,所述运动矢量用于引导由视频编码器所执行的运动补偿预测过程。

图9示出根据本公开的实施方案的用于确定运动提示以引导由视频编码器所执行的运动补偿预测过程的方法的流程图。

图10示出可用于实现本公开的各方面的示例性计算机系统的框图。

将参照附图对本公开的实施方案进行描述。元件首次出现在其中的附图通常是由对应参考编号中的最左侧的数字指示。

优选实施方案的详述

在以下描述中,阐述众多特定细节以便提供对本公开的实施方案的全面理解。然而,对本领域技术人员显而易见的是,可在没有这些特定细节的情况下实践各实施方案,包括结构、系统和方法。本文中的描述和表示是由本领域那些经验丰富或者熟练的技术人员用来将他们的工作要旨传达给本领域的其他技术人员的常用手段。在其他情况下,众所周知的方法、程序、部件和流程(circuitry)未进行详细描述,以便避免不必要地模糊本公开的各个方面。

在本说明书中,参考“一个实施方案”、“实施方案”、“示例性实施方案”等表明所描述的实施方案可包括某一特定特征、结构或特性,但是每个实施方案可能不一定包括所述特定特征、结构或特性。此外,此类措词不一定指同一实施方案。此外,当结合一个实施方案来描述某一特定特征、结构或特性时,应当认为,无论是否明确描述,使得此类特征、结构或特性结合其他实施方案起作用是在本领域的技术人员知识范围内的。

1.综述

本公开涉及与一种系统和方法有关的实施方案,所述系统和方法用于:基于由产生呈现的视频帧的应用程序所接收的信息来利用运动提示,以便更有效地对所呈现的视频帧进行编码。在描述系统和方法的另外细节之前,提供视频编码的简要综述。

一般来说,视频编码是通过消除冗余图像信息来减少对所呈现的视频帧的序列进行编码所需的比特量的过程。例如,视频帧的序列中紧密邻近的视频帧通常是非常类似的并且通常仅在以下方面不同:它们所描绘的场景中的一个或多个对象在连续帧之间略微移动。视频编码被配置来通过针对紧密匹配将要编码的当前视频帧中的像素块的像素块来搜索参考视频帧,来在至少一个实例中利用视频帧之间的此时间冗余度。

视频编码器利用以下事实:通常不需要存储或传输当前视频帧中的对于参考视频帧中的紧密匹配的像素块来说是冗余的像素块。相反,视频编码器基于参考视频帧中的紧密匹配的像素块来形成当前视频帧中的像素块的预测,以确定冗余信息,并且随后从当前视频帧中的像素块中减去预测,从而仅留下残差。此过程通常称为运动补偿预测。随后可在没有冗余信息的情况下将残差(或基于残差确定的信息)发送到接收装置,以减少传输当前视频帧所需的比特量。

视频解码器可基于残差来重构当前视频帧中的像素块。可使用例如由视频编码器执行的相同预测方法来基于参考视频帧中的紧密匹配的像素块来预测冗余信息。

在一个实施方案中,本公开的系统和方法利用与所呈现的视频帧的序列相关联的全局运动提示,以改善由视频编码器执行的运动补偿预测过程来对所呈现的视频帧的序列进行编码。如上所述的运动补偿预测包括搜索参考视频帧中的紧密匹配将要编码的当前视频帧中的像素块的像素块。改善此搜索过程可减少用于对当前视频帧中的像素块进行编码的时间量和/或比特量。

在另一个实施方案中,本公开的系统和方法利用与所呈现的视频帧的序列相关联的半全局运动提示,以改善由视频编码器执行的运动补偿预测过程来对所呈现的视频帧的序列进行编码。

如本领域普通技术人员基于本文的教导将理解的,可在运动提示是可用的应用程序中使用上述本公开的系统和方法的实施方案。例如,可在接收与运动信息相关联的用户输入命令的视频游戏中使用本公开的方法和系统以便生成运动提示。

以下参照附图更详细地描述本公开的这些和其他特征以及各种实施方案的结构和操作。

2.示例性操作环境

图1示出可实现本公开的实施方案的示例性操作环境的功能框图100。框图100包括应用程序101、呈现的视频帧102、视频编码器103和运动估计104。

应用程序101可为产生用于呈现和显示的视频帧的终端用户应用程序,诸如视频游戏、视频编辑应用程序、计算机辅助设计(CAD)应用程序、计算机辅助制造应用程序等。

一旦呈现,所呈现的视频帧102的序列可提供给视频编码器103以便进行编码,以减少将所呈现的视频帧102的序列进行存储或者通过网络传输到接收装置所需的比特量。例如,视频编码器103通过消除冗余图像信息来减少存储或传输所呈现的视频帧102的序列所需的比特量。在一个示例中,呈现的视频帧102的序列中紧密邻近的视频帧通常是非常类似的,并且通常仅在以下方面不同:它们所描绘的场景中的一个或多个对象在视频帧之间略微移动。

运动估计104可被配置来通过针对紧密匹配将要编码的当前视频帧中的像素块的像素块来搜索所呈现的视频帧102的序列中的参考视频帧,来在至少一个示例中利用视频帧之间的此时间冗余度。当前视频帧和参考视频帧可为所呈现的视频帧102的序列中的连续视频帧,或者可在时间上间隔得更远。假设参考视频帧中的紧密匹配的像素块已传输到接收装置,运动估计104利用以下事实:通常不需要向接收装置发送当前视频帧中的对于参考视频帧中的紧密匹配的像素块来说是冗余的像素块的内容。相反,运动估计104基于参考视频帧中的紧密匹配的像素块来形成像素块的预测,以确定冗余信息,并且随后从像素块中减去预测,从而仅留下残差。此过程称为运动补偿预测。随后可在没有冗余信息的情况下将残差(或基于残差确定的信息)发送到接收装置,以减少传输当前视频帧所需的比特量。

图2示出根据本发明的实施方案的由视频编码器106采用以对像素块进行编码的传统的运动补偿预测过程200的另外细节。如上所述,运动补偿预测过程可包括搜索参考视频帧201中的紧密匹配将要编码的当前视频帧206中的像素块207的像素块。因为就存储器和计算复杂性而言,搜索整个参考视频帧201可能是价格高昂的,所以软件和硬件视频编码器的实际实现方式可搜索参考视频帧201的称为搜索范围202的选择区。搜索范围202可位于基于先前编码的像素块计算的预测运动矢量205周围的参考视频帧201内。

在许多情况下,特别是在硬件编码器实现方式中,视频编码器可能未装备有存储整个参考视频帧201的足够大的存储器。因此,可存储参考视频帧201的称为搜索窗口203的子集,并且预测运动矢量205可限制成保持在搜索窗口203内部。搜索窗口203的中心通常可位于参考视频帧203中的像素块204上,所述像素块204位于与当前视频帧206中的像素块207相同的相对位置处。此像素块204通常可称为共位块。如图2所示,搜索范围202的一部分可在搜索窗口203的外部。在这种实例中,实际的搜索区208是搜索窗口203与搜索范围202之间的重叠区域。

通常,搜索窗口203越小,所需的存储器占用越小,并且实现图1所示的视频编码器103的成本越低。但是对于描绘相对快速运动场景的视频帧来说,或者当将与将要编码的帧相距较大时间距离的帧用作参考帧时,过度限制搜索窗口203的尺寸可导致用于有效捕获视频帧之间的运动的运动补偿预测过程失败。因为由像素块207描绘的对象将可能已移动到搜索窗口203外部,所以发生失败。实际上,这可导致将像素块207编码成具有高能残差的帧内预测块或帧间预测块。在任一情况下,用于对像素块207进行编码的比特数通常将需要增加,以便维持与搜索窗口203是足够大以更好地捕获视频帧之间的运动的情况相同的编码图像质量水平。如将在以下部分中描述的,本公开的系统和方法的实施方案可通过利用与参考视频帧201和当前视频帧206相关联的运动提示来有助于减轻搜索窗口203的尺寸与对像素块207进行编码所需的比特数之间的这种折衷。

3.用于自适应定位视频编码的搜索窗口的系统和方法

图3示出根据本公开的实施方案的基本上类似于图1中的功能框图100的功能框图300,除了已添加自适应搜索窗口定位器304并且已对现有框进行一些修改之外。具体地,在至少一个实施方案中,应用程序301已被修改以便提供与所呈现的视频帧302的序列相关联的运动提示308来作为输出。

自适应搜索窗口定位器304可为应用程序301与运动估计305之间的媒介,在所述自适应搜索窗口定位器304上使用运动补偿预测来对由应用程序301产生的场景进行编码。自适应搜索窗口定位器304可通过使用运动提示308智能地搜索匹配的像素块来使得运动估计更有效。在一个实施方案中,自适应搜索窗口定位器304包含在视频编码器303内。

在一个示例中,自适应搜索窗口定位器304被配置来处理运动提示308,以引导由运动估计305执行的运动补偿预测过程。在一个实施方案中,运动估计305包含在视频编码器303内。在一个实施方案中,运动提示308可包括单个运动矢量。如本领域普通技术人员将理解的,运动提示308也可用来生成单个运动矢量。此运动矢量可与整个当前视频帧206相关联,并且预测与参考视频帧201相关联的所有块的运动。换言之,此单个运动矢量构成全局运动提示。

在另一个实施方案中,运动提示308可包括多个不同的运动矢量。可替代地,在另一个实施方案中,运动提示308可用来生成多个不同的运动矢量。每个运动矢量与当前视频帧206中的不同图像区域相关联,并且每个运动矢量被用来预测与参考视频帧201中的对应区域相关联的块的运动。换言之,在这两个实施方案中,运动提示308提供半全局运动提示。

无论运动提示308是否与单个运动矢量或多个运动矢量相关联,运动提示308都可由视频编码器303用来更有效地对当前视频帧206中的像素块207进行编码。具体地,由应用程序301提供的运动提示308可用来发现与像素块207位于其中的当前视频帧206的图像区域相关联的运动矢量。此运动矢量可随后用来更好地将搜索窗口203定位在参考视频帧201中,以便从参考视频帧201更好地捕获像素块207的运动。因为搜索窗口206被更好地定位以从参考视频帧201捕获像素块207的运动,所以可使得所述搜索窗口206更小而不增加对像素块207进行编码所需的比特数,同时还维持编码图像质量的水平。

作为上述的结果,可在各种情况下获得或表现出某些益处。例如,作为以上描述的运动提示的结果,采用本文描述的实施方案的各方面的云服务器或其他远程服务器可更快地和/或通过减少的处理和/或功率要求来对帧进行编码。此外,这样呈现的帧可由终端用户装置的用户看起来像是具有感知的更高质量,或者可替代地具有现有技术的相同质量但是具有减少的延迟。因此,包括这种云服务器或其他远程服务器以及一个或多个终端用户装置的系统可以更高的效率来操作。

现在参考图4,示出根据本公开的实施方案的自适应搜索窗口定位器304的操作的另外细节。具体地,图4详细描述使用与运动提示308相关联的一个或多个运动矢量,以便辅助对当前视频帧206中的与参考视频帧201不同的一个或多个图像区域进行编码。

在一个示例中,应用程序301在当前视频帧206中生成一个或多个应用区域。每个应用区域的尺寸和位置可由应用程序301确定。例如,在图4中,当前视频帧206由三个应用区域组成。例如,应用区域401位于当前视频帧206的右下方。如本领域普通技术人员将理解的,可使用各种策略来选择应用区域的尺寸和位置。

自适应搜索窗口定位器304可使不同的运动矢量与每个应用区域相关联。每个运动矢量可基于由应用程序301生成的运动提示308。在一个实施方案中,每个运动矢量直接包括在运动提示308中。在另一个实施方案中,每个运动矢量从运动提示308生成。如本领域普通技术人员将理解的,运动矢量可由应用程序301或自适应搜索窗口定位器304生成。此外,如本领域普通技术人员将理解的,运动提示308可基于用户输入型和非用户输入型的运动信息。例如,运动提示308可基于用户在玩视频游戏应用程序时输入的命令。

接下来,可通过自适应搜索窗口定位器304将一个或多个应用区域划分成一个或多个子区域。例如,应用区域401被划分成子区域402、404、406、408和410。每个子区域的尺寸和位置可由自适应搜索窗口定位器304确定。

子区域的间隔尺寸可控制运动估计的准确度与存储器流量要求和计算复杂性之间的平衡。如本领域普通技术人员将理解的,可利用各种策略来实现这种平衡。例如,一种策略由以下组成:将当前视频帧分割成一组相等大小的子区域。另一种可能更优的策略由以下组成:基于在整个先前视频帧上的运动矢量分布、当前视频帧与参考视频帧之间的时间差、以及由应用程序提供的场景改变提示来选择子区域尺寸和位置。

可基于与对应的应用区域相关联的运动矢量来对每个子区域中的像素块进行编码。例如,基于与应用区域401相关联的运动矢量来对子区域402、404、406、408和410进行编码。

在一个示例中,在将一个或多个应用区域划分成一个或多个子区域之后,为每个子区域限定锚定块。在一个实施方案中,锚定块被限定为当前视频帧206的子区域的第一块。例如,在图4中,锚定块412是应用区域401内的子区域402的第一块。

现在参考图5,示出根据本公开的实施方案的自适应搜索窗口定位器304的操作的另外细节。具体地,在限定锚定块之后,自适应搜索窗口定位器304决定在何处定位搜索窗口来对当前视频帧中的块进行编码。针对每个子区域来确定在何处放置搜索窗口。

在一个示例中,为了对子区域中的像素块进行编码,搜索窗口的中心可首先位于平移了相关联的运动矢量的相关联的锚定块的共位块位置上。例如,在图5中,当前视频帧505中的像素块506对应于子区域402中的锚定块412。并且像素块506对应于参考视频帧501中的共位块503。因此,搜索窗口502的位置在共位块503平移了运动矢量504的位置处。

可替代地,如果应用程序未提供运动提示,那么搜索窗口在没有平移的情况下其中心位于参考视频帧中的锚定块的共位块位置上。例如,在图5中,搜索窗口502的中心将位于参考视频帧501中的共位块503上。

在提供的运动提示的情况下,首先通过搜索窗口502来对锚定块进行编码,所述搜索窗口502的中心位于平移了相关联的运动矢量的锚定块的共位块位置上。如果由运动估计305报告的通过此搜索窗口位置对锚定块进行编码的R-D成本高于阈值,那么自适应搜索窗口定位器304评估将搜索窗口定位在其他位置处的率失真(R-D)成本。如本领域普通技术人员将理解的,所述阈值可设置为用于平衡对像素块进行编码所需的比特数与这样做时的计算复杂性的值。此外,在一个实施方案中,阈值可取决于编码策略而自适应地改变。

图6示出根据本公开的实施方案的评估将搜索窗口定位在这些其他位置处的R-D成本的过程。在一个示例中,搜索窗口603最初定位在平移了运动矢量602的像素块601处。此初始位置对应于图5中的搜索窗口502的位置。随后,识别额外的搜索窗口位置。例如,在图6中,识别七个额外的搜索窗口位置604。如本领域普通技术人员将理解的,额外的搜索窗口位置604的数量可基于计算复杂性与视频编码效率之间的平衡。

可使用各种策略来选择额外的搜索窗口位置604。这些策略可基于先前编码的视频帧或者在同一个视频帧内的先前编码的块。如本领域普通技术人员将理解的,一种策略将是:在初始搜索窗口位置603周围选择N个不均匀采样位置,即定位在平移了相关联的运动矢量的共位块处的搜索窗口。

在识别额外的搜索窗口位置604的数量和位置之后,自适应搜索窗口定位器304评估将搜索窗口定位在额外的搜索窗口位置604中的每一个处的R-D成本。如果额外的搜索窗口位置604中的最低R-D成本仍高于或等于以上设置的阈值,那么搜索窗口的位置保持在搜索窗口位置603处。换言之,搜索窗口的中心仍位于平移了相关联的运动矢量的锚定块的共位块位置上,例如图6中的搜索窗口603。另一方面,如果额外的搜索窗口位置604中的最低R-D成本低于阈值,那么搜索窗口定位在具有最低R-D成本的额外的搜索窗口位置604处。

一旦选择最终的搜索窗口位置,就使用最终的搜索窗口位置来对当前子区域中的非锚定块进行编码。然而,基于非锚定块与锚定块之间的位置差异来使最终的搜索窗口位置移位。随后,在对一个子区域中的块进行编码之后,对所述对应的应用区域中的其他子区域进行编码。这些其他子区域继承同一个最终的搜索窗口位置。然而,基于所述区域的非锚定块与锚定块之间的位置差异来使最终的搜索窗口位置类似地移位。

现参考图7,示出根据本公开的实施方案的描绘用于基于运动提示来自适应地定位用于视频编码的搜索窗口的方法700的流程图。在一个示例中,方法700可由如上参考图3-6所描述的自适应搜索窗口定位器304来实现。然而,应注意,所述方法也可由其他系统和部件来实现。还应注意,流程图700的一些步骤不必发生和/或不必以图7所示的顺序发生。

在步骤702处,从应用程序301接收与将要编码的当前视频帧和参考视频帧相关联的运动提示308。如本领域普通技术人员将理解的,所接收的运动提示308可基于用户输入型和非用户输入型的运动信息。

在步骤704处,将当前视频帧划分成一个或多个应用区域。在一个实施方案中,整个当前视频帧构成应用区域。在另一个实施方案中,将当前视频帧划分成多个应用区域。如本领域普通技术人员将理解的,可使用各种策略来选择这些应用区域的尺寸和位置。在一个实施方案中,应用程序301限定视频帧的划分策略。

此外,将一个或多个应用区域划分成一个或多个子区域。在一个实施方案中,此划分由自适应搜索窗口定位器304来执行。子区域的间隔尺寸控制运动估计的准确度与存储器流量要求和计算复杂性之间的平衡。在一个实施方案中,在单个应用区域的情况下,仅生成单个子区域。在另一个实施方案中,将应用区域分割成一组相等尺寸的子区域。在另一个实施方案中,基于在整个先前视频帧上的运动矢量分布、当前视频帧与参考视频帧之间的时间差、以及由应用程序301提供的场景改变提示来将应用区域分割成子区域。

在步骤706处,使用步骤702的接收的运动提示308来将一个或多个运动矢量与一个或多个应用区域相关联。在一个实施方案中,每个运动矢量包括在所接收的运动提示308中。在另一个实施方案中,每个运动矢量从运动提示308生成。如本领域普通技术人员将理解的,运动矢量可由应用程序301或自适应搜索窗口定位器304生成。在一个实施方案中,一个或多个运动矢量中的每个运动矢量与一个或多个应用区域中的一个应用区域相关联。如本领域普通技术人员将理解的,将运动矢量与应用区域相关联可由应用程序301或自适应搜索窗口定位器304来执行。

在步骤708处,将一个或多个应用区域划分成子区域。在一个实施方案中,每个子区域的尺寸和位置由自适应搜索窗口定位器304来确定。一个或多个子区域的间隔尺寸控制运动估计的准确度与存储器流量要求和计算复杂性之间的平衡。如本领域普通技术人员将理解的,可利用各种策略来实现这种平衡。

在将一个或多个应用区域划分成子区域之后,为每个子区域限定锚定块。在一个实施方案中,锚定块被限定为子区域的第一块。

在步骤710处,为每个子区域确定搜索窗口位置。搜索窗口的位置基于与对应的应用区域相关联的运动矢量。搜索窗口的中心最初位于平移了相关联的运动矢量的相关联的锚定块的共位块位置上。锚定块随后在此位置处通过搜索窗口来编码。如果在此搜索窗口位置处对锚定块进行编码的R-D成本高于阈值,那么尝试额外的搜索窗口位置。可使用各种策略来选择额外的搜索窗口位置。

在识别额外的搜索窗口位置之后,计算将搜索窗口定位在每个额外的搜索窗口位置处的R-D成本。如果额外的搜索窗口位置中的最低R-D成本仍高于或等于以上设置的阈值,那么搜索窗口的位置保持在初始搜索窗口位置处。另一方面,如果额外的搜索窗口位置中的最低R-D成本低于阈值,那么搜索窗口定位在具有最低R-D成本的额外的搜索窗口位置处。

在步骤712处,使用最终的搜索窗口位置来对锚定块进行编码。此外,使用最终的搜索窗口位置来对子区域中的所有非锚定块进行编码。然而,对于非锚定块,基于每个非锚定块与锚定块之间的位置差异来使最终的搜索窗口位置移位。

在对一个子区域进行编码之后,对所述对应的应用区域中的其他子区域进行编码。每个其他子区域继承同一个最终的搜索窗口位置。然而,针对每个子区域的对应的锚定块来调整搜索窗口位置。此外,对于非锚定块,基于每个非锚定块与锚定块之间的位置差异来类似地使搜索窗口位置移位。

在一个实施方案中,使用图3的示例性系统以便进行说明,可基于由产生参考视频帧和当前视频帧的应用程序301所接收的运动信息来生成运动提示308。应用程序301可随后将与呈现的视频帧的序列相关联的运动提示308提供给视频编码器303。

呈现可包括以下过程:通过将三维场景投影到对应于由虚拟摄像机观察到的视图的二维平面上来获得视频帧。可在呈现过程期间计算与三维场景中的对象距虚拟摄像机的距离有关的深度信息,以便确定三维场景中的哪些对象在所呈现的视频帧中应当和不应当对于用户可见。例如,三维场景中的某些对象不应当对用户可见,因为它们位于三维场景中的不透明的其他对象的后方。

参考图8,示出根据本公开的实施方案的在生成运动提示时由应用程序301分析的摄像机操作和深度信息的另外细节。

在示例性操作中,应用程序301在参考视频帧201中选择图像区域804。应用程序301可随后将深度值与图像区域804中的二维点802(即像素)相关联。在一个实施方案中,二维点802被选择为图像区域804的重心,并且深度值被设置为在图像区域804中的二维点(即像素)的平均深度值。在一个实施方案中,图像区域804中的二维点的深度值对应于它们在三维场景808中描绘的对象距虚拟摄像机810的距离。

应用程序301可随后将二维点802映射回三维场景808中的三维点806。如本领域普通技术人员将理解的,二维点802到三维点806的映射可为反向呈现过程,并且可使用参考视频帧201中的二维点802的位置、其相关联的深度值、以及用于呈现参考视频帧201的虚拟摄像机814的位置和取向来执行。虚拟摄像机810的位置和取向可用于应用程序301。

应用程序301可通过基于用于呈现当前视频帧206的虚拟摄像机814的位置和取向呈现三维点806而在当前视频帧206中将三维点806映射到二维点812(即像素)。虚拟摄像机814的位置和取向可类似地提供给应用程序301。

应用程序301可基于二维点802与二维点812的位置差异来确定运动矢量816。

应用程序301可使用运动矢量816(或基于运动矢量816确定的一些信息)来确定运动提示308。应用程序301将运动提示308提供给视频编码器303。如上所述,视频编码器303可使用运动提示308以在参考视频帧201中定位搜索窗口,同时执行运动补偿预测来更有效地对当前视频帧206的图像区域818中的像素块进行编码。

现参考图9,示出根据本公开的实施方案的用于生成运动矢量以引导由视频编码器执行的运动补偿预测过程的方法的流程图900。如上所述,流程图900的方法可由应用程序301来实现。然而,应注意,所述方法也可由其他系统和部件来实现。还应注意,流程图900的一些步骤不必发生或者不必以图9所示的顺序发生。

在步骤902处,接收与将要编码的当前视频帧和参考视频帧相关联的摄像机和深度信息。

在步骤904处,可基于与二维点相关联的深度值并且基于在呈现参考帧的过程中的虚拟摄像机的位置和取向来将如通过虚拟摄像机观察的参考视频帧的区域中的二维点(即像素)映射到三维点。在一个实施方案中,二维点可被选择为参考视频帧的重心,并且深度值被设置为参考视频帧的图像区域中的二维点(即像素)的平均深度值。在一个实施方案中,参考视频的图像区域中的二维点的深度值可对应于它们描绘的对象距用于呈现二维点的虚拟摄像机的距离。

在步骤906处,可基于在呈现帧的过程中的虚拟摄像机的位置和取向来在如通过虚拟摄像机观察的当前视频帧中将三维点映射到二维点。

在步骤908处,可基于参考视频帧中的二维点与当前视频帧中的二维点的位置差异来确定运动矢量。

在步骤910处,可基于运动矢量来确定运动提示。运动提示可随后提供给视频编码器,以引导由视频编码器执行的运动补偿预测过程来对当前视频帧进行编码。例如,视频编码器可使用运动提示来在参考视频帧中定位搜索窗口,同时执行运动补偿预测来更有效地对当前视频帧中的像素块进行编码。

应注意,以上参考图3-9描述的本公开的系统和方法的实施方案可用于云游戏服务中操作的服务器,以便改善例如延迟量、下游带宽、和/或与通过其服务播放视频游戏相关联的计算处理能力。如本领域普通技术人员基于本文的教导将理解的,本发明的方法和系统还可用在与呈现的或捕获的视频帧相关联的运动提示信息可用的其他应用程序中。例如,本公开的方法和系统可用在接收与运动信息相关联的用户命令的视频游戏应用程序中。

4.示例性计算机系统实现方式

对于相关领域的技术人员将显而易见的是,如本文所描述的,本公开的各种元件和特征可以使用模拟电路和/或数字电路的硬件来实现、通过由一个或多个通用或专用处理器执行指令而以软件来实现、或者作为硬件和软件的组合来实现。

为了完整性的目的,提供通用计算机系统的以下描述。本公开的实施方案可以硬件来实现,或者作为软件和硬件的组合来实现。因此,本公开的实施方案可在计算机系统或其他处理系统的环境中实现。图10中示出这种计算机系统1000的示例。图1和图3中描绘的所有模块可在一个或多个不同的计算机系统1000上执行。此外,图7描绘的流程图的每个步骤可在一个或多个不同的计算机系统1000上实现。

计算机系统1000包括一个或多个处理器,诸如处理器1004。处理器1004可为专用或通用数字信号处理器。处理器1004连接到通信基础设施1002(例如,总线或网络)。各种软件实现方式都是依据此示例性计算机系统来描述。在阅读此描述之后,对相关领域技术人员来说变得显而易知的是,如何使用其他计算机系统和/或计算机架构来实现所公开的实施方案。

计算机系统1000还包括主存储器1006,优选地是随机存取存储器(RAM),并且还可包括辅助存储器1008。辅助存储器1008可包括例如代表软盘驱动器、磁带驱动器,光盘驱动器等的硬盘驱动器1010和/或可装卸存储驱动器1012。可装卸存储驱动器1012以众所周知的方式读取和/或写入可装卸存储单元1016。可装卸存储单元1016代表由可装卸存储驱动器1012读取和写入的软盘、磁带、光盘等。如相关领域技术人员将了解的,可装卸存储单元1016包括其中存储有计算机软件和/或数据的计算机可用存储介质。

在替代实现方式中,辅助存储器1008可包括用于允许计算机程序或其他指令加载到计算机系统1000中的其他类似装置。此类装置可包括例如可装卸存储单元1018和接口1014。此类装置的示例可包括:程序盒式存储器和盒式接口(诸如在视频游戏装置中所发现的)、可装卸存储芯片(诸如EPROM或PROM)和相关联的插槽、指状驱动器和USB端口、以及允许软件和数据从可装卸存储单元1018传输到计算机系统1000的其他可装卸存储单元1018和接口1014。

计算机系统1000还可包括通信接口1020。通信接口1020允许在计算机系统1000与外部装置之间传输软件和数据。通信接口1020的示例可包括调制解调器、网络接口(诸如以太网卡)、通信端口、PCMCIA插槽和卡等。通过通信接口1020传输的软件和数据是呈可为电子信号、电磁信号、光信号或能够由通信接口1020接收的其他信号的形式。这些信号通过通信路径1022提供给通信接口1020。通信路径1022携载信号,并且可使用电线或电缆、光纤、电话线、蜂窝电话链路、RF链路和其他通信信道来实现。

如本文所使用的,术语“计算机程序介质”和“计算机可读介质”用于总体上指代有形存储介质,诸如可装卸存储单元1016和1018或安装在硬盘驱动器1010中的硬盘。这些计算机程序产品是用于向计算机系统1000提供软件的装置。

计算机程序(也称为计算机控制逻辑)存储在主存储器1006和/或辅助存储器1008中。计算机程序还可通过通信接口1020来接收。此类计算机程序在执行时使得计算机系统1000能够实施如本文论述的本公开。具体地,计算机程序在执行时使得处理器1004能够实现本公开的过程,诸如本文所述的任何方法。因此,此类计算机程序代表计算机系统1000的控制器。在所公开的实施方案是使用软件来实现的情况下,软件可存储在计算机程序产品中,并且可使用可装卸存储驱动器1012、接口1014或通信接口1020来加载到计算机系统1000中。

在另一个实施方案中,本公开的特征主要使用例如像专用集成电路(ASIC)和门阵列的硬件部件以硬件来实现。实现硬件状态机以使执行本文描述的功能也将对于相关领域的技术人员显而易见。

概述以及摘要部分可阐明如发明人所构想的一个或多个但非所有的示例性实施方案,并且因此,并不意图通过任何方式对实施方案和所附权利要求书进行限制。

已借助于说明特定功能的实现方式和其关系的功能性建构基元在上文描述本文的实施方案。为便于描述,本文中将所述功能性建构基元的边界已任意地定义。只要合适执行特定功能和其关系,就可界定替代边界。

特定实施方案的前文描述将充分地揭露本实施方案的一般特性,以使得其他人通过应用本领域中的知识,在无不当实验且不背离本实施方案的一般概念的情况下,可轻易地针对各种应用程序对这些特定实施方案进行修改和/或改变。因此,基于本文呈现的教示和指导,这些改变和修改意图在所公开实施方案的等效物的含义和范围内。应了解,本文的措辞或术语是出于描述而非限制的目的,以使得本说明书的术语或措辞应由本领域技术人员根据教示和指导进行解释。

* * *

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