对视频样本块的树进行编码和解码的方法、设备和系统

文档序号:621645 发布日期:2021-05-07 浏览:3次 >En<

阅读说明:本技术 对视频样本块的树进行编码和解码的方法、设备和系统 (Method, device and system for encoding and decoding a tree of blocks of video samples ) 是由 克里斯托弗·詹姆斯·罗斯沃恩 于 2019-06-25 设计创作,主要内容包括:一种用于从位流中解码图像帧中的编码树单位的编码块的系统和方法。该方法包括:接收图像帧,该图像帧具有该图像帧的色度通道相对于该图像帧的亮度通道被子采样的色度格式;以及根据编码树单位的区域的尺寸来确定用于编码树单位的亮度通道的亮度拆分选项。该方法还包括:根据区域的尺寸来确定用于编码树单位的色度通道的色度拆分选项,色度拆分选项不同于亮度拆分选项,能够允许的色度拆分选项得到具有16个样本的最小大小的色度帧内预测块;以及通过从位流中确定用以选择所确定的亮度拆分选项其中之一和所确定的色度拆分选项其中之一的标志来解码编码树单位的编码块。(A system and method for decoding an encoded block of a coding tree unit in an image frame from a bitstream. The method comprises the following steps: receiving an image frame having a chroma format in which a chroma channel of the image frame is sub-sampled relative to a luma channel of the image frame; and determining a luminance splitting option for a luminance channel of the coding tree unit according to the size of the region of the coding tree unit. The method further comprises the following steps: determining a chroma splitting option for a chroma channel of a coding tree unit according to the size of the region, wherein the chroma splitting option is different from a brightness splitting option, and the allowed chroma splitting option obtains a chroma intra-frame prediction block with the minimum size of 16 samples; and decoding the encoded block of the coding tree unit by determining a flag from the bitstream to select one of the determined luma split options and one of the determined chroma split options.)

对视频样本块的树进行编码和解码的方法、设备和系统

相关申请的交叉引用

本申请根据35U.S.C.§119要求于2018年9月21日提交的澳大利亚专利申请2018233042的优先权益,这里出于所有目的将该专利申请的全部内容通过引用合并于此。

技术领域

本发明通常涉及数字视频信号处理,尤其涉及用于对视频样本块的树进行编码和解码的方法、设备和系统。本发明还涉及包括记录有用于对视频样本块的树进行编码和解码的计算机程序的计算机可读介质的计算机程序产品。

背景技术

当前存在包括用于传输和存储视频数据的应用的许多视频编码用的应用。还开发了许多视频编码标准并且其它视频编码标准当前正在开发中。视频编码标准化的最新进展已导致形成被称为“联合视频专家组”(JVET)的组。该联合视频专家组(JVET)包括:还已知为“视频编码专家组”(VCEG)的国际电信联盟(ITU)的电信标准化部门(ITU-T)的研究组16、问题6(SG16/Q6)的成员;以及还已知为“运动图片专家组”(MPEG)的国际标准化组织/国际电工委员会联合技术委员会1/小组委员会29/工作组11(ISO/IEC JTC1/SC29/WG11)的成员。

联合视频专家组(JVET)发布了提案征集(CfP),并在美国圣地亚哥市举行的第10次会议上对答复进行了分析。所提交的答复表明,视频压缩能力明显优于当前最先进的视频压缩标准(即,“高效率视频编码”(HEVC))的视频压缩能力。基于该优异表现,决定开始用以开发命名为“通用视频编码”(VVC)的新视频压缩标准的项目。预计VVC将特别是随着视频格式的能力的增加(例如,具有更高的分辨率和更高的帧频)解决针对甚至更高的压缩性能的持续需求、以及解决针对通过WAN的服务提供(其中,带宽成本相对较高)的日益增长的市场需求。同时,VVC必须可在当代硅工艺中实现,并且在所实现的性能与实现成本之间(例如,在硅面积、CPU处理器负荷、内存利用率和带宽方面)提供可接受的折衷。

视频数据包括各自包括一个或多个颜色通道的图像数据的帧序列。通常,需要一个主要颜色通道和两个次要颜色通道。主要颜色通道通常被称为“亮度”通道,并且(一个或多个)次要颜色通道通常被称为“色度”通道。尽管视频数据通常在RGB(红-绿-蓝)颜色空间中显示,但该颜色空间在三个相应分量之间具有高度相关性。编码器或解码器所看到的视频数据表示通常使用诸如YCbCr等的颜色空间。YCbCr将发光度(根据变换方程映射到“亮度”)集中在Y(主要)通道中,并且将色度集中在Cb和Cr(次要)通道中。此外,可以以与亮度通道相比更低的速率(例如,在水平方向上为一半且在垂直方向上为一半(被称为“4:2:0色度格式”))对Cb和Cr通道进行空间采样。4:2:0色度格式通常用于“消费者”应用中,诸如互联网视频流、广播电视以及蓝光(Blu-rayTM)盘上的存储。水平地而不垂直地以半速率对Cb和Cr通道进行子采样被称为“4:2:2色度格式”。4:2:2色度格式通常用于专业应用中,包括用于电影制作等的片段的捕获。4:2:2色度格式的较高采样速率使得所得视频对编辑操作(诸如颜色分级等)更有弹性。在分发到消费者之前,4:2:2色度格式材料经常被转换为4:2:0色度格式,然后在分发到消费者之前被编码。除了色度格式之外,视频还由分辨率和帧速率来表征。示例分辨率是具有3840×2160的分辨率的超高清晰度(UHD)或具有7680×4320的分辨率的“8K”,并且示例帧速率是60Hz或120Hz。亮度采样速率的范围可以从约每秒500兆样本至每秒数千兆样本。对于4:2:0色度格式,各色度通道的采样速率是亮度采样速率的四分之一,并且对于4:2:2色度格式,各色度通道的采样速率是亮度采样速率的一半。

VVC标准是一种“基于块”的编解码器,其中,帧首先被分割成称为“编码树单位”(CTU)的正方形区域阵列。CTU通常占据相对大的区域,诸如128×128个亮度样本等。然而,各帧的右和底边缘的CTU的区域可能较小。与各CTU相关联的是针对亮度通道的“编码树”和针对色度通道的附加编码树。编码树定义了将CTU的区域分解为一组块,也称为“编码块”(CB)。单个编码树还可以指定针对亮度通道和色度通道这两者的块,在这种情况下,块被称为“编码单位”(CU),各CU具有针对各颜色通道的编码块。按特定顺序处理CB以进行编码或解码。由于4:2:0色度格式的使用,具有128×128个亮度样本区域的亮度编码树的CTU有着与128×128个亮度样本区域同位置的64×64个色度样本区域的相应色度编码树。当单个编码树用于亮度通道和色度通道时,给定区域的同位置块的集合通常被称为“单位”,例如上述CU以及“预测单位”(PU)和“变换单位”(TU)。当针对给定区域使用单独的编码树时,使用上述CB以及“预测块”(PB)和“变换块”(TB)。

尽管在“单位”和“块”之间有上述区别,但是术语“块”可以用作针对将操作应用于所有颜色通道的帧的区域(area)或区(region)的通用术语。

对于各CU,生成帧数据的相应区域的内容(样本值)的预测(PU)(“预测单位”)。此外,形成了在编码器的输入处看到的预测与区域内容之间的差(或在空间域中的“残差”)的表示。各颜色通道的差可以被变换编码为残差系数的序列,从而形成给定CU的一个或多个TU。所应用的变换可以是应用于残差值的各个块的离散余弦变换(DCT)或其它变换。该主要变换是分开应用的,即分两遍进行二维变换。首先通过对块中的各行样本应用一维变换来对块进行变换。然后,通过对部分结果的各列应用一维变换来对部分结果进行变换,以产生基本上对残差样本进行去相关的变换系数的最终块。VVC标准支持各种大小的变换,包括矩形块(各边尺寸为2的幂次方)的变换。量化变换系数以用于将熵编码在位流中。

当使用空间预测(“帧内预测”)以生成PB时,使用一组参考样本以生成当前PB的预测样本。参考样本包括已经“重建”的与PB相邻的样本(将残差样本添加到帧内预测样本)。这些相邻样本形成PB上方的行和PB左边的列。行和列还延伸超出PB边界以包括附加的附近样本。由于以Z顺序扫描来扫描块,一些参考样本在紧挨着的先前块中被重建。使用来自紧挨着的先前块的样本导致反馈依赖性,该反馈依赖性可能限制块通过视频编码器或解码器的吞吐量。

发明内容

本发明的目的是基本上克服或至少改善现有布置的一个或多个缺点。

本发明的一个方面提供一种从位流中解码图像帧中的编码树单位的编码块的方法,所述方法包括:接收所述图像帧,所述图像帧具有所述图像帧的色度通道相对于所述图像帧的亮度通道被子采样的色度格式;根据所述编码树单位的区域的尺寸来确定用于所述编码树单位的亮度通道的亮度拆分选项;根据所述区域的尺寸来确定用于所述编码树单位的色度通道的色度拆分选项,所述色度拆分选项不同于所述亮度拆分选项,能够允许的所述色度拆分选项得到具有16个样本的最小大小的色度帧内预测块;以及通过从所述位流中确定用以选择所确定的亮度拆分选项其中之一和所确定的色度拆分选项其中之一的标志来解码所述编码树单位的编码块。

根据另一方面,其中,所述色度块大小是针对所述图像帧的色度通道的16个样本的倍数。

根据另一方面,所确定的亮度拆分选项得到作为针对所述图像帧的亮度通道的16个样本的倍数的亮度块大小。

根据另一方面,使用块到子块的分割来编码具有两个样本的宽度的色度块,各子块大小为2×8个样本。

根据另一方面,使用块到子块的分割来编码具有两个样本的高度的色度块,各子块大小为8×2个样本。

本发明的另一方面提供一种非暂时性计算机可读介质,其上存储有计算机程序以实现从位流中解码图像帧中的编码树单位的编码块的方法,所述程序包括:用于接收所述图像帧的代码,所述图像帧具有所述图像帧的色度通道相对于所述图像帧的亮度通道被子采样的色度格式;用于根据所述编码树单位的区域的尺寸来确定用于所述编码树单位的亮度通道的亮度拆分选项的代码;用于根据所述区域的尺寸来确定用于所述编码树单位的色度通道的色度拆分选项的代码,所述色度拆分选项不同于所述亮度拆分选项,能够允许的所述色度拆分选项得到具有16个样本的最小大小的色度帧内预测块;以及用于通过从所述位流中确定用以选择所确定的亮度拆分选项其中之一和所确定的色度拆分选项其中之一的标志来解码所述编码树单位的编码块的代码。

本发明的另一方面提供一种视频解码器,其被配置以:从位流接收图像帧的编码树单位,所述图像帧具有所述图像帧的色度通道相对于所述图像帧的亮度通道被子采样的色度格式;根据所述编码树单位的区域的尺寸来确定用于所述编码树单位的亮度通道的亮度拆分选项;根据所述区域的尺寸来确定用于所述编码树单位的色度通道的色度拆分选项,所述色度拆分选项不同于所述亮度拆分选项,能够允许的所述色度拆分选项得到具有16个样本的最小大小的色度帧内预测块;以及通过从所述位流中确定用以选择所确定的亮度拆分选项其中之一和所确定的色度拆分选项其中之一的标志来解码所述编码树单位的编码块。

本发明的另一方面提供一种系统,包括:存储器;以及处理器,其中,所述处理器被配置为执行所述存储器上所存储的代码,以实现从位流中解码图像帧中的编码树单位的编码块的方法,所述方法包括:接收所述图像帧,所述图像帧具有所述图像帧的色度通道相对于所述图像帧的亮度通道被子采样的色度格式;根据所述编码树单位的区域的尺寸来确定用于所述编码树单位的亮度通道的亮度拆分选项;根据所述区域的尺寸来确定用于所述编码树单位的色度通道的色度拆分选项,所述色度拆分选项不同于所述亮度拆分选项,能够允许的所述色度拆分选项得到具有16个样本的最小大小的色度块;以及通过从所述位流中确定用以选择所确定的亮度拆分选项其中之一和所确定的能够允许的色度拆分选项其中之一的标志来解码所述编码树单位的编码块。

还公开了其它方面。

附图说明

现在将参考以下附图和附录描述本发明的至少一个实施例,其中:

图1是示出视频编码和解码系统的示意性框图;

图2A和2B构成可以实践图1的视频编码和解码系统的其中一个或这两者的通用计算机系统的示意框图;

图3是示出视频编码器的功能模块的示意框图;

图4是示出视频解码器的功能模块的示意框图;

图5是示出通用视频编码的树结构中的块向一个或多个块的可用分割的示意框图;

图6是用以在通用视频编码的树结构中实现块向一个或多个块的许可分割的数据流的示意图;

图7A和7B示出编码树单位(CTU)向多个编码单位(CU)的示例分割;

图8是示出变换块大小和关联的扫描模式的集合的图;

图9是示出用于生成亮度编码树和色度编码树中的允许拆分的列表的规则的图;

图10是用于将图像帧的编码树编码到视频位流中的方法的流程图;

图11是用于从视频位流中解码图像帧的编码树的方法的流程图;

图12是用于将图像帧的亮度和色度编码树编码到视频位流中的方法的流程图;以及

图13是用于从视频位流中解码图像帧的亮度和色度编码树的方法的流程图。

具体实施方式

在任一个或多个附图中参考具有相同附图标记的步骤和/或特征的情况下,除非出现相反意图,否则这些步骤和/或特征为了本说明书的目的而具有相同的(一个或多个)功能或(一个或多个)操作。

如上所述,使用来自紧挨着的先前块的样本导致反馈依赖性,该反馈依赖性可能限制块通过视频编码器或解码器的吞吐量。如典型的实时编码和解码应用所需要的,期望用于减轻所得到的反馈依赖性环路的严重性的方法以确保能够维持处理块的高速率。对于现代视频格式的高采样速率(例如,每秒500-4000个样本,而ASIC(专用集成电路)时钟频率通常在数百MHz内),反馈依赖性环路尤其成问题。

图1是示出视频编码和解码系统100的功能模块的示意性框图。系统100可以将不同的规则用于亮度和色度编码树中的区域的允许子分割,以减小遇到的最差情况块处理速率。例如,系统100可以操作以使得块总是大小为16(十六)个样本的倍数,而不管块的长宽比如何。残差系数编码还可以采用16个块大小的倍数,包括在块具有两个样本的宽度或高度的情况。

系统100包括源装置110和目的地装置130。通信通道120用于从源装置110向目的地装置130通信编码视频信息。在一些配置中,源装置110和目的地装置130中的一个或两个分别可以包括移动电话手机或“智能电话”,其中在这种情况下,通信通道120是无线通道。在其它配置中,源装置110和目的地装置130可以包括视频会议设备,其中在这种情况下,通信通道120通常是诸如因特网连接等的有线通道。此外,源装置110和目的地装置130可以包括范围广泛的任意装置,其中这些装置包括支持空中电视广播、有线电视应用、因特网视频应用(包括流传输)、以及在一些计算机可读存储介质(诸如文件服务器中的硬盘驱动器等)上捕获编码视频数据的应用的装置。

如图1所示,源装置110包括视频源112、视频编码器114和发送器116。视频源112通常包括所捕获视频帧数据(表示为113)的源,诸如摄像传感器、存储在非暂时性记录介质上的先前捕获到的视频序列、或者来自远程摄像传感器的视频馈送。视频源112也可以是计算机显卡的输出(例如,显示操作系统和在计算装置(例如,平板计算机)上执行的各种应用的视频输出)。可以包括摄像传感器作为视频源112的源装置110的示例包括智能电话、视频摄录机、专业摄像机和网络视频照相机。

视频编码器114将来自视频源112的(由箭头113指示的)所捕获帧数据转换(或“编码”)成(由箭头115指示的)位流。位流115由发送器116经由通信通道120作为编码视频数据(或“编码视频信息”)进行发送。位流115也可以存储在诸如“闪速”存储器或硬盘驱动器等的非暂时性存储装置122中,直到随后通过通信通道120发送或者作为通过通信通道120的发送的代替为止。

目的地装置130包括接收器132、视频解码器134和显示装置136。接收器132从通信通道120接收编码视频数据并将所接收到的视频数据作为(由箭头133指示的)位流传递至视频解码器134。然后,视频解码器134将(由箭头135指示的)解码后的帧数据输出至显示装置136。经解码的帧数据135具有与帧数据113相同的色度格式。显示装置136的示例包括阴极射线管、液晶显示器(诸如在智能电话、平板计算机、计算机监视器、或者单机型电视机中等)。也可以将源装置110和目的地装置130各自的功能体现在单个装置中,该单个装置的示例包括移动电话手机和平板计算机。

尽管以上说明了示例装置,但源装置110和目的地装置130各自通常经由硬件组件和软件组件的组合可以配置在通用计算机系统内。图2A示出这种计算机系统200,该计算机系统200包括:计算机模块201;诸如键盘202、鼠标指示器装置203、扫描器226、可被配置为视频源112的照相机227、以及麦克风280等的输入装置;以及包括打印机215、可被配置为显示装置136的显示装置214、以及扬声器217的输出装置。计算机模块201可以使用外部调制器-解调器(调制解调器)收发器装置216来经由接线221与通信网络220进行通信。可以表示通信通道120的通信网络220可以是广域网(WAN),诸如因特网、蜂窝电信网络或私有WAN等。在接线221是电话线的情况下,调制解调器216可以是传统的“拨号上网”调制解调器。可替代地,在接线221是高容量(例如,线缆或光学的)接线的情况下,调制解调器216可以是宽带调制解调器。还可以使用无线调制解调器来进行向通信网络220的无线连接。收发器装置216可以提供发送器116和接收器132的功能,并且通信通道120可以体现在接线221中。

计算机模块201通常包括至少一个处理器单元205和存储器单元206。例如,存储器单元206可以具有半导体随机存取存储器(RAM)和半导体只读存储器(ROM)。计算机模块201还包括多个输入/输出(I/O)接口,其中这多个输入/输出(I/O)接口包括:音频-视频接口207,其连接至视频显示器214、扬声器217和麦克风280;I/O接口213,其连接至键盘202、鼠标203、扫描器226、照相机227以及可选的操纵杆或其它人机接口装置(未示出);以及外部调制解调器216和打印机215所用的接口208。从音频-视频接口207向计算机监视器214的信号通常是计算机显卡的输出。在一些实现中,调制解调器216可以内置于计算机模块201内,例如内置于接口208内。计算机模块201还具有本地网络接口211,其中该本地网络接口211允许计算机系统200经由接线223连接至已知为局域网(LAN)的局域通信网络222。如图2A所示,局域通信网络222还可以经由接线224连接至广域网220,其中该局域通信网络222通常包括所谓的“防火墙”装置或具有相似功能的装置。本地网络接口211可以包括以太网(EthernetTM)电路卡、蓝牙(BluetoothTM)无线配置或IEEE 802.11无线配置;然而,对于接口211,可以实践多种其它类型的接口。本地网络接口211还可以提供发送器116和接收器132的功能,并且通信通道120也可以体现在局域通信网络222中。

I/O接口208和213可以提供串行连接和并行连接中的任一个或这两者,其中前者通常根据通用串行总线(USB)标准来实现并且具有相应的USB连接器(未示出)。设置有存储装置209,并且存储装置209通常包括硬盘驱动器(HDD)210。还可以使用诸如软盘驱动器和磁带驱动器等的其它存储装置(未示出)。通常设置有光盘驱动器212以用作数据的非易失性源。可以使用例如光盘(例如,CD-ROM、DVD、蓝光盘(Blu ray DiscTM))、USB-RAM、便携式外部硬盘驱动器和软盘等的便携式存储器装置作为针对计算机系统200的数据的适当源。通常,HDD 210、光盘驱动器212、网络220和222中的任意还可被配置成作为视频源112进行工作、或者作为为了经由显示器214进行再现所要存储的解码视频数据的目的地而进行工作。系统100的源装置110和目的地装置130可以体现在计算机系统200中。

计算机模块201的组件205-213通常经由互连总线204并且以得到相关领域技术人员已知的计算机系统200的传统操作模式的方式进行通信。例如,处理器205使用接线218连接至系统总线204。同样,存储器206和光盘驱动器212通过接线219连接至系统总线204。可以实践所述配置的计算机的示例包括IBM-PC和兼容机、Sun SPARCstation、Apple MacTM或相似的计算机系统。

在适当或期望的情况下,可以使用计算机系统200来实现视频编码器114和视频解码器134以及以下所述的方法。特别地,可以将视频编码器114、视频解码器134和要说明的方法作为在计算机系统200内可执行的一个或多个软件应用程序233来实现。特别地,利用软件233中的在计算机系统200内执行的指令231(参考图2B)来实现视频编码器114、视频解码器134和所述方法的步骤。可以将软件指令231形成为各自用于进行一个或多个特定任务的一个或多个代码模块。还可以将软件分割成两个单独部分,其中第一部分和相应的代码模块进行所述方法,并且第二部分和相应的代码模块管理第一部分和用户之间的用户界面。

例如,可以将软件存储在包括以下所述的存储装置的计算机可读介质中。将软件从计算机可读介质载入计算机系统200,然后由计算机系统200来执行。具有这样的软件的计算机可读介质或者该计算机可读介质上所记录的计算机程序是计算机程序产品。在计算机系统200中使用该计算机程序产品优选地实现了用于实施视频编码器114、视频解码器134和所述方法的有利设备。

通常将软件233存储在HDD 210或存储器206中。将该软件从计算机可读介质载入计算机系统200,并且由计算机系统200来执行。因而,例如,可以将软件233存储在光盘驱动器212所读取的光学可读盘存储介质(例如,CD-ROM)225上。

在一些实例中,将应用程序233以编码在一个或多个CD-ROM 225上并且经由相应的驱动器212进行读取的方式供给至用户,或者可替代地,可以由用户从网络220或222读取应用程序233。更进一步地,还可以将软件从其它计算机可读介质载入计算机系统200。计算机可读存储介质是指将所记录的指令和/或数据提供至计算机系统200以供执行和/或处理的任何非暂时性有形存储介质。这种存储介质的示例包括软盘、磁带、CD-ROM、DVD、蓝光盘(Blu-ray DiscTM)、硬盘驱动器、ROM或集成电路、USB存储器、磁光盘、或者诸如PCMCIA卡等的计算机可读卡等,而与这些装置在计算机模块201的内部还是外部无关。还可以参与将软件、应用程序、指令和/或视频数据或编码视频数据提供至计算机模块401的暂时性或非有形计算机可读传输介质的示例包括:无线电或红外线传输通道及向着其它计算机或联网装置的网络接线、以及包括电子邮件发送和网站上所记录的信息等的因特网或内联网。

可以执行上述的应用程序233的第二部分和相应的代码模块来实现要绘制或以其它方式呈现在显示器214上的一个或多个图形用户界面(GUI)。通过典型地对键盘202和鼠标203进行操作,计算机系统200的用户和应用可以以在功能上可适用的方式对界面进行操作,以将控制命令和/或输入提供至与这些(一个或多个)GUI相关联的应用。还可以实现在功能上可适用的其它形式的用户界面,诸如利用经由扬声器217所输出的语音提示和经由麦克风280所输入的用户声音命令的音频界面等。

图2B是处理器205和“存储器”234的详细示意框图。存储器234表示图2A中的计算机模块201可以访问的(包括HDD 209和半导体存储器206的)所有存储器模块的逻辑聚合。

在初始对计算机模块201通电的情况下,执行上电自检(power-on self-test,POST)程序250。通常将POST程序250存储在图2A的半导体存储器206的ROM 249中。有时将诸如存储有软件的ROM 249等的硬件装置称为固件。POST程序250检查计算机模块201内的硬件以确保适当工作,并且通常检查处理器205、存储器234(209,206)和通常还存储在ROM249中的基本输入-输出系统软件(BIOS)模块251,以进行正确操作。一旦POST程序250成功运行,BIOS 251启动图2A的硬盘驱动器210。启动硬盘驱动器210使得经由处理器205执行驻留在硬盘驱动器210上的引导装入程序252。这样将操作系统253载入RAM存储器206,其中在该RAM存储器206上,操作系统253开始工作。操作系统253是处理器205可执行的系统级应用,以实现包括处理器管理、存储器管理、装置管理、存储管理、软件应用接口和通用用户界面等的各种高级功能。

操作系统253管理存储器234(209,206),以确保计算机模块201上运行的各处理或应用具有在不会与分配至其它处理的内存冲突的情况下执行的充足内存。此外,必须适当使用图2A的计算机系统200中可用的不同类型的存储器,以使得各处理可以高效地运行。因此,聚合存储器234并不意图例示如何分配存储器的特定分段(除非另外说明),而是提供计算机系统200可访问的存储器的概述图以及如何使用该存储器。

如图2B所示,处理器205包括多个功能模块,其中这多个功能模块包括控制单元239、算术逻辑单元(ALU)240和有时称为高速缓冲存储器的本地或内部存储器248。高速缓冲存储器248在寄存器区段中通常包括多个存储寄存器244-246。一个或多个内部总线241从功能上使这些功能模块相互连接。处理器205通常还具有用于使用接线218经由系统总线204与外部装置进行通信的一个或多个接口242。存储器234使用接线219连接至总线204。

应用程序233包括可以包含条件分支指令和循环指令的指令序列231。程序233还可以包括执行程序233时所使用的数据232。将指令231和数据232分别存储在存储器位置228、229、230和235、236、237中。根据指令231和存储器位置228-230的相对大小,如存储器位置230中示出的指令所描述的,可以将特定指令存储在单个存储器位置中。可选地,如存储器位置228和229中示出的指令段所描述的,可以将指令分割成各自被存储在单独的存储器位置的多个部分。

通常,向处理器205赋予一组指令,其中在该处理器205内执行该组指令。处理器205等待随后输入,其中处理器205通过执行另一组指令来对该随后输入作出反应。可以从多个源中的一个或多个源提供各输入,其中该输入包括输入装置202、203中的一个或多个所生成的数据、从外部源经由网络220、202其中之一所接收到的数据、从存储装置206、209其中之一所检索到的数据或者从插入相应的读取器212内的存储介质225所检索到的数据(所有这些均在图2A中示出)。执行一组指令在一些情况下可能会导致输出数据。执行还可能涉及将数据或变量存储至存储器234。

视频编码器114、视频解码器134和所述方法可以使用存储器234内的相应存储器位置255、256、257中所存储的输入变量254。视频编码器114、视频解码器134和所述方法产生存储器234内的相应存储器位置262、263、264中所存储的输出变量261。可以将中间变量258存储在存储器位置259、260、266和267中。

参考图2B的处理器205,寄存器244、245、246、算术逻辑单元(ALU)240和控制单元239一起工作以进行微操作序列,其中这些微操作序列是针对构成程序233的指令集中的各指令进行“提取、解码和执行”周期所需的。各提取、解码和执行周期包括:

提取操作,用于从存储器位置228、229、230提取或读取指令231;

解码操作,其中在该解码操作中,控制单元239判断提取了哪个指令;以及

执行操作,其中在该执行操作中,控制单元239和/或ALU 240执行该指令。

之后,可以执行针对下一指令的进一步提取、解码和执行周期。同样,可以进行存储周期,其中通过该存储周期,控制单元239将值存储至或写入存储器位置232。

要说明的图10至图13的方法中的各步骤或子处理与程序233的一个或多个区段相关联,并且通常通过处理器205中的寄存器部244、245、247、ALU 240和控制单元239一起工作以针对程序233的所述分段的指令集中的各指令进行提取、解码和执行周期,来进行该步骤或子处理。

图3是示出视频编码器114的功能模块的示意框图。图4是示出视频解码器134的功能模块的示意框图。通常,数据以样本或系数的组(诸如块向固定大小的子块的分割等)或者作为阵列在视频编码器114和视频解码器134内的功能模块之间传递。如图2A和2B所示,可以使用通用计算机系统200来实现视频编码器114和视频解码器134,其中可以利用计算机系统200内的专用硬件、利用计算机系统200内可执行的软件(诸如驻留在硬盘驱动器205上并且由处理器205控制其执行的软件应用程序233的一个或多个软件代码模块等),来实现各种功能模块。可替代地,可以利用在计算机系统200内可执行的专用硬件和软件的组合来实现视频编码器114和视频解码器134。可以可替代地在诸如进行所述方法的功能或子功能的一个或多个集成电路等的专用硬件中实现视频编码器114、视频解码器134和所述方法。这种专用硬件可以包括图形处理单元(GPU)、数字信号处理器(DSP)、专用标准产品(ASSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者一个或多个微处理器和关联存储器。特别地,视频编码器114包括模块310-386,并且视频解码器134包括模块420-496,其中这些模块各自可被实现为软件应用程序233的一个或多个软件代码模块。

尽管图3的视频编码器114是通用视频编码(VVC)视频编码流水线的示例,但也可以使用其它视频编解码器来进行这里所述的处理阶段。视频编码器114接收诸如一系列帧(各帧包括一个或多个颜色通道)等的所捕获帧数据113。帧数据113可以处于4:2:0色度格式或4:2:2色度格式。块分区器310首先将帧数据113分割成CTU,CTU的形状通常为正方形,并且被配置成使得使用CTU的特定大小。例如,CTU的大小可以是64×64、128×128或256×256个亮度样本。块分区器310进一步根据亮度编码树和色度编码树将各CTU分割成一个或多个CB。CB具有各种大小,并且可以包括正方形和非正方形长宽比这两者。参考图10进一步描述块分区器310的操作。然而,在VVC标准中,CB、CU、PU和TU总是具有2的幂次方的边长。因而,从块分区器310输出当前CB(表示为312),从而根据对CTU的一个或多个块的迭代、根据CTU的亮度编码树和色度编码树而前进。以下参考图5和6来进一步说明用于将CTU分区为CB的选项。

从帧数据113的第一次分割得到的CTU可以是按光栅扫描顺序扫描的,并可以被分组成一个或多个“条带(slice)”。条带可以是“帧内”(或“I”)条带。帧内条带(I条带)指示条带中的每个CU都是帧内预测的。可选地,条带可以是单预测或双预测的(分别为“P”或“B”条带),分别指示条带中的单预测和双预测的附加可用性。

对于各CTU,视频编码器114在两个阶段中操作。在第一阶段(称为“搜索”阶段),块分区器310测试编码树的各种潜在配置。编码树的各个潜在配置具有关联的“候选”CB。第一阶段涉及测试各种候选CB,以选择提供高压缩效率和低失真的CB。测试通常涉及拉格朗日优化,由此基于速率(编码成本)和失真(关于输入帧数据113的误差)的加权组合来评价候选CB。选择“最佳”候选CB(具有最低评价速率/失真的CB)以用于随后编码在位流115中。候选CB的评价中包括如下选项:将CB用于给定区域,或者根据各种拆分选项来进一步拆分该区域并利用其它CB来编码各个较小所得区域或更进一步拆分区域。结果,在搜索阶段中选择CB和编码树本身这两者。

视频编码器114针对各CB(例如,CB 312)产生由箭头320指示的预测块(PB)。PB320是关联的CB 312的内容的预测。减法器模块322产生PB 320和CB 312之间的表示为324的差(或“残差”,其是指差在空间域中)。差324是PB 320和CB 312中的相应样本之间的块大小差。差324被变换、量化和表示为由箭头336指示的变换块(TB)。PB 320和关联的TB 336通常例如基于评价成本或失真而选自多个可能的候选CB其中之一。

候选编码块(CB)是针对关联的PB和所得到的残差从视频编码器114可用的预测模式其中之一得到的CB。各候选CB得到一个或多个相应的TB,如在下文中参考图8所述。TB336是差324的量化和变换表示。当与视频解码器114中的预测PB组合时,TB 336以位流中的附加信令为代价来减少解码CB和原始CB 312之间的差。

因而,各候选编码块(CB)(即预测块(PB)与变换块(TB)的组合)具有关联的编码成本(或“速率”)和关联的差(或“失真”)。速率通常是以位为单位测量的。CB的失真通常被估计为样本值的差,诸如绝对差和(SAD)或平方差和(SSD)等。模式选择器386使用差324来确定从各候选PB得到的估计,以确定帧内预测模式(由箭头388表示)。可以以与残差的熵编码相比明显更低的成本来进行与各候选预测模式相关联的编码成本和相应的残差编码的估计。因此,可以评价多个候选模式,以确定速率失真意义上的最佳模式。

确定速率失真方面的最佳模式通常是使用拉格朗日优化的变形来实现的。选择帧内预测模式388通常涉及确定从应用特定帧内预测模式得到的残差数据的编码成本。可以通过使用“绝对变换差和”(SATD)来近似编码成本,由此使用诸如Hadamard变换等的相对简单的变换来获得估计变换残差成本。在使用相对简单的变换的一些实现中,从简化估计方法得到的成本与否则将从完整评价确定的实际成本单调相关。在具有单调相关的估计成本的实现中,可以使用该简化估计方法来作出相同的决定(即,帧内预测模式),其中视频编码器114的复杂度降低。为了允许估计成本和实际成本之间的关系的可能非单调性,可以使用该简化估计方法来生成最佳候选的列表。例如,可以从可用于残差数据的编码的其它模式决策得到非单调性。最佳候选的列表可以具有任意数量。可以使用最佳候选来进行更完整的搜索,以建立用于对各个候选的残差数据进行编码的最佳模式选择,从而允许最终选择帧内预测模式以及其它模式决策。

其它模式决策包括跳过正向变换的能力(被称为“变换跳过”)。跳过变换适合于缺乏足够的相关性来经由作为变换基础函数的表达式降低编码成本的残差数据。诸如相对简单的计算机生成图形等的某些类型的内容可以表现出类似的行为。对于“跳过的变换”,即使不进行变换本身,仍会对残差系数进行编码。

可以采用拉格朗日或类似的优化处理来进行(利用块分区器310的)CTU向CB的分区的选择以及从多个可能性中的最佳预测模式的选择这两者。通过将候选模式的拉格朗日优化处理应用在模式选择器模块386中,选择成本测量最低的帧内预测模式作为最佳模式。最佳模式是所选择的帧内预测模式388,并且也由熵编码器338编码在位流115中。通过模式选择器模块386的操作对帧内预测模式388的选择扩展到块分区器310的操作。例如,帧内预测模式388的选择的候选可以包括可应用于给定块的模式和可应用于整体与给定块同位置的多个更小块的附加模式。在包括可应用于给定块和更小同位置块的模式的情况下,候选的选择的处理隐含地也是用于确定CTU向CB的最佳层级分解的处理。

在视频编码器114的操作的第二阶段(称为“编码”阶段)中,在视频编码器114中进行对所选择的亮度编码树和所选择的色度编码树(以及因而对各个所选择的CB)的迭代。如这里进一步描述的,在迭代中,将CB编码在位流115中。

熵编码器338支持句法元素的可变长度编码和句法元素的算术编码这两者。使用上下文自适应二进制算术编码处理来支持算术编码。算术编码的句法元素由一个或多个“bin(二进制文件)”的序列组成。与位一样,bin的值为“0”或“1”。然而,bin未作为离散位编码在位流115中。bin具有关联预测(或“可能”或“最大概率”)值和关联概率(被称为“上下文”)。当要编码的实际bin与预测值匹配时,对“最大概率符号”(MPS)进行编码。对最大概率符号进行编码在消耗位方面相对便宜。当要编码的实际bin与可能值不匹配时,对“最小概率符号”(LPS)进行编码。对最小概率符号进行编码在消耗位方面具有相对高的成本。bin编码技术使得能够使“0”vs“1”的概率歪斜的bin进行高效编码。对于具有两个可能值的句法元素(即,“flag(标志)”),单个bin就足够了。对于具有许多可能值的句法元素,需要bin的序列。

可以基于该序列中的较前bin的值来确定该序列中的较后bin的存在。另外,各bin可以与多于一个的上下文相关联。可以根据句法元素中的较前bin和相邻句法元素的bin值(即,来自相邻块的bin值)等来选择特定上下文。每次对上下文编码bin进行编码时,以反映出新bin值的方式来更新针对该bin(如果有)选择的上下文。如此,二进制算术编码方案被认为是自适应的。

视频编码器114也支持缺少上下文的bin(“旁路bin”)。假定“0”和“1”之间的等概率分布来对旁路bin进行编码。因而,各个bin占据位流115中的一位。不存在上下文节省了内存并降低了复杂度,因而使用特定bin的值的分布未歪斜的旁路bin。采用上下文和自适应的熵编码器的一个示例在本领域中被称为CABAC(上下文自适应二进制算术编码器),并且在视频编码中采用了该编码器的许多变体。

熵编码器338使用上下文编码的和旁路编码的bin的组合来对帧内预测模式388进行编码。通常,在视频编码器114中生成“最大概率模式”的列表。最大概率模式的列表通常是诸如三个或六个模式等的固定长度,并且可以包括在早期块中遇到的模式。上下文编码bin对指示帧内预测模式是否是最大概率模式其中之一的flag进行编码。如果帧内预测模式388是最大概率模式其中之一,则使用旁路编码bin对进一步信令进行编码。例如,编码后的进一步信令使用截断一元bin串来指示哪个最大概率模式与帧内预测模式388相对应。否则,将帧内预测模式388编码为“剩余模式”。编码为剩余模式使用诸如固定长度代码等的替代句法,也使用旁路编码bin来编码,以表示除存在于最大概率模式列表中的帧内预测模式以外的帧内预测模式。

多路复用器模块384根据选自各候选CB的所测试的预测模式中的所确定的最佳帧内预测模式388来输出PB 320。候选预测模式无需包括视频编码器114所支持的每个可想到的预测模式。

预测模式大致分为两个类别。第一个类别是“帧内预测(intra-frameprediction)”(也称为“帧内预测(intra prediction)”)。在帧内预测中,生成块的预测,并且生成方法可以使用从当前帧中获得的其它样本。对于帧内预测PB,有可能将不同的帧内预测模式用于亮度和色度,因而主要就对PB的操作而言来描述帧内预测。

预测模式的第二个类别是“帧间预测(inter-frame prediction)”(也称为“帧间预测(inter prediction)”)。在帧间预测中,使用来自按位流中的编码帧的顺序在当前帧之前的一个或两个帧的样本来产生块的预测。此外,对于帧间预测,单个编码树通常用于亮度通道和色度通道这两者。位流中的编码帧的顺序可能不同于当捕获或显示时的帧的顺序。当一个帧用于预测时,该块被称为“单预测”并且具有两个关联的运动矢量。当两个帧用于预测时,该块被称为“双预测”并且具有两个关联的运动矢量。对于P条带,各CU可以被帧内预测或单预测。对于B条带,各CU可以被帧内预测、单预测或双预测。通常使用“图片组”结构来编码帧,从而实现帧的时间层级结构。帧的时间层级结构允许帧参考按显示帧的顺序的先前和后续的图片。图像按确保满足解码各帧的依赖关系所必需的顺序来编码。

帧间预测的子类别被称为“跳过模式”。帧间预测和跳过模式被描述为两个不同的模式。然而,帧间预测模式和跳过模式这两者涉及参考来自先前帧的样本的块的运动矢量。帧间预测涉及编码运动矢量增量(delta),从而指定相对于运动矢量预测器的运动矢量。从利用“合并索引”选择的一个或多个候选运动矢量的列表中获得运动矢量预测器。编码运动矢量增量提供相对于所选择的运动矢量预测的空间偏移。帧间预测还使用位流133中的编码残差。跳过模式仅使用索引(也称为“合并索引”)来从若干运动矢量候选中选择一个。在没有任何进一步信令的情况下使用所选择的候选。而且,跳过模式不支持对任何残差系数进行编码。当使用跳过模式时不存在编码残差系数意味着不需要进行跳过模式的变换。因此,跳过模式通常不会导致流水线处理问题。流水线处理问题可能是针对帧内预测CU和帧间预测CU的情况。由于跳过模式的有限信令,当相对高质量的参考帧可用时,跳过模式对于实现非常高的压缩性能是有用的。随机访问图片组结构的较高时间层中的双预测CU通常具有准确反映基础运动的高质量参考图片和运动矢量候选。

根据运动矢量和参考图片索引来选择样本。运动矢量和参考图片索引适用于所有色度通道,因而主要就对PU而非PB的操作来描述帧间预测。在各类别内(即,帧内和帧间预测),可以应用不同技术来生成PU。例如,帧内预测可以使用来自先前重建样本的相邻行和列的值组合方向来根据规定的滤波和生成处理生成PU。可替代地,可以使用少量参数来描述PU。帧间预测方法在运动参数的数量及其精度上可能变化。运动参数通常包括参考帧索引(其指示将使用来自参考帧列表的哪些参考帧加上参考帧各自的空间平移),但可以包括更多帧、特殊帧、或者诸如缩放和旋转等的复杂仿射参数。另外,可以应用预先确定的运动细化处理以基于参考样本块生成密集运动估计。

在确定并选择了最佳PB 320、并在减法器322处从原始样本块中减去了PB 320的情况下,获得编码成本最低的残差(表示为324)并对该残差进行有损压缩。有损压缩处理包括变换、量化和熵编码的步骤。变换模块326对差324应用正向变换,从而将差324转换到频率域并且产生由箭头332表示的变换系数。正向变换通常是可分离的,从而对各块的一组行然后对一组列进行变换。通过首先对块的各行应用一维变换以产生部分结果然后对部分结果的各列应用一维变换以产生最终结果来进行各组行和列的变换。

变换系数332被传递到量化器模块334。在模块334处,进行根据“量化参数”的量化以产生由箭头336表示的残差系数。量化参数对于给定TB是恒定的,因而得到针对TB的残差系数的产生的均匀缩放。通过应用“量化矩阵”也可以实现非均匀缩放,由此对各残差系数应用的缩放因子是从量化参数和大小通常等于TB的大小的缩放矩阵中的相应条目的组合导出的。残差系数336被供给至熵编码器338以编码在位流115中。通常,根据扫描模式对各TB的残差系数以及TU的至少一个有效残差系数进行扫描以生成值的有序列表。扫描模式通常将TB扫描为4×4个“子块”的序列,从而按4×4的残差系数集合的粒度提供常规扫描操作,其中子块的配置取决于TB的大小。另外,预测模式388和相应块分区也编码在位流115中。

如上所述,视频编码器114需要访问与在视频解码器134中看到的帧表示相对应的帧表示。因而,残差系数336也由去量化器模块340进行逆量化以产生由箭头342表示的逆变换系数。逆变换系数342通过逆变换模块348以产生TU的由箭头350表示的残差样本。求和模块352将残差样本350和PU 320相加以产生CU的重建样本(由箭头354指示)。

重建样本354被传递到参考样本高速缓冲存储器356和环内滤波器模块368。通常使用ASIC上的静态RAM实现(因此避免了昂贵的片外存储器访问)的参考样本高速缓冲存储器356提供了满足用于为帧中的后续CU生成帧内PB的依赖关系所需的最小样本存储。最小依赖关系通常包括沿着一行CTU的底部的样本的“线缓冲器”,以供下一行CTU以及范围由CTU的高度设置的列缓冲使用。参考样本高速缓冲存储器356将参考样本(由箭头358表示)供给至参考样本滤波器360。样本滤波器360应用平滑操作以产生滤波参考样本(由箭头362指示)。滤波参考样本362由帧内预测模块364使用以产生由箭头366表示的样本的帧内预测块。对于各候选帧内预测模式,帧内预测模块364产生样本块即366。

环内滤波器模块368对重建样本354应用数个滤波阶段。滤波阶段包括“去块滤波器”(DBF),该DBF应用与CU边界对齐的平滑化,以减少由不连续而产生的伪影。环内滤波器模块368中存在的另一滤波阶段是“自适应环路滤波器”(ALF),该ALF应用基于Wiener的自适应滤波器以进一步降低失真。环内滤波器模块368中的另一可用滤波阶段是“样本自适应偏移”(SAO)滤波器。SAO滤波器通过首先将重建样本分类为一个或多个类别、并且根据所分配的类别在样本级别应用偏移来工作。

从环内滤波器模块368输出由箭头370表示的滤波样本。滤波样本370被存储在帧缓冲器372中。帧缓冲器372通常具有存储数个(例如,多达16个)图片的容量,因而存储在存储器206中。由于所需的大存储器消耗,因此帧缓冲器372通常不使用片上存储器来存储。如此,对帧缓冲器372的访问在内存带宽方面是昂贵的。帧缓冲器372将参考帧(由箭头374表示)提供至运动估计模块376和运动补偿模块380。

运动估计模块376估计多个“运动矢量”(表示为378),其各自是相对于当前CB的位置的笛卡尔空间偏移,从而参考帧缓冲器372中的参考帧其中之一中的块。针对各运动矢量产生参考样本的滤波块(表示为382)。滤波参考样本382形成可供模式选择器386的潜在选择用的进一步候选模式。此外,对于给定CU,PU 320可以使用一个参考块(“单预测”)形成,或者可以使用两个参考块(“双预测”)形成。对于所选择的运动矢量,运动补偿模块380根据支持运动矢量中的子像素精度的滤波处理来产生PB 320。如此,运动估计模块376(其对许多候选运动矢量进行操作)与运动补偿模块380(其仅对所选择的候选进行操作)相比可以进行简化滤波处理,以实现降低的计算复杂度。

尽管参考通用视频编码(VVC)说明了图3的视频编码器114,但其它视频编码标准或实现也可以采用模块310-386的处理阶段。帧数据113(和位流115)也可以从存储器206、硬盘驱动器210、CD-ROM、蓝光盘(Blue-ray diskTM)或其它计算机可读存储介质中读取(或者被写入存储器206、硬盘驱动器210、CD-ROM、蓝光盘或其它计算机可读存储介质)。另外,帧数据113(和位流115)可以从外部源(诸如连接至通信网络220的服务器或者射频接收器等)接收(或者被发送至该外部源)。

在图4中示出视频解码器134。尽管图4的视频解码器134是通用视频编码(VVC)视频解码流水线的示例,但其它视频编解码器也可用于进行本文所述的处理阶段。如图4所示,位流133被输入到视频解码器134。位流133可以从存储器206、硬盘驱动器210、CD-ROM、蓝光盘或其它非暂时性计算机可读存储介质中读取。可替代地,位流133可以从外部源(诸如连接至通信网络220的服务器或者射频接收器等)接收。位流133包含表示要解码的所捕获帧数据的编码句法元素。

位流133被输入到熵解码器模块420。熵解码器模块420从位流133中提取句法元素并将句法元素的值传递到视频解码器134中的其它模块。熵解码器模块420应用CABAC算法以从位流133解码句法元素。解码得到的句法元素用于重建视频解码器134内的参数。参数包括残差系数(由箭头424表示)以及诸如帧内预测模式等的模式选择信息(由箭头458表示)。模式选择信息还包括诸如运动矢量等的信息、以及各CTU向一个或多个CB的分区。参数用于通常与来自先前解码的CB的样本数据组合生成PB。

残差系数424被输入到去量化器模块428。去量化器模块428对残差系数424进行逆量化(或“缩放”),以根据量化参数创建重建变换系数(由箭头440表示)。如果在位流133中指示使用非均匀逆量化矩阵,则视频解码器134从位流133读取量化矩阵作为缩放因子序列,并且根据将缩放因子排列成矩阵。逆缩放将量化矩阵与量化参数组合使用以创建重建变换系数440。

重建变换系数440被传递到逆变换模块444。模块444将系数从频率域变换回到空间域。TB有效地基于有效残差系数和非有效残差系数值。模块444的操作的结果是由箭头448表示的残差样本的块。残差样本448在大小上等于相应的CU。残差样本448被供给至求和模块450。在求和模块450处,将残差样本448加到(表示为452的)解码PB,以产生由箭头456表示的重建样本的块。重建样本456被供给至重建样本高速缓冲存储器460和环内滤波模块488。环内滤波模块488产生表示为492的帧样本的重建块。帧样本492被写入帧缓冲器496。

重建样本高速缓冲存储器460以类似于视频编码器114的重建样本高速缓冲存储器356的方式操作。重建样本高速缓冲存储器460在无存储器206的情况下(例如,通过作为代替使用通常是片上存储器的数据232)为对后续CB进行帧内预测所需的重建样本提供存储。由箭头464表示的参考样本是从重建样本高速缓冲存储器460获得的,并被供给至参考样本滤波器468以产生由箭头472表示的滤波参考样本。滤波参考样本472被供给至帧内预测模块476。模块476根据在位流133中表示的并由熵解码器420解码的帧内预测模式参数458,产生由箭头480表示的帧内预测样本的块。

当针对当前CB在位流133中指示帧内预测时,帧内预测样本480经由多路复用器模块484形成解码PB 452。

当针对当前CB在位流133中指示帧间预测时,运动补偿模块434使用运动矢量和参考帧索引从帧缓冲器496中选择和过滤样本块,来产生表示为438的帧间预测样本的块。样本块498是从帧缓冲器496中所存储的先前解码帧获得的。为了进行双预测,产生两个样本块并将这两个样本块混合在一起以产生解码PB 452的样本。帧缓冲器496由来自环内滤波模块488的滤波块数据492填充。与视频编码器114的环内滤波模块368一样,环内滤波模块488应用任何、至少或全部的DBF、ALF和SAO滤波操作。环内滤波模块368从重建样本456产生滤波块数据492。

图5是示出通用视频编码的树结构中的区域向一个或多个子区域的可用分割或拆分的集合500的示意框图。如参考图3所述,集合500中示出的分割可供编码器114的块分区器310利用以根据如通过拉格朗日优化所确定的编码数将各CTU分割成一个或多个CU或CB。

尽管集合500仅示出将正方形区域分割成其它可能非正方形子区域,但应当理解,图500正示出潜在分割、而并未要求包含区域为正方形。如果包含区域为非正方形,则根据包含块的长宽比来对从分割得到的块的尺寸进行缩放。一旦区域未被进一步拆分,即,在编码树的叶节点处,CU占据该区域。利用块分区器310的CTU向一个或多个CU的特定子分割被称为CTU的“编码树”。将区域子分割成子区域的处理必须在所得到的子区域达到最小CU大小时终止。除了将CU约束为禁止小于例如4×4的大小之外,将CU约束为具有为四的最小宽度或高度。就宽度和高度或者就宽度或高度这两而言其它最小值也是可能的。子分割处理也可以在分解的最深层之前终止,从而得到大于最小CU大小的CU。有可能不发生拆分,从而得到占据整个CTU的单个CU。占据整个CTU的单个CU是最大可用编码单位大小。此外,未发生拆分的CU大于处理区域大小。作为在编码树的最高层处的二元或三元拆分的结果,诸如64×128、128×64、32×128和128×32等的CU大小是可能的,其各自也大于处理区域大小。参考图10进一步描述大于处理区域大小的CU的示例。

在不存在进一步子分割的情况下,在编码树的叶节点处存在CU。例如,叶节点510包含一个CU。在编码树的非叶节点处,存在向两个或更多个其它节点的拆分,其中各节点可以包含叶节点(因而一个CU)、或者包含向更小区域的进一步拆分。

如图5所示,四叉树拆分512将包含区域分割成四个大小相等的区域。与HEVC相比,通用视频编码(VVC)通过添加水平二元拆分514和垂直二元拆分516实现了附加的灵活性。拆分514和516各自将包含区域分割成两个大小相等的区域。分割沿着包含块内的水平边界(514)或垂直边界(516)。

在通用视频编码中通过添加三元水平拆分518和三元垂直拆分520实现了进一步的灵活性。三元拆分518和520将块分割成沿着包含区域宽度或高度的1/43/4在水平方向(518)或垂直方向(520)上形成界限的三个区域。四叉树、二叉树和三叉树的组合被称为“QTBTTT”。树的根包括零个或多个四叉树拆分(树的“QT”区段)。一旦QT区段终止,可以发生零个或多个二元或三元拆分(“多树”或树的“MT”区段),最终在树的叶节点处的CB或CU中结束。在树描述了所有颜色通道的情况下,树叶节点为CU。在树描述了亮度通道或色度通道的情况下,树叶节点为CB。

与仅支持四叉树、因而仅支持正方形块的HEVC相比,QTBTTT特别是考虑到二叉树和/或三叉树拆分的可能递归应用而得到更多可能的CU大小。可以通过约束拆分选项以消除将得到小于四个样本的块宽度或高度或者将得到不是四个样本的倍数的拆分来降低异常(非正方形)块大小的可能性。通常,约束将在考虑亮度样本时适用。然而,在上述布置中,约束也可单独应用于色度通道的块,将约束应用于色度通道的拆分选项可能针对亮度vs色度(例如,在帧数据采用4:2:0色度格式或4:2:2色度格式时)得到不同的最小块大小。各拆分产生具有相对于包含区域不变的、二等分的或四等分的边尺寸的子区域。然后,由于CTU大小为2的幂次方,因此所有CU的边尺寸也为2的幂次方。

图6是示出在通用视频编码中使用的QTBTTT(或“编码树”)结构的数据流600的示意流程图。将QTBTTT结构用于各CTU以定义CTU向一个或多个CU的分割。各CTU的QTBTTT结构由视频编码器114中的块分区器310确定,并被编码到位流115中或者由视频解码器134中的熵解码器420从位流133解码。根据图5所示的分割,数据流600进一步表现可供块分区器310将CTU分割成一个或多个CU用的许可组合的特征。

从层级结构的顶层开始、即在CTU处,首先进行零个或更多个四叉树拆分。特别地,由块分区器310作出四叉树(QT)拆分决策610。610处的决策返回“1”符号,这表明决定根据四叉树拆分512将当前节点拆分成四个子节点。结果是诸如在620处等生成四个新节点,并且针对各新节点,递归回到QT拆分决策610。各新节点均是按光栅(或Z扫描)顺序考虑的。可替代地,如果QT拆分决策610指示不进行进一步拆分(返回“0”符号),则四叉树分区停止,并且随后考虑多树(MT)拆分。

首先,由块分区器310作出MT拆分决策612。在612处,指示进行MT拆分的决策。在决策612处返回“0”符号,这表明将不进行节点向子节点的进一步拆分。如果将不进行节点的进一步拆分,则节点是编码树的叶节点并且对应于CU。在622处输出叶节点。可替代地,如果MT拆分612指示决定进行MT拆分(返回“1”符号),则块分区器310进入方向决策614。

方向决策614将MT拆分的方向指示为水平(“H”或“0”)或垂直(“V”或“1”)。如果决策614返回指示水平方向的“0”,则块分区器310进入决策616。如果决策614返回指示垂直方向的“1”,则块分区器310进入决策618。

在决策616和618各自中,在BT/TT拆分时将MT拆分的分区数量指示为两个(二元拆分或“BT”节点)或三个(三元拆分或“TT”)。也就是说,当从614指示的方向为水平时,由块分区器310作出BT/TT拆分决策616,并且当从614指示的方向为垂直时,由块分区器310作出BT/TT拆分决策618。

BT/TT拆分决策616指示水平拆分是通过返回“0”所指示的二元拆分514、还是通过返回“1”所指示的三元拆分518。当BT/TT拆分决策616指示二元拆分时,在生成HBT CTU节点的步骤625处,块分区器310根据二元水平拆分514生成两个节点。当BT/TT拆分616指示三元拆分时,在生成HTT CTU节点的步骤626处,块分区器310根据三元水平拆分518生成三个节点。

BT/TT拆分决策618指示垂直拆分是通过返回“0”所指示的二元拆分516、还是通过返回“1”所指示的三元拆分520。当BT/TT拆分618指示二元拆分时,在生成VBT CTU节点的步骤627处,块分区器310根据垂直二元拆分516生成两个节点。当BT/TT拆分618指示三元拆分时,在生成VTT CTU节点的步骤628处,块分区器310根据垂直三元拆分520生成三个节点。对于从步骤625-628得到的各节点,根据方向614按从左到右或从上到下的顺序来应用数据流600返回到MT拆分决策612的递归。结果,可以应用二叉树和三叉树拆分以生成具有各种大小的CU。

参考图9进一步描述编码树的各节点处的允许和不允许拆分集。

图7A和7B提供CTU 710向多个CU或CB的示例分割700。在图7A中示出示例CU 712。图7A示出CTU 710中的CU的空间排列。示例分割700在图7B中也被示出为编码树720。

在图7A的CTU 710中的各非叶节点(例如,节点714、716和718)处,按“Z顺序”扫描或遍历所包含的节点(其可以是进一步分割的或者可以是CU),以创建在编码树720中表示为列的节点列表。对于四叉树拆分,Z顺序扫描得到从左上方到右方之后是从左下方到右方的顺序。对于水平和垂直拆分,Z顺序扫描(遍历)分别简化为从上方到下方的扫描和从左方到右方的扫描。图7B的编码树720根据所应用的扫描顺序列出所有的节点和CU。各拆分在树的下一级别生成二、三或四个新节点的列表,直到到达叶节点(CU)为止。

在如参考图3所述利用块分区器310将图像分解为CTU并进一步分解为CU、并且使用CU生成各残差块(324)的情况下,利用视频编码器114对残差块进行正向变换和量化。随后扫描如此得到的TB 336以形成残差系数的顺序列表,作为熵编码模块338的操作的一部分。在视频解码器134中进行等效处理以从位流133获得TB。

图7A和7B的示例描述了适用于亮度通道和色度通道这两者的编码树。然而,图7A和7B的示例还示出关于遍历仅适用于亮度通道的编码树或仅适用于色度通道的编码树的行为。对于具有许多嵌套拆分的编码树,较深层处的可用拆分选项由对用于相应小区域的可用块大小的限制来约束。施加对小区域的可用块大小的限制以防止块处理速率的最差情况如此高以致对实现施加不合理的负担。特别地,块大小将为色度中的16(十六)个样本的倍数的约束使得实现能够以16(十六)个样本的粒度处理样本。将块大小约束为十六个样本的倍数特别地与“帧内重建”反馈环路(即,图4的视频解码器134中的涉及模块450、460、468、476和484的路径以及视频编码器114中的等效路径)相关。特别地,将块大小约束为16(十六)个样本的倍数帮助维持帧内预测模式中的吞吐量。例如,“同时数据多指令”(SIMD)微处理器架构通常对可以包含16个样本的宽字进行操作。此外,硬件架构可以使用宽总线(诸如具有16个样本的宽度的总线等)来沿着帧内重建反馈环路传送样本。如果使用更小的块大小(例如,四个样本),则总线将利用率不足,例如,仅总线宽度的四分之一包含样本数据。尽管利用率不足的总线可以处理较小的块(即,少于十六个样本),但是在最坏情况的场景中(诸如许多或所有块具有相对小的大小等),利用率不足可能导致阻止编码器(114)或解码器(134)的实时操作。对于帧间预测,各块取决于从帧缓冲器(诸如缓冲器372或496等)获得的参考样本。由于帧缓冲器填充有处理先前帧时的参考样本,因此不存在影响用于产生帧间预测块的逐块操作的反馈依赖性环路。除了与帧内帧重建相关的反馈依赖性环路之外,还存在与帧内预测模式458的确定相关的附加且并发的反馈环路。通过从最可能模式列表中选择模式或从剩余模式列表中选择模式来确定帧内预测模式458。最可能模式列表和剩余模式列表的确定需要相邻块的帧内预测模式。当使用相对小的块大小时,最可能模式列表和剩余模式列表需要更频繁地确定,即,以由样本中的块大小和通道的采样速率支配的频率来确定。

图8是示出从使用4:2:0色度格式得到的色度通道的变换块大小和关联的扫描模式的集合800的图。还可以针对4:2:2色度格式使用集合800。所描述的布置适于与具有如下色度格式的图像帧一起使用:其中相对于图像帧的亮度通道对图像帧的色度通道进行子采样,特别是对于4:2:0和4:2:2格式。集合800不包括所有可能的色度变换块大小。图8中仅示出具有小于或等于十六的宽度或者小于或等于八的高度的色度变换块。可发生具有较大宽度和高度的色度块,但为了便于引用,图8中未示出。对于在亮度通道和色度通道之间共享编码树的情况,附加的色度变换大小是2×16、4×16、8×16、16×16和32×32。对于色度通道的编码树与亮度通道的编码树分离的情况(“双编码树”),以下附加的色度变换大小也是可用的:2×32、4×32、8×32、16×32、32×2、32×4、32×8和32×16。然而,集合800演示了用于扫描TB的方法,该方法可类似地应用于扫描更大的TB。

一组禁止变换大小810包括变换块大小2×2、2×4和4×2,其全部具有小于十六个样本的区域。换句话说,16(十六)个色度样本的最小变换大小源自所描述的布置的操作,特别是对于帧内预测CB。通过如参考图9所描述确定拆分选项来避免禁止变换大小810的实例。以双层方式扫描变换中的残差系数,其中变换被分割成“子块”(或“系数组”)。扫描沿着从最后有效(非零)系数返回朝向DC(左上)系数的扫描路径发生。扫描路径被定义为各子块(“下层”)内的进展和从一个子块到下一子块(“上层”)的进展。在集合800中,8×2TB 820使用8×2子块,即,包含十六个残差系数的子块。2×8TB 822使用2×8子块,即,也包含十六个残差系数。

宽度或高度为2并且另一尺寸为8的倍数的TB使用多个2×8或8×2子块。因此,在一些情况下具有两个样本的宽度的色度块使用块到子块的分割来编码,各自大小为2×8个样本,并且在一些实例中,具有两个样本的高度的色度块使用块到子块的分割来编码,各自大小为8×2个样本。例如,16×2TB 816具有两个8×2子块,如针对TB 820所示,扫描各子块。从一个子块到下一子块的扫描的进展如子块进展817中所示。

2×32TB(图8中未示出)使用布置为一乘四阵列的四个2×8子块。如针对2×8TB822所示来扫描各子块中的残差系数,其中子块从一乘四阵列的最低子块向上前进到最高子块。

较大的TB遵循类似的扫描进展。对于宽度和高度各自均大于或等于四的所有TB,使用4×4子块扫描。例如,4×8TB 823使用4×4子块扫描824,具有从下方子块到上方子块的进展。可以用类似方式扫描4×4TB 825。8×8TB 829使用针对四个4×4子块的进度830。在所有情况下,子块内的扫描和从子块到子块的进展遵循反向对角扫描,即,扫描从TB的“最后”有效残差系数返回朝向左上方残差系数而前进。图8还示出跨越例如8×4TB 832、16×4TB 834和16×8TB 836的扫描顺序。此外,取决于最后有效系数沿着扫描路径的位置,仅需要扫描子块的包含从子块的最后有效系数位置返回到左上方残差系数的最后有效残差系数的部分。不需要扫描在正向方向上进一步沿扫描路径的子块(即,更靠近块的右下方)。集合800并且特定是禁止变换大小810对用于将编码树的区域(或节点)拆分成子区域(或子节点)的能力施加限制,如参考图9所描述。

在使用2×2、2×4和4×2TB(一组TB 810)的VVC系统中,针对宽度和/或高度为两个样本的TB,可以采用2×2子块。如上所述,TB 810的使用增加了帧内重建反馈依赖性环路中的吞吐量约束。此外,仅具有四个系数的子块的使用增加了在较高吞吐量下解析残差系数的难度。特别地,对于各子块,“有效图”指示所包含的各残差系数的有效性。对一值有效性标志进行编码将残差系数的量值建立为至少一,并且对零值标志进行编码将残差系数的量值建立为零。仅针对“有效”残差系数对残差系数量值(从一向前)和符号进行编码。对于DC系数,无有效位被编码且量值(从零起)总是被编码。高吞吐量编码器和解码器可能需要每个时钟周期编码或解码多个有效图bin以维持实时操作。当bin间依赖性较多时(例如,当使用较小子块大小时),增加了每个周期的多bin编码和解码的难度。在系统100中,子块大小为16(尽管包含最后有效系数的子块除外),而不管块大小如何。

图9是示出在使用帧内预测时用于生成亮度编码树和色度编码树中的允许拆分的列表的一组规则900的图。对于特定帧(包括帧序列的第一帧),所有块使用帧内预测。其它帧可以允许帧间预测块与帧内预测块的混合。尽管已参考图6描述了编码树的可用拆分的完整集,但是针对给定区域大小,对可用变换大小的限制对特定拆分选项施加约束。如下所述,亮度通道和色度通道各自的拆分选项根据对应编码树单位的区域的尺寸来确定。

由于VVC允许针对亮度样本和色度样本使用不同的编码树,因此针对色度样本可允许的拆分选项不同于针对亮度样本的拆分选项。该组规则900因此被分割成针对色度区域的一组规则920和针对亮度区域的一组规则910。针对亮度编码树和色度编码树示出了单独规则,使得不同变换块集合能够用于亮度通道和色度通道。特别地,不要求可用于亮度通道和色度通道的块的集合通过色度格式而相关。在遍历编码树的节点时,通过利用区域大小检查一组拆分选项的可用性来获得允许拆分的列表。得到自身可使用CB编码的区域的拆分选项被添加到允许拆分的列表。对于使用CB编码的区域,区域大小必须使得能够利用来自集合800的特定大小的整数数量的变换进行编码。特定大小被选择为不超过区域大小(考虑宽度和高度这两者)的最大大小。如此,对于较小区域,使用单一变换,并且在区域大小超过最大可用变换的大小的情况下,对最大可用变换进行拼接以占据整个区域。

当利用该组920处理色度区域时,生成拆分选项的初始拆分列表。对照区域大小来测试各拆分选项以判断拆分选项是否将导致禁止大小的子区域,该禁止大小小于集合800的变换的大小。得到的子区域的拆分选项被添加到允许色度拆分列表970,该允许大小匹配集合800的整数数量的最小变换大小。

例如,在QT模式(对应于图6的决策610)的情况下,如果区域在4:2:0格式中具有8×8或在4:2:2格式中具有8×16的大小,则不允许四叉树拆分,因为拆分将导致分别针对色度通道的2×2或2×4的变换大小。可允许的区域大小由箭头921指示。类似地,色度规则组920的其它可允许拆分由箭头922、923、924、925和926指示并且如下文关于图10和11所论述。

就亮度样本栅格方面描述色度通道的区域大小。例如,当使用4:2:0色度格式时,8×4区域与用于色度通道的4×2变换相对应。当使用4:2:2色度格式时,8×4区域与色度中的4×4变换相对应。当使用4:4:4色度格式时,不相对于亮度对色度进行子采样,因此色度中的变换大小与区域大小相对应。

可允许的亮度变换拆分涉及不同的最小大小约束,其中不允许4×4。尽管4×4亮度PB满足成为16个样本的倍数的要求,但针对4:2:0色度格式中的视频,亮度中的采样速率是各色度通道的采样速率的四倍。即使4×4亮度预测块不导致总线利用率不足(例如,在SIMD架构或宽度为16个样本的总线架构中),帧内重建反馈环路和帧内预测模式确定反馈环路难以适应以相对高的采样速率的操作。在亮度通道中禁止4×4块,将会使反馈环路的严重性减小到以高采样速率的实现是可行的水平。类似于规则组920,组910中的可允许拆分由箭头901至906示出并且用以生成可允许拆分的列表972。下面关于图10和11进一步描述可允许拆分选项。

图10示出将图像帧的编码树编码到视频位流中的方法1000。如参考图12所述,针对亮度编码树和色度编码树各自进行方法1000,从而使得确定用于CTU的各编码树并将得到的编码树编码到位流115中。方法1000可以由诸如经配置的FPGA、ASIC或ASSP等的设备来体现。另外,方法1000可以由视频编码器114在处理器205的执行下进行。如此,方法1000可以被存储在计算机可读存储介质上和/或存储在存储器206中。针对各CTU的亮度编码树和色度编码树调用的方法1000在生成初始拆分选项步骤1010处开始,其中“当前节点”(或当前区域)是亮度或色度编码树的根,即占据整个CTU的区域。当块分区器310接收到帧数据113时,编码器114针对亮度和色度编码树各自实现方法1000。

在生成初始拆分选项步骤1010处,处理器205生成针对编码树的当前节点的拆分选项。取决于方法1000的迭代,针对亮度通道或色度通道生成拆分选项。最初,编码树处于四叉树(QT)阶段,其中仅允许拆分为四叉树拆分(图5的拆分512)或拆分的停止(参见图5的510)。此外,对于经编码以仅使用帧内预测块的帧或条带,亮度和色度编码树包括其根节点处的四叉树拆分。结果,对于128×128CTU,当使用4:2:0色度格式时,最大亮度帧内预测CB是64×64,并且最大色度帧内预测CB是32×32。对于经编码以使用帧内预测块和帧间预测块中的任一者或两者的条带的帧,亮度编码树和色度编码树不需要包括其根节点处的四叉树拆分。然而,不允许帧内预测CB跨越64×64亮度样本栅格的边界。当四叉树拆分已停止时,编码树被认为处于多树(MT)阶段,与图6的决策612相对应。在多树阶段中,拆分选项将(i)停止拆分(即,510),在该情况下,使用CB来编码与当前节点相对应的区域;或(ii)继续拆分。作为初始拆分选项,可以使用水平和垂直方向两者上的二元和三元拆分(参见图5的514-520)。作为步骤1010的结果,创建用于编码树阶段的所有可能拆分的列表(即,QT或MT)。处理器205中的控制从步骤1010前进到确定色度格式步骤1020。

在确定色度格式步骤1020处,处理器205将帧数据113的色度格式确定为4:2:0色度格式和4:2:2色度格式其中之一。色度格式是帧数据的属性并且在操作期间不改变。色度格式因此借助于诸如配置文件或寄存器等而提供至视频编码器114。所确定的色度格式例如使用“chroma_format_idc”句法元素被编码在位流113中,针对视频仅编码一次。处理器205中的控制从步骤1020前进到生成允许拆分步骤1030。

在所生成的允许拆分步骤1030处,处理器205应用规则以将允许拆分类型约束到步骤1010的各拆分选项来产生允许拆分列表。当处理亮度编码树时,通过执行步骤1030创建允许亮度拆分列表972。当处理色度编码树时,在步骤1030的执行中创建允许色度拆分列表970。约束允许拆分类型的规则考虑了亮度通道和色度通道各自的可用变换大小。

通常,对于亮度通道中的N×M变换,当使用4:2:0色度格式时,存在可用于色度通道的N/2×M/2变换,或者当使用4:2:2色度格式时,存在可用于色度通道的N/2×M变换。如此,针对亮度和色度通道,拆分规则通常等效。然而,对于小的块大小,存在例外。特别地,4×8和8×4亮度变换不具有相应的色度中的2×4和4×2变换。也不允许的是产生4×4亮度变换或2×2色度变换的拆分。规则在亮度通道和色度通道中是等效的,因为对于4:2:0色度格式,2×2色度变换的区域大小是4×4个亮度样本。

在亮度的变换集不同于色度的变换集的程度上,在亮度与色度之间的允许拆分选项中存在差异。当处理编码树中的亮度节点时,对于各拆分选项(如图9中所示的510-520),评价亮度节点的区域大小。无拆分情况(510)总是被允许的,因此总是被添加到允许亮度拆分列表972,如箭头912所示。当区域大小为8×8时,不允许四叉树拆分(512),从而避免使用不允许的4×4亮度变换大小。对于较大的区域大小,四叉树拆分是被允许的并且被添加到允许亮度拆分列表972,如箭头911所示。当处于亮度编码树的MT阶段中时,不允许以下拆分以防止在亮度中使用4×4变换:

-4×8区域的水平二元拆分(避免4×4块的对)。允许剩余的拆分,如箭头913所示。

-8×4区域的垂直二元拆分(避免4×4块的对)。允许剩余的拆分,如箭头914所示。

-4×16或更小区域的水平三元拆分(避免拆分的第一和第三块为4×4块)。允许剩余的拆分,如箭头915所示。

-16×4或更小区域的垂直三元拆分(避免拆分的第一和第三块为4×4块)。允许剩余的拆分,如箭头916所示。

另外,禁止将导致块具有小于四的宽度或高度的亮度中的任何拆分。假设没有遇到由于避免宽度或高度小于四以及块大小为4×4而导致的对拆分的限制,则拆分被添加到允许亮度拆分列表972。

当处理色度编码树中的色度节点时,对于各拆分选项,咨询关于节点的区域大小的相应规则以判断是否将拆分选项添加到允许色度拆分列表970。与亮度编码树一样,色度编码树在“QT”阶段(对应于图6的决策610)中开始,其中允许四叉树拆分512或无拆分510。一旦发生无拆分510,编码树进入“MT”阶段(对应于图6的决策612)。在MT阶段,(i)无拆分指示存在占据与节点相关联的区域的CB,或者(ii)发生拆分514-520其中之一。拆分514-520其中之一的发生将该区域分割成子区域。还评价所得到各个子区域以确定允许拆分选项。

如果在编码树的QT阶段中并且使用4:2:0色度格式,节点具有已经达到8×8(即,4×4色度变换)的区域大小,则可能无进一步的四叉树拆分。此外,无其它拆分选项可用。可用的选项是将“无拆分”添加到节点的允许色度拆分。因此,在节点处存在单个4×4CB。

如果在编码树的QT阶段中并且使用4:2:2色度格式,节点具有8×16的区域大小(即,4×8色度变换),则可能无进一步的四叉树拆分,并且步骤1030进入编码树的MT阶段。MT阶段中的8×16区域可以具有单个4×8色度变换,或者可以具有得到两个8×8区域并因此得到一对4×4色度变换的水平拆分或者得到两个4×16区域并因此得到一对2×8色度变换的垂直拆分。在处于MT阶段的色度编码树中,将得到大小为4×4、4×8和8×4的区域并因此引入大小为2×2、2×4和4×2的变换的拆分被禁止并且按照如下列出:

-8×8区域(避免4×2色度变换的对)或4×16区域(避免2×4色度变换的对)的水平二元拆分。允许剩余的拆分,如箭头923所示。

-8×8区域(避免2×4色度变换的对)或16×4区域(避免4×2色度变换的对)的垂直二元拆分。允许剩余的拆分,如箭头924所示。

-4×16区域(避免第一子区域和第三子区域使用2×2色度变换以及中心2×4子区域使用色度变换)或8×16区域(避免第一子区域和第三子区域中的2×4色度变换)的水平三元拆分。允许剩余的拆分,如箭头925所示。

16×4区域(避免第一子区域和第三子区域使用2×2色度变换并且中心4×2子区域使用色度变换)或16×8区域(避免第一子区域和第三子区域中的4×2色度变换)的垂直三元拆分。允许剩余的拆分,如箭头926所示。

除了以上约束之外,禁止将得到具有小于二的宽度或高度的子区域的拆分。考虑步骤1010的各拆分选项,在执行步骤1030时咨询上述规则并且将不被禁止的拆分选项添加到色度拆分选项列表970。一旦已将初始拆分选项细化为允许拆分的列表(针对色度的列表970和针对亮度的列表972),块分区器310通过根据拉格朗日优化评价预测模式和编码成本来选择允许拆分其中之一。处理器205中的控制从步骤1030前进到零允许拆分测试1040。

在零允许拆分测试1040处,处理器205测试拆分选项列表(970或972)是否仅包含“无拆分”条目(拆分510)。如果是(步骤1040处为“是”),则可能无进一步拆分。在当前节点处存在CB,并且处理器205中的控制前进到对编码块进行编码步骤1070。如果拆分是可能的(步骤1040处为“否”),则处理器205中的控制前进到编码树阶段测试步骤1050。

在编码树阶段测试步骤1050处,处理器205检查编码树中的当前节点的阶段,即该阶段是QT还是MT。如果节点处于QT阶段,则块分区器310的决策将保持处于QT阶段,并且处理器205中的控制前进到编码QT拆分步骤1055。如果节点处于MT阶段或者块分区器310的决策是针对编码树的当前节点从QT阶段变换到MT阶段,则处理器205中的控制前进到编码MT拆分步骤1060。

在编码QT拆分步骤1055处,熵编码器338在处理器205的执行下将具有值“1”的(如关于图6的决策610所描述的)QT拆分标志编码到位流115中。具有值1的QT拆分标志指示将当前节点分割成四个子模式,即四叉树拆分512。处理器205中的控制从步骤1055前进到递归子区域步骤10100。

在编码MT拆分步骤1060处,熵编码器338在处理器205的执行下将另外的标志编码到位流115中以指示MT拆分的类型。如果当前节点处于从编码树的QT阶段到MT阶段的变换,则具有值“0”的(如关于图6的决策610所描述的)QT拆分标志被编码到位流115中。如果除了“无拆分”情况之外的至少一个拆分被允许,则如在步骤1030处所确定的,MT拆分标志指示无拆分510的选择(针对MT拆分标志编码“0”,参见图6的决策612)。步骤1060返回“否”,并且处理器205中的控制前进到对编码块进行编码步骤1070。

否则,通过针对MT拆分标志(即,612)编码“1”来指示块分区器310对拆分514-520其中之一的选择。步骤1060返回“是”并且处理器205中的控制前进到编码B/T H/V拆分步骤1090。

在对编码块进行编码步骤1070处,熵编码器338在处理器205的执行下将编码块的预测模式和残差系数编码到位流115中。对于帧内预测CB,编码帧内预测模式,并且对于帧间预测CB,编码运动矢量。根据从扫描路径中的最后有效残差系数返回朝向块的DC系数前进的扫描来编码残差系数。

此外,系数被分组为“子块”,针对子块,如果适当的话,对经编码子块标志进行编码,从而指示子块中存在至少一个有效残差系数。如果在子块中不存在有效残差系数,则不需要编码子块中的各残差系数的各个有效性标志。包含最后有效残差系数的子块不需要经编码子块标志。针对包含DC(块的左上方)残差系数的子块,不对经编码子块标志进行编码。如图8所示,对于给定块,子块大小在亮度中总是4×4,并且在色度中总是2×8、4×4和8×2其中之一。由此,子块大小总是16,这与总是16的倍数的块大小一致,如集合800中的情况那样。处理器205中的控制从步骤1070前进到最后编码块测试步骤1080。

在最后编码块测试1080处,处理器205判断当前编码块是否是编码树中的最后CB。借助于分层Z顺序扫描,最后CB是占据CTU的右下角的CB。如果当前CB是编码树中的最后CB(步骤1080处为“是”),则方法1000终止。一旦方法1000处理了亮度编码树,则调用方法1000来处理色度编码树。处理器205可以并行地进行方法1000的两个实例以处理亮度编码树和色度编码树。如果并行进行方法1000的两个实例,则熵编码器338以串行化的方式对亮度和色度进行操作以产生确定性位流。也就是说,由并行编码器产生的位流必须可由串行解码器解码。否则,如果步骤1080返回“否”,则当前节点根据分层Z顺序扫描前进到下一节点,如图7A和7B中所例示的。处理器205中的控制前进到生成初始拆分选项步骤1010。

在编码B/T H/V拆分步骤1090处,熵编码器338在处理器205的执行下将附加标志编码到位流115中,该附加标志指示允许拆分列表的哪个拆分是由块分区器310选择的。如果允许拆分列表包括除了“无拆分”情况之外的仅一个拆分,则该一个拆分必须已经由块分区器310选择,并且不需要编码附加标志来识别拆分。如果允许拆分的列表包括水平和垂直方向这两者上的拆分,则熵编码器338对指示由块分区器310选择的拆分的方向的标志进行编码。如果允许拆分的列表包括二元和三元拆分这两者,则熵编码器338对指示由块分区器310选择的拆分的类型(即,二元或三元)的标志进行编码。处理器205中的控制从步骤1090前进到递归子区域步骤10100。

在递归子区域步骤10100处,处理器205根据步骤1030的所确定的拆分来生成子区域。方法1000针对所生成的子区域或节点各自被递归地调用,从而得到贯穿编码树的递归。方法1000的递归调用根据对编码树的分层Z顺序扫描从一个子区域或节点前进到下一子区域或节点,如图7A和7B中所示。当从拆分得到的孩子节点已由方法1000处理以生成子区域时,递归前进到编码树中的下一兄弟节点。如果不存在其它兄弟节点,则递归前进到父节点,在该点处,选择下一节点(例如,父节点的兄弟)作为要为生成子区域的下一节点。在父节点处于编码树的QT阶段的情况下,返回父节点导致返回到编码树的QT阶段。

因此,步骤1055、1060、1090和1070各自进行操作以将所确定的可允许拆分选项的标志编码到位流。针对色度通道和亮度通道其中之一确定各拆分选项。可以基于编码树的区域的尺寸来确定拆分选项。

图11示出用于从视频位流中解码图像帧中的编码树的方法1100。如参考图13所述,针对亮度编码树和色度编码树各自进行方法1100,从而使得从位流133中解码CTU的各编码树。方法1100可以由诸如经配置的FPGA、ASIC或ASSP等的设备来体现。另外,方法1100可以在处理器205的执行下由视频解码器134进行。如此,方法1100可以存储在计算机可读存储介质上和/或存储在存储器206中。针对各CTU的亮度编码树和色度编码树调用的方法1100在生成初始拆分选项步骤1110处开始,其中“当前节点”(或当前区域)是亮度或色度编码树的根,即占据整个CTU的区域。

在生成初始拆分选项步骤1110处,处理器205生成针对编码树的当前节点的拆分选项。最初,编码树处于四叉树(QT)阶段,其中仅允许拆分为四叉树拆分(拆分512)或拆分的停止(拆分510)。此外,对于经编码以仅使用帧内预测块的帧或条带,亮度和色度编码树包括其根节点处的的四叉树拆分。当四叉树拆分已经停止时,编码树被认为处于多树(MT)阶段。在多树阶段中,拆分选项将停止拆分(使用510),在该情况下,与当前节点相对应的区域使用CB来编码,或继续拆分。作为初始拆分选项,水平和垂直方向上的二元和三元拆分(拆分514-520)是可用的。作为步骤1110的结果,创建针对编码树阶段(即,QT或MT)的所有可能拆分的列表。处理器205中的控制前进到确定色度格式步骤1120。

在确定色度格式步骤1120处,处理器205将帧数据135的色度格式确定为4:2:0色度格式和4:2:2色度格式其中之一。例如,可以由熵解码器420在处理器205的执行下从位流113中读取“chroma_format_idc”句法元素以确定色度格式。处理器205中的控制从步骤1120前进到生成允许拆分步骤1130。

在生成允许拆分步骤1130处,处理器205应用规则以将允许拆分类型约束到步骤1110的各拆分选项来产生允许拆分列表。当处理亮度编码树时,创建允许亮度拆分列表972。步骤1130以与方法100的步骤1030相同的方式操作,因此视频解码器134中的亮度和色度编码树中的节点的允许拆分列表与视频编码器114中的亮度和色度编码树中的节点的允许拆分列表相同。步骤1030操作以根据亮度编码树还是色度编码树正被处理来生成允许拆分列表970和972其中之一。如关于步骤1030和图9所描述,色度拆分选项不同于亮度拆分选项,并且色度拆分选项得到具有16个样本的最小大小的块。处理器205中的控制前进到QT/MT测试步骤1140。

在QT/MT测试步骤1140处,处理器205测试当前节点(区域)是处于编码树的QT阶段还是处于编码树的MT阶段。如果当前节点处于编码树的QT阶段并且允许拆分的列表包括“四叉树拆分”选项(拆分512),则处理器中的控制前进到解码QT拆分步骤1155。如果当前节点处于编码树的QT阶段,并且允许拆分的列表不包括“四叉树拆分”选项,即仅允许“无拆分”选项,则编码树阶段转变到“MT”阶段,并且处理器205中的控制前进到零允许拆分测试1150。如果编码树已经处于MT阶段,则处理器205中的控制前进到零允许拆分测试1150。

在零允许拆分测试1150处,处理器205测试拆分选项列表(即,分别针对色度和亮度编码树的970或972)是否仅包含“无拆分”条目(510)。如果拆分选项列表仅包含无拆分条目,则可能无进一步拆分并且在当前节点处存在CB。步骤1150返回“是”并且处理器中的控制前进到对编码块进行解码步骤1170。如果进一步拆分是可能的(步骤1150处为“否”),则处理器中的控制前进到解码MT拆分步骤1160。

在解码QT拆分步骤1055处,熵解码器420在处理器205的执行下从位流133中解码QT拆分标志(即,610),其指示当前节点是否分割成四个子模式,即是否发生四叉树拆分512。如果不发生四叉树分割(步骤1155处为“否”),则处理器205中的控制前进到零允许拆分测试1150。如果发生四叉树分割(步骤1155处为“是”),则处理器205中的控制前进到递归子区域步骤11100。

在解码MT拆分步骤1060处,熵解码器420在处理器205的执行下从位流133中解码指示MT拆分的类型的其它标志。如果除了“无拆分”情况之外的至少一个拆分被允许,则如在步骤1130处所确定的,MT拆分标志指示无拆分510的选择(针对MT拆分标志(即612)解码“0”)。步骤1060返回“否”并且处理器205中的控制前进到对编码块进行解码步骤1170。否则,通过针对MT拆分标志(即,612)解码“1”来指示选择允许拆分(970或972)的拆分514-520其中之一的需要。步骤1060返回“是”并且处理器205中的控制前进到解码B/T H/V拆分步骤1190。

在对编码块进行解码步骤1170处,熵解码器420在处理器205的执行下从位流133中解码编码块的预测模式和残差系数。对于帧内预测CB,解码帧内预测模式,并且对于帧间预测CB,解码运动矢量。根据从扫描路径中的最后有效残差系数返回朝向块的DC系数前进的扫描来解码残差系数。此外,系数被分组为“子块”,对于子块,经编码子块标志可以被解码,从而指示子块中存在至少一个有效残差系数。如果在子块中不存在有效残差系数,则不需要解码子块中的各残差系数的各个有效性标志。包含最后有效残差系数的子块不需要子块标志的解码,并且针对包含DC(块的左上方)残差系数的子块不进行经编码子块标志的解码。如图8所示,对于给定块,子块大小在亮度中总是4×4,并且在色度中总是2×8、4×4和8×2其中之一。由此,子块大小总是16,这与总是16的倍数的块大小一致,如集合800中的情况那样。处理器205中的控制前进到最后编码块测试步骤1180。

在最后编码块测试1180处,处理器205判断当前编码块是否是编码树中的最后CB。借助于分层Z顺序扫描,最后CB是占据CTU的右下角的CB。如果当前CB是编码树中的最后CB,则步骤1180返回“是”并且方法1100终止。一旦方法1100已经解码亮度编码树,则调用方法1100来解码色度编码树。否则,当前节点根据分层Z顺序扫描前进到下一节点,如图7A和7B中所例示。步骤1180返回“否”并且处理器205中的控制前进到生成初始拆分选项步骤1110。为了正确地解析位流133,视频解码器134通常以与由视频编码器113写入标志和其它句法元素相同的顺序来读取这些标志和其它句法元素。然而,假设满足其它操作的依赖性,则可以按照不同的顺序和/或同时地进行其它操作。例如,可以并行地执行诸如针对亮度和色度帧内重建的这些操作的一组操作。

在解码B/T H/V拆分步骤1190处,熵解码器420在处理器205的执行下从位流133中解码指示允许拆分列表中的哪个拆分将由视频解码器134进行的附加标志。当允许拆分列表包括除了“无拆分”情况之外的仅一个拆分时,需要进行该一个拆分,因为不存在其它备选。因此,不需要解码附加标志来识别拆分。然后,处理器205中的控制前进到递归子区域步骤11100。当允许拆分的列表包含水平和垂直方向这两者上的拆分时,从位流133解码指示拆分的方向的标志。如果允许拆分的列表包括二元和三元拆分这两者,则从位流133决定指示拆分的类型(即,二元或三元)的标志。处理器205中的控制前进到递归子区域步骤11100。

在递归子区域步骤11100处,处理器205根据步骤1190或1155的所确定拆分生成子区域,并且针对这些子区域或节点各自调用方法1100,从而得到贯穿编码树的递归。方法1100的递归调用根据对编码树的分层Z顺序扫描从一个子区域或节点前进到下一子区域或节点,如图7A和7B中所示。如果已处理从拆分得到的孩子节点以生成块或子区域,则递归前进到编码树中的下一兄弟节点。如果不存在其它兄弟节点,则递归前进到父节点或区域。选择下一节点(例如,父节点的兄弟)作为要处理的下一节点。如果父节点处于编码树的QT阶段,则返回到父节点导致返回到编码树的QT阶段。

因此,步骤1155、1160、1190和1170进行操作以通过从位流133中确定用以选择在步骤1130处确定的亮度拆分选项其中之一和色度拆分选项其中之一的标志而对编码树单位的编码单位进行解码。

作为方法1000和1100以及特别地步骤1030和1130的结果,避免了难以在帧内重建环路中以高速率处理的色度通道的相对小的帧内预测块。避免小块便于以高分辨率和/或帧速率(其中“像素速率”(需要处理的每秒像素)高,而没有不可接受的质量降低)来实现。

图12示出用于将图像帧的亮度和色度编码树编码到视频位流中的方法1200。方法1200可以由诸如经配置的FPGA、ASIC或ASSP等的设备来实现。另外,方法1200可以由视频解码器114在处理器205的执行下进行。如此,方法1200可以存储在计算机可读存储介质上和/或存储在存储器206中。方法1200在将帧分割成CTU的步骤1210处开始。

在将帧分割成CTU的步骤1210处,块分区器310在处理器205的执行下将帧数据113的当前帧分割成CTU阵列。开始进行用于在从分割得到的CTU上进行编码的进展。处理器中的控制从步骤1210前进到编码亮度编码树步骤1220。

在编码亮度编码树步骤1220处,视频编码器114在处理器205的执行下进行方法1000以确定当前CTU的亮度编码树并将其编码到位流115中。当前CTU是从执行步骤1210得到的CTU中所选择的一个CTU。处理器205中的控制从步骤1220前进到编码色度编码树步骤1230。

在编码色度编码树步骤1230处,视频编码器114在处理器205的执行下进行方法1000以确定当前CTU的色度编码树并将其编码到位流115中。处理器205中的控制从步骤1230前进到最后CTU测试步骤1240。

在最后CTU测试步骤1240处,处理器205测试当前CTU是否是条带或帧中的最后CTU。如果不是(步骤1240处为“否”),则视频编码器114进入帧中的下一CTU,并且处理器205中的控制从步骤1240前进回到步骤1220以继续处理帧中的剩余CTU。如果CTU是帧或条带中的最后CTU,则步骤1240返回“是”并且方法1200终止。

图13是用于从视频位流中解码图像帧的亮度和色度编码树的方法1300的流程图。方法1300可以由诸如经配置的FPGA、ASIC或ASSP等的设备来实现。另外,方法1300可以由视频解码器134在处理器205的执行下进行。如此,方法1300可以存储在计算机可读存储介质上和/或存储在存储器206中。方法1300在将帧分割成CTU的步骤1310处开始。

在将帧分割成CTU的步骤1310处,视频解码器134在处理器205的执行下确定要解码的帧数据133的当前帧到CTU阵列的分割。开始进行用于在从所确定的分割得到的CTU上进行解码的进展。处理器中的控制从步骤1310前进到解码亮度编码树步骤1320。

在解码亮度编码树步骤1320处,视频解码器134在处理器205的执行下针对当前CTU第一次进行方法1100以从位流133中解码当前CTU的亮度编码树。当前CTU是从执行步骤1310得到的CTU中所选择的一个CTU。处理器205中的控制从步骤1320前进到解码色度编码树步骤1330。

在解码色度编码树步骤1330处,视频解码器134在处理器205的执行下针对当前CTU第二次进行方法1100以从位流133中解码当前CTU的色度编码树。处理器205中的控制从步骤1330前进到最后CTU测试步骤1340。

在最后CTU测试步骤1340处,处理器205测试当前CTU是否是条带或帧中的最后CTU。如果不是(步骤1340处为“否”),则视频解码器134进入帧中的下一CTU,并且处理器205中的控制从步骤1340前进回到步骤1320以继续从位流中解码CTU。如果CTU是帧或条带中的最后CTU,则步骤1340返回“是”并且方法1300终止。

将残差系数分组成大小为16(十六)的子块便于熵编码器338和熵解码器420的实现,例如,使用如关于图8的TB 816和823所描述的那样。特别地,将残差系数分组成大小为16的子块便于上下文编码bin的算术编码(诸如用于有效图)的实现,以允许在各子块内使用固定模式上下文。

产业上的可利用性

所描述的布置适用于计算机和数据处理行业,并且特别地适用于对诸如视频和图像信号等的信号进行编码或解码的数字信号处理,从而实现高压缩效率。

与HEVC对比,VVC系统允许使用针对亮度和色度通道的单独编码树,以提高灵活性。然而,如上所述,由于使用较小的色度块会影响吞吐量,因此可能出现所导致的问题。本文所描述的布置确定各编码树单位被处理时的适当规则以帮助避免吞吐量问题。另外,如上所述,在给定避免吞吐量问题的规则的前提下,所描述的布置可以帮助提供用于描述各编码树的上下文编码bin的算术编码的改进的效率和准确性。

前述仅说明本发明的一些实施例,并且可以在没有背离本发明的范围和精神的情况下对本发明进行修改和/或改变,其中这些实施例仅是示例性而非限制性的。

(仅澳大利亚)在本说明书的上下文中,词语“包括”意味着“主要但未必仅包括”或“具有”或“包含”,而不是“仅由…组成”。词语“包括(comprising)”的诸如“comprise”和“comprises”等的词尾变化具有相应的变化含义。

43页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:3D数据生成装置、3D数据再现装置、控制程序以及记录介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类