掌桥专利:专业的专利平台
掌桥专利
首页

通过输入扰动的运动估计

文献发布时间:2023-06-19 11:55:48


通过输入扰动的运动估计

相关申请的交叉引用

本申请要求于2018年12月10日提交的美国非临时专利申请第16/215,547号的优先权,通过引用将其全部内容并入本文。

技术领域

本公开大体上涉及处理系统,更具体地,涉及用于处理系统中图形处理的一种或多种技术。

背景技术

计算设备通常利用图形处理单元(GPU)来加速图形数据的渲染以供显示。例如,此类计算设备可以包括计算机工作站、诸如所谓智能电话的移动电话、嵌入式系统、个人计算机、平板计算机和视频游戏控制台。GPU执行包括多个处理阶段的图形处理管线,该多个处理阶段一起操作以执行图形处理命令并输出帧。中央处理单元(CPU)可以通过向GPU发出一个或多个图形处理命令来控制GPU的操作。现代的CPU通常能够并发地执行多个应用程序,每个应用程序可能需要在执行期间利用GPU。为显示器上的视觉呈现提供内容的设备通常包括图形处理单元(GPU)。

通常,设备的GPU被配置为执行图形处理管线中的每个过程。然而,随着无线通信和内容(例如,游戏内容或使用GPU渲染的任何其他内容)流的出现,已经发展出对分布式图形处理的需求。例如,已经发展出了对将由第一设备(例如,诸如游戏控制台、虚拟现实设备或任何其他设备的客户端设备)的GPU执行的处理卸载(offload)到第二设备(例如,服务器、诸如托管移动游戏的服务器)的需求。

发明内容

以下呈现了一个或多个方面的简化概述,以便提供对这些方面的基本理解。此概述不是所有预期方面的广泛概述,并且既不旨在标识所有方面的关键或重要元素,也不旨在描绘任何或所有方面的范围。其唯一目的是以简化形式呈现一个或多个方面的一些概念,作为稍后呈现的更详细描述的序言。

在公开的方面,提供了方法、计算机可读介质和第一装置。该装置可以是GPU。在一个方面,GPU可以生成在帧的第一子集中的至少一个第一运动矢量,第一运动矢量为帧的第一子集中的图像数据提供第一运动估计。GPU还可以扰动(perturb)帧的第一子集中的图像数据。此外,GPU可以基于扰动的图像数据生成至少一个第二运动矢量,第二运动矢量为帧的第一子集中的图像数据提供第二运动估计。此外,GPU可以比较第一运动矢量与第二运动矢量。此外,GPU可以基于第一运动矢量与第二运动矢量之间的比较来确定用于帧的第一子集中的图像数据的运动估计的至少一个第三运动矢量。

在附图和以下说明书中阐述了本公开的一个或多个示例的细节。从说明书和附图以及从权利要求中,本公开的其他特征、目标和优点将是显而易见的。

附图说明

图1是示出根据本公开的技术的示例内容生成和编解码(coding)系统的框图。

图2示出了根据本公开的运动估计的示例。

图3A和图3B示出了根据本公开的对其执行运动估计的图像的示例。

图4A示出了根据本公开的运动估计的另一示例。

图4B示出了根据本公开的运动估计的另一示例。

图5A和图5B示出了根据本公开的运动估计的另一示例。

图6示出了根据公开的一种或多种技术的示例方法的示例流程图。

具体实施方式

以下参考附图更全面地描述了系统、装置、计算机程序产品和方法的各种方面。然而,本公开可以以许多不同的形式体现并且不应当被解释为限于贯穿本公开所呈现的任何特定的结构或功能。相反,提供这些方面使得本公开将是彻底的和完整的,并且将向本领域的技术人员全面地传达本公开的范围。基于本文的教导,本领域的技术人员应当理解,本公开的范围旨在覆盖本文所公开的系统、装置、计算机程序产品和方法的任何方面,无论是独立于本公开的其他方面还是与本公开的其他方面结合实现。例如,可以使用本文阐述的任何数量的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖这样的装置或方法,该装置或方法使用除了本文阐述的公开的各个方面之外或者本文阐述的公开的各个方面之外的其他结构、功能或者结构以及功能来实践。本文公开的任何方面可以由权利要求的一个或多个要素来体现。

尽管本文描述了各种方面,但是这些方面的许多变体和置换落入本公开的范围内。尽管提出了本公开的方面一些潜在益处和优势,但是本公开的范围不旨在限于特定的益处、用途或目标。相反,本公开的方面旨在广泛地可用于不同的无线技术、系统配置、网络和传输协议,其中的一些在图中和以下的描述中通过实例来说明。具体实施方式和附图仅是对本公开的说明而非限制,本公开的范围由所附的权利要求及其等价物来定义。

参考各种装置和方法呈现了几个方面。通过各种块、组件、电路、过程、算法等(统称为“元素”)在以下具体实施方式中描述了、并且在附图中示出了这些方面和方法。可以使用电子硬件、计算机软件或其任何组合来实现这些元素。将此类元素实现为硬件还是软件取决于特定应用和施加在整个系统上的设计约束。

举例来说,可以将元素或者元素的任意部分或者元素的任意组合实现为包括一个或多个处理器(其也可以被称为处理单元)的“处理系统”。处理器的示例包括微处理器、微控制器、图形处理单元(GPU)、通用GPU(GPGPU)、中央处理单元(CPU)、应用处理器、数字信号处理器(DSP)、精简指令集计算(RISC)处理器、片上系统(SoC)、基带处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门逻辑、分立硬件电路以及被配置为执行贯穿本公开描述的各种功能的其他合适的硬件。处理系统中的一个或多个处理器可以执行软件。软件应被广泛地解释为平均指令、指令集、代码、代码段、程序代码、程序、子程序、软件组件、应用程序、软件应用程序、软件包、例程、子例程、对象、可执行文件、执行线程、过程、函数等等,无论是被称为软件、固件、中间件、微代码、硬件描述语言或者其他。术语应用程序可以指软件。如本文所述,一种或多种技术可以指被配置为执行一个或多个功能的应用程序(即,软件)。在此示例中,应用程序可以被存储在存储器(例如,处理器的片上存储器、系统存储器或者任何其他存储器)上。本文描述的硬件(诸如处理器)可以被配置为执行应用程序。例如,应用程序可以被描述为包括代码,当由硬件执行时,该代码使得该硬件执行本文描述的一种或多种技术。作为示例,硬件可以从存储器访问代码并且执行从处理器访问的代码以执行本文所描述的一种或多种技术。在一些示例中,在本公开中标识组件。在此类示例中,组件可以是硬件、软件或者其组合。组件可以是单独的组件或者是单个组件的子组件。

因此,在本文所描述的一个或多个示例中,所述的功能可以在硬件、软件或者其任何组合中实现。如果在软件中实现,则功能可以被存储在计算机可读介质上的一个或多个指令或代码上,或被编码为计算机可读介质上的一个或多个指令或代码。计算机可读介质包括计算机存储介质。存储介质可以是可由计算机访问的任何可用的介质。举例来说,而非限制,这样的计算机可读介质可以包括随机访问存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、光盘存储、磁盘存储、其他磁存储设备、上述类型的计算机可读介质的组合、或者可以被用于以可以由计算机访问的指令或数据结构的形式来存储计算机可执行代码的任何其他介质。

大体上,本公开描述了用于使分布式图形处理管线跨越多个设备、改善图形的内容的编解码、并且/或者减少处理单元(即,被配置为执行本文所述的一种或多种技术的任何处理器,例如图形处理单元(GPU))的负载的技术。例如,本公开描述了用于通信系统中的图形处理的技术。贯穿本公开描述了其他示例益处。

如本文所使用的,术语“编解码器”一般可以指编码器和/或解码器。例如,对“内容编解码器”的引用可以包括对内容编码器和/或内容解码器的引用。类似地,如本文所使用的,术语“编解码”一般可以指编码和/或解码。如本文所使用的,术语“编码”和“压缩”可以相互交换地使用。类似地,术语“解码”和“解压缩”可以相互交换地使用。

如本文所使用的,术语“内容”的实例可以指术语“视频”、“图形内容”、“图像”,并且反之亦然。不论这些术语被用作形容词、名词还是其他词性,都是如此。例如,对“内容编码器”的引用可以包括对“视频编解码器”、“图形内容编解码器”或“图像编解码器”的引用;对“视频编解码器”、“图形内容编解码器”或“图像编解码器”的引用可以包括对“内容编解码器”的引用。作为另一示例,对向内容编解码器提供内容的处理单元的引用可以包括对向视频编解码器提供图形内容的处理单元的引用。在一些示例中,如本文所使用的,术语“图形内容”可以指由图形处理管线中的一个或多个过程产生的内容。在一些示例中,如本文所使用的,术语“图形内容”可以指由被配置为执行图形处理的处理单元产生的内容。在一些示例中,如本文所使用的,术语“图形内容”可以指由图形处理单元产生的内容。

如本文所使用的,术语“内容”的实例可以指图形内容或显示内容。在一些示例中,如本文所使用的,术语“图形内容”可以指由被配置为执行图形处理的处理单元生成的内容。例如,术语“图形内容”可以指由图形处理管线的一个或多个过程生成的内容。在一些示例中,如本文所使用的,术语“图形内容”可以指由图形处理单元生成的内容。在一些示例中,如本文所使用的,术语“显示内容”可以指由被配置为执行显示处理的处理单元生成的内容。在一些示例中,如本文所使用的,术语“显示内容”可以指由显示处理单元生成的内容。图形内容可以被处理成显示内容。例如,图形处理单元可以将诸如帧的图形内容输出到缓冲器(其可以被称为帧缓冲器)。显示处理单元可以从缓冲器读取图形内容(例如一个或多个帧),并且对其执行一种或多种显示处理技术以生成显示内容。例如,显示处理单元可以被配置为对一个或多个渲染层执行组合以生成帧。作为另一示例,显示处理单元可以被配置为将两层或更多层组合、混合或以其他方式结合在一起形成单个帧。显示处理单元可以被配置为对帧执行缩放(例如,放大或缩小)。在一些示例中,帧可以指的是层。在其他示例中,帧可以指已经混合在一起以形成帧的两层或更多层(即,帧包括两层或更多层,并且包括两层或更多层的帧可以随后被混合)。

如本文所引用的,第一组件(例如,处理单元)可以向第二组件(例如,内容编解码器)提供诸如图形内容的内容。在一些示例中,第一组件可以通过将内容存储在第二组件可访问的存储器中来向第二组件提供内容。在这样的示例中,第二组件可以被配置为读取由第一组件存储在存储器中的内容。在其他示例中,第一组件可以向第二组件提供内容,而没有任何中间组件(例如,没有存储器或另一组件)。在这样的示例中,第一组件可以被描述为直接向第二组件提供内容。例如,第一组件可以向第二组件输出内容,并且第二组件可以被配置为将从第一组件接收的内容存储在诸如缓冲器的存储器中。

图1是示出被配置为实现本公开的一种或多种技术的示例内容生成和编解码系统100的框图。内容生成和编解码系统100包括源设备102和目的地设备104。根据本文所描述的技术,源设备102可以被配置为在传输到目的地设备104之前,使用内容编码器108对由处理单元106生成的图形内容进行编码。内容编码器108可以被配置为输出具有一比特率的比特流。处理单元106可以被配置为基于处理单元106如何生成图形内容来控制和/或影响内容编码器108的比特率。

源设备102可以包括用于执行本文所描述的各种功能的一个或多个组件(或电路)。目的地设备104可以包括用于执行本文所描述的各种功能的一个或多个组件(或电路)。在一些示例中,源设备102中的一个或多个组件可以是片上系统(SOC)的组件。类似地,在一些示例中,目的地设备104中的一个或多个组件可以是SOC的组件。

源设备102可以包括被配置为执行本公开中的一种或多种技术的一个或多个组件。在所示的示例中,源设备102可以包括处理单元106、内容编码器108、系统存储器110和通信接口112。处理单元106可以包括内部存储器109。处理单元106可以被配置为(例如,在图形处理管线107-1中)执行图形处理。内容编码器108可以包括内部存储器111。

处理单元106和内容编码器108可访问处理单元106和内容编码器108外部的存储器、诸如系统存储器110。例如,处理单元106和内容编码器108可以被配置为从外部存储器(诸如系统存储器110)读取和/或向其写入。处理单元106和内容编码器108可以通过总线通信地耦合到系统存储器110。在一些示例中,处理单元106和内容编码器108可以通过总线或不同的连接彼此通信地耦合。

内容编码器108可以被配置为从任何源(诸如系统存储器110和/或处理单元106)接收图形内容。系统存储器110可以被配置为存储由处理单元106生成的图形内容。例如,处理单元106可被配置为将图形内容存储在系统存储器110中。内容编码器108可以被配置为以像素数据的形式(例如,从系统存储器110和/或处理单元106)接收图形内容。以其他方式描述为,内容编码器108可以被配置为接收由处理单元106产生的图形内容的像素数据。例如,内容编码器108可以被配置为接收图形内容中的一个或多个像素的每个分量(例如,每个颜色分量)的值。作为示例,红(R)、绿(G)、蓝(B)(RGB)颜色空间中的像素可以包括红分量的第一值、绿分量的第二值和蓝分量的第三值。

内部存储器109、系统存储器110和/或内部存储器111可以包括一个或多个易失性或非易失性存储器或存储设备。在一些示例中,内部存储器109、系统存储器110和/或内部存储器111可以包括随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁数据介质或光存储介质或任何其他类型的存储器。

根据一些示例,内部存储器109、系统存储器110和/或内部存储器111可以是非暂时性存储介质。术语“非暂时性”可以指示存储介质没有体现在载波或传播信号中。然而,术语“非暂时性”不应被解释为意味着内部存储器109、系统存储器110和/或内部存储器111是不可移动的或者其内容是静态的。作为一个示例,系统存储器110可以从源设备102移除并移动到另一个设备。作为另一个例子,系统存储器110可以是不可从源设备102移除的。

处理单元106可以是中央处理单元(CPU)、图形处理单元(GPU)、通用GPU(GPGPU)或者可以被配置为执行图形处理的任何其他处理单元。在一些示例中,处理单元106可以被集成到源设备102的主板中。在一些示例中,处理单元106可能可以存在于安装在源设备102的主板中的端口中的图形卡上,或者可以以其他方式整合在被配置为与源设备102互操作的外围设备内。

处理单元106可以包括一个或多个处理器,例如一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、分立逻辑、软件、硬件、固件、其他等效的集成或分立逻辑电路或者其任意组合。如果技术部分地在软件中实现,则处理单元106可以将软件的指令存储在合适的非暂时性计算机可读存储介质中(例如,内部存储器109),并且可以使用一个或多个处理器在硬件中执行该指令,以执行本公开的技术。任何前述(包括硬件、软件、硬件和软件的组合等)可以被认为是一个或多个处理器。

内容编码器108可以是被配置为执行内容编码的任何处理单元。在一些示例中,内容编码器108可以被集成到源设备102的主板中。内容编码器108可以包括一个或多个处理器,例如一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、分立逻辑、软件、硬件、固件、其他等效的集成或分立逻辑电路或者其任意组合。如果技术部分地在软件中实现,则内容编码器108可以将软件的指令存储在合适的非暂时性计算机可读存储介质中(例如,内部存储器111),并且可以使用一个或多个处理器在硬件中执行该指令,以执行本公开的技术。任何前述(包括硬件、软件、硬件和软件的组合等)可以被认为是一个或多个处理器。

通信接口112可以包括接收器114和发送器116。接收器114可以被配置为执行本文关于源设备102所描述的任何接收功能。例如,接收器114可以被配置为从目的地设备104接收信息,该信息可以包括对内容的请求。在一些示例中,响应于接收对内容的请求,源设备102可以被配置为执行本文所描述的一种或多种技术,诸如产生或者以其他方式生成图形内容以供向目的地设备104的传输。发送器116可以被配置为执行本文关于源设备102所描述的任何发送功能。例如,发送器116可以被配置为向目的地设备104发送编码的内容(诸如,由处理单元和内容编码器108生成的编码的图形内容(即,由处理单元106产生图形内容,内容编码器108接收该图形内容作为输入并产生或以其他方式生成编码的图形内容))。接收器114和发送器116可以被结合成收发器118。在这样的示例中,收发器118可以被配置为执行本文关于源设备102所描述的任何接收功能和/或发送功能。

目的地1104可以包括被配置为执行本公开中的一种或多种技术的一个或多个组件。在所示的示例中,目的地设备可以包括处理单元120、内容解码器122、系统存储器124、通信接口126以及一个或多个显示器131。对显示器131的引用可以指一个或多个显示器131。例如,显示器131可以包括单个显示器和多个显示器。显示器131可以包括第一显示器和第二显示器。第一显示器可以是左眼显示器并且第二显示器可以是右眼显示器。在一些示例中,第一显示器和第二显示器可以接收不同的帧以供在其上呈现。在其它示例中,第一显示器和第二显示器可以接收相同的帧以供在其上呈现。

处理单元120可以包括内部存储器121。处理单元120可以被配置(例如,在图形处理管线107-2中)为执行图形处理。内容解码器122可以包括内部存储器123。在一些示例中,目的地设备104可以包括显示处理器(诸如显示处理器127),以在由一个或多个显示器131呈现之前对由处理单元120生成的一个或多个帧执行一个或多个显示处理技术。显示处理器127可以被配置为执行显示处理。例如,显示处理器127可以被配置为对由处理单元120生成的一个或多个帧执行一个或多个显示处理技术。一个或多个显示器131可以被配置为显示使用解码的内容生成了的内容。例如,显示处理器127可以被配置为处理由处理单元120生成的一个或多个帧,其中使用从编码的内容导出了的解码的内容由处理单元120来生成该一个或多个帧,该编码的内容是从源设备102接收的。而显示处理器127可以被配置为对由处理单元120生成的一个或多个帧进行显示处理。一个或多个显示器131可以被配置为显示或以其他方式呈现由显示处理器127处理的帧。在一些示例中,一个或多个显示器可以包括以下中的一个或多个:液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、投影显示设备、增强现实显示设备、虚拟现实显示设备、头戴式显示器或任何其他类型的显示设备。

处理单元120和内容解码器122可以访问处理单元120和内容解码器122外部的存储器(诸如系统存储器124)。例如,处理单元120和内容解码器122可以被配置为从外部存储器(诸如系统存储器124)读取和/或向其写入。处理单元120和内容解码器122可以通过总线通信地耦合到系统存储器124。在一些示例中,处理单元120和内容解码器122可以通过总线或不同的连接彼此通信地耦合。

内容解码器122可以被配置为从任何源(诸如系统存储器124和/或通信接口126)接收图形内容。系统存储器124可以被配置为存储接收的编码的图形内容(诸如从源设备102接收的编码的图形内容)。内容解码器122可以被配置为以编码的像素数据的形式(例如,从系统存储器124和/或通信接口126)接收编码的图形内容。内容解码器12可以被配置为对编码的图形内容进行解码。

内部存储器121、系统存储器124和/或内部存储器123可以包括一个或多个易失性或非易失性存储器或存储设备。在一些示例中,内部存储器121、系统存储器124和/或内部存储器123可以包括随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁数据介质或光存储介质或任何其他类型的存储器。

根据一些示例,内部存储器121、系统存储器124和/或内部存储器123可以是非暂时性存储介质。术语“非暂时性”可以指示存储介质没有体现在载波或传播信号中。然而,术语“非暂时性”不应被解释为意味着内部存储器121、系统存储器124和/或内部存储器123是不可移动的或者其内容是静态的。作为一个示例,系统存储器124可以从目的地设备104移除并移动到另一个设备。作为另一个例子,系统存储器124可以是不可从目的地设备104移除的。

处理单元120可以是中央处理单元(CPU)、图形处理单元(GPU)、通用GPU(GPGPU)或者可以被配置为执行图形处理的任何其他处理单元。在一些示例中,处理单元120可以被集成到目的地设备104的主板中。在一些示例中,处理单元120可以存在于安装在目的地设备104的主板中的端口中的图形卡上,或者可以以其他方式整合在被配置为与目的地设备104互操作的外围设备中。

处理单元120可以包括一个或多个处理器,例如一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、分立逻辑、软件、硬件、固件、其他等效的集成或分立逻辑电路或者其任意组合。如果技术部分地在软件中实现,则处理单元120可以将软件的指令存储在合适的非暂时性计算机可读存储介质中(例如,内部存储器121),并且可以使用一个或多个处理器在硬件中执行该指令,以执行本公开的技术。任何前述(包括硬件、软件、硬件和软件的组合等)可以被认为是一个或多个处理器。

内容解码器122可以是被配置为执行内容解码的任何处理单元。在一些示例中,内容解码器122可以被集成到目的地设备104的主板中。内容解码器122可以包括一个或多个处理器,例如一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、分立逻辑、软件、硬件、固件、其他等效的集成或分立逻辑电路或者其任意组合。如果技术部分地在软件中实现,则内容解码器122可以将软件的指令存储在合适的非暂时性计算机可读存储介质中(例如,内部存储器123),并且可以使用一个或多个处理器在硬件中执行该指令,以执行本公开的技术。任何前述(包括硬件、软件、硬件和软件的组合等)可以被认为是一个或多个处理器。

通信接口126可以包括接收器128和发送器130。接收器128可以被配置为执行本文关于目的地设备104所描述的任何接收功能。例如,接收器128可以被配置为从源设备102接收信息,该信息可以包括编码的内容(例如由源设备102的处理单元106和内容编码器108所产生的或以其他方式所生成的编码的图形内容(即,由处理单元106产生图形内容,内容编码器108接收该图形内容作为输入以产生或以其他方式生成编码的图形内容))。作为另一个示例,接收器114可以被配置为从目的地设备104接收位置信息,该位置信息可以是编码的或非编码的(即,未编码的)。此外,接收器128可以被配置为从源设备102接收位置信息。在一些示例中,目的地设备104可以被配置为根据本文所描述的技术对从源设备102接收的编码的图形内容进行解码。例如,内容解码器122可以被配置为对编码的图形内容进行解码以产生或以其他方式生成解码的图形内容。处理单元120可以被配置为使用解码的图形内容以产生或以其他方式生成一个或多个帧以供在一个或多个显示器131上呈现。发送器130可以被配置为执行本文关于目的地设备104所描述的任何发送功能。例如,发送器130可以被配置为向源设备102发送信息,该信息可以包括对内容的请求。接收器128和发送器130可以被结合成收发器132。在这样的示例中,收发器132可以被配置为执行本文关于目的地设备104所描述的任何接收功能和/或发送功能。

内容生成和编解码系统100的内容编码器108和内容解码器122表示计算组件(例如,处理单元)的示例,该计算组件可以被配置为根据本公开中所描述的各种示例来分别执行对内容进行编码和对内容进行解码的一种或多种技术。在一些示例中,内容编码器108和内容解码器122可以被配置为根据内容编解码标准(诸如视频编解码标准、显示流压缩标准或图像压缩标准)操作。

如图1所示,源设备102可以被配置为生成编码的内容。因此,源设备102可以被称为内容编码设备或内容编码装置。目的地设备104可以被配置为对由源设备102所生成的编码的内容进行解码。因此,目的地设备104可以被称为内容解码设备或内容解码装置。在一些示例中,如所示的,源设备102和目的地设备104可以是单独的设备。在其他示例中,源设备102和目的地设备104可以在同一计算设备上或是同一计算设备的部分。在任一示例中,图形处理管线可以分布在两个设备之间。例如,单个图形处理管线可以包括多个图形处理。图形处理管线107-1可以包括多个图形处理中的一个或多个图形处理。类似地,图形处理管线107-2可以包括多个图形处理中的一个或多个图形处理。就这一点而言,被图形处理管线107-2连接或以其他方式跟随的图形处理管线107-1可以导致完整的图形处理管线。以其他方式来描述,图形处理管线107-1可以是部分的图形处理管线并且图形处理管线107-2可以是部分的图形处理管线,其当结合时,导致分布式图形处理管线。

再参考图1,在某些方面,图形处理管线107-2可以包括被配置为生成在帧的第一子集中的至少一个第一运动矢量的生成组件,第一运动矢量为帧的第一子集中的图像数据提供第一运动估计。图形处理管线107-2还可以包括被配置为扰动帧的第一子集中的图像数据的扰动组件。此外,生成组件可以被配置为基于帧的第一子集中扰动的图像生成至少一个第二运动矢量,第二运动矢量为帧的第一子集中的图像数据提供第二运动估计。图形处理管线107-2还可以包括被配置为比较第一运动矢量与第二运动矢量的比较组件。此外,图形处理管线107-2可以包括确定组件198,确定组件198被配置为基于第一运动矢量与第二运动矢量之间的比较,确定用于帧的第一子集中的图像数据的运动估计的至少一个第三运动矢量。在一些示例中,通过在源设备102和目的地设备104之间分布图形处理管线,目的地设备可以能够呈现以其他方式不能渲染并且因此无法呈现的图形内容。贯穿本公开描述了其他示例益处。

如本文所述,诸如源设备102和/或目的地设备104的设备可以指被配置为执行本文所描述的一种或多种技术的任何设备、装置或系统。例如,设备可以是服务器、基站、用户设备、客户端设备、站、接入点、计算机(例如,个人计算机、台式计算机、膝上型计算机、平板计算机、计算机工作站或大型计算机)、最终产品、装置、电话、智能电话、服务器、视频游戏平台或控制台、手持设备(例如,便携式视频游戏设备或个人数字助手(PDA))、可穿戴计算设备(例如,智能手表、增强现实设备或虚拟现实设备)、非可穿戴设备、增强现实设备、虚拟现实设备、显示器(例如,显示设备)、电视、电视机顶盒、中间网络设备、数字媒体播放器、视频流设备、内容流设备、车载计算机、任何移动设备、被配置为生成图形内容的任何设备或者被配置为执行本文所描述的一种或多种技术的任何设备。

源设备102可以被配置为与目的地设备104通信。例如目的地设备104可以被配置为从源设备102接收编码的内容。在一些示例中,源设备102与目的地设备104之间的通信耦合被显示为链路134。链路134可以包括能够将编码的内容从源设备102移动到目的地设备104的任何类型的介质或设备。

在图1的示例中,链路134可以包括通信介质,以使源设备102能够实时地将编码的内容发送到目的地设备104。编码的内容可以根据通信标准(诸如无线通信标准)进行调制,并被发送到目的地设备104。通信介质可以包括任何无线或有线通信介质,诸如射频(RF)频谱或者一个或多个物理传输线。通信介质可以形成基于分组的网络(诸如局域网、广域网或例如因特网的全球网)的部分。通信介质可以包括路由器、交换机、基站或者可以有助于从源设备102到目的地设备104的通信的任何其他设备。在其他示例中,链路134可以是源设备102和目的地设备104之间的点对点连接,诸如有线或无线显示链路连接(例如,HDMI链路、显示端口链路、MIPI DSI链路或者编码的内容可以通过其从源设备102穿越到目的地设备104的另一链路)。

在另一个示例中,链路134可以包括被配置为存储由源设备102生成的编码的内容的存储介质。在此示例中,目的地设备104可以被配置为访问存储介质。存储介质可以包括诸如蓝光光盘、DVD、CD-ROM、闪存或者用于存储编码的内容的其他合适的数字存储介质的各种本地访问的数据存储介质。

在另一个示例中,链路134可以包括被配置为存储由源设备102生成的编码的内容的服务器或另一个中间存储设备。在此示例中,目的地设备104可以被配置为访问存储在服务器或其他中间存储设备上的编码的内容。服务器可以是能够存储编码的内容并将该编码的内容发送到目的地设备104的类型的服务器。

本文描述的设备可以被配置为彼此通信,诸如源设备102和目的地设备104。通信可以包括信息的发送和/或接收。信息可以在一个或多个消息中被携带。作为示例,与第二设备通信的第一设备可以被描述为通信地耦合到第二设备或以其他方式与第二设备通信地耦合。例如,客户端设备和服务器可以通信地耦合。作为另一个示例,服务器可以通信地耦合到多个客户端设备。作为另一个示例,本文所描述的被配置为执行本公开中的一种或多种技术的任何设备可以通信地耦合到被配置为执行本公开中的一种或多种技术的一个或多个其他设备。在一些示例中,当通信地耦合时,两个设备可以主动地发送或接收信息,或者可以被配置为发送或接收信息。如果没有通信地耦合,任何两个设备可以被配置为诸如根据符合一个或多个通信标准的一个或多个通信协议彼此通信地耦合。对“任何两个设备”的引用不意味着仅两个设备可以被配置为彼此通信地耦合;而是,任何两个设备包括两个以上的设备。例如,第一设备可以与第二设备通信地耦合,并且第一设备可以与第三设备通信地耦合。在这样的示例中,第一设备可以是服务器。

参考图1,源设备102可以被描述为通信地耦合到目的地设备104。在一些示例中,术语“通信地耦合”可以指直接的或者间接的通信连接。在一些示例中,链路134可以表示源设备102与目的地设备104之间的通信耦合。通信连接可以是有线的和/或无线的。有线连接可以指信息可以通过其传送的传导路径、轨迹或物理介质(不包括无线物理介质)。传导路径可以指任何长度的任何导体(诸如传导垫(pad)、传导通孔(via)、传导平面、传导轨迹或者任何传导介质)。直接通信连接可以指其中中间组件驻留在两个通信地耦合的组件之间的连接。间接通信连接可以指其中至少一个中间组件驻留在两个通信地耦合的组件之间的连接。根据一个或多个通信协议,通信地耦合的两个设备可以通过一个或多个不同类型的网络(例如,无线网络和/或有线网络)彼此通信。在一些示例中,通信地耦合的两个设备可以通过关联过程彼此关联。在其他示例中,通信地耦合的两个设备可以彼此通信,而不涉及关联过程。例如,诸如源设备102的设备可以被配置为单播、广播、多播或以其他方式将信息(例如,编码的内容)发送至一个或多个其他设备(例如,一个或多个目的地设备,其包括目的地设备104)。此示例中的目的地设备104可以被描述为与一个或多个其他设备的每个通信地耦合。在一些示例中,通信连接可以使信息的发送和/或接收成为可能。例如,根据本公开的技术,通信地耦合到第二设备的第一设备可以被配置为向第二设备发送信息和/或从第二设备接收信息。类似地,根据本公开的技术,此示例中的第二设备可以被配置为向第一设备发送信息和/或从第一设备接收信息。在一些示例中,术语“通信地耦合”可以指临时的、间歇的或者永久的通信连接。

本文所描述的任何设备(诸如源设备102和目的地设备104)可以被配置为根据一个或多个通信协议操作。例如,源设备102可以被配置为使用一个或多个通信协议与目的地设备104通信(例如,从目的地设备104接收信息和/或向目的地设备104发送信息)。在这样的示例中,源设备102可以被描述为通过连接与目的地设备104通信。该连接可以是遵守或者以其他方式符合通信协议。类似地,目的地设备104可以被配置为使用一个或多个通信协议与源设备102通信(例如,从源设备102接收信息或向源设备102发送信息)。在这样的示例中,目的地设备104可以被描述为通过连接与源设备102通信。该连接可以是遵守或者以其他方式符合通信协议。

如本文所使用的,术语“通信协议”可以指任何通信协议,诸如符合通信标准的通信协议等。如本文所使用的,术语“通信标准”可以包括任何通信标准,诸如无线通信标准和/或有线通信标准。无线通信标准可以对应于无线网络。作为示例,通信标准可以包括对应于无线个人区域网络(WPAN)标准的任何无线通信标准(诸如,蓝牙(例如,IEEE 802.15)、蓝牙低功率(BLE)(例如,IEEE 802.15.4))。作为另一个示例,通信标准可以包括对应于无线局域网络(WLAN)标准的任何无线通信标准(诸如WI-FI(例如,任何802.11标准,诸如802/11a、802.11b、802.11c、802.11n或者802.11ax))。作为另一个示例,通信标准可以包括对应于无线广域网络(WWAN)标准的任何无线通信标准(诸如3G、4G、4G LTE或者5G)。

参考图1,内容编码器108可以被配置为对图形内容进行编码。在一些示例中,内容编码器108可以被配置为将图形内容编码为一个或多个视频帧。当内容编码器108对内容进行编码时,内容编码器108可以生成比特流。比特流可以具有诸如比特/时间单位的比特率,其中时间单位可以是诸如秒或分的任何时间单位。比特流可以包括比特的序列,该比特的序列可以形成图形内容和相关联的数据的编解码的表示。为了生成比特流,内容编码器108可以被配置为对像素数据(诸如对应于着色的(shaded)纹理图集(texture atlas)的像素数据)执行编码操作。例如,当内容编码器108对作为输入被提供给内容编码器108的图像数据(例如,着色的纹理图集的一个或多个块)执行编码操作时,内容编码器108可以生成一系列编解码的图像和相关联的数据。相关联的数据可以包括编解码参数(诸如量化参数(QP))的集合。

运动估计是分析多个二维(2D)图像以及产生运动矢量的过程,该运动矢量描述区域从一个图像到另一图像的移动。本质上,运动估计产生可以描述对象如何在图像的某些部分内移动的运动矢量。运动矢量具有包括视频压缩、诸如运动模糊的后处理效果以及帧外推(extrapolation)或内插的各种用途。为了减轻被放在GPU上的渲染工作量,虚拟现实(VR)或增强现实(AR)系统可以利用运动估计以便从先前渲染的内容外推帧。通过这样做,其可以允许GPU以降低的速率渲染帧,用外推的帧代替渲染的内容来显示给用户。运动估计可能是有用的,因为在VR或AR系统中有强烈的驱动力来减少(例如,在GPU上的)渲染的工作量。本公开可以通过在GPU上渲染较少的帧并且使用运动估计来填充图像或运动矢量中的间隙来减少渲染工作量。此外,尽管可以对视频内容执行运动估计,但是本文所描述的运动估计可以利用GPU上实时被渲染的渲染内容。

在一些情况下,运动估计很难处理输入图像中的重复图案。例如,渲染的内容比其他内容(例如,照片内容)更频繁地具有重复图案,因为渲染的内容使用带有重复图案的纹理贴图(mapping)。在一些方面,运动估计技术可能在重复图案上有问题,因为这些技术尝试匹配从一个帧移动到另一个帧的对象。因为渲染的内容可能在一些情况中精确地重复图案,所以在运动估计不正确地尝试匹配运动的情况下可能有虚假运动匹配。例如,由于重复的图案运动估计可能跳过运动循环(cycle)并且造成对下一元素的不正确的贴图并且产生不正确的运动估计。此外,由于图像的许多区域可能匹配地同样好,因此一些系统可能难以正确地识别运动。在不正确的运动估计的这些区域中可能产生错误的运动矢量,这可能在依赖精确的运动识别的用例中导致重大的畸变(corruption)。由于渲染的内容可能包含重复纹理和图案的自由使用,因此随着渲染的内容运动估计用例的增加,不正确的运动估计可能是越来越大的问题。

本公开的一些方面可以提供用于识别错误的运动矢量的方法。通过正确地识别错误的运动矢量,可以将它们移除以产生更精确的运动估计。在一些方面,根据本公开的运动估计可以是一般运动估计过程之外的或在一般运动估计过程之上的。因此,本公开的一些方面可以多次(例如,两次)执行运动估计过程。在这些情况下,可以通过输入扰动执行运动估计,这可以导致运动估计中的整体改善。此具有输入扰动的运动估计可以被执行两次,其中可以对原始输入图像执行一遍(pass),并且可以对输入图像的扰动的版本执行第二遍。在一些方面,第一遍可以是通过发送输入图像并且产生结果运动矢量的未扰动的或者严格的一遍。第二遍可以是扰动遍,其中以某种方式扰动输入图像的运动矢量。当两遍均完成时,可以比较结果运动矢量以确定真实的运动和无效的运动(例如,由重复图案造成的)。在一些情况下,可以同时或并行执行第一遍和第二遍。原始的遍与扰动的遍之间匹配的结果矢量被识别为有效的,并且不匹配的矢量被丢弃为无效的。

本公开可以以多种方式执行输入扰动。在一些方面,本公开可以向图像引入足够的新的不规则性,使得其可以破坏运动估计。例如,通过向运动矢量引入新的不规则性,运动估计可以影响输入图像的某些区域(例如,重复图案区域)中的运动矢量。在一些情况下,这种不规则性可以是运动矢量的增量或差分值。在这些情况下,不应当有太多的增量或差分以至于丢失对真实对象的运动跟踪。因此,本公开可以在添加足够噪声以扰动输入图像但不太多以影响真实运动之间找到平衡。如上所述,本公开可以比较两个遍,例如未扰动的遍和扰动遍。运动估计在两个遍之间不对齐(not line up)的区域被识别为无关的或者错误的运动矢量。在一些示例中,可能有太多的扰动使得运动估计被显著地改变到影响实际运动的程度(point)。实际上,太多的扰动可能导致一些输入图像区域中的运动不能准确地跟随实际运动,而是错误重复图案的一些伪影。

图2示出了根据本公开的运动估计200的示例。图2显示了渲染内容块202和RGB扰动纹理块204二者都可以被输入到颜色空间转换遍206和208。如图2所示,颜色空间转换206和208可以导致运动估计210和212,运动估计210和212可以导致增量或差分分析214,然后可以导致运动矢量计算216。图2中的颜色空间转换206/208可以在转换为亮度(Y)、第一色度(U)和第二色度(V)(YUV)值时考虑前述的扰动。从RGB到YUV的转换可以是在GPU上执行扰动的有效的方式。如图2所示,一些方面可以首先对渲染的内容进行采样,然后扰动RGB值,然后基于这些值执行YUV转换。本公开的一些方面可以不涉及使用何种类型的YUV标准。例如,YUV转换的类型可以取决于所遵循的YUV标准。在其他方面,通过逐像素计算噪声可以在颜色空间转换之外完成此转换。此外,执行扰动的有效方式可以是将噪声作为另一个纹理输入。

在一些方面,扰动可以允许GPU确定运动矢量,然后渲染后续的帧。有效的扰动可以调整输入,足以破坏由重复图案导致的虚假的区域或特征匹配,但是可以不影响输入到真实运动的识别被削弱的程度。在本公开的一些方面,用于执行帧外推的VR或AR框架的运动估计路径可以在某些平台(例如,SDM845平台)上实施。如上所述,用于执行扰动的方法可以是颜色空间转换。渲染的内容通常可以在RGB颜色空间中并且运动估计可以在YUV颜色空间中。因此,在本公开执行运动估计之前,可以执行颜色空间转换。例如,可以在第一遍或未扰动的遍期间在GPU上执行颜色空间转换。本公开也可以对包含输入会被如何扰动的值的纹理进行采样。因此,本公开可以在颜色转换期间执行此调整,然后继续执行运动估计。

在一些情况下,可以通过向现有的RGB到YUV转换传递额外的噪声纹理(例如,通过使用转换着色器,该转换着色器应用某种幅度的均匀分布的随机RGB值)来完成前述的扰动。在一些方面,该幅度可以在颜色空间转换之前被加到输入图像的每个颜色通道上。在一些方面,在颜色空间转换内,可以执行加性噪声(addictive noise),然后可以对调整后的值执行颜色空间转换。转换着色器可以应用多个不同的幅度,例如5%幅度。幅度值可以是通过确定噪声何时可以消除过多的合理矢量来预先确定或者通过实验达到。实际上,此幅度值可以是灵活的,因为相同的幅度值可能不是很好地适用于每个图像。

在一些方面,不是仅仅应用恒定幅度的噪声,而是可以基于输入图像的方差改变幅度。例如,如果存在在特定区域中具有高对比区域的输入图像,则本公开可以应用较高程度的噪声纹理。在其他实例中,如果存在具有低方差和较软(softer)特征的图像,则本公开可以在扰动遍中应用较低水平的噪声。当基于图像的方差改变噪声的幅度时,本公开的一些方面可以获得改善的结果。例如,如果本公开确定区域的方差并且使用其确定要应用的噪声量,那么可以获得改善的运动估计。因此通过测量图像的每个局部区域的方差以及使用该方差确定要应用多少噪声,本公开可以改善检测错误运动矢量的能力并且减少意外丢弃真实运动的可能性。实际上,基于真实的输入图像,本公开可以以更多或更少的噪声来获得更有效的结果。

如上所述,由本公开应用的方差的量可以是内容依赖的。如果应用太多的噪声,那么真实特征的特征识别可能会被破坏。在一些示例中,根据图像的内容,10%幅度的噪声可能过高。例如,通过在某个区域应用太多的噪声,结果可能是在该区域中太多的错误运动矢量。随着噪声开始干扰实际对象跟踪,也可能有一些合理的运动矢量被识别为错误的。因此,如被应用太多的扰动,那么实际对象跟踪可能被打扰。例如,应用过多噪声可能导致输入图像上具有合理移动的一些区域不匹配,例如,增量或差分可能过高,这可以导致将合理的运动矢量认为是错误矢量的错误结论。简单来说,如果噪声量太高,调整过多,那么噪声量可能与实际矢量相差太多,并且噪声将淹没真实特征。因此,本公开可以评估输入图像以便适当地改变要应用的扰动的量。实际上,本公开的一些方面可以基于输入图像的特定内容来调节要应用于运动矢量的噪声或扰动的量。

图3A和3B分别示出了对其执行运动估计的图像300和310。由于可以对图像300或310执行运动估计,因此这些图像可以被称为运动估计或运动估计图像。如图3A所显示,图像300包括重复背景302和嵌入(inset)纹理图像304。在一些方面,重复背景302可以是静止的。嵌入纹理图像304可以在多个不同方向上移动,例如,在穿过重复背景302的方向上移动。图像300示出了根据本公开的可在硬件平台(例如SDM845平台)上执行的运动估计的一个示例。

在一些方面,通过处理输入图像或嵌入纹理图像304并获得结果运动矢量,图像300可以包括严格的或未扰动的遍。在这些方面,重复背景302中的“X”可能看起来好像是在向右或向左移动,因为它们将与其他“X”向右或向左匹配。在其他方面,图像300可以包括扰动遍,其中输入图像或嵌入纹理图像304的运动矢量以某种方式被扰动并且导致扰动的图像。在这些方面,可以将输入图像或插图纹理图像304例如向右或向左稍微移动,以产生扰动的图像,使得在重复背景302中不太可能得到相同的“X”匹配。例如,当图像304被扰动以产生扰动的图像时,与严格或未扰动的遍相比,可能存在不同的不正确的“X”匹配。

图3B显示了其是扰动遍的结果的图像310。例如,图像310可以是对图3A中的图像300被应用了扰动的结果。在图3B中,可以通过显示为灰色的重复背景312和嵌入纹理图像314显示图像310中的扰动。相比之下,图3A显示了在扰动遍之前,重复背景302和嵌入纹理图像304显示为黑色。实际上,在扰动遍期间,整个图像300可以被扰动,这可能导致整个图像310被扰动(例如显示为灰色而不是黑色)。对图像的扰动的结果可以以各种方式(例如图像在颜色上改变或褪色)来表现。例如,相较于图像300,图像310可以在颜色上褪色。在一些方面,扰动的结果可以被应用于整个图像。在其他方面,扰动的结果可以被应用于图像的特定部分。

在一些方面,当图像中“X”值的被扰动或者通过扰动被震动时,背景“X”更有可能向不同的方向移动,并且与先前遍不匹配。通过这样做,本公开可以比较严格遍和扰动遍之间的增量或差分。本质上,本公开可以比较严格遍和扰动遍之间共同的运动矢量。这些共同的运动矢量可能对应于真实的对象运动。本公开还可以进行两次以上的遍,使得除了严格遍和扰动遍之外,还可以有多个遍。此外,当执行两个以上的遍时,可以并行执行多个遍。虽然执行两次以上的遍可以提供更好的估计,但间接成本可能会对可以执行的遍的数量造成限制。

如上所述,本公开的一些示例可以不渲染每一帧。例如,根据本公开的GPU可以渲染每个其他帧并且仍利用渲染的内容的运动矢量。在一些方面,由于VR渲染的需求,GPU可能在资源上受到限制,因此不渲染每一帧可以节省GPU资源并且通过从GPU卸载渲染工作来达到特定帧速率。如前所述,本公开可以使用运动矢量和结果运动估计作为用于渲染每一帧的替代者或替换者。通过这样做,本公开可以节省GPU处的功率和性能。此外,这可以允许本公开在GPU处渲染更高质量帧。

在本公开的一些方面,当执行运动估计时,结果可能是单个矢量解。在这些情况下,可以针对未扰动或严格遍与扰动遍之间的偏差量设置阈值以确定某个矢量是合理的还是错误的。如上所述,这可以被称为计算增量或差分,并且增量或差分值可以被设置为任何优选的值。在使用增量来计算运动估计的一个示例中,如果某个矢量的遍之间的差小于增量,可以假定该矢量是来自未扰动遍的运动矢量。在另一个示例中,如果某个矢量的遍之间的差大于增量,可以假定存在零运动。本公开的方面也可以比较相邻矢量并确定它们的运动。本公开的一些方面还可以假定与具有不正确的估计相比,优选地不具有任何运动估计。本质上,可以做出没有运动估计优于不正确的估计的假定。

本公开可以提供对运动估计应用扰动的多种不同的方法。例如,如上所述,方差可以包括根据输入帧数据计算的局部图像方差。在一些方面,在运动估计期间可以产生方差作为额外的数据。因此,用于扰动的运动估计遍的方差数据可以取自未扰动的运动估计遍。此外,通过利用先前帧的方差数据来近似用于扰动的运动估计遍的方差数据。在一些方面,可以这样做以避免在当前帧的运动估计遍上丢失并行性。

本公开的一些方面可以提供应用前述的噪声扰动的着色器。例如,本公开可以使用以下代码用于这些类型的着色器:

在以上的示例代码中,texArray可以是输入图像,noiseTexture可以是噪声扰动纹理,perturbationFactor可以是应用的扰动量的缩放因子,vec3可以是输入图像纹理坐标,以及fragColor可以是输出片段颜色。

本公开还可以提供应用考虑了局部方差的噪声扰动的着色器。例如,本公开可以使用以下代码用于这些类型的作色器:

在以上示例代码中,texArray可以是输入图像,noiseTexture可以是噪声扰动纹理,varianceTexture可以是方差数据纹理,varianceSampleRange可以是要采样的方差纹理的区域的大小,varianceSampleSpread可以是方差纹理采样点位置之间的距离,perturbationFactor可以是应用的扰动量的缩放因子,vec3可以是输入图像纹理坐标,以及fragColor可以是输出片段颜色。

本公开还可以处理运动矢量的两个数组以检测偏差。例如,可以比较和利用来自前述两个遍的结果运动矢量。在一些方面,阈值可以基于用例对不正确的运动估计的偏差所设置的特定用例的调整(tuning)参数。如上所述,在利用原型VR的用例中,不产生运动估计比产生不正确的运动估计更好。因此,本公开的一些方面可以将阈值设为非常小的值(例如,0.001)。本公开可以使用以下代码来处理运动矢量的两个数组以检测偏差:

图4A示出了根据本公开的运动估计400的另一示例。如图4A所示,运动估计400包括帧402、重复背景404、嵌入纹理图像410、至少一个第一运动矢量412、至少一个第二运动矢量414以及至少一个第一运动矢量412与至少一个第二运动矢量414之间的差416。如图4A所示,在一些方面,可以在帧402的第一帧子集中生成至少一个第一运动矢量412。如图4A所示,在一些方面,第一帧子集可以位于重复背景404的部分中的嵌入纹理图像410上方。在其他方面,第一帧子集可以位于帧402的另一部分中。至少一个第一运动矢量412可以为第一帧子集中的图像数据提供运动估计。在一些方面,可以扰动第一帧子集中的图像数据。此外,可以基于第一帧子集中扰动的图像数据生成至少一个第二运动矢量414。至少一个第二运动矢量414可以为第一帧子集中的图像数据提供第二运动估计。此外,可以比较至少一个第一运动矢量412与至少一个第二运动矢量414。在一些方面,比较至少一个第一运动矢量412与至少一个第二运动矢量414可以包括确定至少一个第一运动矢量412与至少一个第二运动矢量414之间的差416。可以确定差416小于或大于阈值。在一些方面,以上比较可以被表达为函数,例如公式:f(v

在一些方面,基于至少一个第一运动矢量412与至少一个第二运动矢量414之间的比较,可以确定用于第一帧子集中的图像数据的运动估计的至少一个第三运动矢量。此外,当差416小于阈值时,可以将至少一个第三运动矢量设置为至少一个第一运动矢量。差416也可以被称为增量分析。如本文所述,在一些方面,差416可以是绝对值。基于以上,至少一个第三运动矢量可以被表达为以下公式:当|v

在一些情况下,可以确定至少一个第三运动矢量与至少一个第三运动矢量周围或附近的一个或多个相邻矢量之间的第二差。在这些情况下,如图4A所示,可以使用至少一个第三运动矢量周围或附近的一个或多个相邻矢量来确定第三运动矢量和相邻矢量之间的第二差。此外,如果差大于阈值并且/或者第二差小于阈值,则可以基于一个或多个相邻矢量来设置至少一个第三运动矢量。此外,前述的阈值可以基于第一帧子集中的图像数据的运动估计偏差。

图4B示出了根据本公开的运动估计450的另一个示例。如图4B中所示,运动估计450包括帧452、重复背景454、嵌入纹理图像460、至少一个第一运动矢量462、至少一个第二运动矢量464、至少一个第一运动矢量462与至少一个第二运动矢量464之间的差以及至少一个第四运动矢量472。在图4B中,如结合图4A中所描述的,可以生成在帧452的第一帧子集中的至少一个第一运动矢量462,其中至少一个第一运动矢量462可以为第一帧子集中的图像数据提供第一运动估计。如图4B所示,在一些方面,第一帧子集可以位于重复背景454的部分中的嵌入纹理图像460上方。在其它方面,第一帧子集可以位于帧452的另一部分。在一些情况下,可以扰动第一帧子集中的图像数据。此外,可以基于第一帧子集中扰动的图像数据生成至少一个第二运动矢量464,其中至少一个第二运动矢量464可以为第一帧子集中的图像数据提供第二运动估计。此外,可以比较至少一个第一运动矢量462与至少一个第二运动矢量464。在一些方面,比较至少一个第一运动矢量462与至少一个第二运动矢量464可以包括确定至少一个第一运动矢量462与至少一个第二运动矢量464之间的差466。可以确定差466小于或大于阈值。在一些方面,基于至少一个第一运动矢量462与至少一个第二运动矢量464之间的比较,可以为第一帧子集中的图像数据的运动估计确定至少一个第三运动矢量。

如图4B中所示,可以为帧452的第二帧子集的运动估计确定至少一个第四运动矢量472。如图4B中所示,在一些方面,第二帧子集可以位于重复背景454的部分中的第一帧子集下方以及嵌入纹理图像460上方。在一些方面,当差466大于或等于阈值时,可以确定至少一个第四运动矢量472。如图4B中所示,在一些方面,第二帧子集可以不同于第一帧子集。另外,可以基于至少一个第一运动矢量462、至少一个第二运动矢量464以及至少一个第四运动矢量472确定至少一个第三运动矢量。

在一些方面,扰动第一帧子集中的图像数据可以包括将图像数据的红(R)、绿(G)和蓝(B)(RGB)值调整一个值(例如,m)。在一些情况下,m可以不等于零。此外,m可以小于或等于5%,并且大于或等于-5%。此外,扰动量可以扰动第一帧子集中的图像数据,并且可以基于图像数据的RGB值的局部方差调节扰动量。此外,基于RGB值的先前方差可以近似图像数据的RGB值的局部方差。在其他方面,扰动量可以扰动第一帧子集中的图像数据,并且可以基于图像数据的亮度(Y)、第一色度(U)和第二色度(V)(YUV)值的局部方差调节扰动量。此外,可以将来自RGB图像数据的图像数据转换为YUV图像数据,其中可以在将RGB图像数据转换为YUV图像数据之前扰动图像数据。

图5A和图5B示出了根据本公开的运动估计500和550的示例。如图5A和图5B中所示,运动估计500和运动估计550包括对应的运动矢量来辅助运动估计。更具体地,图5A示出了没有扰动遍的运动估计500。因此,运动估计500可以包括不正确运动区域502和504。图5B示出了包括扰动遍的运动估计550。同样地,运动估计550可以不包括错误运动区域,因为这些运动矢量已经被识别为不正确的并且被移除。

图6示出了根据本公开的一种或多种技术的示例方法的示例流程图600。该方法可以由设备或GPU执行。该方法可以在运动估计的过程中协助GPU。

在602处,如结合图2、图3、图4A和图5B中的示例所述,GPU可以生成在帧的第一子集中的至少一个第一运动矢量。例如,第一运动矢量可以为帧的第一子集中的图像数据提供第一运动估计。在604处,如结合图2、图3、图4A和图5B中的示例所述,GPU可以扰动图像数据。在一些方面,GPU可以扰动帧中的所有图像数据。在其他方面,GPU可以扰动帧的第一子集中的图像数据。在其他方面,GPU可以扰动帧的第一子集之外的图像数据。此外,在606处,如结合图2、图3、图4A和图5B中的示例所述,GPU可以基于扰动的图像数据生成至少一个第二运动矢量。在一些方面,第二运动矢量可以为图像数据提供第二运动估计。在608处,如结合图2、图3、图4A和图5B中的示例所述,GPU可以比较第一运动矢量与第二运动矢量。此外,在610处,如结合图2、图3、图4A、图4B和图5B中的示例所述,GPU可以基于第一运动矢量与第二运动矢量之间的比较来确定用于图像数据的运动估计的至少一个第三运动矢量。

在一些方面,如结合图2中的示例所述,当比较第一运动矢量与第二运动会矢量时,GPU可以确定第一运动矢量与第二运动矢量之间的差。差也可以被称为增量分析。在一些情况下,差可以是绝对值。此外,如结合图2中的示例进一步所述,GPU可以确定差是否小于阈值。此外,如结合图2、图3、图4A、图4B和图5B中的示例所述,当差小于阈值时,可以将第三运动矢量设置为第一运动矢量。如结合图2中的示例所述,当差大于阈值时,GPU还可以确定用于帧的第二子集的运动估计的至少一个第四运动矢量。另外,帧的第二子集可以不同于帧的第一子集。在一些方面,如结合图2、图3、图4A、图4B和图5B中的示例所述,可以基于确定的第一运动矢量、第二运动矢量和第四运动矢量来确定第三运动矢量。

此外,如结合图2、图3、图4A、图4B和图5B中的示例所述,在一些方面,当差大于阈值时,可以将第三运动矢量设置为具有零运动值。在一些方面,如结合图2、图3、图4A、图4B和图5B中的示例所述,GPU可以确定第三运动矢量与第三运动矢量周围的一个或多个相邻矢量。在这些方面中,当差大于阈值并且第二差小于阈值时,可以基于一个或多个相邻矢量来设置第三运动矢量。

在其他方面,如结合图2、图3、图4A、图4B和图5B中的示例所述,前述的阈值可以基于帧的第一子集中的图像数据的运动估计公差(tolerance)。此外,如结合图2、图3、图4A、图4B和图5B中的示例所述,扰动帧的第一子集中的图像数据可以包括将图像数据的RGB值的幅度调节m。在一些情况下,m可以不等于零。此外,m的绝对值可以在-5%与5%之间,使得m可以小于或等于5%,并且大于或等于-5%。

在其他方面,如结合图2、图3、图4A、图4B和图5B中的示例所述,帧的第一子集中的图像数据可以被扰动一个扰动量,其中基于图像数据的RGB值的局部方差可以调节扰动量。如结合图2、图3、图4A、图4B和图5B中的示例所述,图像数据的RGB值的局部方差可以基于用于帧的第一子集中的图像数据的第一运动矢量。此外,如结合图2、图3、图4A、图4B和图5B中的示例所述,基于RGB值的先前方差可以近似图像数据的RGB值的局部方差。在其他方面,如结合图2、图3、图4A、图4B和图5B中的示例所述,帧的第一子集中的图像数据可以被扰动一个扰动量,其中可以基于图像数据的YUV值的局部方差调节扰动量。在其他方面,如结合图2、图3、图4A、图4B和图5B中的示例所述,GPU可以将图像数据从RGB图像数据转换为YUV图像数据,其中在将RGB图像数据转换为YUV图像数据之前扰动图像数据。

在一个配置中,提供了用于运动估计的装置。该装置可以是GPU中运动估计设备。在一个方面,运动估计设备可以是设备104内的处理单元120或者可以是设备104或另一设备内的某种其他硬件。装置可以包括用于生成在帧的第一子集中的至少一个第一运动矢量的部件。第一运动矢量可以为帧的第一子集中的图像数据提供第一运动估计。装置还可以包括用于扰动帧的第一子集中的图像数据的部件。此外,装置还可以包括用于基于帧的第一子集中的扰动的图像数据生成至少一个第二运动矢量。在一些方面中,第二运动矢量可以为帧的第一子集中的图像数据提供第二运动估计。装置还可以包括比较第一运动矢量与第二运动矢量的部件。此外装置可以包括用于基于第一运动矢量与第二运动矢量之间的比较,确定用于帧的第一子集中的图像数据的运动估计的至少一个第三运动矢量的部件。

在一些方面,用于比较第一运动矢量与第二运动矢量的部件可以被配置为确定第一运动矢量与第二运动矢量之间的差,并且确定差是否小于阈值。装置还可以包括用于在差大于阈值时,确定用于帧的第二子集的运动估计的至少一个第四运动矢量的部件。帧的第二子集可以不同于帧的第一子集,其中,基于第一运动矢量、第二运动矢量、第四运动矢量来确定第三运动矢量。此外,装置还可以包括用于确定第三运动矢量与第三运动矢量周围的一个或多个相邻矢量之间的第二差。当差大于阈值并且第二差小于阈值时,可以基于一个或多个相邻矢量来设置第三运动矢量。此外,用于扰动帧的第一子集中的图像数据的部件可以被配置为将图像数据的RGB值的幅度调整m,其中m不等于零。此外,装置可以包括用于将图像数据从RGB图像数据转换为YUV图像数据的部件,其中在将RGB图像数据转换为YUV图像数据之前扰动图像数据。

本文所描述的主题可以被实施为实现一个或多个潜在的益处或优点。例如,GPU可以使用所述的技术来减少渲染工作量的数量。本文所描述的系统可以利用运动估计以便从先前渲染的内容外推帧。通过这样做,这可以允许GPU以降低的速率渲染帧,用外推的帧代替渲染的内容来显示。因此,本公开可以通过在GPU上渲染较少的帧来降低渲染工作量并且使用运动估计来填充图像或运动矢量中的间隙来减少渲染工作量。作为结果,本公开可以节省GPU处的功率和性能,也可以在GPU处渲染更高质量帧。此外,本公开也可以降低渲染内容的成本。

根据本公开,术语“或”可以被解释为“和/或”,除非上下文另有规定。此外,尽管诸如“一个或多个”或“至少一个”等短语已经被用于本公开的一些特征,而不用于其他特征;但是没有使用这样的语言的特征可以被解释为具有这样暗示的意思,除非上下文另有规定。

在一个或多个示例中,本文所述的功能可以在硬件、软件、固件、或其任何组合中实现。例如,尽管贯穿本公开已经使用了术语“处理单元”,但是这样的处理单元可以在硬件、软件、固件或其任何组合中实现。如果本文所述的任何功能、处理单元、技术或其它模块在软件中实现,则本文所述的功能、处理单元技术或其它模块可以作为一个或多个指令或代码存储在计算机可读介质上或通过其传输。计算机可读介质可以包括计算机数据存储介质或者通信介质,该通信介质包括有助于计算机程序从一个地方传输到另一个地方的介质。以此方式,计算机可读介质通常可以对应于(1)有形的计算机可读存储介质,其是非暂时性的,或者(2)诸如信号或载波的通信介质。数据存储介质可以是其可以被一个或多个计算机或者一个或多个处理器访问以检索指令、代码和/或数据结构来实现本公开中所述的技术的任何可用介质。举例来说,但并非限制,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或者其他光盘存储、磁盘存储或其他磁存储设备。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘则采用激光以光学方式再现数据。上述的组合也应当包括在计算机可读介质的范围内。计算机程序产品可以包括计算机可读介质。

代码可以由一个或多个处理器(例如,一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、算数逻辑单元(ALU)、现场可编程逻辑阵列(FPGA)或者其他等效的集成或分立的逻辑电路)来执行。因此,如本文所使用的术语“处理器”可以指任何前述的结构或者适合用于本文所述的技术的实施的任何其他结构。此外,技术可以完全的在一个或多个电路或逻辑元件中实现。

本公开的技术可以在各种设备或装置中实现,装置或设备包括无线手机、集成电路(IC)或IC集(例如,芯片集)。本公开中描述了各种组件、模块或单元以强调被配置为执行公开的技术的设备的功能方面,但是不一定需要通过不同硬件来实现。相反,如上所述,各种单元可以在任何硬件单元中组合或者结合合适的软件和/或硬件由包括如上所述的一个或多个处理器的互操作的硬件单元的集合来提供。

已经描述了各种示例。这些和其他示例在所附权利要求的范围内。

相关技术
  • 通过输入扰动的运动估计
  • 用于数字输入视频信号的运动估计方法
技术分类

06120113106277