运动补偿分割的制作方法

文档序号:11162260阅读:398来源:国知局
运动补偿分割的制造方法与工艺

数字视频可以用于例如经由视频会议的远程商务会议、高清视频娱乐、视频广告、或者用户生成的视频的共享。由于视频数据中所涉及到的大量数据,需要高性能压缩来进行传输和存储。因此,提供通过具有有限带宽的通信信道传输的高清视频是有利的。



技术实现要素:

本申请涉及对输视频流数据进行编码和解码以便进行传输或者存储。本文公开了用于通过使用运动补偿分割来进行编码和解码的系统、方法和设备的方面。

本发明所描述的一种用于通过使用运动补偿分割来进行视频编码的方法包括:识别输入视频流的当前帧的当前块,通过使用运动补偿分割对当前块进行编码来生成编码块,以及传送或者存储编码块。通过使用运动补偿分割来对当前块进行编码包括:为当前块生成粗略运动估计信息,对当前块进行分割,以及为当前块生成精细运动估计信息。

本发明所描述的另一种用于通过使用运动补偿分割来进行视频编码的方法包括:识别输入视频流的当前帧的当前块,通过对当前块进行编码来生成编码块,以及传送或者存储编码块。对当前块进行编码可以包括对当前块进行运动补偿分割。

本发明所描述的另一种用于通过使用运动补偿分割来进行视频编码的方法包括:识别输入视频流的当前帧的当前块,通过对当前块进行编码来生成编码块,以及传送或者存储编码块。对当前块进行编码可以包括:为当前块生成粗略运动估计信息,其中,当前块是大小为N×N的块,以及其中,为当前块生成粗略运动估计信息包括:将当前块划分为多个K×K基本块,其中,N是K的倍数;以及通过针对每个相应基本块执行粗略运动搜索,为来自多个基本块的每个相应基本块生成运动信息和预测误差信息。对当前块进行编码可以包括从多个候选分割方案确定分割方案,其中,来自多个候选分割方案的每个候选分割方案包括来自当前块的多个候选分割的至少一个候选,其中,确定分割方案包括生成包括多个节点的分割决策树,其中,来自多个节点的每个节点表示来自多个候选分割的候选分割;以及按照深度优先的次序遍历分割决策树,其中,按照深度优先的次序遍历分割决策树包括识别来自多个节点的第一节点,第一节点具有来自多个节点的多个子节点,其中,每个子节点是叶节点,每个叶节点表示来自多个分割的相应基本块大小分割;通过基于来自多个子节点的每个子节点评估多个分割准则,来确定第一节点的节点信息;以及修剪分割决策树,其中,修剪分割决策树包括在第一节点的分割信息指示没有对第一节点进行分割的条件下,移除第一节点的子节点。对当前块进行编码可以包括通过使用分割方案来对当前块进行分割,以及为当前块生成精细运动估计信息,其中,为当前块生成精细运动估计信息包括为来自分割方案的每个分割生成子像素运动信息,以及确定来自分割方案的每个分割的预测模式。

下文将更加详细地描述在这些和其它方面中的变型。

附图说明

本文参考附图进行描述,其中,贯穿多个视图,相似的参考标号指相似的部件,以及其中:

图1是根据本公开的实施方式的计算设备的示意图;

图2是根据本公开的实施方式的计算和通信系统的示意图;

图3是根据本公开的实施方式的用于编码和解码的视频流的示意图;

图4是根据本公开的实施方式的编码器的框图;

图5是根据本公开的实施方式的解码器的框图;

图6是根据本公开的实施方式的帧的一部分的表示的框图;

图7是根据本公开的实施方式的分割决策树的示例的示意图;

图8是根据本公开的实施方式的使用运动补偿分割的视频编码的示例的示意图;

图9是根据本公开的实施方式的针对块的修剪过的分割决策树的示例的示意图;以及

图10是根据本公开的实施方式的按照光栅扫描次序进行分割的块的示例的示意图。

具体实施方式

数字视频流可以表示使用帧或者图像的序列的视频。每个帧可以包括许多块,所述块可以包括指示像素属性(诸如,颜色值或者亮度)的信息。视频的传输和存储可能使用大量计算或者通信资源。可以使用压缩和其它编码技术来减少视频流中的数据量。

对视频流或者其部分(诸如,帧或者块)进行编码可以包括在视频流中使用时间和空间相似性以提高编码效率。例如,视频编码可以包括基于像素之间的时间和空间相似性来预测像素值。一种预测形式为帧间预测,该帧间预测包括通过执行运动搜索以发现在参考帧中的相似部分,基于一个或者多个参考帧来预测当前帧的一部分的值。在预测编码的某些实施方式中,可以将视频序列的一个或者多个帧分割为多个分割,并且可以针对每个相应分割执行运动搜索。在某些实施方式中,可以对多个分割方案进行评估,并且可以将生成最少误差的分割方案视为最优分割方案,并且可以将该分割方案用于对帧进行编码。

在运动补偿分割的某些实施方式中,可以通过使用两阶段过程来识别最优分割方案,该两阶段过程可以包括基本块运动搜索、后序深度优先遍历次序分割决策、和选择性的子像素运动搜索。基本块运动搜索可以包括为在帧或者帧的一部分中的每个基本块生成运动信息和预测误差信息。后序深度优先遍历次序分割决策可以包括生成分割树、以及遍历该分割树以生成表示最优分割方案的修剪的分割树。子像素运动搜索可以包括按照深度优先次序遍历修剪过的分割树,以生成子像素运动信息并且识别相应分割的最优编码模式。

图1是根据本公开的实施方式的计算设备100的示意图。计算设备100可以包括通信接口110、通信单元120、用户接口(UI)130、处理器140、存储器150、指令160、电源170、或者其组合。如本文所使用的,术语“计算设备”包括能够执行本文所公开的任何方法或者其任何部分或多个部分的任何单元或者单元的组合。

计算设备100可以是固定计算设备,诸如,个人计算机(PC)、服务器、工作站、小型计算机、或者大型计算机,或者可以是移动计算设备,诸如,移动电话、个人数字助理(PDA)、膝上型计算机、或者平板PC。虽然被示出为单个单元,但是通信设备100的任何一个或者多个元件可以被集成为任何数量的单独物理单元。例如,UI 130和处理器140可以被集成为第一物理单元,并且存储器150可以被集成为第二物理单元。

通信接口110可以是如图所示的无线天线、有线通信端口(诸如,以太网端口)、红外端口、串行端口、或者能够与有线或者无线电子通信介质180交互的任何其它有线或者无线单元。

通信单元120可以配置为经由有线或者无线电子通信介质180发送或者接收信号。例如,如图所示,通信单元120操作地连接至配置为经由无线信号进行通信的天线。虽然在图1中未明确示出,但是通信单元120可以配置为经由任何有线或者无线通信介质(诸如,射频(RF)、紫外线(UV)、可见光、光纤、电缆线、或者其组合)进行发送、接收或者两者。虽然图1示出了单个通信单元120和单个通信接口110,但是可以使用任何数量的通信单元和任何数量的通信接口。

UI 130可以包括能够与用户交互的任何单元,诸如,虚拟或者物理小键盘、触摸板、显示器、触摸显示器、扬声器、麦克风、视频摄像机、传感器、或者其任何组合。如图所示,UI 130可以与处理器操作地耦合,或者与通信设备100的任何其它元件(诸如,电源170)操作地耦合。虽然被示出为单个单元,但是UI 130可以包括一个或者多个物理单元。例如,UI 130可以包括用于与用户执行音频通信的音频接口、以及用于与用户执行基于视觉和触摸的通信的触摸显示器。虽然被示出为单独单元,但是通信接口110、通信单元120和UI 130、或者其部分可以配置为组合单元。例如,通信接口110、通信单元120和UI 130可以实施为能够与外部触摸屏设备交互的通信端口。

处理器140可以包括能够操纵或者处理信号或其它信息的目前存在的或者以后开发的任何设备或者系统,包括光学处理器、量子处理器、分子处理器、或者其组合。例如,处理器140可以包括通用处理器、专用处理器、传统处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或者多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑阵列、可编程逻辑控制器、微代码、固件、任何类型的集成电路(IC)、状态机、或者其任何组合。如本文所使用的,术语“处理器”包括单个处理器或者多个处理器。处理器140可以与通信接口110、通信单元120、UI 130、存储器150、指令160、电源170、或者其任何组合操作地耦合。

存储器150可以包括任何非暂时性计算机可用或者计算机可读介质,诸如,能够例如包含、存储、传递、或者传送指令160或者与其相关联的任何信息以由处理器140使用或者与该处理器140结合使用的任何有形设备。非暂时性计算机可用或者计算机可读介质可以是例如固态驱动器、存储器卡、可移动介质、只读存储器(ROM)、随机存取存储器(RAM)、包括硬盘、软盘、光盘、磁卡或者光卡的任何类型的盘、专用集成电路(ASIC)、或者适合于存储电子信息的任何类型的非暂时性介质、或者其任何组合。存储器150可以通过例如存储总线(未明确示出)连接至例如处理器140。

指令160可以包括用于执行本文所公开的任何方法、或者其任何部分(多个)的指示。指令160可以用硬件、软件、或者其任何组合来实现。例如,指令160可以实施为存储在存储器150中的信息,诸如,计算机程序,该计算机程序可以由处理器140执行以执行本文所描述的相应方法、算法、方面、或者其组合中的任何一种。指令160或者其部分可以实施为专用处理器、或者电路系统,该电路系统可以包括用于执行本文所描述的方法、算法、方面、或者其组合中的任何一种的专用硬件。指令160的部分可以跨越在相同的机器或者不同的机器上的多个处理器中或者跨越诸如局域网、广域网、互联网或者其组合等的网络而分布。

电源170可以是用于为通信设备110供电的任何合适的设备。例如,电源170可以包括有线电源、一个或者多个干电池(诸如,镍镉(NiCd)、镍锌(NiZn)、镍金属氢化物(NiMH)、锂离子(Li离子))、太阳能电池、燃料电池、或者为通信设备110供电的任何其它设备。通信接口110、通信单元120、UI 130、处理器140、指令160、存储器150、或者其任何组合可以与电源170操作地耦合。

虽然被示出为单独元件,但是通信接口110、通信单元120、UI 130、处理器140、指令160、电源170、存储器150、或者其任何组合可以被集成为一个或者多个电子单元、电路、或者芯片。

图2是根据本公开的实施方式的计算和通信系统200的示意图。计算和通信系统200可以包括一个或者多个计算和通信设备100A/100B/100C、一个或者多个接入点210A/210B、一个或者多个网络220、或者其组合。例如,计算和通信系统200可以是多址系统,所述多址系统将诸如语音、数据、视频、消息、广播或者其组合等的通信提供至一个或者多个有线或者无线通信设备(诸如,计算和通信设备100A/100B/100C)。虽然图2示出了三个计算和通信设备100A/100B/100C、两个接入点210A/210B和一个网络220,但是为了简单起见,可以使用任何数量的计算和通信设备、接入点和网络。

每个计算和通信设备100A/100B/100C可以是例如计算设备100(如图1所示)。例如,如图所示,计算和通信设备100A/100B可以是用户设备,诸如,移动计算设备、膝上型计算机、廋客户端、或者智能手机,并且计算和通信设备100C可以是服务器,诸如,主机或者集群。虽然将计算和通信设备100A/100B描述为用户设备,并且将计算和通信设备100C描述为服务器,但是任何计算和通信设备可以执行服务器的功能中的一些或者全部、用户设备的功能中的一些或者全部、或者服务器和用户设备的功能中的一些或者全部。

每个计算和通信设备100A/100B/100C可以配置为执行有线或者无线通信。例如,计算和通信设备100A/100B/100C可以配置为发送或者接收有线或者无线通信信号,并且可以包括用户设备(UE)、移动电台、固定或者移动订户单元、蜂窝电话、个人计算机、平板计算机、服务器、计算机电子设备、或者任何相似的设备。虽然将每个计算和通信设备100A/100B/100C示出为单个单元,但是计算和通信设备可以包括任何数量的互连元件。

每个接入点210A/210B可以是配置为经由有线或者无线通信链路180A/180B/180C与计算和通信设备100A/100B/100C、网络220或者两者通信的任何类型的设备。例如,接入点210A/210B可以包括基站、基地收发站(BTS)、节点B、增强节点B(eNode-B)、家庭节点B(HNode-B)、无线路由器、有线路由器、集线器、中继、交换机、或者任何相似的有线或者无线设备。虽然将接入点210A/210B示出为单个单元,但是接入点可以包括任何数量的互连元件。

网络220可以是配置为通过有线或者无线通信链路提供服务(诸如,语音、数据、应用、互联网协议语音(VoIP)、或者任何其它通信协议或者通信协议的组合)的任何类型的网络。例如,网络220可以是局域网(LAN)、广域网(WAN)、虚拟专用网络(VPN)、移动或者蜂窝电话网络、互联网、或者电子通信的任何其它装置。网络220可以使用通信协议,诸如,传输控制协议(TCP)、用户数据报协议(UDP)、互联网协议(IP)、实时传输协议(RTP)、超文本传输协议(HTTP)、或者其组合。

计算和通信设备100A/100B/100C可以通过使用一个或者多个有线或者无线通信链路经由网络220、或者经由有线和无线通信链路的组合彼此通信。例如,如图所示,计算和通信设备100A/100B可以经由无线通信链路180A/180B进行通信,并且计算和通信设备100C可以经由有线通信链路180C进行通信。计算和通信设备100A/100B/100C中的任何一个可以通过使用任何有线或者无线通信链路(或多个链路)来进行通信。例如,第一计算和通信设备100A可以通过使用第一类型的通信链路经由第一接入点210A进行通信,第二计算和通信设备100B可以通过使用第二类型的通信链路经由第二接入点210B进行通信,并且第三计算和通信设备100C可以通过使用第三类型的通信链路经由第三接入点(未示出)进行通信。相似地,接入点210A/210B可以经由一种或者多种类型的有线或者无线通信链路230A/230B与网络220通信。虽然图2示出了经由网络220进行通信的计算和通信设备100A/100B/100C,但是计算和通信设备100A/100B/100C可以经由任何数量的通信链路(诸如,直接有线或者无线通信链路)彼此通信。

计算和通信系统200的其它实施方式是可能的。例如,在一种实施方式中,网络220可以是ad-hock网络并且可以省略接入点210A/210B中的一个或者多个。计算和通信系统200可以包括在图2中未被示出的设备、单元或者元件。例如,计算和通信系统200可以包括更多通信设备、网络和接入点。

图3是根据本公开的实施方式的用于编码和解码的视频流300的示意图。视频流300(诸如,由视频摄像头捕捉到的视频流或者由计算设备生成的视频流)可以包括视频序列310。视频序列310可以包括一系列的相邻帧320。虽然示出了三个相邻帧320,但是视频序列310可以包括任何数量的相邻帧320。来自相邻帧320的每个帧320可以表示来自视频流300的单个图像。帧330可以包括块340。虽然未在图3中示出,但是块可以包括像素。例如,块可以包括16×16像素组、8×8像素组、8×16像素组、或者任何其它像素组。除非本文另有规定,否则术语“块”可以包括超级块、宏块、段、片、或者帧的任何其它部分。帧、块、像素或者其组合可以包括显示信息,诸如,亮度信息、色度信息、或者可以用于存储、修改、传递、或者显示视频流或者其部分的任何其它信息。

图4是根据本公开的实施方式的编码器400的框图;编码器400可以实现在设备(诸如,图1所示的计算设备100或者图2所示的计算和通信设备100A/100B/100C)中,作为例如存储在诸如图1所示的存储器150等的数据存储单元中的计算机软件程序。计算机软件程序可以包括机器指令,该机器指令可以由诸如图1所示的处理器160等处理器执行,并且可以使设备如本文所描述地对视频数据进行编码。编码器400可以实现为包括例如在计算设备100中的专用硬件。

编码器400可以对输入视频流402(诸如,图3所示的视频流300)进行编码以生成编码(压缩)比特流404。在某些实施方式中,编码器400可以包括用于生成压缩比特流404的前向路径。前向路径可以包括帧内/帧间预测单元410、变换单元420、量化单元430、熵编码单元440、或者其任何组合。在某些实施方式中,编码器400可以包括重构路径(由断开连接线指示)以重构帧以对进一步的块进行编码。重构路径可以包括解量化单元450、反变换单元460、重构单元470、环路滤波单元480、或者其组合。可以使用编码器400的其它结构变型来对输入视频流402进行编码。

为了对输入视频流402进行编码,可以将在输入视频流402内的每个帧按照块单元进行处理。因此,可以从帧中的块识别当前块,并且可以对当前块进行编码。

在帧内/帧间预测单元410处,可以通过使用可以在单个帧内的帧内预测或者可以是从帧到帧的帧间预测来对当前块进行编码。帧内预测可以包括从当前帧中在先前已经被编码和重构的采样生成预测块。帧间预测可以包括从在一个或者多个先前构造的参考帧中的采样生成预测块。为在当前帧中的当前块生成预测块可以包括执行运动估计以生成指示在参考帧中的适当的参考块的运动矢量。

帧内/帧间预测单元410可以从当前块(原始块)减去预测块以产生残差块。变换单元420可以执行基于块的变换,该基于块的变换可以包括将残差块变换为在例如频域中的变换系数。基于块的变换的示例包括卡洛变换(KLT)、离散余弦变换(DCT)和奇异值分解变换(SVD)。在一个示例中,s DCT可以包括将块变换为频域。S DCT可以包括使用基于空间频率的变换系数值,其中最低频率(即,DC)系数在矩阵的左上方且最高频率系数在矩阵的右下方。

量化单元430可以将变换系数转换为离散量子值,该离散量子值可以被称为量化变换系数或者量化等级。熵编码单元440可以对量化变换系数进行熵编码以产生熵编码系数。熵编码可以包括使用概率分布测度。可以将可以包括所使用的预测类型、运动矢量和量化器值的用于对块进行解码的熵编码系数和信息输出至压缩比特流404。可以通过使用各种技术(诸如,运行长度编码(RLE)和零运行代码)来使压缩比特流404格式化。

重构路径可以用于维持在编码器400与对应的解码器(诸如,图5所示的解码器500)之间的参考帧同步。重构路径可以与下面所讨论的解码过程相似,并且可以包括在解量化单元450处对量化变换系数进行解量化,并且在反变换单元460处对解量化变换系数进行反变换以产生衍生残差块。重构单元470可以将由帧内/帧间预测单元410生成的预测块添加至衍生残差块以创建重构块。环路滤波单元480可以应用于重构块以减少失真,诸如,块伪影。

编码器400的其它变型可以用于对压缩比特流404进行编码。例如,基于非变换的编码器400可以在没有变换单元420的情况下直接对残差块进行量化。在某些实施方式中,量化单元430和解量化单元450可以结合为单个单元。

图5是根据本公开的实施方式的解码器500的框图。解码器500可以实施在设备(诸如,图1所示的计算设备100或者图2所示的计算和通信设备100A/100B/100C)中,作为例如存储在诸如图1所示的存储器150等数据存储单元中的计算机软件程序。计算机软件程序可以包括机器指令,该机器指令可以由诸如图1所示的处理器160等处理器执行,并且可以使设备对视频数据进行解码,如本文所描述的。解码器500可以实施为包括例如在计算设备100中的专用硬件。

解码器500可以接收压缩比特流502,诸如,图4所示的压缩比特流404,并且可以对压缩比特流502进行解码以生成输出视频流504。解码器500可以包括熵解码单元510、解量化单元520、反变换单元530、帧内/帧间预测单元540、重构单元550、环路滤波单元560、解块滤波单元570、或者其任何组合。解码器500的其它结构变型可以用于对压缩比特流502进行解码。

熵解码单元510可以通过使用例如上下文自适应二进制算术编码来对在压缩比特流502内的数据元素进行解码,以产生量化变换系数集。解量化单元520可以对量化变换系数进行解量化,并且反变换单元530可以对解量化变换系数进行反变换以产生衍生残差块,该衍生残差块可以与由图4所示的反变换单元460生成的衍生残差块对应。通过使用由压缩比特流502解码的报头信息,帧内/帧间预测单元540可以生成与用编码器400创建的预测块对应的预测块。在重构单元550处,可以将预测块添加至衍生残差块以创建重构块。环路滤波单元560可以应用于重构块以降低块伪影。解块滤波单元570可以应用于重构块以减少块失真,并且可以输出结果作为输出视频流504。

解码器500的其它变型可以用于解码压缩比特流502。例如,解码器500可以在没有解块滤波单元570的情况下产生输出视频流504。

图6是根据本公开的实施方式的帧(诸如,图3所示的帧330)的部分600的表示的框图。如图所示,部分600包括在矩阵或者笛卡尔(Cartesian)平面中呈两行和两列排列的四个64×64块610。在某些实施方式中,64×64块可以是最大编码单位,N=64。一个或者多个64×64块可以包括四个32×32块620。一个或者多个32×32块620可以包括四个16×16块630。一个或者多个16×16块630可以包括四个8×8块640。一个或者多个8×8块640可以包括四个4×4块650。每个4×4块650包括在笛卡尔平面或者矩阵中的每个相应块中表示为四行和四列的16个像素。像素通常包括表示在帧中捕捉到的图像的信息,诸如,亮度信息、颜色信息、和位置信息。在某些实施方式中,块(诸如,如图所示的16×16像素块)可以包括亮度块660,该亮度块660包括亮度像素662;和两个色度块670/680,诸如,U或者Cb色度块670、和V或者Cr色度块680。色度块670/680可以包括色度像素690。例如,亮度块660包括16×16亮度像素662,并且每个色度块670/680包括如图所示的8×8色度像素690。虽然示出了块的一种布置,但是可以使用任何布置。虽然图6示出了N×N块,但是在某些实施方式中,可以使用N×M块,其中,N≠M。例如,可以使用32×64块,64×32块、16×32块、32×16块或者任何其它大小的块。在某些实施方式中,可以使用N×2N块、2N×N块、或者其组合。

在某些实施方式中,视频编码可以包括有序的块级编码。有序的块级编码包括按照一定次序(诸如,光栅扫描次序)对帧的编码块进行编码,其中,可以对块进行识别和处理,从在帧的左上角的块或者帧的部分开始,并且沿从左到右和从顶行到底行的行进行,依次识别每个块以进行处理。例如,在帧的顶行和左列中的64×64块可以是编码的第一块,并且紧邻第一块右边的64×64块可以是编码的第二块。从顶部的第二行可以是编码的第二行,从而在第一行的最右边的列中的64×64块之后,可以对在第二行的左列中的64×64块进行编码。

在某些实施方式中,对块进行编码可以包括使用四叉树编码,该四叉树编码包括按照光栅扫描次序对在块内的更小的块进行编码。例如,可以通过使用四叉树编码来对在图6所示的帧的部分的左下角中示出的64×64块进行编码,其中,对左上方的32×32块进行编码,然后对右上方的32×32块进行编码,再然后对左下方的32×32块进行编码,最后对右下方的32×32块进行编码。可以通过使用四叉树编码来对每个32×32块进行编码,其中,对左上方的16×16块进行编码,然后对右上方的16×16块进行编码,再然后对左下方的16×16块进行编码,最后对右下方的16×16块进行编码。可以通过使用四叉树编码来对每个16×16块进行编码,其中,对左上方的8×8块进行编码,然后对右上方的8×8块进行编码,再然后对左下方的8×8块进行编码,最后对右下方的8×8块进行编码。可以通过使用四叉树编码来对每个8×8块进行编码,其中,对左上方的4×4块进行编码,然后对右上方的4×4块进行编码,再然后对左下方的4×4块进行编码,最后对右下方的4×4块进行编码。在某些实施方式中,对于16×16块,可以省略8×8块,并且可以通过使用四叉树编码来对16×16块进行编码,其中,对左上方的4×4块进行编码,然后按照光栅扫描次序对在16×16块中的其它4×4块进行编码。

在某些实施方式中,视频编码可以包括通过例如省略在来自对应的编码帧的原始帧中的信息中的一些,来压缩包括在原始的或者输入的帧中的信息。例如,编码可以包括减少频谱冗余、减少空间冗余、减少时间冗余、或者其组合。

在某些实施方式中,减少频谱冗余可以包括使用基于亮度分量(Y)和两个色度分量(U和V或者Cb和Cr)的颜色模型,该颜色模型可以被称为YUV或者YCbCr颜色模型、或者颜色空间。使用YUV颜色模型可以包括使用数量较大的信息来表示帧的部分的亮度分量,并且使用数量较小的信息来表示帧的部分的每个对应的色度分量。例如,帧的部分可以由高分辨率亮度分量表示,该高分辨率亮度分量包括16×16像素块,并且由两个较低分辨率色度分量表示,该两个较低分辨率色度分量中的每一个将帧的部分表示为8×8像素块。像素可以指示一个值,例如,在0到255的范围内的值,并且可以通过使用例如8个比特来存储或者发送。虽然参照YUV颜色模型描述了本公开,但是可以使用任何颜色模型。

在某些实施方式中,减少空间冗余可以包括通过使用例如离散余弦变换(DCT)或者其它变换来将块变换为频域。例如,编码器的单元(诸如,图4所示的变换单元420)可以基于空间冗余,通过使用变换系数值来执行DCT。

在某些实施方式中,减少时间冗余可以包括基于一个或者多个参考帧,使用帧之间的相似性,通过使用数量较小的数据来对帧进行编码,该一个或者多个参考帧可以是视频流的先前被编码、解码和重构的帧。例如,当前帧的块或者像素可以与参考帧的在空间上对应的块和像素相似。在某些实施方式中,当前帧的块或者像素可以与参考帧的在不同的空间位置处的块或者像素相似,并且减少时间冗余可以包括生成运动信息,该运动信息指示块或者像素在当前帧中的位置与块或者像素在参考帧中的对应位置之间的空间差异或者转换。

在某些实施方式中,减少时间冗余可以包括识别与当前帧的当前块或者像素对应的在参考帧中的块或者像素、或者参考帧的部分。例如,在可以存储在存储器中的参考帧或者参考帧的部分中搜索最优块或者像素来用于对当前帧的当前块或者像素进行编码。例如,搜索识别参考帧的使在参考块与当前块之间的像素值差最小化的块,并且被称为运动搜索。在某些实施方式中,搜索的参考帧的部分可能是有限的。例如,通常被称为搜索区域的搜索的参考帧的部分可以包括参考帧的数量有限的行。在示例中,识别参考块包括在搜索区域中的块的像素与当前块的像素之间计算成本函数,诸如,绝对差和(SAD)。

在某些实施方式中,可以将在参考块在参考帧中的位置与当前块在当前帧中的位置之间的空间差异表示为运动矢量。在参考块与当前块之间的像素值差被称为差分数据、残差数据、或者被称为残差块。在某些实施方式,生成运动矢量被称为运动估计,并且可以基于通过使用笛卡尔坐标作为fx,y的位置来指示当前块的像素。相似地,可以基于通过使用笛卡尔坐标作为rx,y的位置来指示参考帧的搜索区域的像素。可以基于例如在当前值的像素与参考帧的对应像素之间的SAD来确定当前块的运动矢量(MV)。

虽然为了清楚起见,本文参考帧的矩阵或者笛卡尔表示描述了运动补偿分割,但是可以用任何数据结构来对帧进行存储、发送、处理、或者其任何组合,从而可以针对帧或者图像有效地预测像素值。例如,可以用二维数据结构(诸如,如图所示的矩阵)、或者用一维数据结构(诸如,矢量阵列)来对帧进行存储、传送、处理、或者其任何组合。在实施方式中,帧的表示(诸如,如图所示的二维表示)与在渲染为图像的帧中的物理位置对应。例如,在帧的左上角的块的左上角的位置与渲染为图像的帧的左上角的物理位置对应。

在某些实施方式中,在块内捕捉到的内容可以包括表现出不同的空间特性和时间特性的两个或者更多个区域。例如,帧捕捉在各个方向上并且以各种速度移动的多个对象,并且块可以包括边缘或者对象边界。在某些实施方式中,可以通过将包括具有不同特性的多个区域的块分割为可以是与不同内容对应的矩形(包括正方形)分割的一个或者多个分割,并且对分割进行编码,而不是对每个最小编码单位进行独立编码,来提高基于块的编码效率。

在某些实施方式中,使用分割的视频编码可以包括从多个候选分割方案当中选择一个分割方案。例如,在某些实施方式中,针对64×64编码单位的候选分割方案包括大小范围从4×4到64×64(诸如,4×4、4×8、8×4、8×8、8×16、16×8、16×16、16×32、32×16、32×32、32×64、64×32、或者64×64)的矩形大小分割。在某些实施方式中,使用分割的视频编码可以包括全分割搜索,该全分割搜索包括通过使用每个可用候选分割方案对编码单位进行编码,并且选择最优方案(诸如,产生最少的速率失真误差的方案)来选择分割方案。在使用分割的视频编码(诸如,离线双步编码)的某些实施方式中,在第一编码过程中,可以生成有关在帧之间的运动的信息,并且在第二编码过程中,可以利用该信息来选择分割方案。针对每个候选分割方案的技术(诸如,进行离线双步编码和对速率失真误差进行评估)或者其它相似的测度可能非常耗时,并且可能利用超过编码时间的一半。在某些实施方式中(诸如,视频会议或者包括静止背景的其它内容),可以基于在先前的源帧与当前源帧之间的差异来选择分割方案。在某些实施方式中,与全分割搜索、离线双步编码、或者基于帧间分割来进行的分割相比较,通过使用运动补偿分割来对视频帧进行编码更有效地识别分割方案。

在某些实施方式中,通过使用运动补偿分割来对视频帧进行编码包括识别用于对当前块(诸如,块610)进行编码的分割方案。在某些实施方式中,识别分割方案可以包括确定是否将块编码为最大编码单位大小(其是如图所示的64×64)的单个分割,或者是否将块分割为对应于子块(诸如,如图所示的32×32块620、16×16块630、或者8×8块640)的多个分割,并且可以包括确定是否分割为一个或者多个更小的分割。例如,可以将64×64块分割为四个32×32分割。可以将四个32×32分割中的三个编码为32×32分割,并且可以将第四个32×32分割进一步分割为四个16×16分割。可以将四个16×16分割中的三个编码为16×16分割,并且可以将第四个16×16分割进一步分割为四个8×8分割,将该四个8×8分割中的每一个编码为8×8分割。在某些实施方式中,识别分割方案可以包括使用分割决策树。

图7是根据本公开的实施方式的分割决策树的示例的示意图。在某些实施方式中,分割决策树700表示针对块(诸如,图6所示的64×64块610)的多个候选分割方案。虽然图7所示的分割决策树包括仅仅表示正方形分割的节点,但是在某些实施方式中,分割决策树可以表示块的所有可能的矩形(包括正方形)分割。

如图7所示,分割决策树700可以包括表示块的每个候选分割的由圆指示的节点710/720/730。例如,如图所示,图7包括第一或者根节点710,该第一或者根节点710表示N×N分割,该N×N分割可以与当前编码单位或者块对应。在某些实施方式中,根节点710可以是分割级0节点。在分割决策树700中可以将N×N根分割分割为表示为级1、或者中间节点720的多个分割(诸如,N/2×N/2分割)。例如,根节点710可以表示64×64块,该64×64块可以被分割为四个32×32分割,该四个32×32分割由如图所示的四个级1节点720表示。在分割方案中的可以是基本块的最小分割可以是K×K分割并且由叶节点730表示。例如,可以在分割决策树700中将由每个N/2×N/2中间节点720表示的分割分割为由叶节点730表示的K×K分割。

图8是根据本公开的实施方式的使用运动补偿分割的视频编码的示例的示意图。运动补偿分割可以实现在系统(诸如,图2所示的系统200)中。例如,运动补偿分割可以实现为由计算设备(诸如,图2所示的计算和通信设备100A/100B/100C)执行的软件程序。软件程序可以包括存储在诸如存储器150等存储器中的机器可读指令,该机器可读指令在诸如由处理器140执行时可以使计算设备执行运动补偿分割。运动补偿分割也可以通过使用硬件来全部或者部分地实现。如上面所阐释的,一些计算设备可以包括多个存储器和多个处理器,并且可以通过使用在一个或者多个物理设备上的一个或者多个处理器或者一个或者多个存储器来分布运动补偿分割。在某些实施方式中,运动补偿分割可以包括在810中的粗略运动估计、在820中的分割、在830中的精细运动估计、或者其组合。在某些实施方式中,视频编码(诸如,图4所示的视频编码)包括运动补偿分割。例如,图4所示的帧内/帧间预测单元410可以包括运动补偿分割。

在某些实施方式中,在810中执行粗略运动估计。在某些实施方式中,可以针对当前帧中的每个块执行粗略运动估计。例如,当前帧的当前块可以是64×64块(N=64),诸如,图6所示的块610。在某些实施方式中,粗略运动估计可以包括将当前块划分为多个子块,该多个子块可以是K×K基本块。在某些实施方式中,基本块的大小可以与最小的可用分割大小对应。例如,对高清视频(诸如,720p视频)进行编码可以包括使用K=16的基本块大小,诸如,图6所示的块630。在另一示例中,对标准清晰度视频进行编码可以包括使用K=8的基本块大小。

虽然为了简单起见,本文描述了正方形块和子块,但是可以使用非正方形块和子块、或者两者。可以使用子块大小和形状的任何组合。在某些实施方式中,可以将每个子块包括在一个和仅仅一个父子块中,并且可以将块的所有像素包括在至少一个子块中。在某些实施方式中,可以用诸如enum等数据结构指示可用块和子块大小。例如,描述了一组可用块大小的enum数据结构或者类型可以如下文由表达式1表示:

typedef enum BLOCK_SIZE{

4×4,

4×8,

8×4,

8×8,

8×16,

16×8,

16×16,

16×32,

32×16,

32×32,

32×64,

64×32,

64×64

}BLOCK_SIZE.

在某些实施方式中,粗略运动估计包括为每个基本块生成运动信息(诸如,一个或者多个运动矢量)和预测误差(或残差)信息。在某些实施方式中,粗略运动估计可以包括生成全像素分辨率的运动和预测误差信息。可以按照光栅扫描次序针对当前视频帧的当前N×N块的每个K×K基本块执行粗略运动估计。在某些实施方式中,粗略运动估计可以包括执行运动搜索以从在一个或者多个参考帧中的搜索区域发现最优匹配块。可以使用来自相邻块或者子块的运动矢量来识别搜索区域,以便针对当前块执行粗略运动估计。在某些实施方式中,粗略运动估计可以包括通过使用诸如中心偏置十六进制搜索或者菱形模式搜索等搜索方法,针对当前编码单位(其可以是K×K基本块)执行全像素运动搜索。粗略运动估计也可以包括比全像素运动搜索更精细的搜索。在某些实施方式中,预测误差信息是由运动信息指示的在当前块与在参考帧中的参考块之间的差的衡量(诸如,绝对值差和(SAD)或者差方和(SSD))。在810中的粗略运动估计可以可选地包括存储当前帧的当前块的每个基本块的运动信息和预测误差信息。

在某些实施方式中,在820中,可以对当前块进行分割。在某些实施方式中,对当前块进行分割包括生成分割决策树,诸如,图7所示的分割决策树700。

在某些实施方式中,可以用数据结构(诸如,struct)表示节点。在某些实施方式中,将有关节点的节点信息包括在节点的数据结构中。例如,节点信息可以包括节点的分割大小(BlockSize),该分割大小可以是来自表达式1中所示的数据结构的值。在某些实施方式中,节点信息包括运动信息,诸如,在810中生成的运动信息。例如,节点信息包括运动矢量的x、水平、或者行分量(MV_Row),运动矢量的y、垂直、或者列分量(MV_Col),或者两者。在另一示例中,节点信息包括由节点表示的分割的预测误差信息(PredErr),其可以是SAD或者SSD。在某些实施方式中,节点信息包括指示是否对由节点表示的分割进行分割的分割信息(PatitionDecision)。在某些实施方式中,表示基本块大小分割的叶节点的分割信息指示未对节点进行分割(NON-SPLIT)。在某些实施方式中,节点信息包括将节点与另一节点(诸如,子节点)相关联的信息。例如,节点信息可以包括子节点数据结构(ChildNodes[]),该子节点数据结构包括对表示子节点的数据接口的参考或者到该数据结构的指针。描述了节点的节点信息(node_info)struct数据结构可以由表达式2表示:

struct node_info{

BLOCK_SIZE BlockSize;

short MV_Row;

short MV_Col;

uint64_t PredErr;

DECISION_TYPE PartitionDecision;

struct node_info*ChildNodes[4];

}。

在某些实施方式中,分割信息(PartitionDecision)可以由数据结构表示。例如,分割信息enum数据结构或者类型可以由表达式3表示:

typedef enum DECISION_TYPE{

NONSPLIT,

SPLIT

}DECISION_TYPE。

在某些实施方式中,生成分割决策树包括遍历分割决策树。例如,可以按照遍历次序(诸如,后序深度优先遍历次序)遍历分割决策树。按照后序深度优先遍历次序,在相应父节点之前,可以从表示基本块分割的叶节点开始,对每个子节点进行评估。例如,参照图7,可以在节点720A之前对节点730A-D进行评估,并且可以在节点710之前对节点720A-D进行评估。

在某些实施方式中,遍历分割决策树包括对每个节点的分割准则进行评估。例如,分割准则可以包括允许较大分割准则、有效预测准则、运动相似性准则、或者其组合。在某些实施方式中,可以针对分割决策树的每个节点自下而上地对分割准则进行递归评估。

在某些实施方式中,对分割准则进行评估包括对允许较大分割准则进行评估。对允许较大分割准则进行评估可以包括确定当前节点的每个子节点的分割信息(PartitionDecision)是否指示没有对子节点进行分割(NON-SPLIT)。每个子节点的分割信息可以指示无分割,并且允许较大分割准则可能为真。例如,节点可以具有四个子节点,四个子节点中的三个的分割信息指示无分割,第四个子节点的分割信息可以指示分割(SPLIT),并且将允许较大分割准则评估为假。

在某些实施方式中,对分割准则进行评估包括对有效预测准则进行评估。对有效预测准则进行评估包括确定当前节点的每个子节点的预测误差信息(PredErr)是否在相应分割级的预测误差阈值(T_err_level_i)内。例如,级i-1节点可以具有四个级i子节点,四个子节点中的三个的预测误差信息可以在级i的预测误差阈值内,第四个子节点的分割信息可以超过级i的预测误差阈值,并且将有效预测准则评估为假。

在某些实施方式中,对分割准则进行评估包括对运动相似性准则进行评估。对运动相似性准则进行评估可以包括确定当前节点的每个子节点的运动差是否在相应分割级的运动相似性阈值或者全像素运动矢量阈值(T_mv_level_i)内。

子节点的运动差可以是在子节点的行运动矢量分量(MV_Row)与子节点的平均行运动矢量分量(AVG_MV_Row)之间的差的绝对值,并且可以由表达式4表示:

|MV_Row-AVG_MV_Row|<T_mv_level_i.

在其它实施方式中,子节点的运动差是在子节点的列运动矢量分量(MV_Col)与子节点的平均列运动矢量分量(AVG_MV_Col)之间的差的绝对值,并且可以由表达式5表示:

|MV_Col-AVG_MV_Col|<T_mv_level_i.

在某些实施方式中,确定当前节点的每个子节点的运动差是否在运动相似性阈值内包括:确定行运动差是否在阈值内,确定列运动差是否在阈值内,或者确定行运动差和列运动差两者是否在阈值内。例如,级i-1节点可以具有四个级i子节点,四个子节点中的三个的行运动矢量分量和列运动矢量分量可以在级i的运动相似性阈值内,第四个子节点的行运动矢量分量可以在级i的运动相似性阈值内,第四个子节点的列运动矢量分量可以超过级i的运动相似性阈值,并且将运动相似性准则评估为假。

遍历分割决策树可以包括基于对分割准则的评估来填充或者更新当前节点的节点信息。例如,分割准则中的每一个可以评估为真,这指示包括在每一个子分割中的内容与由视频流捕捉到的移动对象的相邻部分对应的高可能性,并且可以将由子节点表示的分割合并,从而使由当前节点表示的分割大小成为分割决策树的相应分支的最小分割大小。在某些实施方式中,填充或者更新当前节点的节点信息包括指示当前节点的块大小(BlockSize)信息、行运动分量(MV_Row)信息、列运动分量(MV_Col)信息、预测误差(PredErr)信息、分割(PatitionDecision)信息、或者其组合。

例如,处于级i-1的当前节点具有四个处于级I的子节点,分割准则评估为真,当前节点的块大小(BlockSize)信息设定为(N/2i-1)×(N/2i-1),当前节点的行运动分量(MV_Row)信息设定为子节点的平均行运动矢量分量(AVG_MV_Row),当前节点的列运动分量(MV_Col)信息设定为子节点的平均列运动矢量分量(AVG_MV_Row),当前节点的预测误差(PredErr)信息设定为子节点的预测误差信息的和或者平均值,并且当前节点的分割(PatitionDecision)信息设定为指示未对当前节点进行分割(NON-SPLIT)。

在另一示例中,分割准则中的一个或者多个评估为假,块大小(BlockSize)信息设定为(N/2i-1)×(N/2i-1),当前节点的行运动分量(MV_Row)信息设定为无效值或者假值(INVALID),当前节点的列运动分量(MV_Col)信息设定为无效值或者假值,当前节点的预测误差(PredErr)信息设定为无效值或者假值,并且当前节点的分割(PatitionDecision)信息设定为指示对当前节点进行分割(SPLIT)。

在某些实施方式中,遍历分割决策树包括修剪分割决策树。修剪分割决策树包括确定当前节点的分割信息是否指示未对当前节点进行分割(NON-SPLIT),以及从分割决策树移除自当前节点下降的任何节点。在遍历分割决策树之后,可以从根节点到页节点自上而下地执行修剪分割决策树。在某些实施方式中,修剪过的分割决策树可以指示当前块的选择的分割方案,该选择的分割方案可以是最优分割方案。

在830中执行精细运动估计。例如,精细运动估计可以包括子像素运动估计,诸如,子像素运动搜索,该子像素运动搜索可以识别在选择的分割方案中的每个分割的高精度匹配块。在某些实施方式中,对当前块的子像素运动搜索包括对当前块的选择的分割方案进行深度优先遍历。可以按照光栅扫描次序执行对兄弟节点(其可以是具有共同级i-l父节点的级i节点)的子像素运动估计,从而可以在当前分割之前对在当前分割之上或者左边的块进行搜索。例如,参照图7所示的分割决策树700,根节点710表示64×64分割,中间节点720A表示在64×64分割的左上角的32×32分割,叶节点730A表示在32×32分割的左上角的16×16分割,叶节点730B表示在32×32分割的右上角的16×16分割,叶节点730C表示在32×32分割的左下角的16×16分割,叶节点730D表示在32×32分割的右下角的16×16分割,并且在由叶节点730A表示的分割执行子像素运动估计之后,对由叶节点730B表示的分割执行子像素运动估计,之后对由叶节点730C表示的分割执行子像素运动估计,之后对由叶节点730D表示的分割执行子像素运动估计。

在某些实施方式中,对当前分割的子像素运动估计包括:处理表示当前分割的节点的节点信息,基于节点信息来使在参考帧中像素运动搜索网格居中,以及识别参考帧的与当前分割最佳匹配的部分。使子像素运动搜索网格居中可以包括基于分割的全像素运动信息(MV_Row、MV_Col)来使子像素运动搜索网格居中。在某些实施方式中,子像素运动搜索可以在1/2、1/4或者1/8像素精度,在分割与参考帧的部分之间找到最接近匹配。

精细运动估计可以包括识别当前分割的选择的预测模式。例如,可以从一个或者多个候选帧内预测模式、一个或者多个候选帧间预测模式、或者帧内预测模式和帧间预测模式的组合识别选择的预测模式。在某些实施方式中,识别选择的预测模式包括为候选预测模式中的一种或者多种生成预测模式测度。例如,预测模式测度可以是速率失真(RD)误差测度,并且具有最低RD误差的预测模式是选择的预测模式。在某些实施方式中,识别选择的预测模式可以与子像素运动估计并行执行。块的预测误差(PredErr)可以低于帧间模式阈值(T_inter_mode)(其可以是较小值)。然后,可以省略帧内预测模式,并且从候选帧间预测模式识别选择的预测模式。

本文所公开的运动补偿分割的方面可以使视频流的实时编码加速,并且特别适合于在移动设备上的视频会议应用的实时编码。

运动补偿分割的其它实施方式也是可用的。在这种实施方式中,可以添加运动补偿分割的附加元素,可以将某些元素组合在一起,并且/或者可以移除某些元素。例如,可以在执行粗略运动估计之前生成分割决策树,或者修剪分割决策树可以独立于生成分割预测树执行。

图9和图10示出了分割决策树和按照光栅扫描次序对与分割决策树对应的分割块进行的处理的示例。如图所示,编码块大小是64×64(N=64),并且基本块大小是8×8(K=8)。

图9是根据本公开的实施方式的针对块的修剪过的分割决策树900的示例的示意图。如图所示,修剪过的分割决策树900包括N×N(N=64)根节点910。根节点910的节点信息可以包括指示分割的分割信息(SPLIT),并且根节点910包括四个级1 32×32中间节点920。第一级1中间节点920A的节点信息可以包括指示分割的分割信息(SPLIT),并且第一级1中间节点920A包括四个级2 16×16中间节点930A-D。第二和第三级1中间节点920B-C的节点信息可以包括指示无分割的分割信息(NON-SPLIT)。第四级1中间节点920D的节点信息可以包括指示分割的分割信息(SPLIT),并且第四级1中间节点920D包括四个级2 16×16中间节点930E-H。第一、第二和第三级2中间节点930A-C的节点信息可以包括指示无分割的分割信息(NON-SPLIT)。第四级2中间节点920D的节点信息可以包括指示分割的分割信息(SPLIT),并且第四级2中间节点920D包括四个级3K×K(K=8)叶节点940A-D。第五、第六和第七级2中间节点930E-C的节点信息可以包括指示无分割的分割信息(NON-SPLIT)。第八级2中间节点920H的节点信息可以包括指示分割的分割信息(SPLIT),并且第八级2中间节点920H包括四个级3K×K(K=8)叶节点940E-H。级3叶节点940A-H的节点信息可以包括指示无分割的分割信息(NON-SPLIT)。

图10是根据本公开的实施方式的按照光栅扫描次序进行分割的块的示例的示意图。可以按照从左到右和从上到下的光栅扫描次序来处理分割方案。如图10所示,对可以由图9所示的根节点910表示的64×64分割1010进行处理。

可以是编码单位分割的分割1010的节点信息可以包括指示分割的分割信息(SPLIT),并且对分割1010进行处理包括例如按照光栅扫描次序对在当前分割内的每个子节点1020进行处理。例如,可以首先对可以与第一级1中间节点920A对应的在左上角的32×32分割进行处理。

在左上角的32×32分割的节点信息可以包括指示分割的分割信息(SPLIT),并且对分割1020进行处理包括例如按照光栅扫描次序对在分割1020内的每个子节点1030进行处理。例如,可以首先对可以与第一级2中间节点930A对应的在左上角的16×16分割1030进行处理。

在左上角的16×16分割1030的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置1中完成对分割进行处理。可以与第二级2中间节点930B对应的在右上角的16×16分割1030的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置2中完成对分割进行处理。可以与第三级2中间节点930C对应的在左下角的16×16分割1030的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置3中完成对分割进行处理。可以与第四级2中间节点930D对应的在右下角的16×16分割1030的节点信息可以包括指示分割的分割信息(SPLIT),并且对分割1030进行处理包括按照光栅扫描次序对在分割1030内的每个子分割1040进行处理。例如,可以首先对可以与第一级3中间节点940A对应的在左上角的8×8分割1040进行处理。

在左上角的8×8分割1040的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置4中完成对分割进行处理。可以与第二级3中间节点940B对应的在右上角的8×8分割1030的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置5中完成对分割进行处理。可以与第三级3中间节点930C对应的在左下角的8×8分割1040的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置6中完成对分割进行处理。可以与第四级3中间节点930D对应的在右下角的8×8分割1040的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置7中完成对分割进行处理。

可以与第二级1中间节点920B对应的在右上角的32×32分割的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置8中完成对分割进行处理。

可以与第三级1中间节点920C对应的在左下角的32×32分割的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置9中完成对分割进行处理。

可以与第四级1中间节点920D对应的在右下角的32×32分割的节点信息可以包括指示分割的分割信息(SPLIT),并且对分割1020进行处理包括按照光栅扫描次序对在分割1020内的每个子分割进行处理。例如,可以首先对可以与第五级2中间节点930E对应的在左上角的16×16分割1030进行处理。

在左上角的16×16分割1030的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置10中完成对分割进行处理。可以与第六级2中间节点930F对应的在右上角的16×16分割1030的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置11中完成对分割进行处理。可以与第七级2中间节点930G对应的在左下角的16×16分割1030的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置12中完成对分割进行处理。可以与第八级2中间节点930H对应的在右下角的16×16分割1030的节点信息可以包括指示分割的分割信息(SPLIT),并且对分割1030进行处理包括按照光栅扫描次序对在分割1030内的每个子分割1040进行处理。例如,首先对可以与第五级3中间节点940E对应的在左上角的8×8分割1040进行处理。

在左上角的8×8分割1040的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置13中完成对分割进行处理。可以与第六级3中间节点940F对应的在右上角的8×8分割1040的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置14中完成对分割进行处理。可以与第七级3中间节点930G对应的在左下角的8×8分割1040的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置15中完成对分割进行处理。可以与第八级3中间节点940H对应的在右下角的8×8分割1040的节点信息可以包括指示无分割的分割信息(NON-SPLIT),并且在光栅扫描次序位置16中完成对分割进行处理。

本文所使用的词语“示例”意谓充当示例、实例或者图示。本文作为“示例”描述的任何方面或者设计不一定需要理解为比其它方面或者设计优选或者有益。相反,词语“示例”的使用旨在具体地呈现构思。如在本应用中所使用的,术语“或者”是指包容性的“或者”而不是排斥性的“或者”。即,除非另外规定,否则从上下文可以清楚,“X包括A或者B”是指任何自然的包容性排列。即,如果X包括A、X包括B、或者X包括A和B,那么在前面的任何实例下都满足“X包括A或者B”。此外,在本申请和随附权利要求书中所使用的冠词“一”和“一个”应该被一般地解释为意味着“一个或者多个”,除非另有规定或者从上下文中明确得知其指的是单数形式。此外,贯穿上下文的术语“实施例”或者“一个实施例”或者“实施方式”或者“一种实施方式”并不意谓相同的实施例或者具体实施方式,除非如此描述。如本文所使用的,术语“确定”和“识别”、或者其任何变型包括通过使用图1所示的设备中的一个或者多个进行的选择、查明、计算、查找、接收、确定、建立、获得、或者另外以任何方式进行识别或者确定。

进一步地,为了说明的简单性,虽然本文所描述的附图和描述可以包括步骤或者阶段的序列或系列,但是本文所公开的方法的元素可以按照各种次序和/或并行地发生。另外,本文所公开的方法的元素可以与本文未明确呈现和描述的其它元素一起发生。此外,并不是需要本文所描述的方法的所有元素来实施根据所公开的主题的方法。

站100A、100B和/或100C(和存储在其上并且/或者由其执行的算法、方法、指令等)的实施方式可以用硬件、软件、或者其任何组合来实现。硬件可以包括例如计算机、知识产权(IP)核心、专用集成电路(ASIC)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或者任何其它合适的电路。在权利要求书中,应该将术语“处理器”理解为单独地或者以结合的方式涵盖前述硬件中的任何一种。术语“信号”和“数据”可互换使用。进一步地,站100A、100B和/或100C的部分不一定必须用相同的方式来实施。

进一步地,在一种实施方式中,例如,站100A、100B和/或100C可以通过使用具有计算机程序的通用计算机或者通用处理器来实施,该计算机程序在被执行时执行本文所描述的相应方法、算法和/或指令中的任何一种。另外或者替选地,例如,可以利用专用计算机/处理器,该专用计算机/处理器可以包含用于执行本文所描述的相应方法、算法和/或指令中的任何一种的专用硬件。

站100A、100B和/或100C可以例如被实现在实时视频系统中的计算机上。替选地,一个站(诸如,站100A)可以是实施在服务器上的发送站,且其余站(诸如,站100B、100C)可以是实施在与服务器分开的设备(诸如,手持式通信设备)上的接收站。在这种情况下,发送站100A可以通过使用编码器400来将内容编码为编码视频信号,并且将该编码视频信号发送至通信设备。相反,通信设备然后可以通过使用解码器500来对编码视频信号进行解码。替选地,通信设备可以对本地存储在通信设备上的内容(例如,未由发送站100A发送的内容)进行解码。其它合适的发送站100A和接收站100B、100C实施方案也是可用的。例如,接收站100B或者100C通常可以一般地是固定的个人计算机,而不是便携式通信设备,并且/或者包括编码器400的设备也可以包括解码器500。

进一步地,实施方式中的全部或者部分可以采取可由例如有形计算机可用或者计算机可读介质访问的计算机程序产品的形式。计算机可用或者计算机可读介质可以是能够例如有形地包含、存储、传递或者传送由任何处理器使用或者与该处理器结合使用的程序的任何设备。介质可以是例如电子、磁、光学、电磁、或者半导体设备。其它合适的介质也是可用的。

为了允许容易地理解本申请而已经描述的上述实施方式并不是限制性的。相反,本申请涵盖包括在随附权利要求书的范围内的各种修改和等效布置,该权利要求书的范围按照最广义解释以在法律允许的情况下涵盖所有此类修改和等效结构。

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