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

用于在图像边界划分块的方法和装置

文献发布时间:2023-06-19 16:08:01



相关申请的交叉引用

本公开要求于本公开要求对在2019年12月17日上提交的美国临时申请号62/948,856的美国临时申请的优先权,其全部通过引用并入本文。

技术领域

本公开一般涉及视频处理,并且更具体地,涉及用于在图像边界进行块划分的方法和装置。

背景技术

视频是一组采集视觉信息的静态图像(或“帧”)。为了减少存储内存和传输带宽,可以在存储或传输之前对视频进行压缩,然后在显示之前对视频进行解压缩。压缩过程通常称为编码,解压缩过程通常称为解码。有多种使用标准化视频编码技术的视频编码格式,最常见的是基于预测、变换、量化、熵编码和环路滤波。视频编码标准,例如高效视频编码(HEVC/H.265)标准、通用视频编码(VVC/H.266)标准和AVS标准,指定了特定的视频编码格式,由标准化组织开发。随着视频标准中采用越来越多的先进视频编码技术,新的视频编码标准的编码效率越来越高。

发明内容

在一些实施例中,示例性视频处理方法包括:确定编码块是否包括图像边界之外的样本;以及响应于所述编码块被确定为包括图像边界之外的样本,不管第一参数的值如何,执行所述编码块的四叉树分割,其中,所述第一参数指示是否允许使用所述四叉树来分割所述编码块。

在一些实施例中,示例性视频处理装置包括用于存储指令的至少一个存储器和至少一个处理器。所述至少一个处理器被配置为执行所述指令以使所述装置执行:确定编码块是否包括图像边界之外的样本;以及响应于所述编码块被确定为包括图像边界之外的样本,不管第一参数的值如何,执行所述编码块的四叉树分割,其中所述第一参数指示所述四叉树是否被允许用于分割所述编码块。

在一些实施例中,示例性非暂时性计算机可读存储介质,存储有指令集。所述指令集可由一个或多个处理设备执行以使视频处理设备执行:确定编码块是否包括图像边界之外的样本,以及响应于所述编码块被确定为包括图像边界之外的样本,不管第一参数的值如何,执行所述编码块的四叉树分割,其中所述第一参数指示所述四叉树是否被允许用于分割所述编码块。

附图说明

在下面的详细描述和附图中示出了本公开的实施例和各个方面。图中所示的各种特征没有按比例绘制。

图1是根据本公开的一些实施例的示例性视频序列的结构示意图。

图2A是示出根据本公开的实施例的混合视频编码系统的示例性编码过程的示意图。

图2B是示出根据本公开的实施例的混合视频编码系统的另一示例性编码过程的示意图。

图3A是示出根据本公开的实施例的混合视频编码系统的示例性解码过程的示意图。

图3B是示出根据本公开的实施例的混合视频编码系统的另一示例性解码过程的示意图。

图4是根据本公开的一些实施例的用于对视频进行编码或解码的示例性装置的框图。

图5是根据本公开的一些实施例的示出了多类型树拆分模式的示例的示意图。

图6是示出根据本公开的一些实施例的用于在具有嵌套的多类型树编码树结构的四叉树(QT)中分区划分信息的示例性信号通知机制的示意图。

图7示出了根据本公开的一些实施例的示例性表1,其示出了基于多类型树语法元素的示例性多类型树划分模式(MttSplitMode)推导。

图8是示出根据本公开的一些实施例的不允许的三叉树(TT)和二叉树(BT)划分的示例的示意图。

图9是示出根据本公开的一些实施例的在图像边界上划分的示例性块的示意图。

图10示出了根据本公开的一些实施例的示例性表2,其示出了基于二进制划分模式(btSplit)的并行三叉树划分(parallelTtSplit)和编码块大小(cbSize)的示例性规范。

图11示出了根据本公开的一些实施例的示例性表3,其示出了基于三叉树划分模式(ttSplit)的cbSize的示例性规范。

图12示出了根据本公开的一些实施例示例性表4,其示出了示例性编码树语法。

图13是示出根据本公开的一些实施例的由MttSplitMode指示的多类型树拆分模式的示例的示意图。

图14示出了根据本公开的一些实施例的示例性表5,其示出MttSplitMode的示例性规范。

图15示出了根据本公开的一些实施例的示例性表6,其示出了示例性序列参数集RBSP语法。

图16示出了根据本公开的一些实施例的示例性表7,其示出了示例性图像头RBSP语法的。

图17是示出根据本公开的一些实施例的在图像边界处不允许QT、TT或BT划分的示例性块的示意图。

图18是示出根据本公开的一些实施例的在图像边界处不允许QT、TT或BT划分的示例性块的示意图。

图19是示出根据本公开的一些实施例的使用BT和TT划分的示例的示意图。

图20示出了根据本公开的一些实施例的示例性视频处理方法的流程图。

具体实施方式

现在将详细参考示例性实施例,其示例在附图中示出。以下描述参照附图,除非另有说明,其中不同附图中的相同数字表示相同或相似的元件。在示例性实施例的以下描述中阐述的实施方式并不代表与本公开一致的所有实施方式。相反,它们仅是与如所附权利要求中所述的与本公开相关的方面一致的装置和方法的示例。下面更详细地描述本公开的特定方面。如果与通过引用并入的术语和/或定义相冲突的话,以本文提供的术语和定义为准。

ITU-T视频编码专家组(ITU-T VCEG)和ISO/IEC运动图像专家组(ISO/IEC MPEG)的联合视频专家小组(JVET)目前正在开发通用视频编码(VVC/H.266)标准。VVC标准旨在将其前身高效视频编码(HEVC/H.265)标准的压缩效率提高一倍。换句话说,VVC的目标是使用一半的带宽实现与HEVC/H.265相同的主观质量。

为了使用一半的带宽实现与HEVC/H.265相同的主观质量,JVET一直在使用联合探索模型(JEM)参考软件开发HEVC以外的技术。随着编码技术被纳入JEM,JEM实现了比HEVC更高的编码性能。

VVC标准是最近开发的,并且继续包括提供更好压缩性能的更多编码技术。VVC基于与HEVC、H.264/AVC、MPEG2、H.263等现代视频压缩标准中一直使用的混合视频编码系统。

视频是按时间顺序排列以存储视觉信息的一组静态图像(或“帧”)。可以使用视频采集设备(例如,相机)以时间顺序采集和存储这些图像,并且可以使用视频回放设备(例如,电视、计算机、智能手机、平板计算机、视频播放器、或任何具有显示功能的最终用户终端)显示时间序列中的此类图像。此外,在一些应用中,视频采集设备可以实时地将采集的视频发送到视频回放设备(例如,具有监视器的计算机),例如用于监视、会议或现场广播。

为了减少此类应用所需的存储空间和传输带宽,可以在存储和传输之前对视频进行压缩,并在显示之前进行解压缩。可以通过由处理器(例如,通用计算机的处理器)或专用硬件执行的软件来实现压缩和解压缩。用于压缩的模块通常被称为“编码器”,并且用于解压缩的模块通常被称为“解码器”。编码器和解码器可以统称为“编解码器”。编码器和解码器可以被实现为各种合适的硬件、软件、或其组合中的任何一种。例如,编码器和解码器的硬件实现可以包括电路,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑或其任何组合。编码器和解码器的软件实现可以包括固定在计算机可读介质中的程序代码、计算机可执行指令、固件或任何合适的计算机实现的算法或过程。视频压缩和解压缩可以通过各种算法或标准来实现,例如MPEG-1、MPEG-2、MPEG-4、H.26x系列等。在一些应用中,编解码器可以从第一编码标准解压缩视频,并且使用第二编码标准重新压缩解压缩的视频,在这种情况下,编解码器可以被称为“转码器”。

视频编码过程可以识别并保留可用于重建图像的有用信息,并忽略不重要的重建信息。如果忽略不重要的信息不能被完全重建,则这样的编码过程可以被称为“有损”。否则,它可以被称为“无损”。大多数编码过程都是有损的,这是为了减少所需的存储空间和传输带宽的权衡。

被编码的图像(称为“当前图像”)的有用信息包括相对于参考图像(例如,先前编码和重建的图像)的变化。这样的变化可以包括像素的位置变化、亮度变化或颜色变化,其中位置变化是最受关注的。代表对象的一组像素的位置变化可以反映对象在参考图像和当前图像之间的运动。

未参考另一图像而编码的图像(即,它是自己的参考图像)被称为“I-图像”。使用先前图像作为参考图像编码的图像被称为“P-图像”,使用先前图像和将来图像作为参考图像编码的图像称为被称为“B图像”(参考是“双向”的)。

图1示出了根据本公开的一些实施例的示例视频序列100的结构。视频序列100可以是实况视频或已被采集和存档的视频。视频100可以是现实生活中的视频、计算机生成的视频(例如,计算机游戏视频)或二者组合(例如,具有增强现实效果的真实视频)。视频序列100可以从视频采集设备(例如,相机)、包含先前采集的视频档案(例如,存储在存储设备中的视频文件)或从视频内容提供商接收视频的视频馈送接口(例如,视频广播收发器)输入。

如图1所示,视频序列100可以包括沿时间线在时间上布置的一系列图像,包括图像102、104、106和108。图像102-106是连续的,在图像106和108之间有更多的图像。在图1中,图像102是I-图像,其参考图像是图像102本身。图像104是P-图像,其参考图像是图像102,如箭头所示。图像106是B图像,其参考图像是图像104和108,如箭头所示。在一些实施例中,图像的参考图像(例如,图像104)可以不紧接在图像之前或之后。例如,图像104的参考图像可以是图像102之前的图像。需要说明的是,图像102-106的参考图像仅仅是示例,本公开并不限定如图1所示的参考图像的实施例。

通常,由于编解码任务的计算复杂性,视频编解码器不会一次对整个图像进行编码或解码。相反,他们可以将图像分割成基本段,并逐段对图像段进行编码或解码。在本公开中,这样的基本段被称为基本处理单元(“BPU”)。例如,图1中的结构110示出了视频序列100的图像(例如,图像102-108中的任何图像)的示例结构。在结构110中,图像被划分为4×4基本处理单元,其边界被示出为虚线。在一些实施例中,基本处理单元可以在一些视频编码标准(例如,MPEG族、H.261、H.263或H.264/AVC)中被称为“宏块”,或者在一些其它视频编码标准(例如,H.265/HEVC或H.266/VVC)中被称为“编码树单元”(“CTU”)。基本处理单元可以在图像中具有可变的大小,例如128×128、64×64、32×32、16×16、4×8、16×32或任意形状和大小的像素。可以基于编码效率和要保持在基本处理单元中的细节水平的平衡来为图像选择基本处理单元的尺寸和形状。

基本处理单元可以是逻辑单元,其可以包括存储在计算机存储器中(例如,在视频帧缓冲区中)的一组不同类型的视频数据。例如,彩色图像的基本处理单元可以包括表示消色差亮度信息的亮度分量(Y)、表示颜色信息的一个或多个色度分量(例如,Cb和Cr)以及相关联的语法元素,其中亮度和色度分量可以具有与基本处理单元的相同大小。在一些视频编码标准(例如,H.265/HEVC或H.266/VVC)中,亮度和色度分量可以被称为“编码树块”(“CTB”)。对基本处理单元执行的任何操作都可以对其亮度和色度分量中的每一个重复执行。

视频编码具有多个操作阶段,其示例如图2A-2B和图3A-3B所示。对于每个阶段,基本处理单元的大小对于处理仍然可能太大,因此可以进一步分为在本公开中称为“基本处理子单元”的段。在一些实施例中,基本处理子单元可以在一些视频编码标准(例如,MPEG族、H.261、H.263或H.264/AVC)中被称为“块”,或者作为一些其他视频编码标准(例如,H.265/HEVC或H.266/VVC)中的“编码单元”(“CU”)。基本处理子单元可以具有与基本处理单元相同的大小或具有比基本处理单元更小的大小。与基本处理单元类似,基本处理子单元也是逻辑单元,其可以包括存储在计算机存储器(例如,在视频帧缓冲区中)中的一组不同类型的视频数据(例如,Y、Cb、Cr和相关联的语法元素)。对基本处理子单元执行的任何操作都可以对其亮度和色度分量中的每一个重复执行。应该注意的是,可以根据处理需要将这种划分执行到进一步的级别。还应注意,不同阶段可以使用不同的方案来划分基本处理单元。

例如,在模式决策阶段(其示例在图2B中示出,编码器可以决定对基本处理单元使用什么预测模式(例如,帧内预测或帧间预测),该基本处理单元可能太大而无法做出这样的决定。编码器可以将基本处理单元划分成多个基本处理子单元(例如,如H.265/HEVC或H.266/VVC中的CU),并且决定每个单独的基本处理子单元的预测类型。

对于另一个示例,在预测阶段(其示例在图2A-2B中示出),编码器可以在基本处理子单元(例如,CU)的级别上执行预测操作。但是,在某些情况下,基本处理子单元仍然可能太大而无法处理。编码器可以进一步将基本处理子单元划分成更小的段(例如,在H.265/HEVC或H.266/VVC中称为“预测块”或“PB”),在该级别上可以执行预测操作。

对于另一个示例,在变换阶段(其示例在图2A-2B中示出),编码器可以对残差基本处理子单元(例如,CU)执行变换操作。但是,在某些情况下,基本处理子单元仍然可能太大而无法处理。编码器可以进一步将基本处理子单元分成更小的段(例如,在H.265/HEVC或H.266/VVC中称为“变换块”或“TB”),在该级别上可以执行变换操作。需要注意的是,同一基本处理子单元的划分方案在预测阶段和变换阶段可以不同。例如,在H.265/HEVC或H.266/VVC中,相同CU的预测块和变换块可以具有不同的大小和数量。

在图1的结构110中,将基本处理单元112进一步分为3×3个基本处理子单元,其边界以虚线示出。同一图像的不同基本处理单元可以在不同的方案中划分为基本处理子单元。

在一些实施方式中,为了提供对视频编码和解码的并行处理的能力以及容错能力,可以将图像划分成用于处理的区域,使得对于该图像的区域,编码或解码过程可以不依赖于来自图像的任何其他区域的信息。换句话说,图像的每个区域都可以独立处理。通过这样做,编解码器可以并行处理图像的不同区域,从而提高了编码效率。此外,当一区域的数据在处理中被损坏或在网络传输中丢失时,编解码器可以正确地编码或解码相同图像的其他区域而不依赖于被损坏或丢失的数据,从而提供容错能力。在某些视频编码标准中,可以将图像划分为不同类型的区域。例如,H.265/HEVC和H.266/VVC提供两种类型的区域:“条带(slice)”和“块片(tile)”。还应注意的是,视频序列100的不同图像可以具有用于将图像划分为区域的不同划分方案。

例如,在图1中,结构110被划分成三个区域114、116和118,其边界被示为结构110内部的实线。区域114包括四个基本处理单元。区域116和118均包括六个基本处理单元。需要说明的是,图1中基本处理单元、基本处理子单元和结构110的区域仅是示例,本公开不限制其实施例。

图2A示出了根据本公开的实施例的示例性编码过程200A的示意图。例如,编码过程200A可以由编码器执行。如图2A所示,编码器可以根据过程200A将视频序列202编码为视频位流228。类似于图1中的视频序列100,视频序列202可以包括按时间顺序排列的一组图像(称为“原始图像”)。类似于图1中的结构110,视频序列202的每个原始图像可以由编码器划分为基本处理单元、基本处理子单元或区域进行处理。在一些实施例中,编码器可以针对视频序列202的每个原始图像在基本处理单元的级别上执行过程200A。例如,编码器可以以迭代方式执行过程200A,其中编码器可以在过程200A的一次迭代中对基本处理单元进行编码。在一些实施例中,编码器可以针对视频序列202的每个原始图像的区域(例如,区域114-118)并行地执行过程200A。

参考图2A,编码器可以将视频序列202的原始图像的基本处理单元(称为“原始BPU”)馈送到预测阶段204,以生成预测数据206和预测BPU 208。编码器可以从原始BPU减去预测的BPU 208以生成残差BPU 210。编码器可以将残差BPU 210馈送到变换阶段212和量化阶段214以216生成量化变换系数216。编码器可以将预测数据206和量化变换系数216馈送到二进制编码阶段226以生成视频位流228。组件202、204、206、208、210、212、214、216、226和228可以被称为“前向路径”。在过程200A期间,在量化阶段214之后,编码器可以将量化变换系数216馈送到逆量化阶段218和逆变换阶段220以生成重建的残差BPU 222。编码器可以将重建的残差BPU 222添加到预测的BPU 208以生成预测参考224,其用于过程200A的下一次迭代的预测阶段204中。过程200A的组件218、220、222和224可以被称为“重建路径”。重建路径可以用于确保编码器和解码器都使用相同的参考数据进行预测。

编码器可以迭代地执行过程200A以对编码原始图像的每个原始BPU(在前向路径中)编码,并生成用于编码原始图像的下一个原始BPU(在重建路径中)的预测参考224。在对原始图像的所有原始BPU进行编码之后,编码器可以继续对视频序列202中的下一个图像进行编码。

参考过程200A,编码器可以接收由视频采集设备(例如,相机)生成的视频序列202。本文使用的术语“接收”可以指以任何方式接收、输入、获取、检索、获取、读取、访问或用于输入数据的任何动作。

在预测阶段204,在当前迭代时,编码器可以接收原始BPU和预测参考224,并执行预测操作以生成预测数据206和预测BPU 208。预测参考224可以从过程200A的先前迭代的重建路径生成。预测阶段204的目的是通过从预测数据206和预测参考224中提取可用于将原始BPU重建为预测BPU 208的预测数据206来减少信息冗余。

理想地,预测的BPU 208可以与原始BPU相同。然而,由于非理想的预测和重建操作,预测的BPU 208通常与原始BPU略有不同。为了记录这些差异,在生成预测BPU 208,编码器可以将其从原始BPU中减去以生成残差BPU 210。例如,编码器可以从原始BPU的像素的值减去预测BPU 208的对应像素的值(例如,灰度值或RGB值)。残差BPU 210的每个像素可以具有残差值作为原始BPU和预测BPU208的相应像素之间的这种相减的结果,与原始BPU相比,预测数据206和残差BPU 210可以具有更少的比特数,但是它们可以用于重建原始BPU,而不会出现明显的质量下降。因此,原始BPU被压缩,

为了进一步压缩残差BPU 210,在变换阶段212,编码器可以通过将残差BPU 210分解为一组二维“基本图案(base pattern)”来减少其空间冗余。每个基本图案与“变换系数”相关联。基本图案可以具有相同的尺寸(例如,残差BPU 210的尺寸),每个基本图案可以表示残差BPU 210的变化频率(例如,亮度变化的频率)分量。基本图案中的任何一个都不能从任何其他基本图案的任何组合(例如,线性组合)中再现。换句话说,分解可以将残差BPU210的变化分解到频域中。这种分解类似于函数的离散傅立叶变换,其中,基本图像类似于离散傅立叶变换的基本函数(例如,三角函数),并且变换系数类似于与基本函数相关联的系数。

不同的变换算法可以使用不同的基本图案。各种变换算法可以在变换阶段212处使用,例如,离散余弦变换、离散正弦变换等。变换阶段212处的变换是可逆的。也就是说,编码器可以通过变换的逆运算(称为“逆变换”)来恢复残差BPU 210。例如,为了恢复残差BPU210的像素,逆变换可以是将基本图案的对应像素的值乘以相应的相关联系数并将乘积相加以产生加权和。对于视频编码标准,编码器和解码器都可以使用相同的变换算法(因此具有相同的基本图案)。因此,编码器可以仅记录变换系数,解码器可以从中重建残差BPU210,而无需从编码器接收基本图案。与残差BPU 210相比,变换系数可以具有更少的比特,但是它们可以用于重建残差BPU 210而没有显著的质量劣化。因此,残差BPU 210被进一步压缩。

编码器可以进一步在量化阶段214压缩变换系数。在变换过程中,不同的基本图案可以表示不同的变化频率(例如,亮度变化频率)。因为人眼通常更擅长识别低频变化,所以编码器可以忽略高频变化的信息,而不会在解码中引起明显的质量劣化。例如,在量化阶段214,编码器可以通过将每个变换系数除以整数值(称为“量化参数”)并将商四舍五入到其最接近的整数来生成量化的变换系数216。在这样的操作之后,可以将高频基本图案的一些变换系数转换为零,并且可以将低频基本图案的变换系数转换为较小的整数。编码器可以忽略零值的量化变换系数216,由此变换系数被进一步压缩。该量化处理也是可逆的,其中量化变换系数216可以在量化的逆操作(称为“逆量化”)中被重建为变换系数。

因为编码器在舍入操作中忽略了该除法的余数,所以量化阶段214可能是有损的。通常,量化阶段214可以在过程200A中贡献最多的信息损失。信息损失越大,量化变换系数216所需的比特数就越少。为了获得不同级别的信息损失,编码器可以使用不同的量化参数值或量化过程的任何其他参数。

在二进制编码阶段226,编码器可以使用二进制编码技术对预测数据206和量化变换系数216进行编码,二进制编码例如为熵编码、可变长度编码、算术编码、霍夫曼编码、上下文自适应二进制算术编码,或任何其他无损或有损压缩算法。在一些实施例中,除了预测数据206和量化变换系数216之外,编码器可以在二进制编码阶段226编码其他信息,例如,在预测阶段204使用的预测模式、预测操作的参数、在变换阶段212处的变换类型。量化过程的参数(例如,量化参数)、编码器控制参数(例如,比特率控制参数)等。编码器可以使用二进制编码阶段226的输出数据来生成视频位流228。在一些实施例中,视频位流228可以被进一步打包以用于网络传输。

参照过程200A的重建路径,在逆量化阶段218,编码器可以对量化变换系数216执行逆量化,以生成重建的变换系数。在逆变换阶段220,编码器可以基于重建的变换系数生成重建残差BPU 222。编码器可以将重建残差BPU 222添加到预测BPU 208以生成将在过程200A的下一次迭代中使用的预测参考224。

应当注意的是,过程200A的其他变体可用于对视频序列202进行编码。在一些实施例中,过程200A的阶段可以由编码器以不同的顺序执行。在一些实施例中,过程200A的一个或多个阶段可以组合成单个阶段。在一些实施例中,过程200A的单个阶段可以分为多个阶段。例如,变换阶段212和量化阶段214可以组合成单个阶段。在一些实施例中,过程200A可以包括附加的阶段。在一些实施例中,过程200A可以省略图2A中的一个或多个阶段。

图2B示出了根据本公开的实施例的另一示例编码过程200B的示意图。过程200B可以修改自过程200A。例如,过程200B可以由符合混合视频编码标准(例如,H.26x系列)的编码器使用。与过程200A相比,过程200B的前向路径还包括模式决策阶段230,并将预测阶段204分为空间预测阶段2042和时间预测阶段2044,过程200B的重建路径还另外包括环路滤波阶段232和缓冲区234。

通常,预测技术可以分为两种类型:空间预测和时间预测。空间预测(例如,帧内图像预测或“帧内预测”)可以使用来自同一图像中的一个或多个已经编码的相邻BPU的像素来预测当前BPU。也就是说,空间预测中的预测参考224可以包括相邻的BPU。空间预测可以减少图像固有的空间冗余。时间预测(例如,图像间预测或“帧间预测”)可以使用来自一个或多个已经编码的图像的区域来预测当前BPU。也就是说,时间预测中的预测参考224可以包括编码图像。时间预测可以减少图像固有的时间冗余。

参考过程200B,在前向路径中,编码器在空间预测阶段2042和时间预测阶段2044执行预测操作。例如,在空间预测阶段2042,编码器可以执行帧内预测。对于被编码的图像的原始BPU,预测参考224可以包括在同一图像中已经被编码(在前向路径中)和重建(在重建路径中)的一个或多个相邻BPU。编码器可以通过插值相邻的BPU来生成预测的BPU 208。插值技术可以包括例如线性插值或内插、多项式插值或内插等。在一些实施例中,编码器可以在像素级执行插值,例如通过插值预测BPU 208的每个像素的对应像素的值。用于插值的相邻BPU可以位于相对于原始BPU的各个方向,例如在垂直方向(例如,在原始BPU的顶部),水平方向(例如,在原始BPU的左侧),对角线方向(例如,在原始BPU的左下、右下、左上或右上),或在所使用的视频编码标准中定义的任何方向。对于帧内预测,预测数据206可以包括,例如,所使用的相邻BPU的位置(例如,坐标)、所使用的相邻BPU的大小、插值的参数、所使用的相邻BPU相对于原始BPU的方向等。

对于另一个示例,在时间预测阶段2044,编码器可以执行帧间预测。对于当前图像的原始BPU,预测参考224可以包括已经被编码(在前向路径中)和重建(在重建路径中)的一个或多个图像(被称为“参考图像”)。在一些实施例中,可以通过逐个BPU对参考图像进行编码和重建。例如,编码器可以将重建的残差BPU 222添加到预测BPU 208以生成重建BPU。当同一张图像的所有重建的BPU都被生成时,编码器可以生成一重建图像作为参考图像。编码器可以执行“运动估计”的操作以搜索参考图像的范围(称为“搜索窗口”)中的匹配区域。可以基于原始BPU在当前图像中的位置来确定搜索窗口在参考图像中的位置。例如,搜索窗口可以在参考图像中与当前图像中的原始BPU具有相同坐标的位置处为中心,并且可以向外延伸预定距离。当编码器在搜索窗口中识别(例如,通过使用pel递归算法、块匹配算法等)类似于原始BPU的区域时,编码器可以确定这样的区域作为匹配区域。匹配区域可以具有与原始BPU不同的尺寸(例如,小于、等于、大于或具有不同的形状)。因为参考图像和当前图像在时间线上在时间上分开(例如,如图1所示),所以可以认为匹配区域随着时间的推移“移动”到原始BPU的位置。编码器可以将这种运动的方向和距离记录为“运动矢量”。当使用多个参考图像时(例如,如图1中的图像106),编码器可以搜索匹配区域并为每个参考图像确定其相关联的运动矢量。在一些实施例中,编码器可以将权重分配给各个匹配参考图像的匹配区域的像素值。

运动估计可用于识别各种类型的运动,例如平移、旋转、缩放等。对于帧间预测,预测数据206可以包括例如匹配区域的位置(例如,坐标)、与匹配区域相关联的运动矢量、参考图像的数量、与参考图像相关联的权重等。

为了生成预测的BPU 208,编码器可以执行“运动补偿”的操作。运动补偿可以用于基于预测数据206(例如,运动向量)和预测参考224来重建预测的BPU 208。例如,编码器可以根据运动矢量移动参考图像的匹配区域,其中编码器可以预测当前图像的原始BPU。当使用多个参考图像时(例如,如图1中的图像106),编码器可以根据匹配区域的各个运动矢量和平均像素值来移动参考图像的匹配区域。在一些实施例中,如果编码器已经将权重分配给各个匹配参考图像的匹配区域的像素值,则编码器可以将移动的匹配区域的像素值的加权和相加。

在一些实施例中,帧间预测可以是单向的或双向的。单向帧间预测可以使用相对于当前图像在相同时间方向上的一个或多个参考图像。例如,图1中的图像104是单向帧间预测图像,其中参考图像(即,图像102)在图像04之前。双向帧间预测可以在相对于当前图像的两个时间方向上使用一个或多个参考图像。例如,图1中的图像106是双向帧间预测图像,其中参考图像(即,图像104和08)相对于图像104在两个时间方向上。

仍然参考过程200B的前向路径,在空间预测2042和时间预测阶段2044之后,在模式决策阶段230,编码器可以为过程200B的当前迭代选择预测模式(例如,帧内预测或帧间预测之一)。例如,编码器可以执行速率失真优化技术,其中编码器可以根据候选预测模式的比特率和候选预测模式下的重建参考图像的失真来选择预测模式以最小化成本函数的值。根据所选择的预测模式,编码器可以生成相应的预测BPU 208和预测数据206。

在过程200B的重建路径中,如果在前向路径中已经选择了帧内预测模式,则在生成预测参考224(例如,在当前图像中已经编码和重建的当前BPU)之后,编码器可以将预测参考224直接馈送到空间预测阶段2042以用于以后的使用(例如,用于插值当前图像的下一BPU)。如果在前向路径中已经选择了帧间预测模式,则在生成预测参考224(例如,其中所有BPU都已被编码和重建的当前图像)之后,编码器可以将预测参考224馈送到环路滤波器阶段232。在该阶段,编码器可以将环路滤波器应用于预测参考224,以减少或消除由帧间预测引入的失真(例如,块状伪影)。编码器可以在环路滤波器阶段232处应用各种环路滤波器技术,例如去块、采样自适应补偿、自适应环路滤波器等。可以将经环路滤波的参考图像存储在缓冲区234(或“经解码的图像缓冲区”)中以供以后使用(例如,用作视频序列202的未来图像的帧间预测参考图像)。编码器可以将一个或多个参考图像存储在缓冲区234中,以在时间预测阶段2044处使用。在一些实施例中,编码器可以在二进制编码阶段226处编码环路滤波器的参数(例如,环路滤波器强度)以及量化变换系数216、预测数据206和其他信息。

图3A示出了根据本发明的实施例的示例性解码过程300A的示意图。过程300A可以是对应于图2A中的压缩过程200A的解压缩过程。在一些实施例中,过程300A可以类似于过程200A的重建路径。解码器可以根据过程300A将视频位流228解码成视频流304。视频流304可以非常类似于视频序列202。然而,由于压缩和解压缩过程中的信息丢失(例如,图2A-2B中的量化阶段214),通常,视频流304与视频序列202不同。类似于图2A-2B中的过程200A和200B,解码器可以在基本处理单元(BPU)级别对在视频位流228中编码的每个图像执行过程300A。例如,解码器可以以迭代方式执行过程300A,其中解码器可以在过程300A的一次迭代中对基本处理单元进行解码。在一些实施例中,解码器可以针对在视频位流228中编码的每个图像的区域(例如,区域114-118)并行地执行过程300A。

如图3A所示,解码器可以将与编码图像的基本处理单元(称为“编码BPU”)相关联的视频位流228的一部分馈送到二进制解码阶段302,在二进制解码阶段302,解码器可以将该部分解码成预测数据206和量化变换系数216。解码器可以将量化变换系数216馈送到逆量化阶段218和逆变换阶段220以生成重建残差BPU222。解码器可以将预测数据206馈送到预测阶段204以生成预测BPU 208。解码器可以将重建残差BPU222添加到预测BPU 208以生成预测参考224。在一些实施例中,预测参考224可以存储在缓冲区(例如,计算机存储器中的解码图像缓冲区)中。解码器可以将预测参考224馈送到预测阶段204,用于在过程300A的下一次迭代中执行预测操作。

解码器可以迭代地执行过程300A,以解码编码图像的每个编码BPU,并生成用于编码图像的下一个编码BPU的预测参考224。在解码编码图像的所有编码BPU之后,解码器可以将该图像输出到视频流304以供显示,并且继续解码视频位流228中的下一个编码图像。

在二进制解码阶段302,解码器可以执行编码器使用的二进制编码技术(例如,熵编码、可变长度编码、算术编码、霍夫曼编码、上下文自适应二进制算术编码或任何其他无损压缩算法)的逆运算。在一些实施例中,除了预测数据206和量化的变换系数216,解码器可以在二进制解码阶段302解码其他信息,例如预测模式、预测操作的参数、变换类型、量化过程的参数(例如,量化参数)、编码器控制参数(例如,比特率控制参数)等。在一些实施例中,如果视频位流228通过网络以包的形式传输,则解码器可以在将视频位流228馈送到二进制解码级302之前对其进行解包。

图3B示出了根据本公开的实施例的另一示例解码过程300B的示意图。过程300B可以修改自过程300A。例如,过程300B可以由符合混合视频编码标准(例如,H.26x系列)的解码器使用。与过程300A相比,过程300B额外地将预测阶段204划分为空间预测阶段2042和时间预测阶段2044,并且额外地包括环路滤波阶段232和缓冲区234。

在过程300B中,对于在解码的编码图像(称为“当前图像”)的编码基本处理单元(称为“当前BPU”),由解码器从二进制解码阶段302解码的预测数据206可以包括各种类型的数据,这取决于编码器使用什么预测模式来编码当前BPU。例如,如果编码器使用帧内预测来编码当前BPU,则预测数据206可以包括指示帧内预测、帧内预测操作的参数等的预测模式指示符(例如,标志值)。帧内预测操作的参数可以包括例如用作参考的一个或多个相邻BPU的位置(例如,坐标)、相邻BPU的大小、插值的参数、相邻BPU相对于原始BPU的方向等。对于另一示例,如果由编码器使用的帧间预测来编码当前BPU,则预测数据206可以包括指示帧间预测、帧间预测操作的参数等预测模式指示符(例如,标志值)。帧间预测操作的参数可以包括例如与当前BPU相关联的参考图像的数量、分别与参考图像相关联的权重、相应参考图像中的一个或多个匹配区域的位置(例如,坐标)、分别与所述匹配区域相关联的一个或多个运动矢量等。

基于预测模式指示符,解码器可以决定是在空间预测阶段2042执行空间预测(例如,帧内预测)还是在时间预测阶段2044执行时间预测(例如,帧间预测),执行这种空间预测或时间预测的细节在图2B中描述,其不会在下文中重复。在执行这样的空间预测或时间预测之后,解码器可以生成预测的BPU 208,解码器可以添加预测的BPU 208和重建残差BPU222以生成预测参考224,如图3A中所述。

在过程300B中,解码器可以将预测参考224馈送到空间预测阶段2042或时间预测阶段2044,用于在过程300B的下一次迭代中执行预测操作。例如,如果在空间预测阶段2042使用帧内预测解码当前BPU,则在生成预测参考224(例如,解码的当前BPU)之后,解码器可以将预测参考224直接馈送到空间预测阶段2042以供以后使用(例如,用于插值当前图像的下一个BPU)。如果在时间预测阶段2044使用帧间预测解码当前BPU,则在生成预测参考224(例如,其中所有BPU都被解码的参考图像)之后,编码器可以将预测参考224馈送到环路滤波器阶段232以减少或消除失真(例如,块状伪影)。解码器可以如图2B所示的方式将环路滤波器应用于预测参考224。环路滤波的参考图像可以存储在缓冲区234(例如,计算机存储器中的解码图像缓冲区)中供以后使用(例如,用作视频位流228的未来编码图像的预测间参考图像)。解码器可以将一个或多个参考图像存储在缓冲区234中,以在时间预测阶段2044处使用。在一些实施例中,当预测数据206的预测模式指示符指示帧间预测被用于编码当前BPU时,预测数据可以进一步包括环路滤波器的参数(例如,环路滤波器强度)。

图4是根据本公开的实施例的用于对视频进行编码或解码的示例装置400的框图。如图4所示,装置400可以包括处理器402。当处理器402执行本文所述的指令时,装置400可以成为用于视频编码或解码的专用机器。处理器402可以是能够操纵或处理信息的任何类型的电路。例如,处理器402可以包括任何数量的中央处理单元(或“CPU”)、图形处理单元(或“GPU”)、神经处理单元(“NPU”)、微控制器单元(“MCU”)、光学处理器中、可编程逻辑控制器、微处理器、数字信号处理器、知识产权(IP)核心、可编程逻辑阵列(PLA)、可编程阵列逻辑(PAL)、通用阵列逻辑(GAL)、复杂可编程逻辑器件(CPLD),一种现场可编程门阵列(FPGA)、片上系统(SoC)、专用集成电路(ASIC)等的任意组合。在一些实施例中,处理器402还可以是被分组为单个逻辑组件的一组处理器。例如,如图4所示,处理器402可以包括多个处理器,包括处理器402a、处理器402b和处理器402n。

装置400还可以包括被配置为存储数据(例如,指令集、计算机代码、中间数据等)的存储器404。例如,如图4所示,所存储的数据可以包括程序指令(例如,用于实现过程200A、200B、300A或300B中的阶段)和用于处理的数据(例如,视频序列202、视频位流228或视频流304)。处理器402可以访问用于处理的程序指令和数据(例如,经由总线410),并且执行程序指令以对用于处理的数据执行操作或操纵。存储器404可以包括高速随机存取存储设备或非易失性存储设备。在一些实施例中,存储器404可以包括任意数量的随机存取存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘驱动器、固态驱动器、闪存驱动器、安全数字(SD)卡、记忆棒、紧凑型闪存(CF)卡等的任意组合。存储器404也可以是被分组为单个逻辑组件的一组存储器(图4中未示出)。

总线410可以是在装置400内部的组件之间传输数据的通信设备,诸如内部总线(例如,CPU-存储器总线)、外部总线(例如,通用串行总线端口、外围组件互连快速端口),或者类似物。

为了便于解释而不引起歧义,在本公开中,处理器402和其他数据处理电路统称为“数据处理电路”。数据处理电路可以完全实现为硬件,或者实现为软件、硬件或固件的组合。此外,数据处理电路可以是单个独立模块,或者可以完全或部分地组合到装置400的任何其他部件中。

装置400还可以包括网络接口406,以提供与网络(例如,因特网、内联网、局域网、移动通信网络等)的有线或无线通信。在一些实施例中,网络接口406可以包括任何数量的网络接口控制器(NIC)、射频(RF)模块、应答器、收发器、调制解调器、路由器、网关、有线网络适配器、无线网络适配器、蓝牙适配器、红外适配器、近场通信(“NFC”)适配器、蜂窝网络芯片等的任意组合。

在一些实施例中,可选地,装置400可以进一步包括外围接口408,以提供到一个或多个外围设备的连接。如图4所示,外围设备可以包括,但不限于,光标控制设备(例如,鼠标、触摸板或触摸屏)、键盘、显示器(例如,阴极射线管显示器、液晶显示器、或发光二极管显示器)、视频输入设备(例如,相机或耦合到视频档案的输入接口)等。

应当注意,视频编解码器(例如,执行过程200A、200B、300A或300B的编解码器)可以被实现为装置400中的任何软件或硬件模块的任何组合。例如,过程200A、200B、300A或30013的一些或所有阶段可以被实现为装置400的一个或多个软件模块,诸如可以被加载到存储器404中的程序实例。对于另一示例,过程200A、200B、300A或300B的一些或全部阶段可以被实现为装置400的一个或多个硬件模块,诸如专用数据处理电路(例如,FPGA、ASIC、NPU等)。

在量化和逆量化功能块(例如,图2A或图2B的量化214和逆量化218,图3A或图3B的逆量化218)中,量化参数(QP)用于确定应用于预测残差的量化(和逆量化)量。用于对图像或条带(slice)进行编码的初始QP值可以在较高的级别上发出信号,例如,使用图像参数集(PPS)中的init_qp_minus26语法元素和使用条带头中的slic_qp_delta语法元素。此外,可以使用以量化组的粒度发送的增量(delta)QP值在本地级别针对每个CU适配QP值。

根据一些实施例,可以将图像分成多个编码树单元(CTU)。然后,使用具有用二元和三元划分分割结构的嵌套多类型树的四叉树(SPLIT_QT)将CTU进一步划分成一个或多个编码单元(CU)。图5是示出根据本公开的一些实施例的多类型树划分模式的示例的示意图。如图5所示,多类型树结构中的划分类型可以包括四叉树拆分(SPLIT_QT)501,垂直二叉树划分(SPLIT BT VER)502,水平二叉树划分(拆分SPLIT_BT_HOR)503、垂直三叉树划分(SPLIT_TT_VER)504和水平三叉树划分(SPLIT_TT_HQR)505。多类型的树叶节点称为编码单元(CU),其可以具有正方形或矩形形状。

图6是根据本公开的一些实施例的用于具有嵌套的多类型树编码树结构的四叉树中的分区划分信息的示例性信号通知机制的示意图。在图6中,CTU被视为四叉树的根,并且首先由四叉树结构划分。每个四叉树的树叶节点(当足够大以允许它时)由多类型树结构进一步划分。在多类型树结构中,第一标志(例如,mtt_split_cu_flag)被用信号通知以指示节点是否被进一步划分。当节点被进一步划分时,第二标志(例如,mtt_split_cu_vertical_flag)被发信号指示划分方向,然后第三标志(例如,mtt_split_cu_binary_flag)被发信号指示划分是二叉树划分还是三叉树划分。根据第二个和第三个标志的值,mtt_split_cu_vertical_flag和mtt_split_cu_binary_flag,可以导出一CU的多类型树划分模式(MttSplitMode)。图7示出了根据本公开的一些实施例的示例性表1,其示出了基于多类型树语法元素的示例性MTTSplitMode推导。

虚拟管道数据单元(VPDU)在图像中被定义为非重叠单元。在硬件解码器中,连续的VPDU由多个流水线阶段同时处理。在大多数流水线阶段中,VPDU大小与缓冲区大小大致成比例,因此保持VPDU大小很重要。在大多数硬件解码器中,VPDU大小可以设置为64×64亮度样本。然而,在一些实施例中,三叉树(TT)和二叉树(BT)划分可能导致VPDU大小的增加。与本公开一致,为了将VPDU大小保持为64×64亮度样本,可以应用某些规范分区限制。图8示出了根据本公开的一些实施例的不允许的TT和BT划分的示例。如图8所示,对于宽度或高度、或者宽度和高度均等于128的块,不允许TT分割。对于128×N,N≤64(例如,宽度等于128且高度小于128)的CU,不允许水平BT。对于N×128,N≤64(例如,高度等于128且宽度小于128)的CU,不允许垂直BT。

根据HEVC中的要求,当树节点块的一部分超过图像底部或右侧边界时,需强制拆分树节点块,直到每个编码CU的所有样本都位于图像边界内。在VVC草案7中应用了以下拆分规则:

-如果树节点块的一部分超过图像底部和右侧边界,

-如果该块是QT节点,并且该块的大小大于最小QT大小,则强制使用QT拆分模式拆分该块。

-否则,将强制使用SPLIT_BT_HOR模式拆分该块。

-否则,如果树节点块的一部分超过图像底部边界,

-如果该块是QT节点,并且该块的大小大于最小QT大小,并且该块的大小大于最大BT大小,则强制使用QT拆分模式拆分该块。

-否则,如果该块是QT节点,并且块的大小大于最小QT大小并且块的大小小于或等于最大BT大小,则强制使用QT拆分模式或SPLIT_BT_HQR模式拆分该块。

-否则(该块是BT节点或该块的大小小于或等于最小QT大小),则强制使用SPLIT_BT_HQR模式拆分该块。

-否则,如果树节点块的一部分超出图像边右侧界,

-如果该块是QT节点,并且该块的大小大于最小QT大小,并且该块的大小大于最大BT大小,则强制使用QT拆分模式拆分该块,

-否则,如果块是QT节点,并且块的大小大于最小QT大小并且块的大小小于或等于最大BT大小,则强制使用QT拆分模式或SPLIT_BT_VER模式拆分该块。

-否则(例如,该块是BT节点或该块的大小小于或等于最小QT大小),则强制使用SPLIT_BT_VER模式拆分该块。

图9示出了根据本公开的一些实施例的在图像边界上的示例性块划分。如图9所示,对于CTU 911,可以执行SPLIT_QT或SPLIT_BT_VER。对于CTU 913,如果允许SPLIT_QT,可以执行SPLIT_QT,如果不允许SPLIT_QT,则可以执行SPLIT_BT_HOR。对于CTU 915,可以执行SPLIT_QT或SPLIT_BT_HOR。

在VVC草案7中,有两个与块分区有关的部分。第一个是第6.4节,它定义了是否可以使用四叉树、二叉树或三叉树来划分块。6.4节的输出是变量allowSplitQt、allowsplitBtHor、allowSplitBtVer、allowSplitTtHor和allowSplitTtVer。这些变量在如图12中的表4所示的第7.3.9.4节中使用,以确定是否用信号通知相应的CU级别划分标志(由图12的表4中的框1201-1204标记)。

VVC草案7的第6.4.1节描述:

6.4可用性流程

6.4.1允许的四叉树木拆分过程

此过程的输入包括:

-在亮度样本中的编码块大小cbSize,

-多类型树深度mttDepth,

-变量treeType指定是使用单树(SINGLE_TREE)还是双树来划分编码树节点,并且在使用双树时,目前正在处理中的是亮度(DUAL_TREE_LUMA)还是色度分量(DUAL_TREE_CHROMA),

-一个变量modeType,指定是否可以使用帧内(MODE_INTRA),IBC(MODE_IBC)和帧间编码模式(MODE_TYPE_ALL),或者是否只能使用帧内和IBC编码模式(MODE_TYPE_INTRA),或者对于编码树节点内部的编码单元,是否只能使用帧间编码模式(MODE_TYPE_INTER)。

此过程的输出是变量allowSplitQt。变量allowSplitQt的导出方式如下:

-如果以下一个或多个条件为真(true),则将allowSplitQt设置为假(FALSE):

-treeType等于SINGLE_TREE或DUAL_TREE_LUMA,并且cbSize小于或等于MinQtSizeY

-treeType等于DUAL_TREE_CHROMA,cbSize/SubWidthC小于或等于MinQtSizeC

-mttDepth不等于0

-treeType等于DUAL_TREE_CHROMA,并且(cbSize/SubWidthC)小于或等于4

-treeType等于DUAL_TREE_CHROMA,modeType等于MODE_TYPE_INTER

-否则,allowSplitQt设置为等于TRUE。

VVC草案7的第6.4.2节描述:

6.4.2允许的二叉树划分过程

此过程的输入是:

-二叉树划分模式btSplit,

-亮度样本中的编码块宽度cbWidth,

-亮度样本中的编码块高度cbHeight,

-相对于图像的左上角亮度样本,所考虑的编码块的左上角亮度样本的位置(x0,y0),

-多类型树深度mttDepth,

-具有偏移maxMttDepth的最大多类型树深度,

-最大二叉树大小maxBtSize,

-最小四叉树大小minQtSize,

-分区索引partIdx

-变量treeType,指定使用单树(SINGLE_TREE)还是双树来划分编码树节点,以及使用双树时,当前正在处理中的是亮度分量(DUAL_TREE_LUMA)还是色度分量(DUAL_TREE_CHROMA),

-一变量modeType,指定是否可以使用帧内(MODE_INTRA),IBC(MODE_JBC)和帧间编码模式(MODE_TYPE_ALL),或者是否只能使用帧内和IBC编码模式(MODE_TYPE_INTRA),或者对于编码树节点内部的编码单元,是否只能使用帧间编码模式(MODE_TYPE_INTER)。

此过程的输出是变量allowBtSplit。图10示出了根据本公开的一些实施例的示例性表2,其示出了基于btSplit的变量parallelTtSplit和cbSize的示例性规范。

变量allowBtSplit推导如下:

-如果以下一个或多个条件为true,则allowBtSplit设置为等于FALSE:

-cbSize小于或等于MinBtSizeY

-cbWidth大于maxBtSize

-cbHeight大于maxBtSize

-mttDepth大于或等于maxMttDepth

-treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)*(cbHeight/SubHeightC)小于或等于16

-treeType等于DUAL_TREE_CHROMA,和(cbWidth/SubWidthC)等于4,btSplit等于SPLIT_BT_VER

-treeType等于DUAL_TREE_CHROMA,modeType等于MODE_TYPE_INTRA

-cbWidth*cbHeight等于32,modeType等于MODE_TYPE_INTER

-否则,如果以下所有条件均为true,则allowBtSplit设置为FALSE

-btSplit等于SPLIT_BT_YER

-y0+cbHeight大于pic_height_in_luma_samples

-否则,如果以下所有条件均为true,则allowBtSplit设置为等于FALSE

-btSplit等于SPLIT_BT_VER

-cbHeight大于64

-x0+cbWidth大于pic_width_in_luma_samples

-否则,如果以下所有条件都为true,则allowBtSplit设置为等于FALSE

-btSplit等于SPLIT_BT_HOR

-cbWidth大于64

-y0+cbHeight大于pic_height_in_luma_samples

-否则,如果以下所有条件均为true,则allowBtSplit设置为FALSE

-x0+cbWidth大于pic_width_in_luma_samples

-y0+cbHeight大于pic_height_in_luma_samples

-cbWidth大于minQtSize

-否则,如果以下所有条件均为true,则allowBtSplit设置为FALSE

-btSplit等于SPLIT_BT_HOR

-x0+cbWidth大于pic_width_in_luma_samples

-y0+cbHeight小于或等于pic_height_in_luma_samples

-否则,如果以下所有条件均为true,则allowBtSplit设置为FALSE:

-mttDepth大于0

-partldx等于1

-MttsplitMode[x0][y0][mttDepth-1]等于parallelTtSplit

-否则,如果以下所有条件均为true,则allowBtSplit设置为等于FALSE

-btSplit等于SPLIT_BT_VER

-cbWidth小于或等于64

-cbHeight大于64

-否则,如果以下所有条件均为true,则allowBtSplit设置为等于FALSE

-btSplit等于SPLIT_BT_HOR

-cbWidth大于64

-cbHeight小于或等于64

-否则,allowBtSplit设置为等于TRUE。

VVC草案7第6.4.3节描述:

6.4.3允许的三叉树划分过程

此过程的输入是:

-三叉树划分ttSplit,

-亮度样本中的编码块宽度cbWidth,

-亮度样本中的编码块高度cbHeight,

-所考虑的编码块的左上角亮度样本相对于图像的左上角亮度样本的位置(x0,y0),

-多类型树深度mttDepth

-具有偏移maxMttDepth的最大多类型树深度,

-最大三叉树大小maxTtSize,

-变量treeType,指定使用单树(SINGLE_TREE)还是双树来划分编码树节点,以及使用双树时,当前的处理的是亮度分量(DUAL_TREE_LUMA)还是色度分量(DUAL_TREE_CHROMA),

-一变量modeType,指定是否可以使用帧内(MODE_INTRA),IBC(MODE_IBC)和帧间编码模式(MODE_TYPE_ALL),或者是否只能使用帧内和IBC编码模式(MODE_TYPE_INTRA),或者对于编码树节点内部的编码单元,是否只能使用帧间编码模式(MODE_TYPE_INTER)。

此过程的输出是变量allowTtSplit。图11示出了根据本公开的一些实施例的示例性表3,其示出了基于ttSplit的变量cbSize的示例性规范。

变量allowTtSplit推导如下:

-如果以下一个或多个条件为true,则allowTtSplit设置为等于FALSE:

-cbSize小于或等于2*MinTtSizeY

-cbWidth大于Min(64,maxTtSize)

-cbHeight大于Min(64,maxTtSize)

-mttDepth大于或等于maxMttDeptb

-x0+cbWidth大于pic_width_in_luma_samples

-y0+cbHeight大于pic_height_in_luma_samples

-treeTpye等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)*(cbHeight/SubHeightC)小于或等于32

-treeType等于DUAL_TREE_CHROMA,以及(cbWidth/SubWidthC)

等于8,ttSplit等于SPLIT_TT_VER

-treeType等于DUAL_TREE_CHROMA,以及modeType等于MODE_TYPE_INTRA

-cbWidth*cbHeight等于64,modeType等于MODE_TYPE_INTER

-否则,allowTtSplit设置为等于TRUE。

图12示出了根据本公开的一些实施例的示例性表4,其示出了VVC草案7的示例性部分7.3.9.4编码树语法(用斜体和阴影添加强调符号)。

变量allowSplitQt、allowSplitBtVer、allowSplitBtHor、allowSplitTtVer和allowSplitTtHor的推导如下:

-调用第6.4.1条中指定的允许的四叉树划分过程,使用编码块大小cbSize设置为等于cbWidth,当前多类型树深度mttDepth、treeTypeCurr和modeTypeCurr作为输入,并将输出分配给allowSplitQt。

-变量minQtSize,maxBtSize,maxTtSize和maxMttDepth的推导如下:

-如果treeType等于DUAL_TREE_CHROMA,则将minQtSize、maxBtSize、maxTtSize和maxMttdepth分别设置为等于MinQtSizeC、MaxBtSizeC、MaxTtSizeC和MaxMttDepthc+depthOffset。

-否则,minQtSize、maxBtSize、maxTtSize和maxMttDepth分别设置为等于MinQtSizeY、MaxBtSizeY、MaxTtSizeY和MaxMttDepthY+depthOffset。

-调用第6.4.2条中指定的允许的二叉树划分过程,使用二叉树划分模式SPLIT_BT_VER、编码块宽度cbWith、编码块高度cbHeight、位置(x0,y0)、当前多类型树深度mttDepth、具有偏移maxMttdepth的最大多类型树深度、最大二叉树大小maxBtSize、最小四叉树大小minQtSize、当前分区索引partIdx、treeTypeCurr和modeTypeCurr作为输入,并将输出分配给allowSplitBtVer。

-调用子句6.4.2中指定的允许的二叉树拆分过程,使用二叉树拆分模式SPLIT_BT_HOR、编码块高度cbHeight、编码块宽度cbWidth、位置(x0,y0)、当前多类型树深度mttDepth、具有偏移的最大多类型树深度maxMttDepth、最大二叉树大小maxBtSize、最小四叉树大小minQtSize、当前分区索引partIdx、treeTypeCurr和modeTypeCurr作为输入,并将输出分配给allowSplitBtHor。

-调用第6.4.3条中指定的允许的三叉树划分过程,使用三叉树划分模式SPLIT_TT_VER、编码块宽度cbWidth、编码块高度cbHeight、位置(x0,y0)、当前多类型树深度mttDepth、具有偏移maxMttDepth的最大多类型树深度、最大三叉树大小maxTtSize、treeTypeCurr和modeTypeCurr作为输入,输出分配给allowSplitTtVer。

-调用第6.4.3条中指定的允许的三叉树划分过程,使用三叉树划分模式SPLIT_TT_HOR、编码块高度cbHeight、编码块宽度cbWidth、位置(x0,y0)、当前多类型树深度mttDepth、具有偏移maxMttDepth的最大多类型树深度、最大三叉树树大小maxTtSize、treeTypeCurr和modeTypeCurr作为输入,并将输出分配给allowSplitTtHor。

语法元素split_cu_flag等于0指定不拆分编码单元。语法元素split_cu_flag等于1指定使用语法元素split_qt_flag指示的四叉树划分将编码单元分成四个编码单元,或使用二叉树划分将编码单元分成两个编码单元,或使用语法元素mtt_split_cu_binary_flag指示的三叉树划分将编码单元分成三个编码单元。如语法元素mtt_split_cu_vertical_flag所指示,二叉树或三叉树划分可以是垂直的或水平的。

当语法元素split_cu_flag不存在时,split_cu_flag的值推断如下:

-如果以下一个或多个条件为true,则将推断split_cu_flag的值等于1:

-x0+cbWidth大于pic_width_in_luma_samples。

-y0+cbHeight大于pic_height_in_luma_sampless。

-否则,推断split_cu_flag的值等于0。

语法元素split_qt_flag指定编码单元是否被划分成具有水平和垂直大小一半的编码单元。

当语法元素split_qt_flag不存在时,以下内容适用:

-如果allowSplitQt等于TRUE,则推断split_qt_flag的值等于1。

-否则,则推断split_qt_flag的值等于0。

语法元素mtt_split_cu_vertical_flag等于0指定编码单元是水平划分的。语法元素mtt_split_cu_vertical_flag等于1指定编码单元是垂直划分的。

当语法元素mtt_split_cu_vertical_flag不存在时,推断如下:

-如果allowSplitBtHor等于TRUE或allowSplitTtHor等于TRUE,则将推断mtt_split_cu_vertical_flag的值为等于0。

-否则,推断mtt_split_cu_vertical_flag的值等于1。

语法元素mtt_split_cu_binary_flag等于0的指定使用三叉树将编码单元分分割三个编码单元。语法元素mtt_split_cu_binary_flag等于1指定使用二叉树划分将编码单元分割为两个编码单元。

当语法元素mtt_split_cu_binary_flag不存在时,推断如下:

-如果allowSplitBtVer等于FALSE并且allowSplitBtHor等于FALSE,则推断mtt_split_cu_binary_flag的值等于0。

-否则,如果allowSplitTtVer等于FALSE并且allowSplitTtHor等于FALSE,则推断mtt_split_cu_binary_flag的值为等于1。

-否则,如果allowSplitBtHor等于TRUE并且allowSplitTtVer等于TRUE,则推断mtt_split_cu_binary_flag的值等于mtt_split_cu_vertical_flag。

-否则(allowSplitBtVer等于TRUE,allowSplitTtHor等于TRUE),推断mtt_split_cu_binary_flag的值为等于mtt_split_cu_vertical_flag。

图14示出了根据本公开的一些实施例示例性表5,其示出了MttSplitMode的示例性规范。变量MttSplitMode[x][y][mttDepth]是从语法元素mtt_split_cu_vertical_flag的值以及语法元素mtt_split_cu_binary_flag的值当定义表4中x=x0..x0+cbWidth-1和y=y0...y0+cbHeight-1定义的情况下导出的。

MttSplitMode[x][y][mttDepth]表示多类型树内编码单元的水平二叉树、垂直二叉树、水平三叉树和垂直三叉树划分。数组索引x0,y0指定所考虑的编码块的左上亮度样本相对于图像的左上亮度样本的位置(x0,y0)。图13示出了根据本公开的一些实施例的由MttSplitMode指示的多类型树划分模式的示例。如图13所示,多类型树划分模式可以包括垂直二叉树划分(SPLIT_BT_VER)1301、水平二叉树划分(SPLIT_BT_HOR)1302、垂直叉树划分(SPLIT_TT_VER)1303和水平叉树划分(SPLIT_TT_HOR)1304。

应当注意,四叉树、二叉树和三叉树划分的CTU大小、最小块大小和块大小限制在序列参数集或图像头中用信号通知。

图15示出了根据本公开的一些实施例的示例性表6,其示出了VVC草案7的示例性部分7.3.2.3序列参数集RBSP语法。图16示出了根据本公开的一些实施例的示例性表格7,其示出了VVC草案7的示例性部分7.3.2.6图像头RBSP语法。

根据一些实施例,当树节点块的一部分超过图像边界底部或右侧时,要强制分割树节点块,直到每个编码块的所有样本都位于图像边界之内。但是,在某些情况下,对于位于图像边界且包含的样本超出图像边界的块,不允许所有树划分模式。图17示出了根据本公开的一些实施例的在图像边界处不允许QT、TT或BT划分的示例性块。例如,图17示出图像边界处的CTU 1701、CTU 1703和CTU 1705不允许QT、TT或BT划分。

作为不允许所有树划分模式的第一示例性情况,当CTU大小和最小QT大小都设置为128时,所有变量allowSplitQt、allowSplitBtHor、allowSplitBtVer、allowSplitTtHor和allowSplitTtVer都设置为false。

由于以下条件变量allowSplitQt设置为false(斜体用以强调):

6.4.1允许的四叉树划分过程

...

-如果以下一个或多个条件为真,则allowSplitQt设置为等于FALSE:

-treeType等于SINGLE_TREE或DUAL_TREE_LUMA,并且chSize小于或等于MinQtSizeY

-treeType等于DUAL_TREE_CHROMA,并且cbSize/SubWidthC小于或等于MinQtSizeC

...

由于以下条件,变量allowSplitBtHor(斜体用以强调)被设置为false:

6.4.2允许的二进制划分过程

...

-否则,如果以下所有条件均为true,则allowBtSplit设置为FALSE

-btSplit等于SPLIT_BT_HOR

-cbWidth大于64

-y0+cbHeight大于pic_height_luma_samples

-否则,如果以下所有条件均为true,则allowBtSplit设置为FALSE

-x0+cbWidth大于pic_width_in_luma_samples

-y0+cbHeight大于pic_height_in_luma_samples

-cbWidth大于minQtSize

-否则,如果以下所有条件均为true,则allowBtSplit设置为FALSE

-btSplit等于SPLIT_BT_HOR

-x0+cbWidth大于pic_width_in_luma_samples中的

-y0+cbHeight小于或等于pic_height_in_luma_samples

...

由于以下条件,变量allowSplitBtVer被设置为false(斜体用以强调):

6.4.2允许的二进制划分过程

...

-否则,如果以下所有条件均为true,则将allowBiSplit设置为FALSE

-btSplit等于SPLIT_BT_VER

-y0+cbHeight大于pic_height_in_luma_samples

-否则,如果以下所有条件均为true,则将allowBtSplit设置为FALSE

-btSplit等于SPLIT_BT_VER

-chHeight大于64

-x0+cbWidth大于pic_width_in_luma_samples

由于以下情况,变量allowSplitTtHor和allowSplilTtVer(斜体用以强调)被设置为false:

6.4.3允许的三叉树划分过程

...

-如果以下一个或多个条件为真,则allowTtSplit设置为等于FALSE:

-cbSize小于或等于2*MinTtSizeY

-cbWidth大于min(64,maxTtSize)

-cbHeight大于min(64,maxTtSize)

-mttDepth大于或等于maxMttDepth

-x0+cbWidth大于pic_width_in_luma_samples

-y0+cbHeight大于pic_height_in_luma_samples

...

当所有这些变量都被设置为false时,可以不以信号方式发送CU级别的划分标志。推断语法元素split_cu_flag为1,推断语法元素split_qt_flag为0,推断语法元素mtt_split_cu_vertical_flag为1,推断语法元素mtt_split_cu_binary_flag为0。在这种情况下,可以使用SPLIT_TT_VER划分块,这可能违反VPDU的限制。

作为不允许所有树的划分模式的第二示例性,对于位于图像边界处且包含的样本超出图像边界的块,不允许所有树的划分。当最小QT大小大于最小CU大小(先前表中的语法元素log2_min_luma_codign_block_size_minus2)和最大BT/TT深度(语法元素sps_max_mtt_hierarcyh_depth_inter_slice,sps_max_mtt_hierarchy_depth_intra_slice_luma,pic_max_mtt_hierarchy_depth_inter_slice,_pic_max_mtt_hierarchy_depth_intra_slice_luma,和pic_max_mtt_hierarchy_depth_intra_slice_chroma)等于0时,所有变量allowSplitQt,allowSplitBtHor,allowSplitBtHor,allowSplitTtHor和allowSplitTtVer设置为false。

图18示出了根据本公开的一些实施例的在图像边界处不允许QT、BT或BT划分的示例性块。首先使用四叉树将CTU(例如,CTU 1801、CTU1803或CTU 1805)划分为四个64x64块。然后,每个64x64块都无法进一步划分。但是,超出了右侧和/或底部图像边界的块的部分用灰色标记,这在VVC设计中是不允许的。对于以灰色标记的块,由于以下条件(斜体的重点),变量allowSpiltQt设置为false:

6.4.1允许的四叉树划分过程

-如果以下一个或多个条件为真,则allowSplitQt设置为等于FALSE:

-treeTpye等于SINGLE_TREE或DUAL_TREE_LUMA,并且cbSize小于或等于MinQtSizeY

-treeTpye等于DUAL_TREE_CHROMS,并且cbSize/SubWidthC小于或等于MinQtSizeC

对于标记为灰色的块,变量allowSplitBtHor和allowSplitBtVer由于以下情况而设置为false(斜体用以强调):

6.4.2允许的二进制拆分过程

变量allowBtSplit推导如下:

-如果以下一个或多个条件为ture,则allowBtSplit设置为FALSE:

-cbSize小于或等于MinBtSizeY

-cbWidth大于maxBtSize

-cbHeight大于maxBtSize

Mttdepth大于或等于maxMttDeptih

对于标记为灰色的块,变量allowSplitTtHor和allowSplitTtVer由于以下情况而设置为false(斜体用以强调):

6.4.3允许的三元分裂过程

变量allowTtSplit推导如下:

-如果以下一个或多个条件为真,则allowTtSplit设置为FALSE:

-cbSize小于或等于2*MinTtSizeY

-cbWidth大于Min(64,maxTtSize)

-cbHeight大于Min(64,maxTtSize)

-mttDepth大于或等于maxMttDepth

...

如在不允许所有树划分模式的第一示例性情况中所述,在当前VVC草案7中,CU可能包含图像边界之外的样本,但是在某些条件下不能再划分CU。在本公开的一些实施例中,可以改变VVC中的QT划分条件。在一个方面,对于包含超出图像边界的样本并且其宽度或高度等于N(例如,N=128)的块,当最小QT大小小于N(例如,128)时使用QT划分。此外,在一些实施例中,当最小QT大小等于N(例如,128)时,也可以使用QT划分。在另一个方面,使用QT划分可以比使用BT或TT划分更直接。图19是示出根据本公开的一些实施例的使用BT和TT划分的示例的示意图。划分块可能需要多个步骤。此外,对于位于不同位置的块,划分可能是不同的,这可能是复杂的。例如,对于块1903,依次执行SPLIT_BT_HQR、SPLIT_BT_HOR、SPLIT_TT_VER和SPLIT_TT_VER。

在一些实施例中,当不允许块划分时,可以使用四叉树划分,并且可以推断语法元素split_qt_flag为1。语法元素split_qt_flag指定是否将编码单元划分为水平和垂直大小一半的编码单元。

当语法元素split_qt_fiag不存在时,适用以下内容(斜体以示强调):

-如果以下所有条件均成立,则推断split_qt_flag等于1:

-split_cu_flag等于I

-allowSplitQt,allowSplitBtHor,allowSplitBtVer,allowSplitTtHor和allowSplitTtVer等于FALSE。

-否则,如果allowSplitQt等于TRUE,则推断split_qt_flag的值为1。

-否则,将推断split_qt_flag的值为0。

在一些实施例中,不能将最小QT大小约束应用于位于图像边界的块。当块的一部分超过图像底部或右侧边界时,可以使用四叉树划分块。

允许的四叉树划分过程描述如下:

6.4.1允许的四路分割过程

此过程的输入是:

-亮度样本中的编码块大小cbSize,

-多类型树深度mttDepth,

-变量树类型,用于指定使用单树(SINGLE_TREE)还是双树来划分编码树节点,以及当使用双树时,当前正在处理中的是亮度(DUAL_TREE_LUMA)还是色度分量(DUAL_TREE_CHROMA)。

-变量modeType指定是否可以使用帧内(MODE_INTRA),IBC(MODE_IBC)和帧间编码模式(MODE_TYPE_ALL),或是否只能使用帧内和IBC编码模式(MODE_TYPE_INTRA),或者对于编码树节点内部的编码单元,是否只能使用帧间编码模式(MODE_TYPE_INTER)。

此过程的输出是变量allowSplitQt。

变量allowSplitQt的推导如下(斜体用于强调):

-如果以下所有条件均成立,则allowSplitQt设置为等于true:

-treeTpye等于SINGLE_TREE或DUAL_TREE_LUMA

-cbSize等于128

-MinQtSizeY等于128

-x0+cbWidth大于pic_width_in_luma_samples或y0+cbHeight大于pic_height_in_luma_samples

-否则,如果以下所有条件均为true,则allowSplitOt设置为等于true:

-treeTpye等于DUAL_TREE_CHROMA

-CbSize/SubWidthC等于128

-MinQtSizeC等于128

-x0+cbWidth大于pic_width_in_luma_sample,或者y0+cbHeight大于pic_height_in_luma_samples

-否则,如果以下一个或多个条件为真,则allowSplitQt设置为等于FALSE:

-treeType等于SINGLE_TREE或DUAL_TREE_LUMA,并且cbSize小于或等于MinQtSizeY

-treeType等于DUAL_TREE_CHROMA,并且cbSize/SubWidthC小于或等于MinQtSizeC

-mttDepth不等于0

-treeType等于DUAL_TREE_CHROMA,并且(ebSize/SubWidthC)小于或等于4

-treeType等于DUAL_TREE_CHROMA,modeType等于MODE_TYPE_INTRA

-否则,allowSplitQt设置为等于TRUE。

在一些实施例中,位流一致性可以添加到最小QT大小的语法中。可能需要最小QT大小小于或等于64。

语法元素sps_log2_diff_min_qt_min_cb_intra_slice_luma指定CTU的四叉树划分产生的亮度叶块的亮度样本中最小大小的以2为底的对数,和涉及SPS的slice_type等于2(I)的条带中亮度CU的亮度样本中的最小编码块大小的以2为底的对数之间的默认差值。当语法元素partition_constraints_override_enabled_flag等于1时,该默认差值可以被涉及SPS的存在于PH中的语法元素pic_log2_diff_min_qt_min_cb_luma覆盖。语法元素sps_log2_diff_min_qt_min_cb_intra_slice_luma的取值范围为0至CtbLog2SizeY-MinCbLog2SizeY,包含端值。CTU的四叉树划分的产生的亮度叶块的亮度样本中最小大小的以2为底的对数推导如下(斜体用于强调):

MinQtLog2SizeIntraY=sps_log2_diff_min_qt_min_cb_intra_slice_luma+MinCbLog2SizeY

VSize=Min(64,CtbSizeY)

在一些实施例中,位流一致性d要求(1<

语法元素sps_log2_diff_min_qt_min_cb_inter_slice_luma指定由CTU的四叉树划分产生的亮度叶块的亮度样本中的最小大小的以底2对数,与涉及SPS的slice_type等于0(B)或1(P)的切片中的亮度CU亮度样本中的最小亮度编码块大小的以底2对数的默认差值。当语法元素partition_constraints_override_enabled_flag等于1,该默认差异可以被涉及SPS中的PH中存在的语法元素pic_log2_diff_min_qt_min_cb_luma覆盖。语法元素sps_log2_diff_min_qt_min_cb_inter_slice的取值范围为0~CtbLog2SizeY值MinCbLog2SizeY,包含端值。由CTU的四叉树划分产生的亮度叶块的亮度样本中的最小大小的以底2对数推导如下(斜体用于强调):

MinQtLog2SizeInterY=sps_log2_diff_min_qt_min_cb_inter_sliceMinCbLog2SizeY

VSize=Min(64,CihSizeY)

在一些实施例中,位流的一致性要求(1<

语法元素sps_log2_diff_min_qt_min_cb_intra_slice_chroma指定由treeType等于DUAL_TREE_CHROMA的色度CTU的四叉树划分产生的色度叶块中的亮度样本中的最小大小的以2为底的对数,与涉及SPS的slice_type等于2(I)的条带中的treeType等于DUAL_TREE_CHROMA的色度CU的亮度样本中的最小编码块大小的以2为底的对数之间的默认差值。当语法元素partition_constraints_override_enabled_flag等于1时,该默认差值可以被涉及SPS的PH中存在的语法元素pic_log2_diff_min_qt_min_cb_chroma覆盖。语法元素sps_log2_diff_min_qt_min_cb_intra_slice_chroma的取值范围为0至CtbLog2SizeY-MinCbLog2SizeY,包含端值。,当不存在时,语法元素sps_log2_diff_min_qt_min_cb_intra_slice_chroma被推断为等于0,由treeType等于DUAL_TREE_CHROMA的CTU的四叉树划分产生的色度叶块中的亮度样本中的最小大小的以2为底的对数推导如下(斜体强调):

MinQtLog2SizeIntraC=sps_log2_diff_min_qt_min_cb_intra_chroma+MinCbLog2SizeY

VSize=Min(64,CthSizeY)

在一些实施例中,位流一致性要求(1<

语法元素pic_log2_diff_min_qt_min_cb_intra_slice_luma指定由CTU的四叉树划分产生的亮度叶块的亮度样本中的最小大小的以2为底的对数,与和PH相关联的slice_type等于2(I)的条带中亮度CU亮度样本中的最小编码块大小的以2为底的对数的默认差值。语法元素pic_log2_diff_min_qt_min_cb_intra_slice_luma的值在0到CtbLog2SizeY-MinCbLog2SizeY的范围内,包括端值。当不存在时,语法元素pic_log2_diff_min_qt_min_cb_luma的值被推断为等于语法元素sps_log2_diff_min_qt_min_cb_intra_slice_luma。在一些实施例中,位流一致性的要求(1<<(pic_log2_diff_min_qt_min_cb_intra_slice_luma+MinCblog2SizeY))的值小于或等于Min(64,CtbSizeY)。

语法元素pic_log2_diff_min_qt_min_cb_inter_slice指定由CTU的四叉树划分产生的亮度叶块的亮度样本中最小大小的以2为底对数,与和PH相关联的slice_type等于0(B)或1(P)的调点中亮度CU的最小亮度编码块大小的以2为底的对数之间的差值。语法元素pic_log2_diff_min_qt_min_cb_inter_slice的取值范围为0至CtbLog2SizeY-MinCbLog2SizeY,包含端值,当不存在时,语法元素pic_log2_diff_min_qt_min_cb_luma的值被推断为等于语法元素sps_log2_diff_min_qt_min_cb_inter_slice。在一些实施例中,位流一致性要求(1<<(pic_log2_diff_min_qt_min_cb_inter_slice+MinCbLog2SizeY))的值小于或等于Min(64,CtbSizeY)。

语法元素pic_log2_diff_min_qt_min_cb_intra_slice_chroma指定由treeType等于DUAL_TREE_CHROMA的色度CTU的四叉树划分产生的色度叶块的亮度样本的最小大小的以2为底对数,与和PH相关联的slice_type等于2(I)的条带中treeTpye等于DUAL_TREE_CHROMA的色度CU的亮度样本中最小编码块大小的以2为底对数之差。语法元素pic_log2_diff_min_qt_min_cb_intra_slice_chroma的值在0到CtbLog2SizeY-MinCbLog2SizeY的范围内,包括端值。当不存在时,语法元素pic_1og2_diff_min_qt_min_cb_intra_slice_chroma的值被推断为等于语法元素sps_log2_diff_min_qt_min_cb_intra_slice_chroma。在一些实施例中,位流一致性要求(1<<(pic_1og2_diff_min_qt_min_cb_intra_slice_chroma+MinCbLog2SizeY))的值小于或等于Min(64,CtbSizeY)。

在一些实施例中,当在上述的第二示例(其中不允许所有树划分模式)中不允许块划分情况下,可以使用四叉树划分,并且推断语法元素split_qt_flag为1。

语法元素split_qt_flag指定编码单元是否被划分成具有一半水平大小和垂直大小的编码单元。当语法元素split_qt_flag不存在时,以下内容适用(斜体强调):

-如果以下所有条件均成立,则推断split_qt_flag等于1:

-split_cu_flag等于I

-allowSplitQt,allowSplitBtHor,allowSplitBtVer,allowSplitTtHor和allowSplitTtVer等于FALSE。

-否则,如果allowSplitQt等于TRUE,则推断split_qt_flag的值等于1。

-否则,推断split_qt_flag的值等于0。

在一些实施例中,在不允许所有树划分模式的上述第二示例性情况下,可以将位流一致性添加到最小QT大小和最大BT/TT深度的语法中。

语法元素sps_log2_diff_min_qt_min_cb_intra_slice_luma指定由CTU的四叉树划分产生的亮度叶块的亮度样本的最小大小的以2为底对数,与涉及SPS的slice_type等于2(I)的条带中亮度CU的亮度样本的最小编码块大小的以2为底对数的默认差值。当语法元素partition_constraints_override_enabled_flag等于1时,默认差值可以被涉及SPS的PH中存在的语法元素pic_log2_diff_min_qt_min_cb_luma覆盖。语法元素sps_log2_diff_min_qt_min_cb_intra_slice_luma的取值范围为0到CtbLog2SizeY-MinCbLog2SizeY,包含端值。由CTU的四叉树划分产生的亮度叶块的亮度样本的最小大小的以2为底对数如下:

MinQtLog2SizeIntraY=sps_log2_diff_min_qt_min_cb_intra_slice_luma+MinCbLog2SizeY

语法元素sps_max_mtt_hierarchy_depth_intra_slice_luma指定由涉及SPS的slice_type等于2(I)的条带中的四叉树叶的多类型树划分产生的编码单元的默认最大层级结构深度。当语法元素partition_constraints_override_enabled_flag等于1时,该默认最大层级深度可以被涉及SPS中的PH中存在的语法元素pic_max_mtt_hierarchy_depth_intra_slice_luma覆盖。语法元素sps_max_mtt_hierarchy_depth_intra_slice_luma的取值范围为0至2*(CtbLog2SizeY-MinCbLog2SizeY),包含端值。在一些实施例中,位流一致性要求(MmQtLog2SizeIntraY-sps_max_mtt_hierachy_depth_intra_slice_luma/2)的值小于或等于MinCbLog2SizeY。

语法元素sps_log2_diff_min_qt_min_cb_inter_slice指定由CTU的四叉树划分产生的亮度叶块的亮度样本最小大小的以2为底对数,与涉及SPS的slice_type等于0(B)或1(P)的条带中亮度CU的亮度样本最小亮度编码块大小的以2为底对数的默认差值。当语法元素partition_constraints_override_enabled_flag等于1时,该默认差值可以被涉及SPS的PH中存在的语法元素pic_log2_diff_min_qt_min_cb_luma覆盖。语法元素sps_log2_diff_min_qt_min_cb_inter_slice的取值范围为0至CtbLog2SizeY-MinCbLog2SizeY,包含端值。由CTU的四叉树划分产生的亮度叶块的亮度样本最小大小的以2为底对数推导如下:

MinQtLog2SizeInterY=sps_log2_diff_min_qt_min_cb_inter_slice+MinCbLog2SizeY

语法元素sps_max_mtt_hierarchy_depth_inter_slice指定由涉及SPS的slice_type等于0(B)或1(P)的条带中的四叉树叶的多类型树划分产生的编码单元的默认最大层级深度。当语法元素partition_constraints_override_enabled_flag等于1时,默认的最大层级深度可以被涉及SPS的PH中存在的语法元素pic_max_mtt_hierarchy_depth_inter_slice覆盖。语法元素sps_max_mtt_hierarchy_depth_inter_slice值范围为0至2*(CtbLog2SizeY-MinCbLog2SizeY),包含端值。在一些实施例中,位流一致性要求(MinQtLog2SizeInterY-sps_max_mtt_hierachy_depth_inter_slice/2)的值小于或等于MinCbLog2SizeY。

语法元素sps_log2_diff_min_qt_min_cb_intra_slice_chroma指定由treeType等于DUAL_TREE_CHROMA的色度CTU的四叉树划分产生的色度叶块的亮度样本中的最小大小的以2为底的对数,与涉及SPS的slice_type等于2(I)的条带中treeTpye等于DUAL_TREE_CHROMA的色度CU的亮度样本中最小编码块大小的以2为底的对数的默认差值。当语法元素partition_constraints_override_enabled_flag等于1时,该默认差异可以被涉及SPS的PH中存在的语法元素pic_log2_diff_min_qt_min_cb_chroma覆盖。语法元素sps_log2_diff_min_qt_min_cb_intra_slice_chroma的取值范围为0至CtbLog2SizeY-MinCbLog2SizeY,包含端值。当不存在时,推断语法元素sps_log2_diff_min_qt_min_cb_intra_slice_chroma的值为0。由treeType等于DUAL_TREE_CHROMA的CTU的四叉树划分产生的色度叶块的亮度样本中的最小大小的以2为底的对数推导如下:

MinQtLog2SizeIntraC=sps_log2_diff_min_qt_min_cb_intra_slice_chroma+MinCbLog2SizeY

语法元素sps_max_mtt_hierarchy_depth_intra_slice_chroma由涉及SPS的slice_type等于2(I)的条带中treeType等于DUAL_TREE_CHROMA的色四叉树叶的多类型树划分产生的色度编码单元的默认最大层级深度。当语法元素partition_constraints_override_enabled_flag等于1,该默认最大层级深度可以被涉及SPS的PH中存在的语法元素pic_max_mtt_hierarchy_depth_chroma覆盖。语法元素sps_max_mtt_hierarchy_depth_intra_slice_chroma的取值在0至2*(CtbLog2SizeY-MinCbLog2SizeY),包含端值。当不存在时,推断语法元素sps_max_mtt_hierarchy_depth_intra_slice_chroma的值为0。在一些实施例中,位流的一致性要求(MinQtLog2SizeTntraC-sps_max_mtt_hierarchy_depth_intra_slice_chroma/2)的值小于或等于MinCbLog2SizeY。

语法元素pic_log2_diff_min_qt_min_cb_intra_slice_luma指定由CTU的四叉树划分产生的亮度叶块的亮度样本的最小大小的以2为底的对数,与和PH相关联的slice_type等于2(I)的条带中亮度CU的亮度样本的最小编码块大小的以2为底的对数的差值。语法元素pic_log2_diff_min_qt_min_cb_intra_slice_luma的取值范围为0至CtbLog2SizeY-MinCbLog2SizeY,包含端值。当不存在时,推断语法元素pic_log2_diff_min_qt_min_cb_luma的值等于语法元素sps_log2_diff_min_qt_min_cb_intra_slice_luma。

语法元素pic_max_mtt_hierarchy_depth_intra_slice_luma指定由与PH相关联的slice_type等于2(I)的条带中的四叉树叶的多类型树划分产生的编码单元的最大层级结构深度。语法元素pic_max_mtt_hierarchy_depth_intra_slice_luma的值在0到2*(CtbLog2SizeY-MinCbLog2SizeY)的范围内,包含端值。当不存在时,推断语法元素pic_max_mtt_hierarchy_depth_intra_slice_luma的值等于语法元素sps_max_mtt_hierarchy_depth_intra_slice_luma。在一些实施例中,位流一致性的要求(pic_log2_diff_min_qt_min_cb_intra_slice_luma+MinCbLog2SizeY-pic_max_mtt_hierarchy_depth_intra_slice_luma/2)的值小于或等于MinCbLog2SizeY。

语法元素pic_log2_diff_min_qt_min_cb_inter_slice指定由CTU的四叉树划分产生的亮度叶块的亮度样本的最小大小的以2为底的对数,与PH相关联的slice_type等于0(B)或1(P)的条带中亮度CU的亮度样本中的最小亮度编码块大小的以2为底的对数之间的差值,语法元素pic_log2_diff_min_qt_min_cb_mter_slice的取值范围为0~CtbLog2SizeY-MinCbLog2SizeY,包含端值。当不存在时,语法元素pic_log2_diff_min_qt_min_cb_luma的值被推断为等于语法元素sp_log2_diff_min_qt_min_cb_inter_slice。

语法元素pic_max_mtt_hierarchy_depth_inter_slice指定由与PH相关联的slice_type等于0(B)或1(P)的条带中的四叉树叶的多类型树划分产生的编码单元的最大层级深度。语法元素pic_max_mtt_hierarchy_depth_inter_slice的取值范围为0至2*(CtbLog2SizeY-MinCbLog2SizeY),包含端值。当不存在时,语法元素pic_max_mtt_hierarchy_depth_inter_slice的值被推断为等于语法元素sps_max_mtt_hierarchy_depth_inter_slice。在一些实施例中,位流一致性的要求(pic_log2_diff_min_qt_min_cb_inter_slice+MinCbLog2SizeY-pic_max_mtt_hierarchy_depth_inter_slice/2)的值小于或等于MinCbLog28izeY。

语法元素pic_log2_diff_min_qt_min_cb_intra_slice_chroma指定由treeType等于DUAL_TREE_CHROMA的色度CTU的四叉树划分产生的色度叶块的亮度样本的最小大小的以2为底的对数,与和PH相关联的slice_type等于2(I)的条带中treeType等于DUAL_TREE_CHROMA的色度CU的亮度样本中的最小编码块大小的以2为底的对数之差。语法元pic_log2_diff_min_qt_min_cb_intra_slice_chroma取值在0到CtbLog2SizeY-MinCbLog2SizeY的范围内,包含端值。当不存在时,语法元素pic_log2_diff_min_qt_min_cb_intra_slice_chroma的值被推断为等于语法元素sps_log2_diff_min_qt_min_cb_intra_slice_chroma。

语法元素pic_max_mtt_hierarchy_depth_intra_slice_chroma指定色度编码单元的最大层级深度,该色度编码单元是由与PH相关联的slice_type等于2(I)的切片中具有treeType等于DUAL_TREE_CHROMA的色度四叉树叶的多类型树划分产生的。语法元素pic_max_mtt_hierarchy_depth_intra_slice_chroma的取值范围为0至2*(CtbLog2SizeY-MinCbLog2SizeY),包含端值。当不存在时,语法元素pic_max_mtt_hierarchy_depth_intra_slice_chroma的值被推断为等于语法元素sps_max_mtt_hierarchy_depth_intra_slice_chroma。在一些实施例中,位流的一致性要求(pic_log2_diff_min_qt_min_cb_intra_slice_chroma+MinCbLog2SizeY-pic_max_mtt_hierarchy_depth_intra_slice_chroma/2)小于或等于MinCbLog2SizeY。

图20示出了根据本公开的一些实施例的示例性视频处理方法2000的流程图。方法2000可以由编码器(例如,通过图2A的过程200A或图2B的200B)、解码器(例如,通过图3A的过程300A或图3B的过程300B)或由装置(例如,图4的装置400)的一个或多个软件或硬件组件执行。例如,处理器(例如,图4的处理器402)可以执行方法2000。在一些实施例中,方法2000可以由包含在计算机可读介质中的计算机程序产品来实现,所述计算机程序产品包括由计算机(例如,图4的装置400)执行的计算机可执行指令,诸如程序代码。

在步骤2001,可以确定编码块是否包括图像边界之外的样本。在一些实施例中,图像边界可以是底部图像边界或右侧图像边界。作为包括图像边界之外的样本的编码块的示例,在图17中,编码块1701超过图像1700的右图像边界,编码块1705超过图像1700的底部图像边界,并且编码块1703超过图像1700的底部和右侧图像边界。

在步骤2003,响应于编码块被确定为包括图像边界之外的样本,可以使用QT模式分割编码块。在一些实施例中,响应于编码块被确定为包括图像边界之外的样本,方法2000可以确定不允许使用BT模式和TT模式分割编码块。例如,变量allowSplitBtHor、allowSplitBtVer、allowSplitTtHor和allowSplitTtVer可以被确定为等于FALSE。

在一些实施例中,响应于编码块被确定为包括图像边界之外的样本,方法2000可以确定将使用QT模式分割编码块,而不管包括编码块的位流中是否存在QT标志。QT标志指示是否使用QT模式分割编码块。例如,当语法元素split_qt_flag不存在时,如果编码块包括图像边界之外的样本以及变量allowSplitQt、allowSplitBtHor、allowSplitBtVer、allowsplitTtHor和allowSplitTtVer等于FALSE或allowSplitQt等于TRUE,则推断split_qt_flag的值等于1。

在一些实施例中,响应于确定编码块包括图像边界之外的样本,方法2000可以确定允许使用QT模式来分割编码块,不管对允许应用QT模式的最小块大小的预设约束。例如,最小QT大小约束不能应用于位于图像边界的编码块。

在一些实施例中,预设约束可以包括编码块的位流一致性。位流一致性可以设置允许应用QT模式的最小块大小。例如,可以将最小块大小设置为小于或等于64。位流一致性还可以设置最大BT深度或最大TT深度。

在一些实施例中,方法2000可以包括确定编码块将被分割。例如,可以使用语法元素split_cu_flag来指示编码块是否要被分割。当语法元素split_cu_flag不存在时,可以推断其等于1,这表示要分割编码块。

应当理解,本公开的实施例可以与另一实施例或一些其他实施例组合。

可以使用以下条款进一步描述实施例:

1、一种视频处理方法,包括:

确定编码块是否包括图像边界之外的样本;以及

响应于确定所述编码块包括图像边界之外的样本,不管第一参数的值如何,执行所述编码块的四叉树分割,其中所述第一参数指示所述四叉树是否被允许用于分割所述编码块。

2、根据条款1所述的方法,还包括:

确定所述编码块的第一标志的值,所述第一标志指示所述编码块是否被分割成多个子块;以及

确定所述编码块的第二参数、第三参数、第四参数和第五参数的值,所述第二参数、第三参数、第四参数和第五参数分别指示是否允许使用二叉水平树、二叉垂直树、三叉水平树、三叉垂直树来拆分编码块。

3、根据条款2所述的方法,还包括:

响应于所述第一标志的值等于1,并且第一参数、第二参数、第三参数、第四参数和第五参数的值等于0,设置所述编码块的第二标志的值为1,该第第二标志指示是否使用所述四叉树分割所述所述编码块。

4、根据条款2所述的方法,还包括:

响应于所述第一参数的值等于1,设置所述编码块的第二标志的值为1,所述第二标志指示是否使用所述四叉树分割所述编码块。

5、根据条款2-4中任一项所述的方法,还包括:

当确定所述编码块包括图像边界之外的样本时,将所述第一标志的值设置为1。

6、一种视频处理装置,包括:

至少一个存储器,用于存储指令,以及

至少一个处理器,被配置为执行所述指令以使所述装置执行以下操作:

确定编码块是否包括图像边界之外的样本;以及

响应于确定所述编码块包括在图像边界之外的样本,不管第一参数的值如何,执行所述编码块的四叉树分割,其中所述第一参数指示所述四叉树是否被允许用于分割所述编码块。

7、根据条款6所述的装置,其中所述至少一个处理器被配置为执行所述指令以使所述装置执行:

确定所述编码块的第一标志的值,所述第一标志指示所述编码块是否被分割成多个子块;以及

确定编码块的第二参数、第三参数、第四参数和第五参数的值,所述第二参数、第三参数、第四参数和第五参数分别指示是否允许使用二叉水平树、二叉垂直树、三叉水平树、三叉垂直树来分割所述编码块。

8、根据条款7所述的装置,其中所述至少一个处理器被配置为执行所述指令以使所述装置执行:

响应于所述第一标志的值等于1,并且第一参数、第二参数、第三参数、第四参数和第五参数的值等于0,将所述编码块的第二标志的值设置为1,所述第二标志指示是否使用四叉树分割所述编码块,

9、根据条款7所述的装置,其中所述至少一个处理器被配置为执行所述指令以使所述装置执行:

响应于所述第一参数的值等于1,将所述编码块的第二标志的值设置为1,所述第二标志指示是否使用所述四叉树分割所述编码块。

10、根据条款7-9中任一项所述的装置,其中,所述至少一个处理器被配置为执行所述指令以使所述装置执行:

当所述编码块被确定为包括图像边界之外的样本时,将所述第一标志的值设置为1。

11、一种非暂时性计算机可读存储介质,存储有指令集,所述指令集可由一个或多个处理设备执行以使视频处理装置执行以下操作:

确定编码块是否包括图像边界之外的样本,以及

响应于所述编码块被确定为包括在图像边界之外的样本,不管第一参数的值如何,执行所述编码块的四叉树分割,其中所述第一参数指示所述四叉树是否被允许用于分割所述编码块。

12、根据条款11所述的非暂时性计算机可读存储介质,其中所述指令集可由所述一个或多个处理设备执行以使所述视频处理装置执行:

确定所述编码块的第一标志的值,所述第一标志指示所述编码块是否被分割成多个子块;以及

确定所述编码块的第二参数、第三参数、第四参数和第五参数的值,所述第二参数、第三参数、第四参数和第五参数分别指示是否允许使用二叉水平树、二叉垂直树、三叉水平树、三叉垂直树来分割编码块。

13、根据条款12所述的非暂时性计算机可读存储介质,其中所述指令集可由所述一个或多个处理设备执行以使所述视频处理装置执行:

响应于第一标志的值等于1,并且第一参数、第二参数、第三参数、第四和第五参数的值等于0,将所述编码块的第二标志的值设置为1,所述第二标志指示是否使用四叉树分割所述编码块。

14、根据条款12所述的非暂时性计算机可读存储介质,其中所述指令集可由所述一个或多个处理设备执行以使所述视频处理装置执行:

响应于所述第一参数的值等于1,将所述编码块的第二标志的值设置为1,所述第二标志指示是否使用所述四叉树分割所述编码块。

15、根据条款12-14中任一项所述的非暂时性计算机可读存储介质,其中响应于所述编码块被确定为包括图像边界之外的样本,使用所述QT模式分割所述编码块包括:

当所述编码块被确定为包括图像边界之外的样本时,将所述第一标志的值设置为1。

16、一种视频处理方法,包括:

确定编码块是否包括图像边界之外的样本;

响应于所述编码块被确定为包括图像边界之外的样本,使用四叉树(QT)模式分割所述编码块。

17、根据条款16所述的方法,还包括:

响应于所述编码块被确定为包括在图像边界之外的样本,确定不允许使用二叉树(BT)模式和三叉树(TT)模式来分割所述编码块。

18、根据条款16和17中任一项所述的方法,其中响应于所述编码块被确定为包括图像边界之外的样本,使用四叉树(QT)模式分割所述编码块包括:

不管在包括所述编码块的位流中是否存在QT标志,使用所述QT模式分割所述编码块,所述QT标志指示是否要使用所述QT模式分割所述编码块。

19、根据条款16所述的方法,其中响应于所述编码块被确定为包括图像边界之外的样本,使用四叉树(QT)模式分割所述编码块包括:

不管允许应用所述QT模式的最小块大小的预设约束如何,使用所述QT模式对所述编码块进行拆分。

20、如条款19所述的方法,其中:

所述预设约束包括与所述编码块相关联的位流一致性,所述位流一致性设置允许应用所述QT模式的最小块大小。

21、根据条款20所述的方法,其中所述最小块大小被设置为小于或等于64。

22、根据条款20和21中任一项所述的方法,其中所述位流一致性设置最大BT深度或最大TT深度。

23、根据条款16-22中任一项所述的方法,其中所述图像边界是底部图像边界或右侧图像边界。

24、一种视频处理装置,包括:

至少一个存储器,用于存储指令;以及

至少一个处理器,其被配置为执行所述指令以使所述装置执行:

确定编码块是否包括图像边界之外的样本;

响应于所述编码块被确定为包括图像边界之外的样本,使用四叉树(QT)模式分割所述编码块。

25、根据条款24所述的装置,其中所述至少一个处理器被配置为执行所述指令以使所述装置执行:

响应于所述编码块被确定为包括在图像边界之外的样本,确定不允许使用二叉树(BT)模式和三叉树(TT)模式来分割所述编码块。

26、根据条款24和25中任一项所述的装置,其中,所述至少一个处理器被配置为执行所述指令以使所述装置执行;

不管在包括所述编码块的位流中是否存在QT标志,使用所述QT模式分割编码块,所述QT标志指示是否要使用所述QT模式分割所述编码块。

27、根据条款24所述的装置,其中所述至少一个处理器被配置为执行所述指令以使所述装置执行:

不管允许应用所述QT模式的最小块大小的预设约束如何,使用所述QT模式分割编码块。

28、根据条款27所述的设备,其中

所述预设约束包括与所述编码块相关联的位流一致性,所述位流一致性设置允许应用所述QT模式的最小块大小。

29、根据条款28所述的装置,其中所述最小块大小被设置为小于或等于64。

30、根据条款28和29中任一项所述的装置,其中所述位流一致性设置最大BT深度或最大TT深度。

31、根据条款24至30中任一项所述的装置,其中所述图像边界是底部图像边界或右侧图像边界。

32、一种非暂时性计算机可读存储介质,存储有指令集,所述指令集可由一个或多个处理设备执行以使视频处理装置执行以下操作:

确定编码块是否包括图像边界之外的样本;

响应于所述编码块被确定为包括图像边界之外的样本,使用四叉树(QT)模式分割所述编码块。

33、根据条款32所述的非暂时性计算机可读存储介质,其中所述指令集可由所述一个或多个处理设备执行以使所述视频处理装置执行:

响应于所述编码块被确定为包括图像边界之外的样本,确定不允许使用二叉树(BT)模式和三叉树(TT)模式来分割所述编码块。

34、根据条款32和33中任一项所述的非暂时性计算机可读存储介质,其中所述指令集可由所述一个或多个处理设备执行以使所述视频处理装置执行:

不管在包括编码块的位流中是否存在QT标志,使用所述QT模式分割所述编码块,所述QT标志指示是否要使用所述QT模式分割所述编码块。

35、根据条款32所述的非暂时性计算机可读存储介质,其中所述指令集可由所述一个或多个处理设备执行以使所述视频处理装置执行:

不管允许应用所述QT模式的最小块大小的预设约束如何,使用QT模式分割编码块。

36、根据条款35所述的非暂时性计算机可读存储介质,其中:所述预设约束包括与所述编码块相关联的位流一致性,所述位流一致性设置允许应用所述QT模式的最小块大小。

37、根据条款36所述的非横向计算机可读存储介质,其中所述最小块大小被设置为小于或等于64。

38、根据条款36和37中任一项所述的非暂时性计算机可读存储介质,其中所述位流一致性设置最大BT深度或最大TT深度。

39、根据条款32至38中任一项所述的非暂时性计算机可读存储介质,其中所述图像边界是底部图像边界或右侧图像边界。

在一些实施例中,还提供了包括指令的非暂时性计算机可读存储介质,并且所述指令可以由设备(诸如所公开的编码器和解码器)执行,用于执行上述方法。非暂时性介质的常见形式包括,例如,软盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、任何具有孔图案的物理介质、RAM、PROM和EPROM、FLASH-EPROM或任何其他闪存、NVRAM、高速缓存、寄存器、任何其他存储芯片或盒式存储,以及它们的联网版本。该设备可以包括一个或多个处理器(CPU)、输入/输出接口、网络接口和/或存储器。

应该注意的是,本文中的关系术语,例如“第一”和“第二”,仅用于将实体或操作与另一实体或操作区分开来,并不要求或暗示这些实体或操作之间的任何实际关系或顺序。此外,词语“包含”、“具有”、“包含”和“包含”以及其他类似形式在含义上是等同的,并且是开放式的,因为这些在这些词语任何一个之后的一个或多个条目都不意味着该条目或多个条目的穷尽列表,或仅限于列出的条目或多个条目。

如本文所用,除非另有特别说明,术语“或”包括所有可能的组合,除非不可行。例如,如果声明数据库可包括A或B,则除非另有明确声明或不可行,否则数据库可包括A、或B、或A和B。作为第二示例,如果声明数据库可以包括A、B或C,则除非另有明确说明或不可行,否则数据库可以包括A、或B、或C、或A和B、或A和C、或B和C、或A,B和C。

应当理解,上述实施例可以通过硬件、或软件(程序代码)、或硬件和软件的组合来实现。如果通过软件实现,则可以将其存储在上述计算机可读介质中。该软件在由处理器执行时可以执行所公开的方法。本公开中描述的计算单元和其他功能单元可以通过硬件、或软件、或硬件和软件的组合来实现。本领域普通技术人员还将理解,可以将上述多个模块/单元组合为一个模块/单元,并且可以将上述模块/单元中的每一个进一步划分为多个子模块/子单元。

在前面的说明书中,已经参考许多具体细节描述了实施例,这些具体细节可以随实施而变化。可以对所描述的实施例进行某些修改和改变。通过考虑本文公开的本发明的说明书和实践,其他实施例对于本领域技术人员来说是显而易见的。本说明书和实施例仅被认为是示例性的,本发明的真正范围和精神由本文的权利要求指示。附图所示的步骤序列仅用于说明目的,而不旨在限于任何特定的步骤序列。因此,本领域技术人员可以理解,在实现相同方法的同时,可以以不同的顺序执行这些步骤。

在附图和说明书中,已经公开了示例性实施例。然而,可以对这些实施例进行许多变化和修改。因此,尽管采用了特定的术语,但它们仅在通用和描述性的意义上使用,而不是出于限制的目的。

技术分类

06120114711943