超变换视频代码化的制作方法

文档序号:13823501阅读:322来源:国知局
超变换视频代码化的制作方法



背景技术:

数字视频能用于例如经由视频会议的远程商务会谈、高清晰度视频娱乐、视频广告、或用户生成的视频的共享。由于视频数据中包括大量数据,因此对于传输和存储需要高效能压缩。因此,提供在具有有限带宽的通信信道上传送的高分辨率视频将是有利的。



技术实现要素:

本申请涉及编码和解码视频流数据以传输或存储。本文公开了使用超变换代码化进行编码和解码的系统、方法、和装置的方面。

一个方面是一种用于使用超变换代码化进行视频代码化的方法。使用超变换代码化的视频代码化可以包括从来自输入视频流的当前帧识别输入块;以及通过将输入块用作当前块来超变换代码化输入块。超变换代码化包括响应于确定使用与当前块的大小相对应的预测块大小来编码当前块,确定与当前块相对应的预测块,预测块具有与当前块的大小相对应的预测块大小;以及使用具有在预测块大小内的变换大小的变换,基于预测块来生成变换块。超变换代码化可以包括响应于确定使用小于当前块的大小的预测块大小来编码当前块,从当前块中识别多个子块以供预测代码化当前块,其中,在当前块中,来自多个子块的第一子块与来自多个子块的第二子块在空间上相邻;响应于确定使用具有小于当前块的大小的变换大小的变换来编码当前块,将所述多个子块的每个子块用作当前块来超变换代码化相应子块;以及响应于确定使用具有与当前块的大小相对应的超变换大小的超变换来编码当前块,通过使用超变换来变换当前块的超预测块,将超预测块生成为变换块,其中,当前块的超预测块具有与当前块的大小相对应的超预测块大小,并且其中,生成超变换块包括通过超预测代码化当前块来生成当前块的超预测块。超预测代码化可以包括对来自多个子块的每个子块:响应于确定使用与子块的大小相对应的预测块大小编码子块,基于与子块相关联的运动向量来确定子块的预测块,响应于确定使用小于子块的大小的预测块大小来编码子块:从子块中识别多个分区以供预测代码化子块,其中,在子块中来自多个分区的第一分区与来自多个分区的第二分区在空间上相邻;以及将子块的超预测块生成为预测块,其中,子块的超预测块具有与子块的大小相对应的超预测块大小,其中,生成子块的超预测块包括通过将子块用作当前块以及将多个分区用作多个子块来超预测代码化子块,通过基于与用于当前块的超预测块空间上相邻的预测块来滤波预测块的至少一部分,生成滤波预测块,以及将所述滤波预测块包括在当前块的超预测块中,以及将变换块包括在输出比特流中。使用超变换代码化的视频代码化可以包括传输或存储输出比特流。

另一方面是一种用于使用超变换代码化进行视频代码化的方法。在一些实施方式中,使用超变换代码化进行视频代码化可以包括:从来自输入视频流的当前帧识别输入块,以及通过将输入块用作当前块来超变换代码化输入块。超变换代码化可以包括:响应于确定使用与当前块的大小相对应的预测块大小来编码当前块,确定与当前块相对应的预测块,预测块具有与当前块的大小相对应的预测块大小;以及使用具有在预测块大小内的变换大小的变换,基于预测块来生成变换块。超变换代码化可以包括:响应于确定使用小于当前块的大小的预测块大小来编码当前块,从当前块中识别多个子块以供预测代码化当前块,其中,在当前块中,来自多个子块的第一子块与来自多个子块的第二子块在空间上相邻;响应于确定使用具有小于当前块的大小的变换大小的变换代码化当前块,通过将来自所述多个子块的每个子块用作当前块来超变换代码化相应子块;以及响应于确定使用具有与当前块的大小相对应的超变换大小的超变换来编码当前块,通过使用超变换来变换当前块的超预测块,将超预测块生成为变换块,其中,当前块的超预测块具有与当前块的大小相对应的超预测块大小,并且其中,生成超变换块包括通过超预测代码化当前块来生成当前块的超预测块。超预测代码化可以包括对来自多个子块的每个子块,响应于确定使用与子块的大小相对应的预测块大小编码子块:确定扩展预测块大小,其中,确定扩展预测块大小包括将所述预测块大小扩展超预测扩展大小,以及基于扩展预测块大小、超变换、以及与子块相关联的运动向量来确定预测块;响应于确定使用小于子块的大小的预测块大小来编码子块:从子块中识别多个分区以供预测代码化子块,其中,在子块中来自多个分区的第一分区与来自多个分区的第二分区在空间上相邻;以及将子块的超预测块生成为预测块,其中,子块的超预测块具有与子块的大小相对应的超预测块大小,其中,生成子块的超预测块包括通过将子块用作当前块以及将多个分区用作多个子块来超预测代码化子块,通过基于与当前块的超预测块在空间上相邻的预测块来滤波预测块的至少一部分而生成滤波预测块,以及将所述滤波预测块包括在当前块的超预测块中。超变换代码化可以包括将变换块包括在输出比特流中。使用超变换代码化的视频代码化可以包括传输或存储输出比特流。

另一方面是一种用于使用超变换代码化进行视频代码化的方法。使用超变换代码化进行视频代码化可以包括:识别多个子块以供预测代码化当前块;以及响应于确定使用超变换来编码当前块,超预测代码化当前块。超预测代码化可以包括生成当前块的超预测块。生成当前块的超预测块可以包括对于来自当前块的每个未分区子块,生成预测块,以及将预测块包括在当前块的超预测块中。生成用于当前块的超预测块可以包括对于来自当前块中的每个分区子块,通过超预测代码化子块,生成用于子块的超预测块,以及将子块的超预测块作为预测块包括在当前块的超预测块中。生成当前块的超预测块可以包括基于来自当前块的超预测块的空间上相邻的预测块,从当前块的超预测块滤波每个预测块的至少一部分。超预测代码化可以包括基于当前块的超预测块来生成残差,通过使用具有与当前块的大小相对应的超变换大小的超变换变换残差来生成多个变换系数,将多个变换系数包括在输出比特流中,以及将超变换标志包括在输出比特流中。使用超变换代码化进行视频代码化可以包括传输或存储输出比特流。

下面将另外详细地描述这些及其它方面的变化。

附图说明

本文的描述参考附图,其中,各附图中相似的附图标记指代相似部件。

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

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

图3是根据本公开的实施方式的在编码和解码中使用的视频流的图。

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

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

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

图7是根据本公开的实施方式的8x8块700的表示的框图。

图8是根据本公开的实施方式的,包括超变换代码化的视频代码化的示例的图。

图9是根据本公开的实施方式的超预测代码化的示例的图。

图10是根据本公开的实施方式的,包括用于水平分区的边界滤波的超变换代码化的框图。

图11是根据本公开的实施方式的,包括用于垂直分区的边界滤波的超变换代码化的框图。

图12是根据本公开的实施方式的,包括用于分割分区的边界滤波的超变换代码化的框图。

图13是根据本公开的实施方式的,包括用于水平分区的扩展预测滤波的超变换代码化的框图。

图14是根据本公开的实施方式的,包括用于垂直分区的扩展预测滤波的超变换代码化的框图。

图15-17是根据本公开的实施方式的,包括用于分割分割的扩展预测滤波的超变换代码化的框图。

图18是根据本公开的实施方式的,超变换代码化具有多个分区层级的块的框图。

图19是根据本公开的实施方式的,包括超变换解码的视频解码的示例的图。

具体实施方式

视频压缩方案可以包括将每个图像或帧分解成更小的部分,诸如块,并且使用限制输出中每个块所包括的信息的技术来生成输出比特流。能解码经编码的比特流可以以由有限信息重新创建块和源图像。在一些实施方式中,可以通过减少空间冗余、减少时间冗余、或其组合来限制输出中每一块包括的信息。

可以通过使用帧之间的相似性来减少时间冗余从而使用基于一个或多个参考帧的相对少量的数据来编码帧,该参考帧可以是视频流的先前编码、解码、和重构的帧。减少时间冗余可以包括:分区帧的块,从与每个分区相对应的参考帧中识别预测块,以及将分区和预测块之间的差确定为残差块。降低空间冗余可以包括:使用与分区相同大小或更小的变换将残差块变换至频域。然而,使用与分区相同大小或更小的变换可能不会最佳地压缩残差。

在一些实施方式中,使用超变换代码化的视频代码化可以包括:通过使用大于对应分区的变换并且滤波预测块以减少超变换内的相邻预测块之间的不连续性来提高压缩效能。

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

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

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

通信单元120可以被配置成经由有线或无线介质180来发射或接收信号。例如,如所示,通信单元120被操作地连接到被配置成经由无线信号通信的天线。虽然在图1中并未明确地示出,通信单元120可以被配置成经由诸如射频(rf)、紫外光(uv)、可见光、光纤、导线、或其组合的任何有线或无线通信介质发射、接收、或这两者。虽然图1示出了单个通信单元120和单个通信接口110,但是可以使用任何数目的通信单元和任何数目的通信接口。

ui130包括能够与用户对接的任何单元,诸如虚拟或物理键区、触控板、显示器、触摸显示器、扬声器、扩音器、视频相机、传感器、或其任何组合。ui130可以操作地耦合到如所示的处理器140或者诸如电源170的通信设备100的任何其它元件。虽然被示为单个单元,但ui130可以包括一个或多个物理单元。例如,ui130可以包括用于与用户执行音频通信的音频接口以及用于与用户执行基于视觉和触摸的通信的触摸显示器。虽然被示为单独的单元,但可以将通信接口110、通信单元120、以及ui130、或其中的部分配置为组合的单元。例如,通信接口110、通信单元120、以及ui130可以被实现为能够与外部触摸屏设备对接的通信端口。

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

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

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

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

虽然被示为分离的元件,但是通信接口110、通信单元120、ui130、处理器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例如是诸如图1中所示的计算设备100的计算设备。如所示,计算和通信设备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)、移动或蜂窝式电话网、互联网、或任何其它电子通信手段。网络可以使用通信协议,诸如传输控制协议(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可以是点对点网络以及可以省略接入点210a/210b中的一个或多个。计算和通信系统200可以包括图2中未示出的设备、单元、或元件。例如,计算和通信系统200可以包括更多的计算设备、网络、以及接入点。

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

图4是根据本公开的实施方式的编码器400的框图。编码器400可以在诸如图1中所示的计算设备100或图2中所示的计算和通信设备100a/100b/100c的设备中实现为例如存储在诸如图1中所示的存储器150的数据存储单元中的计算机软件程序。该计算机软件程序可以包括被诸如图1中所示的处理器160的处理器执行且可以致使设备如本文所述地编码视频数据的机器指令。可以将编码器400实现为例如包括在计算设备100中的专用硬件。

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

对于编码视频流402,可以以块为单位来处理视频流402内的每个帧。因此,可以从帧中的块中识别当前块,并且该当前块可以被编码。

在帧内/帧间预测单元410,可以使用可以是在单个帧内的帧内预测或使用可以是从帧至帧的帧间预测来编码当前块。帧内预测可以包括从先前已被编码并重构的当前帧中的样本生成预测块。帧间预测可以包括从一个或多个先前构造的参考帧中的样本生成预测块。针对当前帧中的当前块生成预测块可以包括执行运动估计以生成指示参考帧中的适当参考块的运动向量。

帧内/帧间预测单元410可以从当前块(原始块)减去预测块以产生残差块。变换单元420可以执行基于块的变换,其可以包括将残差块变换成例如频域中的变换系数。基于块的变换的示例包括karhunen-loève变换(klt)、离散余弦变换(dct)、以及奇异值分解变换(svd)。在一个示例中,dct可以包括将块变换到频域中。dct可以包括使用基于空间频率的变换系数值,其中,在矩阵的左上方具有最低频(即,dc)系数且在矩阵的右下方具有最高频系数。

量子化单元430可以将变换系数转换成离散量子化值,其可以称为量子化的变换系数或量子化水平。量子化的变换系数被熵编码单元440进行熵编码而产生熵编码的系数。熵编码可以包括使用概率分布度量。被用来解码块的熵编码的系数和信息可以被输出到压缩的比特流404,所述系数和信息可以包括所使用的预测类型、运动向量、以及量子化器值。可以使用诸如游程编码(rle)和零游程代码化的各种技术将压缩的比特流404格式化。

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

可以使用编码器400的其它变体来编码压缩的比特流404。例如,基于非变换的编码器400可以在没有变换单元420的情况下将残差块直接量子化。在一些实施方式中,可以将量子化单元430和去量子化单元450组合成单个单元。

图5是根据本公开的实施方式的解码器500的框图。解码器500可以在诸如图1中所示的计算设备100或图2中所示的计算和通信设备100a/100b/100c的设备中实现为例如存储在诸如图1中所示的存储器150的数据存储单元中的计算机软件程序。该计算机软件程序可以包括可以被诸如图1中所示的处理器140的处理器执行且可以致使设备如本文所述地解码视频数据的机器指令。可以将解码器500实现为例如包括在计算设备100中的专用硬件。

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

熵解码单元510可以使用例如场境(context)自适应二进制算术解码来解码压缩的比特流502内的数据元素,以产生一组量子化的变换系数。去量子化单元520将量子化的变换系数去量子化,并且逆变换单元530可以对去量子化的变换系数进行逆变换而产生衍生残差块,其可以与由图4中所示的逆变换单元460生成的衍生残差块相对应。使用从压缩的比特流502解码的报头信息,帧内/帧间预测单元540可以生成与在编码器400中创建的预测块相对应的预测块。在重构单元550,可以将预测块添加到衍生残差块以创建重构块。可以将环路滤波单元560应用于重构块以减少构块伪影。可以将解块滤波单元570应用于重构块以减少构块失真并且结果被作为输出视频流504输出。

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

图6是根据本公开的实施方式的,诸如图3中所示的帧330的帧的部分600的表示的框图。如所示,帧的部分600包括在笛卡尔平面或矩阵中以两行和两列的四个64x64块610。在某些实施方式中,64x64块可以是最大代码化单元,n=64。每个64x64块可以包括四个32x32块620。每个32x32块可以包括四个16x16块630。每个16x16块可以包括四个8x8块640。每个8x8块640可以包括四个4x4块650。每个4x4块650可以包括16个像素,其可以在笛卡尔平面或矩阵中的每个相应块中以四行和四列来表示。像素可以包括表示在帧中捕捉的图像的信息,诸如亮度信息、色彩信息、以及位置信息。在一些实施方式中,块——诸如所示的16x16像素块——可以包括亮度块660,其包括亮度像素662;以及两个色度块670/680,诸如u或cb色度块670以及v或cr色度块680。色度块670/680可以包括色度像素690。例如,亮度块660包括16x16个亮度像素662,并且色度块670/680中的每一个包括如所示的8x8个色度像素690。虽然示出了块的一个布置,但可以使用任何布置。例如,虽然图6示出了nxn块,但在某些实施方式中,可以使用nxm块。例如,可以使用32x64块、64x32块、16x32块、32x16块、或任何其他大小的块。在某些实施方式中,可以使用nx2n块、2nxn块、或其组合。

在一些实施方式中,视频代码化可以包括有序的块级编码。有序的块级编码包括按诸如光栅扫描顺序的顺序来代码化帧的块,其中,识别块并从帧或者帧的部分的左上方角的块开始处理,并且沿着行从左向右且从顶行至底行进行,依次识别每个块以用于处理。例如,帧的顶行左列中的64x64块可以是被代码化的第一块,而紧挨着第一块右方的64x64块可以是被代码化的第二块。从上方起的第二行可以是被代码化的第二行,使得第二行的左列中的64x64块可以在第一行的最右列中的64x64块之后被代码化。

对块进行代码化可以包括使用四叉树代码化,其可以包括按照光栅扫描顺序代码化块内的较小块单元。例如,可以使用四叉树代码化对图6中所示的帧的部分的左下方角中所示的64x64块进行代码化,其中,代码化左上方的32x32块,然后代码化右上方的32x32块,然后代码化左下方的32x32块,并且然后代码化右下方的32x32块。可以使用四叉树代码化对每个32x32块代码化,其中,代码化左上方的16x16块,然后代码化右上方的16x16块,然后代码化左下方的16x16块,并且然后代码化右下方的16x16块。可以使用四叉树代码化对每个16x16块代码化,其中,代码化左上方的8x8块,然后代码化右上方的8x8块,然后代码化左下方的8x8块,并且然后代码化右下方的8x8块。可以使用四叉树代码化对每个8x8块代码化,其中,代码化左上方的4x4块,然后代码化右上方的4x4块,然后代码化左下方的4x4块,并且然后代码化右下方的4x4块。在某些实施方式中,针对16x16块可以省略8x8块,并且可以使用四叉树代码化对16x16块进行代码化,其中,代码化左上方的4x4块,然后按照光栅扫描顺序代码化16x16块中的其它4x4块。

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

在一些实施方式中,减少谱冗余可以包括使用基于亮度分量(y)和两个色度分量(u和v或者cb和cr)的色彩模型,其可以被称为yuv或ycbcr色彩模型或色彩空间。使用yuv色彩模型可以包括使用相对大量的信息来表示帧的一部分的亮度分量,并且使用相对少量的信息来表示用于该帧的该部分的每个对应色度分量。例如,可以通过可以包括16x16像素块的高分辨率亮度分量并且通过两个较低分辨率色度分量来表示帧的一部分,所述色度分量中的每一个将该帧的该部分表示为8x8像素块。像素指示值,例如在0至255范围内的值,并且可以使用例如八个比特来存储或传送。虽然参考yuv色彩模型描述了本公开,但可以使用任何色彩模型。

减少空间冗余还可以包括使用例如离散余弦变换(dct)将块变换到频域中。诸如图4中所示的变换单元420的编码器的单元可以使用基于空间频率的变换系数值来执行dct。

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

减少时间冗余还可以包括识别参考帧或参考帧的一部分中的、与当前帧的当前块或像素相对应的块或像素。例如,可以在被存储在存储器中的参考帧或参考帧的一部分中搜索最佳块或像素以用于编码当前帧的当前块或像素。该搜索可以识别参考帧的、使参考块与当前块之间的像素值的差最小化的块,并且可以被称为运动搜索。在一些实施方式中,限制参考帧的被搜索的部分。例如,参考帧的被搜索的部分——也被称为搜索区——可以包括有限行数的参考帧。在一个示例中,识别参考块可以包括计算搜索区中的块的像素与当前块的像素之间的成本函数,诸如绝对差之和(sad)。

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

虽然在本文中为了清楚起见参考帧的矩阵或笛卡尔表示进行了描述,但帧可以在任何数据结构中被存储、传送、处理或其组合,使得可以针对帧或图像而有效率地表示像素值。例如,可以在诸如所示的矩阵的二维数据结构中或者诸如向量数组的一维数据结构中对帧进行存储、传送、处理、或其任何组合。帧的表示,诸如所示的二维表示可以对应于帧作为图像的渲染中的物理位置。例如,帧的左上方角的块的左上方角的位置与帧作为图像的渲染的左上方角的物理位置相对应。

可以通过将块分区成一个或多个分区来改善基于块的代码化效率,分区可以是矩形分区,包括正方形分区。在一些实施方式中,使用分区的视频代码化可以包括从多个候选分区方案当中选择分区方案。例如,用于64x64代码化单元的候选分区方案可以包括大小在从4x4个至64x64个范围内的矩形大小分区,诸如4x4、4x8、8x4、8x8、8x16、16x8、16x16、16x32、32x16、32x32、32x64、64x32、或64x64个像素。在一些实施方式中,使用分区的视频代码化可以包括全分区搜索,其包括通过使用每个可用的候选分区方案对代码化单元编码并选择诸如产生最少率失真误差的方案的最佳方案来选择分区方案。

在一些实施方式中,编码视频帧可以包括识别用于编码诸如块610的当前块的分区方案。识别分区方案可以包括确定将块作为如所示的64x64的最大代码化单元大小的单个分区进行编码,还是将块分区成多个分区——该多个分区可以与如所示的诸如32x32块620、16x16块630、或8x8块640的子块相对应,并且可以包括确定是否要分区成一个或多个更小分区。例如,可以将64x64块分区成四个32x32分区。四个32x32分区中的三个可以作为32x32分区被编码,并且可以将第四32x32分区进一步分区成四个16x16分区。四个16x16分区中的三个可以作为16x16分区被编码,并且可以将第四16x16分区进一步分区成四个8x8分区,该8x8分区中的每一个可以作为8x8分区被编码。在一些实施方式中,识别分区方案可以包括使用分区决策树。

对当前块的视频代码化可以包括从多个候选代码化模式中识别最佳代码化模式,这提供处置具有各种统计特性的视频信号的灵活性,并且可以改善压缩效率。例如,视频代码化器可以评估若干候选代码化模式以识别最佳代码化模式,其可以是最小化当前块的诸如率失真成本的误差度量的代码化模式。在一些实施方式中,可以通过基于当前块与对应预测块之间的相似性而限制可用候选代码化模式的集合,来降低搜索候选代码化模式的复杂性。可以通过执行定向细化模式搜索来降低搜索每个候选代码化模式的复杂性。例如,可以针对候选块大小的有限集——诸如16x16、8x8以及4x4——来生成误差度量,与每一块大小相关联的误差度量可以按降序排列,并且可以评估附加候选块大小,诸如4x8和8x4块大小。

图7是根据本公开的实施方式的8x8块700的表示的框图。诸如所示的8x8块700的块可以被分区成多个分区或子块。在一些实施方式中,诸如所示的8x8块700的块被水平地分区成上方分区或子块710以及下方分区或子块712。在其他实施方式中,诸如所示的8x8块700块的被垂直分区成左分区或子块720以及右分区或子块712。替选地,可以将诸如所示的8x8块700的块分成左上方分区或子块730、右上方分区或子块732、左下方分区或子块734、以及右下方分区或子块736。

视频代码化——诸如图4所示的视频代码化可以包括预测代码化,诸如由图4所示的帧内/帧间预测单元410执行的预测代码化。在一些实施方式中,预测代码化包括识别运动向量,其指示块或子块与可以是当前帧或先前构造或重构的帧的参考帧中的预测块之间的可以为零的空间、时间、或时空偏移。

在一些实施方式中,预测代码化包括识别与当前块中的每一未分区子块相对应的预测块。例如,图7所示的块700被分成左上方子块730、右上方子块732、左下方子块734、和右下方子块736,如所示,并且可以识别与四个分区中的每一个相对应的预测块。在另一示例中,当前块的分区模式是垂直分区,因此可以识别与左垂直分区720相对应的预测块和与右垂直分区722相对应的预测块。在又一示例中,当前块的分区模式可以是水平分区,因此可以识别与上方710相对应的预测块和与下方水平分区712相对应的预测块。在另一示例中,当前块的分区模式可以是没有分区,这指示没有识别当前块以及与当前块相对应的预测块的分区。在一些实施例中,分区当前块受到诸如4x4的最小分区大小限制。

视频代码化——诸如图4所示的视频代码化——可以包括变换代码化,诸如由图4所示的变换单元420执行的变换代码化。例如,当前块或子块与为当前块或子块所识别的预测块之间的差可以被识别为残差块,并且识别用于变换该残差块的变换。在一些实施方式中,变换代码化包括识别具有在预测块大小内的变换大小的变换,其可以包括等于或小于预测块大小的变换大小。例如,图7所示的上方分区710是4x8子块,并且变换上方分区710可以包括:生成4x8预测块、生成4x8残差块、识别具有等于预测块大小的变换大小的变换——例如4x8变换740或小于预测块大小——例如左4x4变换750和右4x4变换752,以及使用所识别的变换来生成变换系数。变换代码化可以包括使用指示最小可用变换大小的最小变换大小。

图8是根据本公开的实施方式的,包括超变换代码化的视频代码化的示例的图。在一些实施方式中,视频代码化可以包括超变换代码化。例如,变换单元——诸如图4所示的变换单元420——可以执行超变换代码化。包括所示的超变换代码化的视频代码化包括:在800处识别当前块,在810处识别预测块大小,在820处超变换代码化当前块,或其组合。

在800处识别当前块。例如,可以将64x64块——诸如图6所示的左下方64x64块610——识别为当前块。

在810处识别预测块大小。在一些实施方式中,识别预测块大小包括确定是否使用与当前块大小相对应或相同的预测块大小来编码当前块,或者分区当前块并使用比当前块大小更小的预测块大小。

在一些实施方式中,可以与预测代码化同时执行超变换代码化。例如,帧内/帧间预测单元410可以执行部分或完全的率失真(rd)或其他质量度量搜索以针对当前块识别优化分区决策树,其可以包括对于每一块确定是否分区该块,其可以包括确定使用未分区块和大小为未分区块或更小的变换,还是分区该块并且使用该块的超变换大小,还是分区该块并且使用多个较小的变换。可以基于质量度量,诸如率失真(rd)来确定分区和超变换决策。

可以在预测代码化之后执行超变换代码化,并且可以基于先前生成的分区决策树或分区方案来识别预测块大小。在一些实施方式中,可以将预测块大小识别为与当前块大小相对应,并且使用变换代码化(未示出)对当前块进行编码。例如,当前块可以是可以未被分区的64x64块,可以生成64x64预测块,并且使用可以包括使用64x64或更小的变换的变换代码化来变换64x64预测块。在一些实施方式中,预测块大小可以小于当前块大小,这指示当前块被分区成多个子块,并且在820,使用超变换代码化对当前块进行代码化。

在820处对当前块进行超变换代码化可以包括确定是否使用与当前块大小相对应的预测块大小来对当前块进行编码。例如,当前块可以是64x64块,并且在820处对当前块进行超变换代码化包括确定是否使用64x64预测块大小对64x64当前块进行编码。

在820处超变换代码化当前块还可以包括:响应于确定使用与当前块大小相对应的预测块大小编码当前块而对当前块进行变换代码化。在一些实施方式中,响应于确定使用与当前块大小相对应的预测块大小编码当前块而变换代码化当前块包括:确定与当前块相对应的预测块,使用具有在该预测块大小内——诸如等于或小于预测块大小的变换大小的变换基于该预测块来生成经变换的块,将该经变换的块包括在输出比特流中,或其组合。例如,当前块可以是64x64块,并且响应于确定使用64x64预测块大小编码当前64x64块而变换代码化当前64x64块包括:确定与当前块相对应的64x64预测块,使用64x64或更小的变换基于64x64预测块来生成64x64经变换的块,并且将64x64经变换的块包括在输出比特流中。

在一些实施方式中,诸如响应于确定使用小于当前块大小的预测块大小来编码当前块,820处的超变换代码化包括:在830处识别当前块内的分区,在840处确定是否使用对应的超变换对当前块进行代码化,在850处超变换代码化每一分区,在860处超预测代码化当前块,在870处生成超变换块,在880处输出超变换块,或其组合。超变换代码化当前块可以包括:递归地超变换代码化当前块。递归地超变换代码化当前块包括:基于递归地超变换代码化当前块内的每一分区,递归地超变换代码化当前块。

在830处在当前块内识别分区。例如,当前块可以被水平分区,并且在830处识别上方分区和下方分区。上方分区可以在空间上与下方分区相邻。在另一示例中,当前块可以被垂直分区,并且在830处识别左分区和右分区。左分区可以在空间上与右分区相邻。在另一示例中,当前块可以被分割分区,并且在830处识别左上方分区、右上方分区、左下方分区和右下方分区。每一分区可以在空间上邻近每一其他分区。虽然本文描述了垂直、水平、和分割模式分区,但是可以使用任何分区方案。

在840处确定是否使用对应的超变换对当前块进行代码化。在一些实施方式中,可以与预测代码化同时执行超变换代码化或其一部分,以及在840处,可以基于诸如率失真(rd)度量的质量度量,确定是否使用对应的超变换代码化来对当前块代码化。

预测代码化可以包括生成当前块的超变换大小的指示,并且在840处确定是否使用对应的超变换来对当前块进行代码化可以基于该超变换大小指示。例如,预测代码化包括生成分区决策树,其可以包括使用与分区决策树相对应的分支或根的超变换的指示。当前块可以是64x64块,分区决策树可以指示64x64块的分区,并且可以指示使用64x64超变换。在另一示例中,当前块是64x64块,分区决策树指示64x64块的分区,省略使用64x64超变换的指示,指示64x64块的第一子块——诸如32x32块的分区,指示将32x32超变换用于第一32x32子块,指示第二32x32子块没有分区,指示第三32x32子块的分区,省略将32x32超变换用于第三32x32子块或具有第三32x32子块的任何其他分区的指示,指示第四32x32子块的分区,省略将32x32超变换用于第四32x32子块的指示、指示第四32x32块的第一子块——诸如16x16块的分区的分区,指示将16x16超变换用于第一16x16子块,指示第二16x16子块没有分区,指示第三16x16子块的分区,省略将16x16超变换用于第三16x16子块或具有第三16x16子块的任何其他分区的指示,指示第四16x16子块的分区,省略将16x16超变换用于第四16x16子块的指示,指示第四16x16块的第一子块——诸如8x8块的分区,指示8x8超变换用于第一8x8子块,指示第二8x8子块没有分区,指示第三8x8子块的分区,省略将8x8超变换用于第三8x8子块或具有第三8x8子块的任何其他分区的指示,指示第四8x8子块的分区,以及省略将8x8超变换用于第四8x8子块的指示。

响应于在840处省略使用与当前块大小相对应的超变换大小来编码当前块的确定——诸如使用较小变换大小编码当前块的决策,在850处,可以超变换代码化当前块的的每一分区或子块。在一些实施方式中,在对子块进行超变换代码化的场境内,超变换代码化包括将子块用作当前块以及将子块的子块大小用作当前块大小。

响应于在840处确定使用与当前块大小相对应的超变换大小对当前块进行编码,在860处可以超预测代码化当前块,其包括生成超预测块。例如,如图9所示,超预测代码化当前块。在一些实施方式中,超预测块具有对应于或等于当前块大小的超预测块大小。

在870处,生成超变换块。在一些实施方式中,在870处生成超变换块包括:确定指示当前块和超预测块之间的差的残差块,使用超变换来变换残差块,或其组合。例如,超预测块可以是nxn块——诸如64x64块(n=64),残差是nxn块——诸如64x64块(n=64),超变换是nxn的超转换大小——诸如64x64,以及超变换块是nxn块——诸如64x64块(n=64)。

在880处输出超变换块。例如,超变换块被包括在输出比特流中。在一些实施方式中,将超变换块包括在输出比特流中包括进一步处理超变换块。例如,超变换块可以包括变换系数、量子化的变换系数、经熵代码化的量子化变换系数,和包含在输出比特流中的经熵代码化的量子化变换系数。

如图8所示的超变换代码化的图的其它实现方式是可用的。可以添加超变换代码化的附加元素,可以组合某些元素,和/或可以去除某些元素。例如,超变换代码化可以与预测代码化组合。

图9是根据本公开的实施方式的超预测代码化的示例的图。在一些实施方式中,视频代码化可以包括超变换代码化,其包括超预测代码化。在该示例中,900处的超预测代码化包括在910处生成超预测块。在一些实施方式中,在910处生成的超预测块的大小对应于或等于当前块的大小。例如,当前块可以是被分区成两个或多于两个的更小预测块的诸如64x64块的nxn块,以及超预测块是诸如64x64超预测块的nxn超预测块。

在910处生成超预测块可以包括在920处确定预测块。例如,为当前块的每个分区或子块确定预测块。当前块可以使用水平分区进行分区,并且可以包括上方分区或子块,以及下方分区或子块,可以为上方子块确定上方预测块,并且对下方子块确定下方预测块。在另一示例中,当前块使用垂直分区进行分区,并且可以包括左分区或子块,以及右分区或子块,可以为左方子块确定左预测块以及为右方子块确定右预测块。在另一示例中,当前块使用分割分区进行分区,并且可以包括左上方分区、右上方分区、左下方分区和右下方分区,可以对左上方子块确定左上方预测块,可以对右上方子块确定右上方预测块,可以对左下方子块确定左下方预测块,并且可以对右下方子块确定右下方预测块。

在920处确定预测块可以包括对当前块的每个分区,在930处确定预测块大小。例如,在930处确定分区的预测块大小包括确定使用与子块大小相对应的预测块大小还是对子块分区并使用小于子块大小的预测块大小。

响应于确定使用小于子块大小的预测块大小,在940处超预测代码化子块。在一些实施方式中,在超预测代码化子块的场境中,超预测代码化包括将子块用作当前块以及将子块的子块大小用作当前块大小。

响应于确定使用与子块大小相对应或相等的预测块大小,在950处为子块确定具有与子块大小相对应的预测块大小的预测块。在960处将在920处识别的每个预测块包括在超预测块中。在一些实施方式中,在960处,将在920处识别的预测块包括在超预测块中包括在962处滤波预测块。

在一个示例中,在900处对16x16当前块进行超预测代码化,其包括在910处生成16x16当前块的16x16超预测块,其可以包括在920处识别16x16当前块的预测块。16x16当前块可以被分区成四个8x8子块,并且在930处对每个8x8子块确定预测块大小。对900处的超预测代码化,第一8x8子块的预测块大小可以被识别为小于8x8子块大小,这指示对该第一8x8子块的分区,以及在940处第一8x8子块可以被用作当前块,其可以包括在910处对8x8当前块生成8x8超预测块,并且在920处识别8x8当前块的预测块。8x8当前块可以被分区成四个4x4子块,其可以是最小预测块大小,在930处对每个4x4子块确定4x4的预测块大小,在950处,对每个4x4子块确定4x4预测块,并且在960处,将4x4预测块包括在8x8超预测块中。

在930处可以将第二8x8子块的预测块大小识别为8x8,并且在950处对第二8x8子块确定第一8x8预测块。在930处第三8x8子块的预测块大小块可以被识别为8x8,并且在950处对第三8x8子块确定第二8x8预测块。在930处,第四8x8子块的预测块大小可以识别为8x8,并且在950处,对第四8x8子块确定第三8x8预测块。在960处,第一8x8子块的8x8超预测块、第二8x8子块的8x8预测块、第三8x8子块的8x8预测块、以及用于第四8x8子块的8x8预测块可以被包括在16x16块的16x16超预测块中。

在一些实施方式中,在960处将预测块包括在超预测块中包括空间串接并且省略962处的滤波。例如,可以水平分区nxn当前块,可以将上方预测块包括为超预测块的上方部,以及将下方方预测块包括为超预测块的下方部。在另一示例中,nxn当前块可以被垂直分区,可以将左预测块包括为超预测块的左部,并且将右预测块包括为超预测块的右部。在另一示例中,nxn当前块可以被分割分区,可以将左上方预测块包括为超预测块的左上方部,可以将右上方预测块包括为超预测块的右上方部,可以将左下方预测块包括为超预测块的左下方部,以及可以将右下方预测块包括为超预测块的右下方部。在一些实施方式中,在960处,将预测块包括在超预测块包括962处的滤波,如图10-17所示。

图9所示的超预测代码化的图的其他实现方式是可用的。可以添加超预测代码化的附加元素,可以组合某些元素,和/或可以去除某些元素。

图10是根据本公开的实施方式,包括用于水平分区的边界滤波的超变换代码化的框图。在一些实施例中,超变换代码化——诸如图8所示的超变换代码化包括:超预测代码化——诸如图9所示的超预测代码化,其包括生成超预测块和将两个或多于两个预测块包括在超预测块中,其可以包括如图9的962所示使用边界滤波来滤波预测块。

如图10所示,当前帧1000包括块,并且超变换代码化包括从当前帧1000识别当前块1010,如由黑色方块所示。为了简明和清楚,当前块1010被示为8x8块,然而可以使用诸如64x64块的任何块大小。

nxn当前块1010可以被水平分成上方子块和下方子块(未示出)。识别与当前帧1010的上方子块相对应的上预测块1020。例如,如由与预测代码化当前帧1010的上方子块相关联的运动向量所示,可以从来自参考帧1030的块或块的一部分识别上方预测块1020。识别与当前帧1010的下方子块相对应的下方预测块1040。例如,如由不同于与预测代码化当前帧1010的上方子块相关联的运动向量的、与预测代码化当前帧1010的下方子块相关联的运动向量所示,可以从参考帧1030的块或块的一部分来识别下方预测块1040。

在一些实施方式中,上方预测块1020和下方预测块1040被分别作为超预测块1050的上和下方部分包括在超预测块1050中。

将上方预测块1020和下方预测块1040包括在超预测块1050中可以包括基于来自下方预测块1040的一个或多个像素而对上方预测块1020中的一个或多个像素进行滤波,并且基于来自上方预测块1020的一个或多个像素而对下方预测块1040中的一个或多个像素进行滤波。例如,基于沿下方预测块1040的顶行1042的像素而对沿上方预测块1020的底行1022的像素进行滤波。虽然在图10中示出滤波一行像素,但是可以对任何数目的像素或像素行进行滤波。可以基于定义的滤波度量来确定滤波的像素的数目或行数。在一些实施方式中,定义的滤波度量与预测块大小相关联。例如,4x4预测块可以与定义的滤波度量1相关联,这指示基于相邻4x4预测块的一行来滤波4x4预测块的一行;并且8x8预测块可以与定义的滤波度量2相关联,其指示基于相邻8x8预测块的两行来滤波8x8预测块的两行。

在一些实施方式中,基于相邻预测块的一部分来滤波预测块的一部分包括:使用空间加权滤波,其可以包括基于像素之间的相对空间距离来将来自预测块的像素的贡献加权到超预测块中的相应像素。例如,可以通过基于下方预测块1040的第一行1042第一列中的像素来滤波上方预测块1020的第四行1022第一列中的像素,确定超预测块1050的第四行第一列中的像素的值。上方预测块1020的第四行1022第一列中的像素可以与超预测块1050的第四行第一列中的像素在空间上共点,并且可以被赋予相对高的权重。下方预测块1040的第一行1042第一列的像素可以在空间上与超预测块1050的第四行第一列中的像素相邻,并且可以相对于上方预测块1020的第四行1022第一列中的像素的权重而被赋予更低的权重。在一些实施方式中,滤波包括使用解块滤波器。

图11是根据本公开的实施方式的,包括用于垂直分区的边界滤波的超变换代码化的框图。在一些实施例中,超变换代码化——诸如图8所示的超变换代码化包括:超预测代码化——诸如图9所示的超预测代码化,其包括生成超预测块并且将两个或多于两个预测块包括在超预测块中,其可以包括使用边界滤波来滤波预测块,如图9的962处所示。

如图11所示,当前帧可以包括块,以及超变换代码化包括从当前帧识别当前块1110。为了简化和清楚,当前块1110被示为8x8块,然而可以使用诸如64x64块的任何块大小。

nxn当前块1110可以被水平分成左子块和右子块。识别与当前帧1110的左方子块相对应的左预测块1120。例如,可以从参考帧1130的块或块的一部分来识别左预测块1120,由与预测代码化当前帧1110的左方子块的相关联的运动向量所指示。识别与当前帧1110的右方子块相对应的右预测块1140。例如,可以从参考帧1130的块或块的一部分中识别右预测块1140,由不同于与预测代码化当前帧1110的左方子块相关联的运动向量的、与预测代码化当前帧1110的右方子块相关联的运动向量所指示。

在一些实施方式中,左预测块1120和右预测块1140分别作为超预测块1150的左方部分和右方部分被包括在超预测块1150中。

将左预测块1120和右预测块1140包括在超预测块1150中可以包括基于来自右预测块1140的一个或多个像素而对左预测块1120中的一个或多个像素进行滤波,并且基于来自左预测块1120的一个或多个像素而对右预测块1140中的一个或多个像素进行滤波。例如,基于沿右预测块1140的左行1142的像素而对沿着左预测块1120的右行1122的像素进行滤波。虽然在图11中示出滤波一行像素,但可以对任何数目的像素或像素行进行滤波。可以基于定义的滤波度量来确定滤波的像素或行的数目。在一些实施方式中,定义的滤波度量与预测块大小相关联。例如,4x4预测块可以与定义的滤波度量1相关联,这指示基于相邻4x4预测块的一行来滤波4x4预测块的一行;并且8x8预测块可以与定义的滤波度量2相关联,其指示基于相邻8x8预测块的两行来滤波8x8预测块的两行。

在一些实施方式中,基于相邻预测块的一部分来滤波预测块的一部分包括:使用空间加权滤波,其可以包括基于像素之间的相对空间距离来将来自预测块的像素的贡献加权到超预测块中的相应像素。例如,可以通过基于右预测块1140的第一行第一列1142中的像素来滤波左预测块1120的第一行第四列1122中的像素,确定超预测块1150的第一行第四列中的像素的值。左预测块1120的第一行第四列1122中的像素可以与超预测块1150的第一行第四列中的像素在空间上共点,并且可以被赋予相对高的权重。右预测块1140的第一行第一列1142的像素可以在空间上与超预测块1150的第一行第四列中的像素相邻,并且可以相对于左预测块1120的第一行第四列1122中的像素的权重而被赋予更低的权重。在一些实施方式中,滤波包括使用解块滤波器。

图12是根据本公开的实施方式的,包括用于分割分区的边界滤波的超变换代码化的框图。在一些实施例中,超变换代码化——诸如图8所示的超变换代码化包括:超预测代码化——诸如图9所示的超预测代码化,其包括生成超预测块并且将两个或多于两个的预测块包括在超预测块中,其可以包括使用边界滤波来滤波预测块,如图9的962处所示。

如图12所示,当前帧可以包括块,以及超变换代码化包括从当前帧识别当前块1210。为了简化和清楚,当前块1210被示为8x8块,然而可以使用诸如64x64块的任何块大小。

nxn当前块1210可以被分割分区成左上方子块、右上方子块、左下方子块和右下方子块。识别与当前帧1210的左上方子块相对应的左上方预测块1220。例如,可以从参考帧1230的块或块的一部分来识别左上方预测块1220,由与预测代码化当前帧1210的左上方子块的相关联的运动向量所指示。识别与当前帧1210的右上方子块相对应的右上方预测块1240。例如,可以从参考帧1230的块或块的一部分中识别右上方预测块1240,由不同于与预测代码化当前帧1210的其他子块相关联的相应运动向量的、与预测代码化当前帧1210的右上方子块相关联的运动向量所指示。识别与当前帧1210的左下方子块相对应的左下方预测块1250。例如,可以从参考帧1230的块或块的一部分来识别左下方预测块1250,由与预测代码化当前帧1210的左下方子块的相关联的运动向量所指示。识别与当前帧1210的右下方子块相对应的右下方预测块1260。例如,可以从参考帧1230的块或块的一部分来识别右下方预测块1260,由不同于与预测代码化当前帧1210的其他子块相关联的相应运动向量的、与预测代码化当前帧1210的右下方子块的相关联的运动向量所指示。

在一些实施方式中,左上方预测块1220和右上方预测块1240分别作为上方超预测子块1270的左方部分和右方部分被包括在上方超预测子块1270中。将左上方预测块1220和右上方预测块1240包括在上方超预测子块1270中可以包括基于来自右上方预测块1240的一个或多个像素而对左上方预测块1220中的一个或多个像素进行滤波,并且基于来自左上方预测块1220的一个或多个像素而对右上方预测块1240中的一个或多个像素进行滤波。例如,基于沿右上方预测块1240的左行的像素而对沿着左上方预测块1220的右行的像素进行滤波。虽然在图12中示出滤波一行像素,但可以对任何数目的像素或像素行进行滤波。在一些实施方式中,可以基于定义的滤波度量来确定滤波的像素或行的数目。定义的滤波度量与预测块大小相关联。例如,4x4预测块可以与定义的滤波度量1相关联,这指示基于相邻4x4预测块的一行来滤波4x4预测块的一行;并且8x8预测块可以与定义的滤波度量2相关联,其指示基于相邻8x8预测块的两行来滤波8x8预测块的两行。

基于相邻预测块的一部分来滤波预测块的一部分包括:使用空间加权滤波,其可以包括基于像素之间的相对空间距离来将来自预测块的像素的贡献加权到上方超预测子块中的相应像素。例如,可以通过基于右上方预测块1240的第一行第一列中的像素来滤波左上方预测块1220的第一行第四列中的像素,确定上方超预测子块1270的第一行第四列中的像素的值。左上方预测块1220的第一行第四列中的像素可以与上方超预测子块1270的第一行第四列中的像素在空间上共点,并且可以被赋予相对较高的权重。右上方预测块1240的第一行第一列的像素可以在空间上与上方超预测子块1270的第一行第四列中的像素相邻,并且可以相对于左上方预测块1220的第一行第四列中的像素的权重而被赋予更低的权重。在一些实施方式中,滤波包括使用解块滤波器。

在一些实施方式中,左下方预测块1250和右下方预测块1260分别作为下方超预测子块1280的左方部分和右方部分被包括在下方超预测子块1280中。将左下方预测块1250和右下方预测块1260包括在下方超预测子块1280中可以包括基于来自右下方预测块1260的一个或多个像素而对左下方预测块1250中的一个或多个像素进行滤波,并且基于来自左下方预测块1250的一个或多个像素而对右下方预测块1260中的一个或多个像素进行滤波。例如,基于沿右下方预测块1260的左行的像素而对沿着左下方预测块1250的右行的像素进行滤波。虽然在图11中示出滤波一行像素,但可以对任何数目的像素或像素行进行滤波。在一些实施方式中,可以基于定义的滤波度量来确定滤波的像素或行的数目。在一些实施方式中,定义的滤波度量与预测块大小相关联。例如,4x4预测块可以与定义的滤波度量1相关联,这指示基于相邻4x4预测块的一行来滤波4x4预测块的一行;并且8x8预测块可以与定义的滤波度量2相关联,其指示基于相邻8x8预测块的两行来滤波8x8预测块的两行。

在一些实施方式中,基于相邻预测块的一部分来滤波预测块的一部分包括:使用空间加权滤波,其可以包括基于像素之间的相对空间距离来将来自预测块的像素的贡献加权到下方超预测子块中的相应像素。例如,可以通过基于右下方预测块1260的第一行第一列中的像素来滤波左下方预测块1250的第一行第四列中的像素,确定下方超预测子块1280的第一行第四列中的像素的值。左下方预测块1250的第一行第四列中的像素可以与下方超预测子块1280的第一行第四列中的像素在空间上共点,并且可以被赋予相对高的权重。右下方预测块1260的第一行第一列的像素可以在空间上与下方超预测子块1280的第一行第四列中的像素相邻,并且可以相对于左下方预测块1250的第一行第四列中的像素的权重而被赋予更低的权重。在一些实施方式中,滤波包括使用解块滤波器。

上方超预测子块1270和下方超预测子块1280分别作为超预测块1290的左方部分和右方部分被包括在超预测块1290中。将上方超预测子块1270和下方超预测子块1280包括在超预测块1290中可以包括基于来自下方超预测子块1280的一个或多个像素而对上方超预测子块1270中的一个或多个像素进行滤波,并且基于来自上方超预测子块1270的一个或多个像素而对下方超预测子块1280中的一个或多个像素进行滤波。例如,基于沿下方超预测子块1280的顶行的像素而对沿着上方超预测子块1270的底行的像素进行滤波。虽然在图12中示出滤波一行像素,但可以对任何数目的像素或像素行进行滤波。在一些实施方式中,可以基于定义的滤波度量来确定滤波的像素或行的数目。在一些实施方式中,定义的滤波度量与预测块大小相关联。例如,4x4预测块可以与定义的滤波度量1相关联,这指示基于相邻4x4预测块的一行来滤波4x4预测块的一行;并且8x8预测块可以与定义的滤波度量2相关联,其指示基于相邻8x8预测块的两行来滤波8x8预测块的两行。

在一些实施方式中,基于相邻上方预测子块的一部分来滤波超预测子块的一部分包括:使用空间加权滤波,其可以包括基于像素之间的相对空间距离来将来自超预测子块的像素的贡献加权到超预测块中的相应像素。例如,可以通过基于下方超预测子块1280的第一行第一列中的像素来滤波上方超预测子块1270的第四行第一列中的像素,确定超预测块1290的第四行第一列中的像素的值。上方超预测子块1270的第四行第一列中的像素可以与超预测块1290的第四行第一列中的像素在空间上共点,并且可以被赋予相对高的权重。下方超预测子块1280的第一行第一列的像素可以在空间上与超预测块1290的第四行第一列中的像素相邻,并且可以相对于下方超预测子块1280的第一行第四列中的像素的权重而被赋予更低的权重。在一些实施方式中,滤波包括使用解块滤波器。

图13是根据本公开的实施方式的,包括用于水平分区的扩展预测滤波的超变换代码化的框图。在一些实施例中,超变换代码化——诸如图8所示的超变换代码化包括:超预测代码化——诸如图9所示的超预测代码化,其包括生成超预测块并且将两个或多于两个的预测块包括在超预测块中,其可以包括使用扩展预测滤波对预测块进行滤波,如图9的962所示。

如图13所示,扩展预测滤波包括识别当前块1300。为预测代码化,可以水平分区当前块,其包括识别与第一运动向量(mv1)相关联的上方子块或分区1310和与第二运动向量(mv2)相关联的下方子块或分区1320。例如,当前块1300可以是诸如64x64块的nxn块,上方子块1310可以是诸如32x64子块的子块,以及与上方子块1310相关联的运动向量(mv1)可以指示对应的预测块大小,诸如32x64预测块大小。在另一示例中,当前块1300是诸如64x64块的nxn块,下方子块1320是诸如32x64子块的子块,并且与下方子块1320相关联的运动向量(mv2)指定对应的预测块大小,诸如32x64预测块大小。

在一些实施方式中,扩展预测滤波包括识别超预测扩展大小。超预测扩展大小可以指示诸如八个像素的像素的数目,以扩展预测块大小来识别扩展预测块大小。可以基于预测块大小、颜色采样、或其组合来识别超预测扩展大小。为了简化和清楚,超预测扩展大小在此被描述为像素的数目或基数,或像素的行或列;然而,像素的数目可以取决于颜色采样。例如,如图6所示,nxn块可以被描述为包括nxn个像素,其可以对应于亮度像素的nxn块、u或cb色度像素的块,以及v或cr色度像素的块。

扩展预测滤波可以包括基于超预测扩展大小和所识别的超变换块边界,扩展每一预测块的大小以生成对应的扩展预测块大小。在一些实施方式中,可以在子块的上方、子块的左上方、子块的左方、子块的左下方、子块的下方、子块的右下方、子块的右方、子块的右上方或其组合,以超预测扩展大小来扩展预测块大小。例如,可以以上方8个像素、右上方8个像素、右方8个像素、右下方8个像素、下方8个像素、左下方8个像素、和左方8个像素扩展来8x8预测块大小,以生成24x24扩展预测块大小。扩展预测块大小可以限于对应的超变换边界内的像素。

在一个示例中,当前块1300是64x64块中的左上方32x32子块,并且识别64x64超变换大小1330以供超变换代码化该64x64块。当前的32x32块1300被分区成上方16x32子块1310和下方16x32子块1320。超预测扩展大小为8个像素。与上方16x32子块1310相对应的预测块大小向右下方扩展8个像素,以确定24x40上方扩展预测块大小1312。向左上方扩展与16x32子块1310相对应的预测块大小可以受所示的超变换边界1330限制。与下方16x32子块1320相对应的预测块大小向右、向下、和向上扩展8个像素以生成32x40的下方扩展预测块大小1322。向左扩展与下方16x32子块1320相对应的预测块大小可以受所示的超变换边界1330限制。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离至少为——诸如等于或大于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离至少为超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离至少为超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离至少为超预测扩展大小,并且在向上、向左、左上方、向下、左下方、右、右下方、右上方像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离至少为诸如等于或大于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离至少为超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离至少为超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离小于超预测扩展大小,并且在向上、向左、向左上、向左下、向下像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离至少为诸如等于或大于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离至少为超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离至少为超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离小于超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离至少为超预测扩展大小,并且在向上、向左、向左上、向右上和向右像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离至少为诸如等于或大于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离至少为超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离至少为超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离小于超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离小于超预测扩展大小,并且在向上、向左上和向左像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离至少为诸如等于或大于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离小于超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离至少为超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离至少为超预测扩展大小,并且在向上、向下、向右上、向右下和向右像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离至少为诸如等于或大于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离小于超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离至少为超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离小于超预测扩展大小,并且在向上和向下像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离至少为诸如等于或大于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离小于超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离小于超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离至少为超预测扩展大小,并且在向上、向右上、和向右像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离至少为诸如等于或大于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离小于超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离小于超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离小于超预测扩展大小,并且在向上像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离小于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离至少为超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离至少为超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离至少为预测扩展大小,并且在向左、向下、左下方、右下方和向右像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离小于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离至少为超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离至少为超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离小于超预测扩展大小,并且在向左、左下方和向下像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离小于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离至少为超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离小于超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离至少为超预测扩展大小,并且在向左和向右像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离小于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离至少为超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离小于超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离小于超预测扩展大小,并且在向左像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离小于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离小于超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离至少为超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离至少为超预测扩展大小,并且在向下、右下方和向右像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离小于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离小于超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离至少为超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离小于超预测扩展大小,并且在向下像素位置使预测块大小扩展超预测扩展大小。

在另一示例中,子块中的左上方像素位置与超变换中的左上方像素位置之间的垂直距离小于超预测扩展大小,子块中的左上方像素位置与超变换中的左上方像素位置之间的水平距离小于超预测扩展大小,子块中的右下方像素位置和超变换中的右下方像素位置之间的垂直距离小于超预测扩展大小,子块中的右下方像素位置与超变换中的右下方像素位置之间的水平距离至少为超预测扩展大小,并且在向右像素位置使预测块大小扩展超预测扩展大小。

在一些实施方式中,扩展预测块包括:将预测块从子块大小扩展到当前块大小,并且将预测块从当前块大小扩展超预测扩展大小。例如,当前块可以是8x8块,超变换大小可以大于8x8,并且扩展预测块大小可以包括将预测块大小从例如4x8、8x4、或4x4的子块大小扩展到当前块大小8x8,并且在超变换之内将8x8预测块扩展超预测扩展大小以生成例如24x24预测块。

在一些实施方式中,基于针对预测所述子块和对应的扩展预测块大小所识别的运动向量,识别与当前块的每个子块相对应的预测块。例如,基于与预测上方子块1310和对上方子块1310所识别的扩展预测块大小1312相关联的运动向量(mv1),从参考帧识别上方预测块1314。在另一示例中,基于与预测下方子块1310和对下方子块1320所识别的扩展预测块大小1322相关联的运动向量(mv2),从参考帧识别下方预测块1324。

在一些实施方式中,通过在空间上将当前块1300的分区1310/1320所识别的预测块1314/1324与加权取平均相组合,确定当前块1300的超预测块1340。超预测块1340中的每个像素可以包括来自一个或多个预测块1314/1324的空间上对应或并置的像素的平均加权贡献。

在一些实施方式中,所识别的预测块1314/1324中的每个像素表示与超变换并存的当前视频帧的部分中的位置处的像素的预测值。所识别的预测块1314/1324可以包括多个并置或空间上并存的像素。例如,位于上方预测块1314的下方边缘附近的像素与下方预测块1324中的像素在空间上并存。在这种情况下,可以为每个并置像素识别加权值,并且可以在由超预测块1340的中心部分1342所指示的对应位置处,可以将每个加权并置像素值的平均值包括在超预测块1340中。

可以从其他预测块中省略来自预测块1314/1324的一个或多个像素,对于该像素可以省略加权取平均,并且来自预测块的像素值可以被包括在超预测块1340中。例如,从下方预测块1324省略与上方预测块1314的顶部附近的像素位置相对应的像素,并且在如超预测块1340的上方部分1344所指示的超预测块1340中的对应位置处,包括上方预测块1314中的对应像素的值。在另一示例中,从上方预测块1314省略与下方预测块1324的底部附近的像素位置相对应的像素,并且在如超预测块1340的底部1346所指示的超预测块1340中的对应位置处,包括下方预测块1324中的对应像素的值。

可以基于如由1350所指示,并置像素的数目或基数、并置像素距离与预测块相对应的子块和相邻预测块之间的边界的相对空间距离、或其组合来确定来自预测块1314/1324的每个并置像素的加权值。

图14是根据本公开的实施方式的,包括用于垂直分区的扩展预测滤波的超变换代码化的框图。除上文所述,如图14所示的包括对于垂直分区的扩展预测滤波的超变换代码化类似于图13所示的包括对于水平分区的扩展预测滤波的超变换代码化。

如图14所示,扩展预测滤波包括识别当前块1400。为预测代码化,可以垂直分区当前块,其包括识别与第一运动向量(mv1)相关联的左方子块或分区1410以及与第二运动向量(mv2)相关联的右方子块或分区1420。例如,当前块1400可以是诸如64x64块的nxn块,左方子块1410是诸如64x32子块的子块,以及与左方子块1410相关联的运动向量(mv1)指示对应的预测块大小,诸如64x32预测块大小。在另一示例中,当前块1400可以是诸如64x64块的nxn块,右方子块1420是诸如64x32子块的子块,并且与该右方子块1420相关联的运动向量(mv2)指示对应的预测块大小,诸如64x32预测块大小。

在一个示例中,当前块1400可以是64x64块中的左上方32x32子块,并且针对超变换代码化64x64块而识别64x64超变换大小1430。当前的32x32块1400被分区成左32x16子块1410和右32x16子块1420。超预测扩展大小可以是8个像素。与左32x16子块1410相对应的预测块大小向右和向下扩展8个像素,以确定40x24左扩展预测块大小1412。将与左32x16子块1410相对应的预测块大小向左和向上扩展可能受超变换边界1430限制,如所示。与右32x16子块1420相对应的预测块大小向右、向下、和向左扩展8个像素以生成40x32右扩展预测块大小1422。向上扩展与右32x16子块1420相对应的预测块大小可能受超变换边界1430限制,如所示。

扩展预测块可以包括将预测块从子块大小扩展到当前块大小,并且将预测块从当前块大小扩展超预测扩展大小。例如,当前块可以是8x8块,超变换大小大于8x8,并且扩展预测块大小包括将预测块大小从例如4x8、8x4、或4x4的子块大小扩展到当前块大小8x8,并且在超变换之内将8x8预测块扩展超预测扩展大小以生成例如24x24预测块。

在一些实施方式中,基于针对预测子块和对应的扩展预测块大小所识别的运动向量来识别与当前块的每个子块相对应的预测块。例如,基于与预测左方子块1410和对左方子块1410识别的扩展预测块大小1412相关联的运动向量(mv1),从参考帧识别左预测块1414。在另一示例中,基于与预测右方子块1410和对右方子块1420所识别的扩展预测块大小1422相关联的运动向量(mv2),从参考帧识别右预测块1424。

通过空间上将当前块1400的分区1410/1420的所识别的预测块1414/1424与加权取平均组合,可以确定当前块1400的超预测块1440。在这样的情况下,超预测块1440中的每个像素可以包括来自预测块1414/1424中的一个或多个的空间上对应或并置的像素的平均加权贡献。

在一些实施方式中,所识别的预测块1414/1424中的每个像素表示与超变换并存的当前视频帧的部分中的位置处的像素的预测值。所识别的预测块1414/1424可以包括多个并置或空间上并存的像素。例如,位于左预测块1414的右边缘附近的像素与右预测块1424中的像素在空间上并存。可以为每个并置像素识别加权值,并且在由超预测块1440的中心部分1442所指示的对应位置处,可以将每个加权并置像素值的平均值包括在超预测块1440中。

可以从其他预测块中省略来自预测块1414/1424的一个或多个像素,对于该像素可以省略加权取平均,并且来自预测块的像素值可以被包括在超预测块1440中。例如,从右预测块1424省略与左预测块1414的左边缘附近的像素位置相对应的像素,并且在如超预测块1440的左方部分1444所指示的超预测块1440中的对应位置处,包括左预测块1414中的对应像素的值。在另一示例中,从左预测块1414省略与右预测块1424的右边缘附近的像素位置相对应的像素,并且在如超预测块1440的右方部分1446所指示的超预测块1440中的对应位置处,包括右预测块1424中的对应像素的值。

在一些实施方式中,可以基于如由1450所指示的并置像素的数目或基数、并置像素距离与预测块相对应的子块和相邻预测块之间的边界的相对空间距离、或其组合来确定来自预测块1414/1424的每个并置像素的加权值。

图15-17是根据本公开的实施方式的,包括用于分割分区的扩展预测滤波的超变换代码化的框图。对于左上方和右下方分区的分割分区如图15所示。除上文所述,如图15-17所示的包括对于垂直分区的扩展预测滤波的超变换代码化类似于图13和14所示的包括对于水平分区的扩展预测滤波的超变换代码化。

如图15所示,扩展预测滤波包括识别当前块1500。为预测代码化,可以分割分区当前块,其包括识别与第一运动向量(mv1)相关联的左上方子块或分区1510以及与第二运动向量(mv2)相关联的右上方子块或分区1520。例如,当前块1500可以是诸如64x64块的nxn块,左上方子块1510是诸如32x32子块的子块,以及与左上方子块1510相关联的运动向量(mv1)指示对应的预测块大小,诸如32x32预测块大小。在另一示例中,当前块1500可以是诸如64x64块的nxn块,右上方子块1520是诸如32x32子块的子块,并且与该右上方子块1520相关联的运动向量(mv2)指示对应的预测块大小,诸如32x32预测块大小。

在另一示例中,当前块1500可以是64x64块中的左上方32x32子块,并且针对超变换代码化64x64块而识别64x64超变换大小1530。当前的32x32块1500被分区成左上方16x16子块1510和右上方16x16子块1520。超预测扩展大小可以是8个像素。将与左上方16x16子块1510相对应的预测块大小向右和向下扩展8个像素,以确定24x24左上方扩展预测块大小1512。将与左上方16x16子块1510相对应的预测块大小向左和向上扩展可能受超变换边界1530限制,如所示。与右上方16x16子块1520相对应的预测块大小向右、向下、和向左扩展8个像素以生成24x32右上方扩展预测块大小1522。向上扩展与右上方16x16子块1520相对应的预测块大小可能受超变换边界1530限制,如所示。

在一些实施方式中,扩展预测块可以包括将预测块从子块大小扩展到当前块大小,并且将预测块从当前块大小扩展超预测扩展大小。例如,当前块可以是8x8块,超变换大小大于8x8,并且扩展预测块大小包括将预测块大小从4x8、8x4、或4x4的子块大小扩展到当前块大小8x8,并且在超变换之内将8x8预测块扩展超预测扩展大小以生成例如24x24预测块。

基于针对预测子块和对应的扩展预测块大小所识别的运动向量来识别与当前块的每个子块相对应的预测块。例如,基于与预测左上方子块1510和对左上方子块1510识别的扩展预测块大小1512相关联的运动向量(mv1),从参考帧识别左上方预测块1514。在另一示例中,基于与预测右上方子块1510和对右上方子块1520所识别的扩展预测块大小1522相关联的运动向量(mv2),从参考帧识别右上方预测块1524。

在一些实施方式中,通过空间上将当前块1500的分区1510/1520的所识别的预测块1514/1524与加权取平均组合,确定当前块1500的上方超预测子块1540。上方超预测子块1540中的每个像素可以包括来自预测块1514/1524中的一个或多个的空间上对应或并置的像素的平均加权贡献。

所识别的预测块1514/1524中的每个像素可以表示与超变换并存的当前视频帧的部分中的位置处的像素的预测值。在一些实施方式中,所识别的预测块1514/1524可以包括多个并置或空间上并存的像素。例如,位于左上方预测块1514的右边缘附近的像素与右上方预测块1524中的像素在空间上并存。在一些实施方式中,可以为每个并置像素识别加权值,并且在由上方超预测子块1540的中心部分1542所指示的对应位置处,可以将每个加权并置像素值的平均值包括在上方超预测子块1540中。

在一些实施方式中,可以从其他预测块中省略来自预测块1514/1524的一个或多个像素,对于该像素可以省略加权取平均,并且来自预测块的像素值可以被包括在上方超预测子块1540中。例如,从右上方预测块1524省略与左上方预测块1514的左边缘附近的像素位置相对应的像素,并且在如上方超预测子块1540的左方部分1544所指示的上方超预测子块1540中的对应位置处,包括左上方预测块1514中的对应像素的值。在另一示例中,从左上方预测块1514省略与右上方预测块1524的右边缘附近的像素位置相对应的像素,并且在如上方超预测子块1540的右方部分1546所指示的上方超预测子块1540中的对应位置处,包括右上方预测块1524中的对应像素的值。

可以基于如由1550所指示的并置像素的数目或基数、并置像素距离与预测块相对应的子块和相邻预测块之间的边界的相对空间距离、或其组合来确定来自预测块1514/1524的每个并置像素的加权值。

如图16所示,扩展预测滤波包括识别当前块1500。为预测代码化,可以分割分区当前块,其包括识别与第一运动向量(mv3)相关联的左下方子块或分区1610以及与第二运动向量(mv4)相关联的右下方子块或分区1620。例如,当前块1500可以是诸如64x64块的nxn块,左下方子块1610是诸如32x32子块的子块,以及与左下方子块1610相关联的运动向量(mv3)指示对应的预测块大小,诸如32x32预测块大小。在另一示例中,当前块1500可以是诸如64x64块的nxn块,右下方子块1620是诸如32x32子块的子块,并且与该右下方子块1620相关联的运动向量(mv4)指示对应的预测块大小,诸如32x32预测块大小。

在另一示例中,当前块1500可以是64x64块中的左上方32x32子块,并且针对超变换代码化64x64块而识别64x64超变换大小1530。当前的32x32块1500被分区成左下方16x16子块1610和右下方16x16子块1620。超预测扩展大小可以是8个像素。将与左下方16x16子块1610相对应的预测块大小向上、向右和向下扩展8个像素,以确定32x24左下方扩展预测块大小1612。将与左下方16x16子块1610相对应的预测块大小向左扩展可能受超变换边界1530限制,如所示。与右下方16x16子块1620相对应的预测块大小向上、向右、向下和向左扩展8个像素以生成32x32右下方扩展预测块大小1622。

扩展预测块可以包括将预测块从子块大小扩展到当前块大小,并且将预测块从当前块大小扩展超预测扩展大小。例如,当前块可以是8x8块,超变换大小大于8x8,并且扩展预测块大小包括将预测块大小从4x8、8x4、或4x4的子块大小扩展到当前块大小8x8,并且在超变换之内将8x8预测块扩展超预测扩展大小以生成例如24x24预测块。

在一些实施方式中,基于针对预测子块和对应的扩展预测块大小所识别的运动向量来识别与当前块的每个子块相对应的预测块。例如,基于与预测左下方子块1610和对左下方子块1610识别的扩展预测块大小1612相关联的运动向量(mv3),从参考帧识别左下方预测块1614。在另一示例中,基于与预测右下方子块1610和对右下方子块1620所识别的扩展预测块大小1622相关联的运动向量(mv4),从参考帧识别右下方预测块1624。

通过空间上将当前块1500的分区1610/1620的所识别的预测块1614/1624与加权取平均组合,确定当前块1500的下方超预测子块1640。在一些实施方式中,下方超预测子块1640中的每个像素包括来自预测块1614/1624中的一个或多个的空间上对应或并置的像素的平均加权贡献。

在一些实施方式中,所识别的预测块1614/1624中的每个像素表示与超变换并存的当前视频帧的部分中的位置处的像素的预测值。所识别的预测块1614/1624可以包括多个并置或空间上并存的像素。例如,位于左下方预测块1614的右边缘附近的像素与右下方预测块1624中的像素在空间上并存。在一些实施方式中,为每个并置像素识别加权值,并且在由下方超预测子块1640的中心部分1642所指示的对应位置处,将每个加权并置像素值的平均值包括在下方超预测子块1640中。

可以从其他预测块中省略来自预测块1614/1624的一个或多个像素,对于该像素可以省略加权取平均,并且来自预测块的像素值可以被包括在下方超预测子块1640中。例如,从右下方预测块1624省略与左下方预测块1614的左边缘附近的像素位置相对应的像素,并且在如下方超预测子块1640的左方部分1644所指示的下方超预测子块1640中的对应位置处,包括左下方预测块1614中的对应像素的值。在另一示例中,从左下方预测块1614省略与右下方预测块1624的右边缘附近的像素位置相对应的像素,并且在如下方超预测子块1640的右方部分1646所指示的下方超预测子块1640中的对应位置处,包括右下方预测块1624中的对应像素的值。

在一些实施方式中,可以基于如由1650所指示的并置像素的数目或基数、并置像素距离与预测块相对应的子块和相邻预测块之间的边界相对空间距离、或其组合来确定来自预测块1614/1624的每个并置像素的加权值。

如图17所示,当前块1500被分成四个子块1510/1520/1610/1620。基于第一运动向量(mv1)来识别与左上方子块1510相对应的左上方扩展预测块1514,基于第二运动向量(mv2)来识别右上方子块1520相对应的右上方扩展预测块1524,基于第三运动向量(mv3)识别与左下方子块1610相对应的左下方扩展预测块1614,以及基于第四运动向量(mv4)来识别与右下方子块1620相对应的右下方扩展预测块1624。

上方超预测子块1540可以通过将左上方和右上方预测块1514/1524与加权取平均进行空间组合来确定,下方超预测子块1640可以通过将左下方和右下方预测块1614/1624与加权取平均进行空间组合来确定,以及超预测块1700可以通过将上方超预测子块1540和下方超预测子块1640与加权取平均进行空间组合来确定,如1710所指示。

图18是根据本公开的实施方式的,超变换代码化具有多个分区层级的块的框图。在一些实施方式中,诸如64x64块的块可以被垂直分区成两个64x32子块、水平分区成两个32x64子块,或者分割分区成四个32x32子块,如所示。

32x32分区可以如64x64块的右下方所示不被分区,如64x64块的左下方所示垂直分区成两个32x16子块,如64x64块的右上方所示水平分区成两个16x32子块,或如64x64块的左上方所示分割分区成四个16x16子块。

16x16分区可以如左上方32x32块的右下方所示不被分区,如左上方32x32块的左下方所示垂直分区成两个16x8子块,如左上方32x32块的右上方所示水平分区为两个8x16子块,或者如左上方32x32块的左上方所示分割分区成四个8x8子块。

8x8分区可以如左上方32x32块的左上方16x16块的右下方所示不被分区,如左上方32x32块的左上方16x16块的左下方所示垂直分区成两个8x4子块,如左上方32x32块的左上方16x16块的右上方所示水平分区成两个4x8子块,或者如左上方32x32块的左上方16x16块的左上方所示分割分区成四个4x4子块。

64x64块可以被识别为用于超变换代码化——诸如图1所示的超变换代码化的当前块。如所示,可以分割分区64x64当前块,并且可以使用小于当前块大小的预测块来对64x64当前块进行编码。

为预测代码化64x64当前块,可以识别四个32x32子块。可以将64x64超变换识别为用于对64x64当前块进行代码化的超变换,并且可以对64x64当前块进行超预测代码化,诸如图9所示的超变换代码化。

可以对64x64当前块生成64x64超预测块,其可以包括针对四个32x32子块中的每一个确定预测块。例如,四个32x32子块可以以光栅扫描顺序进行超预测代码化。

左上方32x32子块可以如所示被分割分区,可以使用小于左上方32x32子块的大小的预测块来编码左上方32x32子块,并且可以通过将左上方32x32子块用作当前块来超预测代码化左上方32x32子块。

可以对32x32当前块生成32x32超预测块,其可以包括对四个16x16子块中的每一个确定预测块。例如,四个16x16子块可以以光栅扫描顺序被超预测代码化。

左上方16x16子块可以如所示分割分区,可以使用小于左上方16x16子块的大小的预测块来编码左上方16x16子块,并且可以通过将左上方16x16子块用作当前块来超预测代码化左上方16x16子块。

可以对16x16当前块生成16x16超预测块,其可以包括对四个8x8子块中的每一个确定预测块。例如,四个8x8子块是以光栅扫描顺序进行超预测代码化的。

左上方8x8子块可以如所示被分割分区,可以使用小于左上方8x8子块的大小的预测块来对左上方8x8子块进行编码,以及可以通过将左上方8x8子块用作当前块来超预测代码化左上方8x8子块。

可以对8x8当前块生成8x8超预测块,其可以包括对四个4x4子块中的每一个确定预测块。例如,四个4x4子块是以光栅扫描顺序进行超预测代码化的。

如所示,左上方4x4子块可以是未分区的,并且可以确定与左上方4x4子块相对应的预测块。如所示,右上方4x4子块可以是未分区的,并且确定与右上方4x4子块相对应的预测块。如所示,左下方4x4子块可以是未分区的,并且确定与左下方4x4子块相对应的预测块。如所示,右下方4x4子块可以是未分区的,并且确定与右下方4x4子块相对应的预测块。针对四个4x4分区的四个预测块可以被包括在针对左上方8x8分区的8x8超预测块中,其包括基于空间上相邻的预测块来对每个预测块的至少一部分进行滤波。

如所示,可以水平分区右上方8x8子块,可以使用小于右上方8x8子块的大小的预测块来编码右上方8x8子块,以及可以通过将右上方8x8子块用作当前块来超预测代码化右上方8x8子块。

可以对8x8当前块生成8x8超预测块,其可以包括针对两个4x8子块中的每一个确定预测块。例如,两个4x8子块是以光栅扫描顺序进行超预测代码化的。

如所示,左4x8子块可以是未分区的,并且确定与左4x8子块相对应的预测块。如所示,右4x8子块可以是未分区的,并且确定与右4x8子块相对应的预测块。针对两个4x8分区的两个预测块可以被包括在针对右上方8x8分区的8x8超预测块中,其可以包括基于空间上相邻的预测块来对每个预测块的至少一部分进行滤波。

如所示,可以垂直分区左下方8x8子块,使用小于左下方8x8子块的大小的预测块来对左下方8x8子块进行编码,并且通过将左下方8x8子块用作当前块来超预测代码化左下方8x8子块。

可以对8x8当前块生成8x8超预测块,其可以包括指定的两个8x4子块中的每一个确定预测块。例如,两个8x4子块是以光栅扫描顺序进行超预测代码化的。

如所示,上方8x4子块可以是未分区的,并且确定与上方8x4子块相对应的预测块。如所示,下方8x4子块可以是未分区的,并且确定与下方8x4子块相对应的预测块。针对两个8x4分区的两个预测块可以被包括在针对左下方8x8分区的8x8超预测块中,其可以包括基于空间上相邻的预测块来对每个预测块的至少一部分进行滤波。

如所示,右下方8x8子块可以是未分区的,使用大小为左下方8x8子块的预测块来编码右下方8x8子块,并且确定与右下方8x8子块相对应的预测块。

针对左上方8x8子块的8x8超预测块、针对右上方8x8子块的8x8超预测块、针对左下方子块的8x8超预测块、和针对右下方8x8子块的8x8预测块可以被包括在针对左上方16x16分区的16x16超预测块中,其可以包括基于空间上相邻的预测块来对每个预测块的至少一部分进行滤波。

图18是根据本公开的实施方式的,超变换代码化具有多个分区层级的块的框图。在一些实施方式中,诸如64x64块的块被垂直分区成两个64x32子块、水平分区成两个32x64子块,或者分割分区成四个32x32子块,如所示。

32x32分区可以如64x64块的右下方所示不被分区,如64x64块的左下方所示垂直分区成两个32x16子块,如64x64块的右上方所示水平分区成两个16x32子块,或如64x64块的左上方所示分割分区成四个16x16子块。

16x16分区可以如左上方32x32块的右下方所示不被分区,如左上方32x32块的左下方所示垂直分区成两个16x8子块,如左上方32x32块的右上方所示水平分区为两个8x16子块,或者如左上方32x32块的左上方所示分割分区成四个8x8子块。

8x8分区可以如左上方32x32块的左上方16x16块的右下方所示不被分区,如左上方32x32块的左上方16x16块的左下方所示垂直分区成两个8x4子块,如左上方32x32块的左上方16x16块的右上方所示水平分区成两个4x8子块,或者如左上方32x32块的左上方16x16块的左上方所示分割分区成四个4x4子块。

64x64块可以被识别为用于超变换代码化——诸如图1所示的超变换代码化的当前块。如所示,可以分割分区64x64当前块,并且使用小于当前块大小的预测块来对64x64当前块进行编码。

为预测代码化64x64当前块,可以识别四个32x32子块。将64x64超变换识别为用于对64x64当前块进行代码化的超变换,并且使用诸如图9所示的超变换代码化来超预测代码化64x64当前块。

可以对64x64当前块生成64x64超预测块,其可以包括针对四个32x32子块中的每一个确定预测块。例如,四个32x32子块以光栅扫描顺序进行超预测代码化。

左上方32x32子块可以如所示被分割分区,可以使用小于左上方32x32子块的大小的预测块来编码左上方32x32子块,并且可以通过将左上方32x32子块用作当前块来超预测代码化左上方32x32子块。

可以对32x32当前块生成32x32超预测块,其可以包括对四个16x16子块中的每一个确定预测块。例如,四个16x16子块是以光栅扫描顺序被超预测代码化的。

左上方16x16子块可以如所示分割分区,可以使用小于左上方16x16子块的大小的预测块编码左上方16x16子块,将左上方16x16子块用作当前块,超预测代码化左上方16x16子块。

可以对16x16当前块生成16x16超预测块,其包括对四个8x8子块中的每一个确定预测块。例如,四个8x8子块是以光栅扫描顺序进行超预测代码化的。

左上方8x8子块可以如所示被分割分区,使用小于左上方8x8子块的大小的预测块来对左上方8x8子块进行编码,以及通过将左上方8x8子块用作当前块来超预测代码化左上方8x8子块。

可以对8x8当前块生成8x8超预测块,其可以包括对四个4x4子块中的每一个确定预测块。例如,四个4x4子块是以光栅扫描顺序进行超预测代码化的。

如所示,左上方4x4子块可以是未分区的,并且确定与左上方4x4子块相对应的预测块。如所示,右上方4x4子块可以是未分区的,并且确定与右上方4x4子块相对应的预测块。如所示,左下方4x4子块可以是未分区的,并且确定与左下方4x4子块相对应的预测块。如所示,右下方4x4子块可以是未分区的,并且确定与右下方4x4子块相对应的预测块。针对四个4x4分区的四个预测块可以被包括在针对左上方8x8分区的8x8超预测块中,其可以包括基于空间上相邻的预测块来对每个预测块的至少一部分进行滤波。

如所示,可以水平分区右上方8x8子块,使用小于右上方8x8子块的大小的预测块来编码右上方8x8子块,以及通过将右上方8x8子块用作当前块来超预测代码化右上方8x8子块。

可以对8x8当前块生成8x8超预测块,其可以包括针对两个4x8子块中的每一个确定预测块。例如,两个4x8子块是以光栅扫描顺序进行超预测代码化的。

如所示,上方4x8子块可以是未分区的,并且确定与上方4x8子块相对应的预测块。如所示,下方4x8子块可以是未分区的,并且确定与下方4x8子块相对应的预测块。针对两个4x8分区的两个预测块可以被包括在针对右上方8x8分区的8x8超预测块中,其可以包括基于空间上相邻的预测块来对每个预测块的至少一部分进行滤波。

如所示,可以垂直分区左下方8x8子块,使用小于左下方8x8子块的大小的预测块来对左下方8x8子块进行编码,并且通过将左下方8x8子块用作当前块来超预测代码化左下方8x8子块。

可以对8x8当前块生成8x8超预测块,其可以包括指定的两个8x4子块中的每一个确定预测块。例如,两个8x4子块是以光栅扫描顺序进行超预测代码化的。

如所示,左8x4子块可以是未分区的,并且确定与左8x4子块相对应的预测块。如所示,右8x4子块可以是未分区的,并且确定与右8x4子块相对应的预测块。针对两个8x4分区的两个预测块可以被包括在针对左下方8x8分区的8x8超预测块中,其可以包括基于空间上相邻的预测块来对每个预测块的至少一部分进行滤波。

如所示,右下方8x8子块可以是未分区的,使用大小为右下方8x8子块的预测块来编码右下方8x8子块,并且确定与右下方8x8子块相对应的预测块。

针对左上方8x8子块的8x8超预测块、针对右上方8x8子块的8x8超预测块、针对左下方8x8子块的8x8超预测块、和针对右下方8x8子块的8x8预测块可以被包括在针对左上方16x16分区的16x16超预测块中,其可以包括基于空间上相邻的预测块来对每个预测块的至少一部分进行滤波。

如所示,可以水平地分区右上方16x16子块,使用小于右上方16x16子块的大小的预测块来编码右上方16x16子块,并且通过将右上方16x16子块用作当前块来超预测代码化右上方16x16子块。

可以对16x16当前块生成16x16超预测块,其可以包括对两个8x16子块中的每一个确定预测块。例如,两个8x16子块是以光栅扫描顺序进行超预测代码化的。

如所示,上方8x16子块可以是未分区的,并且确定与上方8x16子块相对应的预测块。如所示,下方8x16子块可以是未分区的,并且确定与下方8x16子块相对应的预测块。针对两个8x16分区的两个预测块可以被包括在针对右上方16x16分区的16x16超预测块中,其可以包括基于空间上相邻的预测块来对每个预测块的至少一部分进行滤波。

如所示,可以垂直分区左下方16x16子块,使用小于左下方16x16子块的大小的预测块来编码左下方16x16子块,并且通过将左下方16x16子块用作当前块来超预测代码化左下方16x16子块。

可以对16x16当前块生成16x16超预测块,其可以包括对两个16x8子块中的每一个确定预测块。例如,两个16x8子块是以光栅扫描顺序进行超预测代码化的。

如所示,左16x8子块可以是未分区的,并且确定与左16x8子块相对应的预测块。如所示,右16x8子块可以是未分区的,并且确定与右16x8子块相对应的预测块。针对两个16x8分区的两个预测块可以被包括在针对左下方16x16分区的16x16超预测块中,其可以包括基于空间上相邻的预测块来对每个预测块的至少一部分进行滤波。

如所示,右下方16x16子块可以是未分区的,使用大小为右下方16x16子块的预测块来编码右下方16x16子块,并且确定与右下方16x16子块相对应的预测块。

针对左上方16x16子块的16x16超预测块、针对右上方16x16子块的16x16超预测块、针对左下方16x16子块的16x16超预测块、和针对右下方16x16子块的16x16预测块可以被包括在针对左上方32x32分区的32x32超预测块中,其可以包括基于空间上相邻的预测块来对每个预测块的至少一部分进行滤波。

如所示,可以水平地分区右上方32x32子块,使用小于右上方32x32子块大小的预测块来编码右上方32x32子块,并且通过将右上方32x32子块用作当前块来超预测代码化右上方32x32子块。

可以对32x32当前块生成32x32超预测块,其可以包括对两个16x32子块中的每一个确定预测块。例如,两个16x32子块是以光栅扫描顺序进行超预测代码化的。

如所示,上方16x32子块可以是未分区的,并且确定与上方16x32子块相对应的预测块。如所示,下方16x32子块可以是未分区的,并且确定对应于下方16x32子块的预测块。针对两个16x32分区的两个预测块可以被包括在针对右上方32x32分区的32x32超预测块中,其可以包括基于空间上相邻的预测块来滤波每个预测块的至少一部分。

如所示,可以垂直分区左下方32x32子块,使用小于左下方32x32子块的大小的预测块来编码左下方32x32子块,并且通过将左下方32x32子块用作当前块来超预测代码化左下方32x32子块。

可以对32x32当前块生成32x32超预测块,其可以包括确定用于两个16x8子块中的每一个的预测块。例如,两个16x8子块是以光栅扫描顺序进行超预测代码化的。

如所示,左16x8子块可以是未分区的,并且确定与左16x8子块相对应的预测块。如所示,右16x8子块可以是未分区的,并且确定与右16x8子块相对应的预测块。针对两个16x8分区的两个预测块可以被包括在针对左下方32x32分区的32x32超预测块中,其可以包括基于空间上相邻的预测块来滤波每个预测块的至少一部分。

如所示,右下方32x32子块可以是未分区的,使用大小为右下方32x32子块的预测块来编码右下方32x32子块,以及确定与右下方32x32子块相对应的预测块。

针对左上方32x32子块的32x32超预测块、针对右上方32x32子块的32x32超预测块、针对左下方32x32子块的32x32超预测块,和针对右下方32x32子块的32x32预测块可以被包括在64x64超预测块中,其可以包括基于空间上相邻的预测块来对每个预测块的至少一部分进行滤波。

图19是根据本公开的实施方式的,包括超变换解码的视频解码的示例的图。在一些实施方式中,视频解码包括超变换解码。例如,诸如图5所示的解码器500的解码器中的诸如图5所示的帧内/帧间预测单元540的预测单元、诸如图5所示的变换单元530的变换单元、或其组合执行超变换解码。

在一些实施方式中,包括超变换解码的视频解码包括:在1900处识别当前块,在1910处对分区决策树进行解码,在1920处识别分区,在1930处使用对应大小预测块来预测当前块,在1940处使用当前块大小变换来变换残差,在1950处确定是否使用超变换解码当前块,在1960处超变换解码每个分区,在1970处超预测代码化当前块,在1980处使用超变换来变换残差,在1990处输出变换的块,或其组合。

在1900处识别当前块。在一些实施方式中,在1900处识别当前块可以包括从编码比特流——诸如块头——解码指示当前块的信息。例如,64x64块——诸如图6所示的左下方64x64块610——被识别为当前块。

在1910处解码分区决策树。编码的比特流可以包括诸如位的标志,其指示是否通过使用与当前块大小相对应的超变换大小来超变换代码化当前块。在一些实施方式中,可以从编码比特流中省略指示是否使用与子块大小相对应的超变换大小来超变换代码化包括在较大超变换内的子块的标志。

在1920处识别分区。例如,分区决策树可以指示对当前块没有分区,或者分区决策树可以指示当前块的分区。

在1930处,使用对应的大小预测块来预测当前块。例如,分区决策树可以指示当前块没有分区,并且可以识别具有与当前块相对应大小的预测块。

在1940处,使用当前块大小变换来变换残差。例如,可以从编码视频流中解码变换系数,并使用具有与当前块大小相对应的大小的变换进行变换以产生残差。如在1990处所示,输出解码的残差。

在一些实施方式中,在1950处,确定是否使用超变换解码当前块。例如,分区决策树可以指示用于对当前块进行预测代码化的分区,并且编码的比特流包括诸如位的标志,其指示是否使用具有与当前块大小相对应的大小的超变换来解码当前块。

在一些实施方式中,在1960处,每个分区被超变换解码。例如,编码比特流可以省略指示使用具有与当前块大小相对应的大小的超变换的标志,或者编码比特流可以包括指示使用用于解码当前块的分区的较小变换的标志,并且通过将该子块用作当前块来对当前块的每个分区进行超变换解码。

在1970处,当前块被超预测代码化。例如,编码比特流可以包括指示将超变换用于当前块的标志,并且在1970处,当前块被超预测代码化,其可以类似于图8所示的超预测代码化。例如,超预测代码化当前块可以包括:递归地遍历分区决策树到最低层级,并且通过超预测代码化每个分区块的子块来生成用于相应块的超预测块。

在1980处,使用超变换来变换残差。例如,可以从编码比特流解码变换系数,bq然后使用具有与当前块相对应的大小的超变换来逆变换该变换系数。

在1990处,输出逆变换的残差。例如,在1970处超预测代码化当前块可以生成具有与当前块大小相对应的大小的超预测块,该超预测块被添加到在1980处生成的逆变换残差以生成重构块。该重构块被包括在重构的帧中,其可以被输出以供存储或显示。

单词“示例”或“方面”在本文中被用来意指充当示例、实例或说明。在本文中描述为“示例”或“方面”的任何方面或设计不一定要解释为相对于其它方面或设计而言是优选或有利的。相反地,单词“示例”或“方面”的使用旨在以具体的方式提出概念。如在本申请中使用的,术语“或”旨在意指包括性“或”而不是排他性“或”。也就是说,除非另外指定,或者从场境显而易见,“x包括a或b”旨在意指任何的自然包括性排列组合。也就是说,如果x包括a;x包括b;或者x包括a和b两者,则任何前述实例都满足“x包括a或b”。另外,除非另外指明或者从场境显而易见的针对单数形式,否则如在本申请和所附权利要求书中使用的冠词“一”和“一个”一般地应被理解成意指“一个或多个”。此外,贯穿全文使用的术语“实施例”或“一个实施例”、“实施方式”或“一个实施方式”并不旨在意指相同的实施例或实施方式,除非这样描述。如本文中所使用的,术语“确定”和“识别”或其任何变型包括使用图1中所示的一个或多个设备以无论任何方式来选择、查明、计算、查找、接收、确定、确立、获得、或者以其他方式识别或确定。

此外,为了说明的简单起见,虽然本文中的图和描述可以包括步骤或阶段的序列或系列,但本文中公开的方法的元素可以按照各种顺序和/或并行地发生。另外,本文中公开的方法的元素可以与在本文中并未明确地呈现和描述的其它元素一起发生。此外,可能并非本文中所述的方法的所有元素都是实现根据公开主题的方法所必需的。

可以用硬件、软件、或其任何组合来实现发射站100a和/或接收站100b(以及存储在其上面和/或由其执行的算法、方法、指令等)的实施方式。硬件可以包括例如计算机、知识产权(ip)核心、专用集成电路(asic)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器、或任何其它适当电路。在权利要求书中,应将术语“处理器”理解为单独地或以组合方式包含任何前述硬件。术语“信号”和“数据”被可互换地使用。此外,发射站100a和接收站100b的各部分不一定必须用相同的方式实现。

此外,在一个实施方式中,例如,可以使用计算机程序来实现发射站100a或接收站100b,该计算机程序在被执行时执行本文所述的各方法、算法和/或指令中的任何一个。另外或替选地,例如,可以利用专用计算机/处理器,其可以包含用于执行本文中所述的任何方法、算法或指令的专用硬件。

例如可以在实时视频系统中的计算机上实现发射站100a和接收站100b。替选地,可以在服务器上实现发射站100a,并且可以在诸如手持式通信设备的与服务器分开的设备上实现接收站100b。在这种实例下,发射站100a可以使用编码器400将内容编码成编码的视频信号并将编码的视频信号发射到通信设备。进而,通信设备然后可以使用解码器500将编码的视频信号解码。替选地,通信设备可以解码本地存储在通信设备上的内容,例如并非由发射站100a发射的内容。其它合适的发射站100a和接收站100b实施方式可用。例如,接收站100b可以是通常固定的个人计算机而不是便携式通信设备,和/或包括编码器400的设备还可以包括解码器500。

此外,所有实施方式或其一部分可以采取可从例如有形计算机或计算机可读介质获得的计算机程序产品的形式。计算机可用或计算机可读介质可以是可以例如有形地包含、存储、传送或传输程序以供任何处理器使用或与之相结合地使用的任何设备。该介质可以是例如电子、磁性、光学、电磁、或半导体设备。其它合适的介质也是可用的。

描述上述实施方式是为了允许容易地理解本申请而不是进行限制。相反地,本申请涵盖包括在所附权利要求书范围内的各种修改和等价布置,该范围将是根据最宽泛的解释从而涵盖根据法律许可的所有这样的修改和等价结构。

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