图像信号编码/解码方法及其装置与流程

文档序号:26013118发布日期:2021-07-23 21:34阅读:102来源:国知局
图像信号编码/解码方法及其装置与流程

本公开涉及一种视频信号编码/解码方法及其装置。



背景技术:

随着显示面板变得更大,需要更高质量的视频服务。高清晰度视频服务最大的问题是数据量大大增加。为了解决以上问题,正在积极进行提高视频压缩率的研究。作为代表性示例,视频编码联合协作小组(jct-vc)于2009年由国际电信联盟电信标准化部(itu-t)下的运动图像专家组(mpeg)和视频编码专家组(vceg)成立。jct-vc提出了高效视频编码(hevc),其为压缩性能大约是h.264/avc的两倍的一种视频压缩标准,并且于2013年1月25日被批准作为标准。然而,随着高清晰度视频服务的飞速发展,hevc的性能逐渐显示出其局限性。



技术实现要素:

技术目的

本公开的目的是提供一种通过在对视频信号进行编码/解码时考虑色度块尺寸来确定编码块的分区类型的方法,以及用于执行所述方法的装置。

本公开的目的是提供一种在对视频信号进行编码/解码时使用块矢量的预测方法,以及用于执行所述方法的装置。

本公开的目的是提供一种自适应地确定在对视频信号进行编码/解码时是否应用双向光流的方法,以及用于执行所述方法的装置。

可从本公开获得的技术目的不限于上述技术目的,并且本公开所属技术领域的普通技术人员可以从以下描述中清楚地理解其他未提及的技术目的。

技术方案

根据本公开的一种视频信号解码/编码方法可包括:推导当前块的l0运动矢量和l1运动矢量;基于l0运动矢量和l1运动矢量推导当前块中的第一位置的l0预测样点和l1预测样点;确定双向光流bdof是否被应用于当前块;当确定应用双向光流时,推导包括第一位置的子块的细化运动矢量;基于所述细化运动矢量推导第一位置的细化预测样点;以及通过使用l0预测样点、l1预测样点和所述细化预测样点来获得第一位置的预测样点。

在根据本公开的视频信号解码/编码方法中,基于组合预测方法是否被应用于当前块来确定双向光流是否被应用于当前块,并且当所述组合预测方法未被应用于当前块时,允许bdof编码方法。

在根据本公开的视频信号解码/编码方法中,可以基于第一位置的l1水平方向梯度与l0水平方向梯度之间的第一差以及l1垂直方向梯度与l0垂直方向梯度之间的第二差来推导所述细化预测样点。

在根据本公开的视频信号解码/编码方法中,可以基于当前块的l0参考画面和l1参考画面的方向或输出顺序中的至少一个来确定双向光流是否被应用于当前块。

在根据本公开的视频信号解码/编码方法中,可以基于当前块的宽度或高度中的至少一个是否等于或大于阈值来确定双向光流是否被应用于当前块。

应当理解,前述概述的特征是本公开的下面的详细描述的示例性方面,而不限制本公开的范围。

技术效果

根据本公开,可以通过基于色度块尺寸确定编码块的分区类型来提高编码/解码效率。

根据本公开,可以通过使用块矢量获得预测样点来提高编码/解码效率。

根据本公开,可以通过自适应地确定是否应用双向光流来提高编码/解码效率。

可从本公开获得的效果可以不受上述效果的限制,并且本公开所属技术领域的普通技术人员可以从下面的描述中清楚地理解其他未提及的效果。

附图说明

图1是示出根据本公开的实施例的视频编码装置(编码器)的框图的示图。

图2是示出根据本公开的实施例的视频解码装置(解码器)的框图的示图。

图3是示出根据本公开的实施例的基本编码树单元的示图。

图4是示出编码块的各种分区类型的示图。

图5是示出对ctu进行分区的方面的示例的示图。

图6是示出亮度分量块和色度分量块的分区方面的示图。

图7是根据本公开的实施例的帧间预测方法的流程图。

图8是示出对象的非线性运动的示图。

图9是根据本公开的实施例的基于仿射运动的帧间预测方法的流程图。

图10是示出每个仿射运动模型的仿射种子矢量的示图。

图11是示出4参数运动模型中的子块的仿射矢量的示图。

图12是在合并模式下推导当前块运动信息的处理的流程图。

图13是示出用于推导合并候选的候选块的示图。

图14是解释运动信息表的更新方面的示图。

图15是示出运动信息表的更新方面的示图。

图16是示出预先保存的运动信息候选的索引被更新的示例的示图。

图17是示出仅对合并候选的一部分执行冗余校验的示例的示图。

图18是示出与特定合并候选的冗余校验被省略的示例的示图。

图19是示出包括在与当前块相同的合并处理区域中的候选块被设置为不可用作合并候选的示例的示图。

图20是示出在当前块包括在合并处理区域中时推导当前块的合并候选的示例的示图。

图21是示出临时运动信息表的示图。

图22是示出运动信息表和临时运动信息表被统一的示例的示图。

图23是示出通过使用对角线将编码块分区为多个预测单元的示例的示图。

图24是示出编码块被分区为两个预测单元的示例的示图。

图25示出编码块被分区为多个不同尺寸的预测单元的示例。

图26是示出用于推导分区模式合并候选的邻近块的示图。

图27是用于解释按照每个预测单元确定邻近块的可用性的示例的示图。

图28和图29是示出基于第一预测样点和第二预测样点的加权和运算推导预测样点的示例的示图。

图30是用于解释基于帧内块复制模式的预测方面的示图。

图31是示出根据本公开的实施例的基于帧内块复制模式的当前块的预测处理的流程图。

图32是说明将ibc合并候选添加到ibc合并候选列表的顺序的示图。

图33是示出将ibc运动信息候选添加到ibc合并候选列表的示例的示图。

图34是用于解释ibc运动信息表的更新方面的示图。

图35是示出根据当前块的位置的不可用区域的示图。

图36是示出编码/解码的当前块的重建信息被存储在ibc参考缓冲器中的示例的示图。

图37是用于说明解释块矢量差值的编码方面的示例的示图。

图38是示出对每个子块执行是否执行变换跳过的确定的示例的示图。

图39是示出子块使用相同变换类型的示例的示图。

图40是示出确定块强度的处理的流程图。

图41示出预定义滤波器候选。

具体实施方式

在下文中,将参照附图详细地描述本公开的实施例。

基于块执行图像编码和解码。在示例中,可对编码块、变换块或预测块执行诸如变换、量化、预测、环内滤波、重建等编码/解码处理。

在下文中,编码/解码目标块被称为“当前块”。在示例中,根据当前的编码/解码处理,当前块可表示编码块、变换块或预测块。

另外,在本说明书中使用的术语“单元”表示用于执行特定编码/解码处理的基本单元,并且“块”可被理解为表示具有预定尺寸的样点阵列。除非另有说明,否则可互换使用“块”和“单元”。在示例中,编码块和编码单元在稍后描述的示例中可被理解为具有彼此相同的含义。

图1是示出根据本公开的实施例的图像编码设备(编码器)的框图的示图。

参照图1,图像编码设备100可包括画面分区单元110、预测单元120和125、变换单元130、量化单元135、重排单元160、熵编码单元165、反量化单元140、逆变换单元145、滤波器单元150和存储器155。

图1中描述的组件被独立地示出,以便示出图像编码设备中的不同特征功能,并且,该图并不意味着每个组件都由分开的硬件或一个软件单元组成。也就是说,每个组件仅被列举以便于解释,各个组件中的至少两个组件可构成一个组件,或者一个组件可被分区为可执行它们的功能的多个组件。甚至是集成了各个组件的实施例以及对组件进行划分的实施例也被包括在本公开的范围内,除非它们脱离了本公开的精神。

此外,一些组件不是执行本公开的必要功能的必要组件,而是仅用于改善性能的可选组件。可利用除了仅用于改善性能的组件之外的用于实施本公开的精神的必要组件来实现本公开,并且仅包括除了仅用于改善性能的可选组件之外的必要组件的结构也被包括在本公开的范围内。

画面分区单元110可将输入的画面分区为至少一个处理单元。在这方面,处理单元可以是预测单元(pu)、变换单元(tu)或编码单元(cu)。在画面分区单元110中,可将单个画面分区为多个编码单元、预测单元和变换单元的多个组合,并且可通过根据预定条件(例如,代价函数)选择编码单元、预测单元和变换单元的组合来对画面进行编码。

例如,可将单个画面分区为多个编码单元。为了将画面分区为编码单元,可使用诸如四叉树结构的递归树结构,并且源自诸如单个图像或最大编码单元之类的根的编码单元可被分区为其它编码单元并且可具有与分区出的编码单元一样多的子节点。根据特定限制不再被分区的编码单元成为叶节点。即,当假设只有正方形分区可用于单个编码单元时,可将单个编码单元分区为最多四个其它编码单元。

在下文中,在本公开的实施例中,编码单元可被用作用于编码的单元,或者可被用作用于解码的单元。

可通过将单个编码单元分区为具有相同尺寸的至少一个正方形或矩形来获得预测单元,或者可按照一个预测单元在形状和/或尺寸上可不同于另一个预测单元的方式将单个编码单元分区为预测单元。

在基于正执行帧内预测的编码块产生预测单元的过程中,当编码单元不是最小编码单元时,可在不执行分区为多个n×n的预测单元的情况下执行帧内预测。

预测单元120和125可包括执行帧间预测的帧间预测单元120以及执行帧内预测的帧内预测单元125。可确定对预测单元执行帧间预测还是帧内预测,并且可确定根据每种预测方法的详细信息(例如,帧内预测模式、运动矢量、参考画面等)。在这方面,被执行预测的处理单元可不同于被确定预测方法及其细节的处理单元。例如,可基于预测单元来确定预测方法、预测模式等,但可基于变换单元来执行预测。所产生的预测块与原始块之间的残差值(残差块)可被输入到变换单元130。另外,用于预测的预测模式信息、运动矢量信息等可由熵编码单元165使用残差值来编码,并且可被发送给解码器。当特定编码模式被使用时,原始块在无需通过预测单元120或125产生预测块的情况下按照原样被编码并且被发送给解码单元。

帧间预测单元120可基于关于当前画面的先前画面和后续画面中的至少一个的信息对预测单元进行预测,或者在某些情况下,可基于关于当前画面中的一些已编码区域的信息对预测单元进行预测。帧间预测单元120可包括参考画面插值单元、运动预测单元和运动补偿单元。

参考画面插值单元可从存储器155接收参考画面信息,并且可从参考画面产生整数像素或更小像素的像素信息。在亮度像素的情况下,可使用具有不同系数的基于dct的8抽头插值滤波器,以便以1/4像素为单位产生关于整数像素或更小像素的像素信息。在色度信号的情况下,可使用具有不同滤波器系数的基于dct的4抽头插值滤波器,以便以1/8像素为单位产生关于整数像素或更小像素的像素信息。

运动预测单元可基于由参考画面插值单元插值后的参考画面来执行运动预测。可将诸如基于全搜索的块匹配算法(fbma)、三步搜索(tss)算法、新三步搜索(nts)算法等的各种方法用作用于计算运动矢量的方法。运动矢量可基于插值后的像素具有以1/2像素或1/4像素为单位的运动矢量值。运动预测单元可通过改变运动预测方法对当前预测单元进行预测。可将诸如跳过方法、合并方法、高级运动矢量预测(amvp)方法、帧内块复制方法等各种方法用作运动预测方法。

运动预测单元125可基于作为当前画面中的像素信息的在当前块周围的参考像素的信息来产生预测单元。在当前预测单元的邻近块是被执行帧间预测的块,并因此参考像素是被执行帧间预测的像素时,可用关于被执行帧内预测的邻近块的参考像素的信息来替换包括在被执行帧间预测的块中的参考像素。换言之,当参考像素不可用时,可使用可用参考像素中的至少一个参考像素来代替不可用的参考像素信息。

帧内预测下的预测模式可包括当执行预测时根据预测方向使用参考像素信息的方向预测模式、以及当执行预测时不使用方向信息的非方向模式。用于预测亮度信息的模式可不同于用于预测色度信息的模式。为了预测色度信息,可使用关于用于预测亮度信息的帧内预测模式的信息或者关于预测出的亮度信号的信息。

在执行帧内预测的过程中,当预测单元的尺寸与变换单元的尺寸相同时,可基于位于预测单元的左侧、左上方和上方的像素对预测单元执行帧内预测。然而,在执行帧内预测的过程中,当预测单元的尺寸与变换单元的尺寸不同时,可通过基于变换单元使用参考像素来执行帧内预测。另外,使用n×n分区的帧内预测可仅被用于最小编码单元。

在帧内预测方法中,可在根据预测模式将自适应帧内平滑(ais)滤波器应用于参考像素之后产生预测块。应用于参考像素的ais滤波器的类型可以变化。为了执行帧内预测方法,可从当前预测单元周围存在的预测单元的帧内预测模式预测用于当前预测单元的帧内预测模式。在通过使用从邻近预测单元预测出的模式信息来预测用于当前预测单元的预测模式的过程中,当用于当前预测单元的帧内预测模式与该邻近预测单元的帧内预测模式相同时,可通过使用预定标志信息来发送指示当前预测单元与该邻近预测单元具有相同预测模式的信息。当用于当前预测单元的预测模式不同于该邻近预测单元的预测模式时,可执行熵编码来对关于用于当前块的预测模式的信息进行编码。

另外,可产生包括关于残差值的信息的残差块,其中,残差值是由预测单元120或125对其执行了预测的预测单元与该预测单元的原始块之间的差值。产生的残差块可被输入到变换单元130。

变换单元130可通过使用诸如离散余弦变换(dct)或离散正弦变换(dst)的变换方法对残差块执行变换,其中,残差块包括关于原始块与由预测单元120或125产生的预测单元之间的残差值的信息。在这一方面,dct变换核包括dct2或dct8中的至少一个,dst变换核包括dst7。可基于关于被用于产生残差块的预测单元的帧内预测模式的信息来确定是应用dct还是应用dst来对残差块执行变换。可以跳过针对残差块的变换。可对指示是否跳过针对残差块的变换的标志进行编码。对于尺寸小于或等于阈值的残差块、在4:4:4格式下的亮度分量的残差块或色度分量的残差块,可允许进行变换跳过。

量化单元135可对由变换单元130变换到频域的值执行量化。量化系数可根据图像的重要性或块而变化。在量化单元135中计算出的值可被提供给反量化单元140和重排单元160。

重排单元160可对关于量化残差值的变换系数执行重排。

重排单元160可通过系数扫描方法将二维块形式的系数变为一维矢量形式的系数。例如,重排单元160可通过使用z字形扫描方法从dc系数至高频域中的系数进行扫描,以便将系数变为一维矢量形式。根据变换单元的尺寸和帧内预测模式,可使用沿列方向扫描二维块形式的系数的垂直方向扫描或沿行方向扫描二维块形式的系数的水平方向扫描,而不是z字形扫描。换言之,可根据变换单元的尺寸和帧内预测模式来确定使用z字形扫描、垂直方向扫描和水平方向扫描中的哪一种扫描方法。

熵编码单元165可基于由重排单元160计算出的值来执行熵编码。熵编码可使用各种编码方法,例如,指数golomb编码、上下文自适应可变长度编码(cavlc)或上下文自适应二进制算术编码(cabac)。

熵编码单元165可对从重排单元160以及预测单元120和125获得的各种类型的信息(诸如关于残差值系数的信息和关于编码单元的块类型的信息、关于预测模式的信息、关于分区单元的信息、关于预测单元的信息、和关于变换单元的信息、关于运动矢量的信息、关于参考帧的信息、关于块插值的信息、滤波信息等)进行编码。

熵编码单元165可对从重排单元160输入的编码单元的系数进行熵编码。

反量化单元140可对在量化单元135中量化的值执行反量化,并且逆变换单元145可对在变换单元130中变换的值执行逆变换。可将由反量化单元140和逆变换单元145产生的残差值与由包括在预测单元120和125中的运动估计单元、运动补偿单元或帧内预测单元预测出的预测单元相加,以便产生重建块。

滤波器单元150可包括去块滤波器、偏移校正单元和自适应环内滤波器(alf)中的至少一个。

去块滤波器可去除由于重建画面中的块之间的边界而发生的块失真。为了确定是否执行去块操作,可基于块中包括的几行或几列中所包括的像素来确定是否对当前块应用去块滤波器。当去块滤波器被应用于块时,根据所需要的去块滤波强度来应用强滤波器或弱滤波器。另外,在应用去块滤波器的过程中,当执行水平方向滤波和垂直方向滤波时,可将水平方向滤波和垂直方向滤波配置为并行处理。

偏移校正单元可针对被执行去块操作的图像通过以像素为单位的偏移来校正原始图像。为了对特定画面执行偏移校正,可使用对在将图像的像素分区为预定数量个区域之后所确定的区域应用偏移的方法、或者根据每个像素的边缘信息应用偏移的方法。

可基于通过将经过滤波的重建图像与原始图像进行比较而获得的值来执行自适应环内滤波(alf)。可将图像中包括的像素分区为预定组,可确定将被应用于每个组的滤波器,并且可对每个组单独地执行滤波。可针对亮度信号的每个编码单元(cu)发送关于是否应用alf的信息,并且将被应用的alf滤波器的形状和滤波器系数可基于每个块而变化。可选地,可应用具有相同形状(固定形状)的alf滤波器,而不管将被应用滤波器的块的特征如何。

在存储器155中,可存储通过滤波器单元150计算的重建块或重建画面。当执行帧间预测时,存储的重建块或重建画面可被提供给预测单元120或125。

图2是示出根据本公开的实施例的图像解码设备(解码器)的框图的示图。

参照图2,图像解码设备200可包括熵解码单元210、重排单元215、反量化单元220、逆变换单元225、预测单元230和235、滤波器单元240和存储器245。

当从编码器输入了图像比特流时,可根据图像编码设备的逆处理来对输入的比特流进行解码。

熵解码单元210可根据由图像编码器的熵编码单元进行的熵编码的逆处理来执行熵解码。例如,与由图像编码器设备执行的方法相关联,可应用各种方法,诸如指数golomb编码、上下文自适应可变长度编码(cavlc)或上下文自适应二进制算术编码(cabac)。

熵解码单元210可对关于由编码器执行的帧内预测和帧间预测的信息进行解码。

重排单元215可基于在编码器中使用的重排方法对由熵解码单元210熵解码的比特流执行重排。可重建以一维矢量形式表示的系数,并且可将以一维矢量形式表示的系数重排成二维块形式的系数。重排单元215可通过接收与在编码器中执行的系数扫描有关的信息并基于在编码器中执行的扫描顺序进行逆扫描的方法来执行重排。

反量化单元220可基于从编码器接收的量化参数以及重排后的块的系数值来执行反量化。

针对在图像编码器中由变换单元对量化结果执行的变换(即dct或dst),逆变换单元225可执行逆变换(即逆dct或逆dst)。在这方面,dct变换核可包括dct2或dct8中的至少一个,dst变换核可包括dst7。可选地,当在图像编码器中跳过了变换时,在逆变换单元225中同样不执行逆变换。可基于由图像编码器确定的变换单元来执行逆变换。图像解码器的逆变换单元225可根据多条信息(诸如预测方法、当前块的尺寸、预测方向等)来选择性地执行变换方法(例如,dct或dst)。

预测单元230或235可基于从熵解码单元210接收到的与预测块相关的信息以及从存储器245接收到的关于先前解码块或画面的信息来产生预测块。

如上所述,如同图像编码器的操作那样,在执行帧内预测的过程中,当预测单元的尺寸与变换单元的尺寸相同时,可基于位于预测单元的左侧、左上方和上方的像素对预测单元执行帧内预测。然而,在执行帧内预测的过程中,当预测单元的尺寸与变换单元的尺寸不同时,可通过基于变换单元使用参考像素来执行帧内预测。另外,使用n×n分区的帧内预测可仅被用于最小编码单元。

预测单元230和235可包括pu确定模块、帧间预测单元和帧内预测单元。pu确定单元可接收从熵解码单元210输入的各种类型的信息(诸如关于预测单元的信息、关于帧内预测方法的预测模式的信息、关于帧间预测方法的运动预测的信息等),可对当前编码单元中的预测单元进行划分,并且可确定对预测单元执行帧间预测还是执行帧内预测。通过使用从图像编码器接收到的当前预测单元的帧间预测所需的信息,帧间预测单元230可基于关于包括当前预测单元的当前画面的先前画面和后续画面中的至少一个的信息来对当前预测单元执行帧间预测。可选地,可基于关于包括当前预测单元的当前画面中的一些预先重建的区域的信息来执行帧间预测。

为了执行帧间预测,可基于编码单元来确定跳过模式、合并模式、amvp模式或帧内块复制模式中的哪种方法被用作用于编码单元中包括的预测单元的运动预测方法。

帧内预测单元235可基于关于当前画面内的像素的信息来产生预测块。当预测单元是已经被执行了帧内预测的预测单元时,可基于从图像编码器接收到的关于预测单元的帧内预测模式的信息来执行帧内预测。帧内预测单元235可包括自适应帧内平滑(ais)滤波器、参考像素插值模块或dc滤波器。ais滤波器可对当前块的参考像素执行滤波,并且,可根据用于当前预测单元的预测模式来确定是否应用滤波器。当对当前块的参考像素执行ais滤波时,可使用从图像编码器接收到的预测单元的预测模式以及关于ais滤波器的信息。当用于当前块的预测模式是不应用ais滤波的模式时,可不应用ais滤波器。

当预测单元的预测模式是基于通过对参考像素进行插值而获得的像素值来执行帧内预测的预测模式时,参考像素插值单元可对参考像素进行插值,以便产生具有整数单位或更小单位的参考像素。当用于当前预测单元的预测模式是在不对参考像素进行插值的情况下产生预测块的预测模式时,可不对参考像素进行插值。当用于当前块的预测模式是dc模式时,dc滤波器可通过滤波产生预测块。

重建块或重建画面可被提供给滤波器单元240。滤波器单元240可包括去块滤波器、偏移校正模块和alf。

可从图像编码器接收关于去块滤波器是否已被应用于相应块或画面的信息、以及关于在去块滤波器被应用时是应用了强滤波器还是弱滤波器的信息。图像解码器的去块滤波器可从图像编码器接收关于去块滤波器的信息,并且图像解码器可对相应块执行去块滤波。

偏移校正单元可基于在执行编码时应用于图像的偏移校正的类型、关于偏移值的信息等对重建图像执行偏移校正。

可基于从编码器接收到的关于是否应用alf的信息、关于alf系数的信息等对编码单元应用alf。以上的alf信息可通过被包括在特定参数集中而被提供。

在存储器245中,可存储重建画面或重建块以便将其用作参考画面或参考块,并且重建画面可被提供给输出单元。

图3是示出根据本公开的实施例的基本编码树单元的示图。

最大编码块可被定义为编码树块。单个画面可被分区为多个编码树单元(ctu)。ctu可以是最大尺寸的编码单元,并且可被称为最大编码单元(lcu)。图3是示出单个画面被分区为多个ctu的示例的示图。

可按照画面级别或序列级别来定义ctu的尺寸。同样,可通过画面参数集或序列参数集来用信号发送表示ctu的尺寸的信息。

在示例中,可将用于序列内的整个画面的ctu的尺寸设置为128×128。可选地,可按照画面级别将128×128或256×256中的任意一个确定为ctu的尺寸。在示例中,可在第一画面中将ctu设置为具有尺寸128×128,并且可在第二画面中将ctu设置为具有尺寸256×256。

通过对ctu进行分区可产生编码块。编码块表示用于执行编码/解码的基本单元。在示例中,可针对每个编码块执行预测或变换,或者,可针对每个编码块确定预测编码模式。在这方面,预测编码模式表示产生预测图像的方法。在示例中,预测编码模式可包括帧内预测、帧间预测、当前画面参考(cpr)、帧内块复制(ibc)或组合预测。对编码块,可通过使用帧内预测、帧间预测、当前画面参考、或组合预测中的至少一个的预测编码模式来产生编码块的预测块。

可在比特流中用信号发送表示用于当前块的预测编码模式的信息。在示例中,该信息可以是表示预测编码模式是帧内模式还是帧间模式的1比特标志。当用于当前块的预测编码模式被确定为帧间模式时,当前画面参考或组合预测可以是可用的。

当前画面参考是将当前画面设置为参考画面并从当前画面内已经被编码/被解码的区域获得当前块的预测块。在这方面,当前画面表示包括当前块的画面。可在比特流中用信号发送表示当前画面参考是否被应用于当前块的信息。在示例中,该信息可以是1比特标志。当该标志为真时,用于当前块的预测编码模式可被确定为当前画面参考,当该标志为假时,用于当前块的预测编码模式可被确定为帧间预测。

可选地,可基于参考画面索引来确定用于当前块的预测编码模式。在示例中,当参考画面索引指示当前画面时,用于当前块的预测编码模式可被确定为当前画面参考。当参考画面索引指示除了当前画面之外的画面时,用于当前块的预测编码模式可被确定为帧间预测。换言之,当前画面参考是使用关于在当前画面内已经被编码/被解码的区域的信息的预测方法,帧间预测是使用关于已经被编码/被解码的另一画面的信息的预测方法。

组合预测表示组合了帧内预测、帧间预测和当前画面参考中的至少两个的组合编码模式。在示例中,当应用组合预测时,可基于帧内预测、帧间预测或当前画面参考中的任意一个来产生第一预测块,并且可基于帧内预测、帧间预测或当前画面参考中的另一个来产生第二预测块。当产生了第一预测块和第二预测块时,可通过计算第一预测块和第二预测块的平均值或加权和来产生最终预测块。可在比特流中用信号发送表示是否对当前块应用组合预测的信息。该信息可以是1比特标志。

图4是示出编码块的各种分区类型的示图。

可基于四叉树分区、二叉树分区或三叉树分区将编码块分区为多个编码块。可基于四叉树分区、二叉树分区或三叉树分区将分区出的编码块再分区为多个编码块。

四叉树分区表示将当前块分区为四个块的方法。作为四叉树分区的结果,可将当前块分区为四个正方形分区(参照图4的(a)的“split_qt”)。

二叉树分区表示将当前块分区为两个块的方法。可将沿垂直方向(即,使用穿过当前块的垂直线)将当前块分区为两个块的操作称为垂直方向二叉树分区,并且可将沿水平方向(即,使用穿过当前块的水平线)将当前块分区为两个块的操作称为水平方向二叉树分区。作为二叉树分区的结果,当前块可被分区为两个非正方形分区。图4的(b)的“split_bt_ver”是示出垂直方向二叉树分区的结果的示图,图4的(c)的“split_bt_hor”是示出水平方向二叉树分区的结果的示图。

三叉树分区表示将当前块分区为三个块的方法。可将沿垂直方向(即,使用穿过当前块的两条垂直线)将当前块分区为三个块的操作称为垂直方向三叉树分区,并且可将沿水平方向(即,使用穿过当前块的两条水平线)将当前块分区为三个块的操作称为水平方向三叉树分区。作为三叉树分区的结果,当前块可被分区为三个非正方形分区。在这方面,位于当前块中心的分区的宽度/高度可以是其它分区的宽度/高度的两倍。图4的(d)的“split_tt_ver”是示出垂直方向三叉树分区的结果的示图,图4的(e)的“split_tt_hor”是示出水平方向三叉树分区的结果的示图。

ctu的分区次数可被定义为分区深度。可按照序列级别或画面级别确定ctu的最大分区深度。因此,ctu的最大分区深度可基于序列或画面而变化。

可选地,可针对每个分区方法独立地确定最大分区深度。在示例中,允许四叉树分区的最大分区深度可以不同于允许二叉树分区和/或三叉树分区的最大分区深度。

编码器可在比特流中用信号发送表示当前块的分区类型和分区深度中的至少一个的信息。解码器可基于通过解析比特流而获得的该信息来确定ctu的分区类型和分区深度。

图5是示出对ctu进行分区的一方面的示例的示图。

可将通过使用四叉树分区、二叉树分区和/或三叉树分区对编码块进行分区的操作称为多叉树分区。

可将通过应用多叉树分区对编码块进行分区而产生的编码块称为子编码块。当编码块的分区深度是k时,子编码块的分区深度被设置为k+1。

与此相反,对于分区深度为k+1的编码块,可将分区深度为k的编码块称为父编码块。

可基于父编码块的分区类型和邻近编码块的分区类型中的至少一个来确定当前编码块的分区类型。在这方面,邻近编码块可以是与当前编码块相邻的块,并且可包括上方邻近块、左侧邻近块或与当前编码块的左上角相邻的邻近块中的至少一个。在这方面,分区类型可包括是否应用四叉树分区、是否应用二叉树分区、二叉树分区的方向、是否应用三叉树分区、或者三叉树分区的方向。

为了确定编码块的分区类型,可在比特流中用信号发送表示编码块是否被分区的信息。该信息是1比特标志“split_cu_flag”,并且当该标志为真时,它可表示编码块通过多叉树分区方法被分区。

当split_cu_flag为真时,可在比特流中用信号发送表示编码块是否通过四叉树分区被分区的信息。该信息是1比特标志split_qt_flag,并且当该标志为真时,编码块可被分区为四个块。

在示例中,在图5中所示的示例中,通过四叉树分区对ctu进行了分区,并因此产生了分区深度为1的四个编码块。另外,示出了再次对通过四叉树分区而产生的四个编码块之中的第一编码块和第四编码块应用四叉树分区。结果,可产生分区深度为2的四个编码块。

另外,通过再次对分区深度为2的编码块应用四叉树分区,可产生分区深度为3的编码块。

当四叉树分区未被应用于编码块时,可根据编码块的尺寸、编码块是否位于画面边界、最大分区深度、或邻近块的分区类型中的至少一个来确定是否对编码块执行二叉树分区或三叉树分区。当确定对编码块执行二叉树分区或三叉树分区时,可在比特流中用信号发送表示分区方向的信息。该信息可以是1比特标志mtt_split_cu_vertical_flag。可基于该标志来确定分区方向是垂直方向还是水平方向。另外,可在比特流中用信号发送表示二叉树分区或三叉树分区中的哪一个被应用于编码块的信息。该信息可以是1比特标志mtt_split_cu_binary_flag。可基于该标志确定二叉树分区被应用于编码块还是三叉树分区被应用于编码块。

在示例中,在图5中所示的示例中,垂直方向二叉树分区被应用于分区深度为1的编码块,垂直方向三叉树分区被应用于通过该垂直方向二叉树分区而产生的编码块之中的左侧编码块,并且垂直方向二叉树分区被应用于右侧编码块。

将二叉树分区、三叉树分区或四叉树分区中的至少一个应用于当前块的方面可被称作当前块的分区类型。

可在比特流中用信号发送表示亮度分量块的分区类型和色度分量块的分区类型是否彼此独立的信息。在示例中,可在比特流中用信号发送语法元素dual_tree_flag。当标志dual_tree_flag的值为1时,其表示亮度分量块的分区类型和色度分量块的分区类型彼此独立。当亮度分量块的分区类型和色度分量块的分区类型独立时,可分别用信号发送用于确定亮度分量块的分区类型的信息和用于确定色度分量块的分区类型的信息。当标志dual_tree_flag的值为0时,其表示色度分量块的分区类型依据亮度分量块的分区类型。在这种情况下,可省略表示色度分量块的分区类型的信息的用信号发送,并且可仅用信号发送用于确定亮度分量块的分区类型的信息。色度分量块的分区类型可被设置为与亮度分量块的分区类型相同。

当亮度分量块的分区类型和色度分量块的分区类型被确定为相互独立时,其可被称作双树模式或单独模式。另一方面,当色度分量块的分区类型被确定为依据亮度分量块的分区类型时,其可被称作单树模式或依赖模式。

可基于色度分量块包括的色度样点的数量或色度分量块的尺寸或形状中的至少一个来确定可应用于编码块的分区类型。

在示例中,将被色度分量块包括的色度样点的数量变得小于阈值的分区类型可被确定为不可用于编码块。当色度分量块应包括的色度样点的最小数量为16时,色度样点的数量变得小于16的分区类型可被设置为不可用于当前块。

在示例中,在单树模式下,在将亮度分量块的分区类型应用于色度分量块时,当将被色度分量块包括的色度样点的数量变得小于阈值时,可将分区类型设置为不应用于亮度分量块。

可选地,在双树模式下,将被色度分量块包括的色度样点的数量变得小于阈值的分区类型可被设置为不应用于色度分量块。

可以通过考虑当前块的预测模式来确定是否可以将特定分区类型应用于当前块。在示例中,在当前块的预测模式指示帧内预测时,将被色度分量块包括的色度样点的数量变得小于阈值的分区类型可被设置为不可用于当前块。另一方面,在当前块的预测模式指示帧间预测时,将被色度分量块包括的色度样点的数量变得小于阈值的分区类型可被设置为可用于当前块。

可在比特流中用信号发送用于确定阈值的信息。在示例中,可按照序列、画面、条带或块的级别用信号发送用于确定阈值的信息。块的级别表示编码树单元、编码块或预测单元。该信息可以是通过从对阈值取log2的值减去偏移而推导的值的语法smallest_chroma_unit_minus4。在示例中,当阈值为32时,语法smallest_chroma_unit_minus4的值可以被设置为1。可以通过如下面的等式1中的语法推导阈值。

[等式1]

1<<(smallest_chroma_unit_minus4+4)

可选地,可在编码装置和解码装置中预定义阈值。

可选地,可以基于预测模式、颜色格式或比特深度中的至少一个自适应地确定阈值。

包括最小数量个色度样点的色度分量块可被称作色度最小单元块。在示例中,当阈值为16时,包括16个样点的色度分量编码块可被称作色度最小单元编码块。

可选地,色度分量块的尺寸变得小于阈值的分区类型可被确定为不可用于编码块。在这种情况下,块的尺寸可以表示块的宽度或高度或者基于宽度和高度的乘积计算的值(例如,对宽度和高度的乘积取log2的值)中的至少一个。

在示例中,当色度分量块的宽度或高度中的至少一个等于或小于阈值时,可将二叉树分区设置为不允许的。在这种情况下,当色度分量块的宽度等于或小于阈值时,可以将垂直方向上的二叉树分区设置为不允许的,并且当色度分量块的高度等于或小于阈值时,可以将水平方向上的二叉树分区设置为不允许的。

可选地,当色度分量块的宽度或高度中的至少一个等于或小于阈值时,可将三叉树分区设置为不允许的。在这种情况下,当色度分量块的宽度等于或小于阈值时,可将垂直方向上的三叉树分区设置为不允许的,并且当色度分量块的高度等于或小于阈值时,可将水平方向上的二叉树分区设置为不允许的。

用于二叉树分区的阈值和用于三叉树分区的阈值可以相同或不同。在示例中,用于二叉树分区的阈值可为4,且用于三叉树分区的阈值可为8。

在上述示例中,解释了在单树模式下,将被色度分量块包括的色度样点的数量变得小于阈值的分区类型不被应用于亮度分量块。

在与描述不同的另一示例中,将被色度分量块包括的色度样点的数量变得小于阈值的分区类型可被设置为仅对亮度分量块有效且对色度分量块无效。

换言之,当与亮度分量块相应的色度分量块为色度最小单元编码块时,附加分区可被设置为对于亮度分量块是允许的,但对于色度分量块是不允许的。

图6是示出亮度分量块和色度分量块的分区方面的示图。

在图6的示例中,细线表示亮度分量块的分区方面,并且粗线表示色度分量块的分区方面。另外,基于色度样点计算图中所示的块的尺寸。可以根据颜色格式来确定与所示块的尺寸相应的亮度分量块的尺寸。

为了便于描述,假设阈值为16。

在图1(a)中所展示的示例中,当三叉树分区被应用于亮度分量块时,可确定三叉树分区是否也将被应用于色度分量块。具体地,当三叉树分区将被应用时,可基于是否产生小于色度最小单元编码块的色度分量块来确定三叉树分区是否可被应用于色度分量块。

如果三叉树分区被应用于包括32个色度样点的色度分量块,则色度分量块将被分区为包括8个色度样点的2个块和包括16个色度样点的1个块。换言之,如果三叉树分区被应用于包括32个色度样点的色度分量块,则将产生包括小于阈值(16)的色度样点的色度分量块。因此,在图1(a)中所示的示例中,三叉树分区可被设置为仅应用于亮度分量块且可被设置为不应用于色度分量块。

在图1(b)所示的示例中,当二叉树分区被应用于亮度分量块时,可以确定二叉树分区是否也将被应用于色度分量块。具体地,当二叉树分区将被应用时,可以基于是否产生小于色度最小单元编码块的色度分量块来确定是否可以将二叉树分区应用于色度分量块。

如果二叉树分区被应用于包括32个色度样点的色度分量块,则色度分量块将被分区为包括16个色度样点的2个块。换言之,如果二叉树分区被应用于包括32个色度样点的色度分量块,则将产生包括与阈值(16)相同数量个色度样点的色度分量块。因此,应用于亮度分量块的二叉树分区也可应用于色度分量块。

如果二叉树分区再次被应用于包括16个色度样点的色度分量块,则色度分量块将被分区为包括8个色度样点的2个块。换言之,如果二叉树分区被应用于包括16个色度样点的色度分量块,则将产生包括小于阈值(16)的色度样点的色度分量块。因此,二叉树分区可以被设置为仅应用于亮度分量块,并且可以被设置为不应用于色度分量块。

结果,在图1(b)中所示的示例中,第一二叉树分区被应用于亮度分量块和色度分量块两者,但再次被应用于由第一二叉树分区产生的块的附加二叉树分区仅被应用于亮度分量块且不被应用于色度分量块。

如在所示的示例中,可基于将在分区类型被应用于色度分量块时产生的分区是否包括小于阈值的色度样点来确定应用于亮度分量块的分区类型是否可应用于色度分量块。换言之,当由色度分量块包括的色度样点的数量大于阈值的两倍时,可应用二叉树分区,并且当由色度分量块包括的色度样点的数量大于阈值的四倍时,可应用三叉树分区。在示例中,当阈值为16时,可在由色度分量块包括的色度样点的数量等于或大于32时应用二叉树分区,并且可在由色度分量块包括的色度样点的数量等于或大于64时应用三叉树分区。

可以将子分区帧内预测编码方法(isp)、基于位置的预测样点修改方法(pdpc)或基于多个参考样点线的编码方法中的至少一个设置为不被应用于色度最小单元块。当不应用基于多个参考样点线的编码方法时,可表示可以仅选择与当前块相邻的参考样点线,而不可选择与当前块不相邻的参考样点线。

帧间预测是通过使用关于先前画面的信息对当前块进行预测的预测编码模式。在示例中,可将先前画面内与当前块位于相同位置的块(在下文中称为同位块)设置为当前块的预测块。在下文中,基于当前块的同位块所产生的预测块可被称为同位预测块。

与此相反,当在先前画面中存在的对象在当前画面中已经移动到另一位置时,可通过使用对象的运动来有效地预测当前块。例如,当通过将先前画面与当前画面进行比较来确定对象的移动方向和尺寸时,可根据对象的运动信息来产生当前块的预测块(或预测图像)。在下文中,通过使用运动信息所产生的预测块可被称为运动预测块。

可通过从当前块减去预测块来产生残差块。在这方面,在对象移动的情况下,通过使用运动预测块而不是使用同位预测块可减少残差块的能量,并因此可提高残差块的压缩性能。

如上,通过使用运动信息产生预测块的操作可被称为运动估计预测。在大多数帧间预测中,可基于运动补偿预测来产生预测块。

运动信息可包括运动矢量、参考画面索引、预测方向和双向加权因子索引中的至少一个。运动矢量表示对象的运动方向和幅度。参考画面索引指定当前块的在参考画面列表中包括的参考画面之中的参考画面。预测方向指示单向l0预测、单向l1预测或双向预测(l0预测和l1预测)中的任意一个。可根据当前块的预测方向来使用l0方向运动信息和l1方向运动信息中的至少一个。双向加权因子索引指定被应用于l0预测块的加权因子和被应用于l1预测块的加权因子。

图7是根据本公开的实施例的帧间预测方法的流程图。

参照图7,帧间预测方法包括:确定用于当前块的帧间预测模式(s701),根据确定的帧间预测模式获得当前块的运动信息(s702),以及基于获得的运动信息对当前块执行运动补偿预测(s703)。

在这方面,帧间预测模式可表示用于确定当前块的运动信息的各种方法,并且可包括使用平移运动信息的帧间预测模式、使用仿射运动信息的帧间预测模式。在示例中,使用平移运动信息的帧间预测模式可包括合并模式和运动矢量预测模式,使用仿射运动信息的帧间预测模式可包括仿射合并模式和仿射运动矢量预测模式。可基于与当前块邻近的邻近块或者通过解析比特流而获得的信息来确定关于当前块的运动信息。

在下文中,详细描述使用仿射运动信息的帧间预测方法。

图8是示出对象的非线性运动的示图。

在视频中,可能发生对象的非线性运动。在示例中,如在图8所示的示例中,可能发生对象的非线性运动(诸如相机放大、缩小、旋转或仿射变换等)。对于对象的非线性运动,平移运动矢量可能不能有效地表示对象的运动。因此,对于发生对象的非线性运动的区域,可以通过使用仿射运动而不是平移运动来提高编码效率。

图9是根据本公开的实施例的基于仿射运动的帧间预测方法的流程图。

可基于从比特流解析的信息来确定基于仿射运动的帧间预测方法是否被应用于当前块。具体地,基于指示仿射合并模式是否被应用于当前块的标志或指示仿射运动矢量预测模式是否被应用于当前块的标志中的至少一个,将确定基于仿射运动的帧间预测方法是否被应用于当前块。

当将基于仿射运动的帧间预测方法应用于当前块时,可确定当前块的仿射运动模型(s901)。仿射运动模型可被确定为6参数仿射运动模型或4参数仿射运动模型中的至少一个。6参数仿射运动模型通过使用6个参数表达仿射运动,并且4参数仿射运动模型通过使用4个参数表达仿射运动。

等式2通过使用6个参数来表示仿射运动。仿射运动表示由仿射种子矢量确定的预定区域的平移运动。

[等式2]

vx=ax-by+e

vy=cx+dy+f

在通过使用6个参数表达仿射运动的情况下,可表达复杂的运动,但是由于需要更多的比特来对每个参数进行编码,因此编码效率会降低。因此,可通过使用4个参数来表达仿射运动。等式3通过使用4个参数表达仿射运动。

[等式3]

vx=ax-by+e

vy=bx+ay+f

用于确定当前块的仿射运动模型的信息可在比特流中被编码并被用信号发送。在示例中,该信息可以是1比特标志“affine_type_flag”。如果标志的值为0,则其可表示4参数仿射运动模型被应用,并且如果标志的值为1,则其可表示6参数仿射运动模型被应用。可以以条带、并行块或块(例如,编码块或编码树单元)为单位对标志进行编码。当按照条带级用信号发送标志时,按照条带级确定的仿射运动模型可被应用于属于条带的所有块。

可选地,基于当前块的仿射帧间预测模式,可确定当前块的仿射运动模型。在示例中,当仿射合并模式被应用时,当前块的仿射运动模型可被确定为4参数运动模型。另一方面,当仿射运动矢量预测模式被应用时,用于确定当前块的仿射运动模型的信息可在比特流中被编码并被用信号发送。在示例中,当仿射运动矢量预测模式被应用于当前块时,可基于1比特标志“affine_type_flag”确定当前块的仿射运动模型。

接下来,可以推导当前块的仿射种子矢量(s902)。当选择4参数仿射运动模型时,可推导当前块的两个控制点处的运动矢量。另一方面,当选择6参数仿射运动模型时,可推导当前块的三个控制点处的运动矢量。控制点处的运动矢量可被称作仿射种子矢量。控制点可以包括当前块的左上角、右上角或左下角中的至少一个。

图10是示出每个仿射运动模型的仿射种子矢量的示图。

在4参数仿射运动模型中,可推导左上角、右上角或左下角中的两者的仿射种子矢量。在示例中,如在图10的(a)中所示的示例中,当选择4参数仿射运动模型时,可通过使用当前块的左上角(例如左上方样点(x1,y1))的仿射种子矢量sv0和当前块的右上角(例如右上方样点(x1,y1))的仿射种子矢量sv1来推导仿射矢量。可以使用左下角的仿射种子矢量而不是左上角的仿射种子矢量,或者使用左下角的仿射种子矢量而不是右上角的仿射种子矢量。

在6参数仿射运动模型中,可推导左上角、右上角和左下角的仿射种子矢量。在示例中,如在图10的(b)中所示的示例中,当选择6参数仿射运动模型时,可通过使用当前块的左上角(例如左上方样点(x1,y1))的仿射种子矢量sv0、当前块的右上角(例如右上方样点(x1,y1))的仿射种子矢量sv1和当前块的左上角(例如左上方样点(x2,y2))的仿射种子矢量sv2来推导仿射矢量。

在稍后描述的实施例中,在4参数仿射运动模型下,左上方控制点和右上方控制点处的仿射种子矢量分别被称为第一仿射种子矢量和第二仿射种子矢量。在稍后描述的使用第一仿射种子矢量和第二仿射种子矢量的实施例中,可以用左下方控制点处的仿射种子矢量(第三仿射种子矢量)或右下方控制点处的仿射种子矢量(第四仿射种子矢量)替换第一仿射种子矢量和第二仿射种子矢量中的至少一个。

另外,在6参数仿射运动模型下,左上方控制点、右上方控制点和左下方控制点处的仿射种子矢量分别被称为第一仿射种子矢量、第二仿射种子矢量和第三仿射种子矢量。在稍后描述的使用第一仿射种子矢量、第二仿射种子矢量和第三仿射种子矢量的实施例中,可以用右下方控制点处的仿射种子矢量(第四仿射种子矢量)替换第一仿射种子矢量、第二仿射种子矢量和第三仿射种子矢量中的至少一个。

可以通过使用仿射种子矢量来推导每个子块的仿射矢量(s903)。在这方面,仿射矢量表示基于仿射种子矢量推导的平移运动矢量。子块的仿射矢量可被称作仿射子块运动矢量或子块运动矢量。

图11是示出4参数运动模型下的子块的仿射矢量的示图。

可基于控制点的位置、子块的位置和仿射种子矢量推导子块的仿射矢量。在示例中,等式4表示推导仿射子块运动矢量的示例。

[等式4]

在等式4中,(x,y)表示子块的位置。在这方面,子块的位置表示包括在子块中的基本样点的位置。基本样点可以是位于子块的左上角处的样点或者x轴或y轴坐标中的至少一个在中心位置的样点。(x0,y0)表示第一控制点的位置,并且(sv0x,sv0y)表示第一仿射种子矢量。另外,(x1,y1)表示第二控制点的位置,并且(sv1x,sv1y)表示第二仿射种子矢量。

当第一控制点和第二控制点分别与当前块的左上角和右上角相应时,x1-x0可被设置为与当前块的宽度相同的值。

之后,可以通过使用每个子块的仿射矢量来执行每个子块的运动补偿预测(s904)。作为执行运动补偿预测的结果,可以产生每个子块的预测块。子块的预测块可以被设置为当前块的预测块。

可基于与当前块邻近的邻近块的仿射种子矢量推导当前块的仿射种子矢量。在当前块的帧间预测模式是仿射合并模式时,可将包括在合并候选列表中的合并候选的仿射种子矢量确定为当前块的仿射种子矢量。另外,在当前块的帧间预测模式是仿射合并模式时,包括当前块的参考画面索引、特定方向预测标志或双向权重中的至少一个的运动信息也可被设置为与合并候选相同。

接下来,详细描述使用平移运动信息的帧间预测方法。

当前块的运动信息可从另一块的运动信息被推导。在这方面,另一块可以是在当前块之前通过帧间预测被编码/解码的块。将当前块的运动信息设置为与另一块的运动信息相同可被定义为合并模式。此外,将另一块的运动矢量设置为当前块的运动矢量的预测值可被定义为运动矢量预测模式。

图12是在合并模式下推导当前块的运动信息的处理的流程图。

可以推导当前块的合并候选(s1201)。可以从在当前块之前通过帧间预测被编码/被解码的块推导当前块的合并候选。

图13是示出用于推导合并候选的候选块的示图。

候选块可包括邻近块或非邻近块中的至少一个,其中,所述邻近块包括与当前块相邻的样点,所述非邻近块包括不与当前块相邻的样点。在下文中,将确定候选块的样点定义为基本样点。另外,与当前块相邻的基本样点被称作邻近基本样点,并且不与当前块相邻的基本样点被称作非邻近基本样点。

邻近基本样点可被包括在当前块的最左侧列的邻近列或当前块的最上方行的邻近行中。在示例中,在当前块的左上方样点的坐标为(0,0)时,包括在位置(-1,h-1)、(w-1,-1)、(w,-1)、(-1,h)或(-1,1)处的基本样点的块中的至少一个块可被用作候选块。参照示图,索引0到索引4的邻近块可被用作候选块。

非邻近基本样点表示相对于与当前块相邻的基本样点的x轴距离或y轴距离中的至少一个具有预定义值的样点。在示例中,包括相对于左侧基本样点的x轴距离为预定义值的基本样点的块、包括相对于上方基本样点的y轴距离为预定义值的非邻近样点的块或包括相对于左上方基本样点的x轴距离和y轴距离为预定义值的非邻近样点的块中的至少一个可被用作候选块。预定义值可以是诸如4、8、12、16等的自然数。参照示图,索引5到索引26中的至少一个块可被用作候选块。

不位于与邻近基本样点相同的垂直线、水平线或对角线上的样点可被设置为非邻近基本样点。

合并候选的运动信息可被设置为与候选块的运动信息相同。在示例中,候选块的运动矢量、参考画面索引、预测方向或双向权重索引中的至少一个可被设置为合并候选的运动信息。

可以产生包括合并候选的合并候选列表(s1202)。

可根据预定顺序分配合并候选列表中的合并候选的索引。在示例中,索引可以按照以下项的顺序被分配:从左侧邻近块推导的合并候选、从上方邻近块推导的合并候选、从右上方邻近块推导的合并候选、从左下方邻近块推导的合并候选、从左上方邻近块推导的合并候选和从时间邻近块推导的合并候选。

当多个合并候选包括在合并候选中时,可以选择多个合并候选中的至少一个(s1203)。具体地,可以在比特流中用信号发送用于指定多个合并候选中的任意一个的信息。在示例中,可在比特流中用信号发送表示包括在合并候选列表中的合并候选中的任意一个合并候选的索引的信息merge_idx。

当包括在合并候选列表中的合并候选的数量小于阈值时,包括在运动信息表中的运动信息候选可作为合并候选被添加到合并候选列表。在这方面,阈值可以是可被包括在合并候选列表中的合并候选的最大数量或从合并候选的最大数量减去偏移的值。偏移可以是自然数(诸如1或2等)。

运动信息表包括从基于当前画面中的帧间预测被编码/被解码的块推导的运动信息候选。在示例中,包括在运动信息表中的运动信息候选的运动信息可被设置为与基于帧间预测被编码/被解码的块的运动信息相同。在这方面,运动信息可包括运动矢量、参考画面索引、预测方向或双向权重索引中的至少一个。

包括在运动信息表中的运动信息候选也可被称作帧间区域合并候选或预测区域合并候选。

可以在编码器和解码器中对可以包括在运动信息表中的运动信息候选的最大数量进行预定义。在示例中,可包括在运动信息表中的运动信息候选的最大数量可以是1、2、3、4、5、6、7、8或更多(例如,16)。

可选地,可在比特流中用信号发送表示可被包括在运动信息表中的运动信息候选的最大数量的信息。可按照序列、画面或条带级别用信号发送信息。所述信息可表示可被包括在运动信息表中的运动信息候选的最大数量。可选地,所述信息可表示可被包括在运动信息表中的运动信息候选的最大数量与可被包括在合并候选列表中的合并候选的最大数量之间的差。

可选地,可根据画面尺寸、条带尺寸或编码树单元尺寸来确定可被包括在运动信息表中的运动信息候选的最大数量。

运动信息表可以以画面、条带、并行块、分块、编码树单元或编码树单元线(行或列)为单位被初始化。在示例中,当条带被初始化时,运动信息表也被初始化,因此运动信息表可不包括任意运动信息候选。

可选地,可在比特流中用信号发送表示运动信息表是否将被初始化的信息。可按照条带、并行块、分块或块级别用信号发送所述信息。在所述信息指示运动信息表的初始化之前,可使用预先配置的运动信息表。

可选地,关于初始运动信息候选的信息可在画面参数集或条带头中被用信号发送。尽管条带被初始化,但运动信息表可包括初始运动信息候选。因此,初始运动信息候选可被用于作为条带中的第一编码/解码目标的块。

可选地,可将包括在先前编码树单元的运动信息表中的运动信息候选设置为初始运动信息候选。在示例中,可将包括在先前编码树单元的运动信息表中的运动信息候选中具有最小索引或具有最大索引的运动信息候选设置为初始运动信息候选。

按照编码/解码的顺序对块进行编码/解码,并且可以按照编码/解码的顺序将基于帧间预测编码/解码的块顺序地设置为运动信息候选。

图14是解释运动信息表的更新方面的示图。

对于当前块,当执行帧间预测时(s1401),可以基于当前块推导运动信息候选(s1402)。运动信息候选的运动信息可被设置为与当前块的运动信息相同。

当运动信息表为空时(s1403),基于当前块推导的运动信息候选可被添加到运动信息表(s1404)。

当运动信息表已经包括运动信息候选时(s1403),可执行对当前块的运动信息(或基于其推导的运动信息候选)的冗余校验(s1405)。冗余校验用于确定运动信息表中的预存储的运动信息候选的运动信息是否与当前块的运动信息相同。可对运动信息表中的所有预存储的运动信息候选执行冗余校验。可选地,可对运动信息表中的预存储的运动信息候选中的具有超过或低于阈值的索引的运动信息候选执行冗余校验。可选地,可针对预定义数量的运动信息候选执行冗余校验。在示例中,可将具有最小索引或具有最大索引的2个运动信息候选确定为冗余校验的目标。

当不包括具有与当前块相同的运动信息的运动信息候选时,可将基于当前块推导的运动信息候选添加到运动信息表(s1408)。可基于运动信息候选的运动信息(例如,运动矢量/参考画面索引等)是否相同来确定运动信息候选是否相同。

在这方面,当最大数量的运动信息候选已经存储在运动信息表中时(s1406),最早的运动信息候选可被删除(s1407),并且基于当前块推导的运动信息候选可被添加到运动信息表(s1408)。在这方面,最早的运动信息候选可以是具有最大或最小索引的运动信息候选。

运动信息候选可通过各自的索引被识别。当将从当前块推导的运动信息候选被添加到运动信息表时,可将最小索引(例如,0)分配给运动信息候选,并且预存储的运动信息候选的索引可增加1。在这方面,当最大数量的运动信息候选已经存储在运动信息表中时,具有最大索引的运动信息候选被去除。

可选地,当将从当前块推导的运动信息候选被添加到运动信息表时,可将最大索引分配到运动信息候选。在示例中,当运动信息表中的预存储的运动信息候选的数量小于最大值时,可将具有与预存储的运动信息候选的数量相同的值的索引分配给运动信息候选。可选地,当运动信息表中的预存储的运动信息候选的数量等于最大值时,可将从最大值减去1的索引分配给运动信息候选。可选地,具有最小索引的运动信息候选被去除,并且残差预存储运动信息候选的索引被减少1。

图15是示出运动信息表的更新方面的示图。

假设当从当前块推导的运动信息候选被添加到运动信息表时,最大索引被分配给运动信息候选。另外,假设运动信息候选的最大数量已经存储在运动信息表中。

当从当前块推导的运动信息候选hmvpcand[n+1]被添加到运动信息表hmvpcandlist时,可删除预存储的运动信息候选中具有最小索引的运动信息候选hmvpcand[0],并且残差运动信息候选的索引可减少1。另外,可将从当前块推导的运动信息候选hmvpcand[n+1]的索引设置为最大值(对于图15中所示的示例,n)。

当与基于当前块推导的运动信息候选相同的运动信息候选被预存储时(s1405),基于当前块推导的运动信息候选可不被添加到运动信息表(s1409)。

可选地,在基于当前块推导的运动信息候选被添加到运动信息表时,与运动信息候选相同的预存储的运动信息候选可被去除。在这种情况下,它产生与预存储的运动信息候选的索引被新更新时相同的效果。

图16是示出预存储的运动信息候选的索引被更新的示例的示图。

当与从当前块推导的运动信息候选mvcand相同的预存储的运动信息候选的索引为hidx时,预存储的运动信息候选可被去除,并且索引大于hidx的运动信息候选的索引可减少1。在示例中,图16中所示的示例示出在运动信息表hvmpcandlist中删除与mvcand相同的hmvpcand[2],并且从hmvpcand[3]到hmvpcand[n]的索引减少1。

并且,可将基于当前块推导的运动信息候选mvcand添加到运动信息表的末尾。

可选地,分配给与基于当前块推导的运动信息候选相同的预存储的运动信息候选的索引可被更新。例如,预存储的运动信息候选的索引可被改变为最小值或最大值。

包括在预定区域中的块的运动信息可被设置为不被添加到运动信息表。在示例中,基于包括在合并处理区域中的块的运动信息推导的运动信息候选可不被添加到运动信息表。由于没有定义合并处理区域中包括的块的编码/解码顺序,因此将它们中的任意一个的运动信息用于它们中的另一个的帧间预测是不合适的。因此,基于包括在合并处理区域中的块推导的运动信息候选可不被添加到运动信息表。

可选地,可将小于预设尺寸的块的运动信息设置为不被添加到运动信息表。在示例中,基于宽度或高度小于4或8的编码块的运动信息或4×4尺寸的编码块的运动信息推导的运动信息候选可不被添加到运动信息表。

基于当前块的帧间预测模式,可确定当前块是否将被用作运动信息候选。在示例中,基于仿射运动模型被编码/被解码的块可被设置为不可用作运动信息候选。因此,尽管当前块通过帧间预测被编码/被解码,但在当前块的帧间预测模式为仿射预测模式时,可不基于当前块更新运动信息表。

运动信息候选可被设置以包括除运动信息以外的另外的信息。在示例中,块的尺寸、形状或分区信息中的至少一个可被另外存储在运动信息候选中。在配置当前块的合并候选列表时,可以仅使用运动信息候选中的尺寸、形状或分区信息与当前块相同或相似的运动信息候选,或者可以将尺寸、形状或分区信息与当前块相同或相似的运动信息候选预先添加到合并候选列表。

当包括在当前块的合并候选列表中的合并候选的数量小于阈值时,包括在运动信息表中的运动信息候选可作为合并候选被添加到合并候选列表。以反映按照升序或降序的运动信息候选的索引的排序顺序的顺序执行另外的处理。在示例中,可首先将具有最大索引的运动信息候选添加到当前块的合并候选列表。

当包括在运动信息表中的运动信息候选被添加到合并候选列表时,可执行该运动信息候选与合并候选列表中的预存储的合并候选之间的冗余校验。作为冗余校验的结果,具有与预存储的合并候选相同的运动信息的运动信息候选可不被添加到合并候选列表。

可仅对包括在运动信息表中的运动信息候选的一部分执行冗余校验。在示例中,可仅对具有等于或大于阈值的索引或具有等于或小于阈值的索引的运动信息候选执行冗余校验。可选地,可仅对具有最大索引或最小索引的n个运动信息候选执行冗余校验。

可选地,可以仅对合并候选列表中的预存储的合并候选的一部分执行冗余校验。在示例中,可仅对索引等于或大于阈值或者等于或小于阈值的合并候选或从特定位置处的块推导的合并候选执行冗余校验。在这方面,特定位置可包括当前块的左侧邻近块、上方邻近块、右上方邻近块或左下方邻近块中的至少一个。

图17是示出仅对合并候选的一部分执行冗余校验的示例的示图。

当运动信息候选hmvpcand[j]被添加到合并候选列表时,可针对运动信息候选执行与具有最大索引的2个合并候选mergecandlist[nummerge-2]和mergecandlist[nummerge-1]的冗余校验。在这方面,nummerge可以示出可用空间合并候选和时间合并候选的数量。

与所示的示例不同,当运动信息候选hmvpcand[j]被添加到合并候选列表时,可针对运动信息候选执行与具有最小索引的2个合并候选的冗余校验。例如,可以校验mergecandlist[0]和mergecandlist[1]是否与hmvpcand[j]相同。

可选地,可以仅对从特定位置推导的合并候选执行冗余校验。在示例中,可以对从位于当前块左侧或当前块上方的邻近块推导的合并候选中的至少一个执行冗余校验。当不存在从合并候选列表中的特定位置推导的合并候选时,可在没有冗余校验的情况下将运动信息候选添加到合并候选列表。

当运动信息候选hmvpcand[j]被添加到合并候选列表时,可针对运动信息候选执行与具有最大索引的2个合并候选mergecandlist[nummerge-2]和mergecandlist[nummerge-1]的冗余校验。在这方面,nummerge可以示出可用空间合并候选和时间合并候选的数量。

可仅针对运动信息候选的一部分执行与合并候选的冗余校验。在示例中,可仅对包括在运动信息表中的运动信息候选中具有大索引或小索引的n个运动信息候选执行冗余校验。在示例中,可仅对包括在运动信息表的运动信息候选中具有运动信息候选的数量与索引之间的差低于阈值的索引的运动信息候选执行冗余校验。当阈值为2时,可仅对包括在运动信息表中的运动信息候选中具有最大索引值的3个运动信息候选执行冗余校验。对于除了上述3个运动信息候选之外的运动信息候选,可以省略冗余校验。当省略冗余校验时,可将运动信息候选添加到合并候选列表,而不管是否存在与合并候选相同的运动信息。

相反,冗余校验被设置为仅对包括在运动信息表的运动信息候选中具有运动信息候选的数量与索引之间的差超过阈值的索引的运动信息候选执行。

可以在编码器和解码器中重新定义执行冗余校验的运动信息候选的数量。在示例中,阈值可以是整数(诸如0、1或2)。

可选地,可基于包括在合并候选列表中的合并候选的数量或包括在运动信息表中的运动信息候选的数量中的至少一个来确定阈值。

当发现与第一运动信息候选相同的合并候选时,可在第二运动信息候选的冗余校验中省略对与第一运动信息候选相同的合并候选的冗余校验。

图18是示出与特定合并候选的冗余校验被省略的示例的示图。

当索引为i的运动信息候选hmvpcand[i]被添加到合并候选列表时,执行运动信息候选与合并候选列表中的预存储的合并候选之间的冗余校验。在这方面,当发现与运动信息候选hmvpcand[i]相同的合并候选mergecandlist[j]时,可在运动信息候选hmvpcand[i]不被添加到合并候选列表的情况下执行索引为i-1的运动信息候选hmvpcand[i-1]与合并候选之间的冗余校验。在这方面,可省略运动信息候选hmvpcand[i-1]与合并候选mergecandlist[j]之间的冗余校验。

在示例中,在图18所示的示例中,确定hmvpcand[1]和mergecandlist[2]是相同的。因此,可在hmvpcand[i]不被添加到合并候选列表的情况下执行hmvpcand[i-1]的冗余校验。在这方面,可以省略hmvpcand[i-1]与mergecandlist[2]之间的冗余校验。

当包括在当前块的合并候选列表中的合并候选的数量小于阈值时,除运动信息候选之外,可另外包括成对合并候选或零合并候选中的至少一个。成对合并候选表示具有从对多于2个合并候选的运动矢量求平均获得的值作为运动矢量的合并候选,并且零合并候选表示运动矢量为0的合并候选。

对于当前块的合并候选列表,可以按照下面的顺序添加合并候选。

空间合并候选-时间合并候选-运动信息候选-(仿射运动信息候选)-成对合并候选-零合并候选

空间合并候选表示从邻近块或非邻近块中的至少一个推导的合并候选,并且时间合并候选表示从先前参考画面推导的合并候选。仿射运动信息候选表示从通过仿射运动模型被编码/被解码的块推导的运动信息候选。

运动信息表可用于运动矢量预测模式中。在示例中,当包括在当前块的运动矢量预测候选列表中的运动矢量预测候选的数量小于阈值时,包括在运动信息表中的运动信息候选可被设置为当前块的运动矢量预测候选。具体地,运动信息候选的运动矢量可被设置为运动矢量预测候选。

如果包括在当前块的运动矢量预测候选列表中的运动矢量预测候选中的任意一个被选择,则可将选择的候选设置为当前块的运动矢量预测因子。然后,在当前块的运动矢量残差值被解码之后,可通过将运动矢量预测因子和运动矢量残差值相加来获得当前块的运动矢量。

可以按照下面的顺序配置当前块的运动矢量预测候选列表。

空间运动矢量预测候选-时间运动矢量预测候选-运动信息候选-(仿射运动信息候选)-零运动矢量预测候选

空间运动矢量预测候选表示从邻近块或非邻近块中的至少一个推导的运动矢量预测候选,并且时间运动矢量预测候选表示从先前参考画面推导的运动矢量预测候选。仿射运动信息候选表示从通过仿射运动模型被编码/解码的块推导的运动信息候选。零运动矢量预测候选表示运动矢量的值为0的候选。

可以定义大于编码块的合并处理区域。合并处理区域中包括的编码块可以并行地被处理,而无需顺序地被编码/解码。在这方面,不被顺序地编码/解码表示编码/解码的顺序未被定义。因此,可以独立地处理合并处理区域中包括的块的编码/解码处理。可选地,包括在合并处理区域中的块可共享合并候选。在这方面,可基于合并处理区域推导合并候选。

根据上述特征,合并处理区域可以被称为并行处理区域、共享合并区域(smr)或合并估计区域(mer)。

可基于编码块推导当前块的合并候选。然而,在当前块被包括在大于当前块的合并处理区域中时,被包括在与当前块相同的合并处理区域中的候选块可以被设置为不可用作合并候选。

图19是示出包括在与当前块相同的合并处理区域中的候选块被设置为不可用作合并候选的示例的示图。

在图20的左侧所示的示例中,在cu5的编码/解码中,包括与cu5相邻的基本样点的块可以被设置为候选块。在这方面,包括在与cu5相同的合并处理区域中的候选块x3和x4可以被设置为不可用作cu5的合并候选。但是,不包括在与cu5相同的合并处理区域中的候选块x0、x1和x2可以被设置为可用作合并候选。

在图2018的右侧所示的示例中,在cu8的编码/解码中,包括与cu8相邻的基本样点的块可以被设置为候选块。在这方面,包括在与cu8相同的合并处理区域中的候选块x6、x7和x8可以被设置为不可用作合并候选。然而,不包括在与cu8相同的合并处理区域中的候选块x5和x9可以被设置为可用作合并候选。

可选地,当合并处理区域中包括当前块时,可以将与当前块和合并处理区域相邻的邻近块设置为候选块。

图20是示出在当前块被包括在合并处理区域中时推导当前块的合并候选的示例的示图。

如在图20的(a)所示的示例中,与当前块相邻的邻近块可以被设置为用于推导当前块的合并候选的候选块。在这方面,包括在与当前块相同的合并处理区域中的候选块可以被设置为不可用作合并候选。在示例中,在推导编码块cu3的合并候选时,包括在与编码块cu3相同的合并处理区域中的上方邻近块y3和右上方邻近块y4可以被设置为不可用作编码块cu3的合并候选。

通过以预定义顺序扫描与当前块相邻的邻近块,可推导合并候选。在示例中,预定义顺序可以是y1、y3、y4、y0和y2的顺序。

如图20的(b)所示的示例,当可从与当前块相邻的邻近块推导的合并候选的数量小于从合并候选的最大数量减去偏移的值或最大数量时,可通过使用与合并处理区域相邻的邻近块来推导当前块的合并候选。在示例中,与包括编码块cu3的合并处理区域相邻的邻近块可以被设置为编码块cu3的候选块。在这方面,与合并处理区域相邻的邻近块可以包括左侧邻近块x1、上方邻近块x3、左下方邻近块x0、右上方邻近块x4或左上方邻近块x2中的至少一个。

通过以预定义顺序扫描与合并处理区域相邻的邻近块,可推导合并候选。在示例中,预定义顺序可以是x1、x3、x4、x0和x2的顺序。

总之,可通过按照下面的扫描顺序扫描候选块来推导包括在合并处理区域中的编码块cu3上的合并候选。

(y1,y3,y4,y0,y2,x1,x3,x4,x0,x2)

但是,上述候选块的扫描顺序仅示出了本公开的示例,并且可以按照与以上示例不同的顺序扫描候选块。可选地,可基于当前块或合并处理区域的尺寸或形状中的至少一个来自适应地确定扫描顺序。

合并处理区域可以是正方形或非正方形的。可在比特流中用信号发送用于确定合并处理区域的信息。该信息可以包括表示合并处理区域的形状的信息或表示合并处理区域的尺寸的信息中的至少一个。当合并处理区域为非正方形时,可在比特流中用信号发送表示合并处理区域的尺寸的信息、表示合并处理区域的宽度或高度的信息或表示合并处理区域的宽度与高度之间的比率的信息中的至少一个。

可以基于在比特流中用信号发送的信息、画面分辨率、条带的尺寸或并行块的尺寸中的至少一个来确定合并处理区域的尺寸。

如果对合并处理区域中包括的块执行运动补偿预测,则可将基于执行运动补偿预测的块的运动信息推导的运动信息候选添加到运动信息表。

但是,如果从合并处理区域中包括的块推导的运动信息候选被添加到运动信息表,则可能发生从该块推导的运动信息候选被用于编码/解码实际上比该块慢的合并处理区域中的其他块的编码/解码的情况。换言之,尽管在合并处理区域中包括的块的编码/解码中应该排除块之间的依赖性,但是可能发生通过使用合并处理区域中包括的其他块的运动信息来执行运动预测补偿的情况。为了解决这样的问题,尽管完成了合并处理区域中包括的块的编码/解码,但是可以不将编码/解码完成的块的运动信息添加到运动信息表。

可选地,可通过仅使用合并处理区域中的预定义位置的块来更新运动信息表。预定义位置可以包括合并处理区域中的左上方位置的块、右上方位置的块、左下方位置的块、右下方位置的块、中心位置的块、与右侧边界相邻的块或与下方边界相邻的块中的至少一个。在示例中,可在运动信息表中仅更新与合并处理区域中的右下角相邻的块的运动信息,并且可不在运动信息表中更新其它块的运动信息。

可选地,在包括在合并处理区域中的所有块被解码之后,可将从所述块推导的运动信息候选添加到运动信息表。换言之,虽然包括在合并处理区域中的块被编码/解码,但可不更新运动信息表。

在示例中,如果对包括在合并处理区域中的块执行运动补偿预测,则可按照预定义顺序将从该块推导的运动信息候选添加到运动信息表。在这方面,可以按照合并处理区域或编码树单元中的编码块的扫描顺序来确定预定义顺序。扫描顺序可以是光栅扫描、水平扫描、垂直扫描或z字形扫描中的至少一个。可选地,可基于每个块的运动信息或具有相同运动信息的块的数量来确定预定义顺序。

可选地,包括单向运动信息的运动信息候选可在包括双向运动信息的运动信息候选之前被添加到运动信息表。相反,包括双向运动信息的运动信息候选可在包括单向运动信息的运动信息候选之前被添加到运动信息表。

可选地,可在合并处理区域或编码树单元中按高使用频率或低使用频率的顺序将运动信息候选添加到运动信息表。

在当前块被包括在合并处理区域中并且包括在当前块的合并候选列表中的合并候选的数量小于最大数量时,可将包括在运动信息表中的运动信息候选添加到合并候选列表。在这方面,可将从包括在与当前块相同的合并处理区域中的块推导的运动信息候选设置为不被添加到当前块的合并候选列表。

可选地,在当前块被包括在合并处理区域中时,可将其设置为不使用包括在运动信息表中的运动信息候选。换言之,尽管包括在当前块的合并候选列表中的合并候选的数量小于最大数量,但包括在运动信息表中的运动信息候选可不被添加到合并候选列表。

在另一示例中,可配置关于合并处理区域或编码树单元的运动信息表。该运动信息表起到临时存储合并处理区域中包括的块的运动信息的作用。为了区分一般运动信息表与用于合并处理区域或编码树单元的运动信息表,用于合并处理区域或编码树单元的运动信息表被称为临时运动信息表。并且,存储在临时运动信息表中的运动信息候选被称为临时运动信息候选。

图21是示出临时运动信息表的示图。

可配置用于编码树单元或合并处理区域的临时运动信息表。当对包括在编码树单元或合并处理区域中的当前块执行运动补偿预测时,可不将块的运动信息添加到运动信息表hmvpcandlist。取代于此,可将从块推导的临时运动信息候选添加到临时运动信息表hmvpmercandlist。换言之,添加到临时运动信息表的临时运动信息候选可不被添加到运动信息表。因此,运动信息表可不包括基于被包括在编码树单元或合并处理区域中的块的运动信息推导的运动信息候选,其中,编码树单元或合并处理区域包括当前块。

可选地,可仅将包括在合并处理区域中的块中的一些块的运动信息添加到临时运动信息表。在示例中,仅合并处理区域中的预定义位置处的块可用于更新运动信息表。预定义位置可以包括合并处理区域中的左上方位置的块、右上方位置的块、左下方位置的块、右下方位置的块、中心位置的块、与右侧边界相邻的块或与下方边界相邻的块中的至少一个。在示例中,可仅将与合并处理区域中的右下角相邻的块的运动信息添加到临时运动信息表,并且可不将其它块的运动信息添加到临时运动信息表。

可由临时运动信息表包括的临时运动信息候选的最大数量可被设置为与运动信息候选的最大数量相同。可选地,可根据编码树单元或合并处理区域的尺寸来确定可由临时运动信息表包括的临时运动信息候选的最大数量。可选地,可将可包括在临时运动信息表中的临时运动信息候选的最大数量设置为小于可包括在运动信息表中的运动信息候选的最大数量。

包括在编码树单元或合并处理区域中的当前块可被设置为不使用关于相应编码树单元或合并处理区域的临时运动信息表。换言之,当包括在当前块的合并候选列表中的合并候选的数量小于阈值时,可将包括在运动信息表中的运动信息候选添加到合并候选列表,并且可不将包括在临时运动信息表中的临时运动信息候选添加到合并候选列表。因此,包括在与当前块相同的编码树单元或相同的合并处理区域中的其他块的运动信息可以不用于当前块的运动补偿预测。

如果编码树单元或合并处理区域中包括的所有块的编码/解码完成,则可以统一运动信息表和临时运动信息表。

图22是示出运动信息表和临时运动信息表被统一的示例的示图。

如在图22中所示的示例中,如果包括在编码树单元或合并处理区域中的所有块的编码/解码完成,则包括在临时运动信息表中的临时运动信息候选可在运动信息表中被更新。

在这方面,包括在临时运动信息表中的临时运动信息候选可按照插入临时运动信息表中的顺序被添加到运动信息表(换言之,按照索引值的升序或降序)。

在另一示例中,包括在临时运动信息表中的临时运动信息候选可按照预定义顺序被添加到运动信息表。在这方面,可以按照合并处理区域或编码树单元中的编码块的扫描顺序来确定预定义顺序。扫描顺序可以是光栅扫描、水平扫描、垂直扫描或z字形扫描中的至少一个。可选地,可基于每个块的运动信息或具有相同运动信息的块的数量来确定预定义顺序。

可选地,包括单向运动信息的临时运动信息候选可在包括双向运动信息的临时运动信息候选之前被添加到运动信息表。相反,包括双向运动信息的临时运动信息候选可在包括单向运动信息的临时运动信息候选之前被添加到运动信息表。

可选地,可在合并处理区域或编码树单元中按照高使用频率或低使用频率的顺序将临时运动信息候选添加到运动信息表。

在将包括在临时运动信息表中的临时运动信息候选添加到运动信息表的情况下,可执行对临时运动信息候选的冗余校验。在示例中,当与包括在临时运动信息表中的临时运动信息候选相同的运动信息候选被预存储在运动信息表中时,可不将临时运动信息候选添加到运动信息表。在这方面,可对包括在运动信息表中的运动信息候选的一部分执行冗余校验。在示例中,可对具有超过阈值或低于阈值的索引的运动信息候选执行冗余校验。在示例中,当临时运动信息候选等于具有超过预定义值的索引的运动信息候选时,可不将临时运动信息候选添加到运动信息表。

可以限制将从与当前块相同的编码树单元或相同的合并处理区域中包括的块推导的运动信息候选作为当前块的合并候选的使用。为此,可另外存储块的地址信息以用于运动信息候选。块的地址信息可以包括块的位置、块的地址、块的索引、包括块的合并处理区域的位置、包括块的合并处理区域的地址、包括块的合并处理区域的索引、包括块的编码树区域的位置、包括块的编码树区域的地址或包括块的编码树区域的索引中的至少一个。

可将编码块分区为多个预测单元,并且可针对分区的预测单元中的每个执行预测。在这种情况下,预测单元表示用于执行预测的基本单元。

可通过使用垂直线、水平线、斜线或对角线中的至少一个来对编码块进行分区。由分区线分区的预测单元可以具有三角形、四边形、梯形或五边形等形状。在示例中,编码块可以被分区为两个三角形预测单元、两个梯形预测单元、两个四边形预测单元或一个三角形预测单元和一个五边形预测单元。

可在比特流中用信号发送用于确定对编码块进行分区的线的数量、角度或位置中的至少一个的信息。在示例中,可在比特流中用信号发送表示编码块的分区类型候选中的一个的信息,或可在比特流中用信号发送指定对编码块进行分区的多个线候选中的一个的信息。在示例中,可在比特流中用信号发送指示多个线候选中的一个的索引信息。

对于多个线候选中的每个,角度或位置中的至少一个可以是不同的。可以基于当前块的尺寸或形状、可用合并候选的数量或特定位置处的邻近块是否可用作合并候选来确定可用于当前块的线候选的数量。

可选地,可在比特流中用信号发送用于确定线候选的数量或类型的信息。在示例中,可以通过使用1比特标志来确定具有大于对角线的角度的斜线和/或具有小于对角线的角度的斜线是否可用作线候选。可按照序列、画面或序列级别用信号发送所述信息。

可选地,可以基于编码块的帧内预测模式或帧间预测模式、可用合并候选的位置或邻近块的分区类型中的至少一个来自适应地确定对编码块进行分区的线的数量、角度或位置中的至少一个。

当编码块被分区为多个预测单元时,可以对每个分区的预测单元执行帧内预测或帧间预测。

图23是示出通过使用对角线将编码块分区为多个预测单元的示例的示图。

如在图23的(a)和图23的(b)所示的示例中,可以通过使用对角线将编码块分区为两个三角形预测单元。

图23的(a)和图23的(b)示出通过使用连接编码块的两个顶点的对角线将编码块分区为两个预测单元。但是,可以通过使用线的至少一端不通过编码块的顶点的斜线将编码块分区为两个预测单元。

图24是示出编码块被分区为两个预测单元的示例的示图。

如在图24的(a)和图24的(b)所示的示例中,可通过使用两端分别邻接编码块的上方边界和下方边界的斜线将编码块分区为两个预测单元。

可选地,如在图24的(c)和图24的(d)所示的示例中,可通过使用两端分别邻接编码块的左侧边界和右侧边界的斜线将编码块分区为两个预测单元。

可选地,可将编码块分区为具有不同尺寸的两个预测单元。在示例中,通过设置对编码块进行分区的斜线以满足形成一个顶点的两个边界,可以将编码块分区为具有不同尺寸的两个预测单元。

图25示出将编码块分区为多个不同尺寸的预测块的示例。

如在图25的(a)和图25的(b)所示的示例中,通过设置连接编码块的左上方和右下方的对角线以通过编码块的左侧边界、右侧边界、上方边界或下方边界而不是左上角或右下角,可以将编码块分区为具有不同尺寸的两个预测单元。

可选地,如在图25的(c)和图25的(d)所示的示例中,通过设置连接编码块的右上方和左下方的对角线以通过编码块的左侧边界、右侧边界、上方边界或下方边界而不是左上角或右下角,可以将编码块分区为具有不同尺寸的两个预测单元。

通过对编码块进行分区而产生的每个预测单元被称为“第n预测单元”。在示例中,在图23至图25所示的示例中,pu1可以被定义为第一预测单元,并且pu2可以被定义为第二预测单元。第一预测单元可以表示包括在编码块中的左下方位置处的样点或左上方位置处的样点的预测单元,并且第二预测单元可以表示包括在编码块中的右上方位置处的样点或右下方位置处的样点的预测单元。

相反,包括在编码块中的右上方位置处的样点或右下方位置处的样点的预测单元可以被定义为第一预测单元,并且包括在编码块中的左下方位置处的样点或左上方位置处的样点的预测单元可以被定义为第二预测单元。

当通过使用水平线、垂直线、对角线或斜线对编码块进行分区时,可以将其称为预测单元分区。通过应用预测单元分区而产生的预测单元可以根据其形状被称为三角形预测单元、四边形预测单元或五边形预测单元。

在下面的实施例中,将假设通过使用对角线对编码块进行分区。具体地,当通过使用对角线将编码块分区为两个预测单元时,其被称为对角线分区或三角形分区。但是,即使当通过使用具有与垂直线、水平线或对角线不同的角度的斜线来对编码块进行分区时,也可以根据下述实施例对预测单元进行编码/解码。换言之,与下面描述的三角形预测单元的编码/解码相关的事项也可被应用于四边形预测单元或五边形预测单元的编码/解码。

可以基于条带类型、可以包括在合并候选列表中的合并候选的最大数量、编码块的尺寸、编码块的形状、编码块的预测编码模式或父节点的分区方面中的至少一个来确定是否将预测单元分区应用于编码块。

在示例中,可基于当前条带是否为b类型来确定是否将预测单元分区应用于编码块。可仅在当前条带为b类型时允许预测单元分区。

可选地,可基于包括在合并候选列表中的合并候选的最大数量是否等于或大于2来确定是否将预测单元分区应用于编码块。仅当包括在合并候选列表中的合并候选的最大数量等于或大于2时,才可允许预测单元分区。

可选地,当宽度或高度中的至少一个大于64时,在实现冗余地访问64×64尺寸的数据处理单元的硬件期间可能出现缺点。因此,当编码块的宽度或高度中的至少一个大于阈值时,可能不允许将编码块分区为多个预测单元。在示例中,当编码块的宽度或高度中的至少一个大于64时(例如,当宽度或高度中的至少一个为128时),可以不使用预测单元分区。

可选地,通过考虑可以由实现的硬件同时处理的样点的最大数量,对于样点数量大于阈值的编码块,可不允许预测单元分区。在示例中,对于样点数量大于4096的编码树块,可不允许预测单元分区。

可选地,对于包括在编码块中的样点的数量小于阈值的编码块,可不允许预测单元分区。在示例中,当编码块中包括的样点的数量小于64时,可以将预测单元分区设置为不应用于编码块。

可选地,可以基于编码块的宽高比是否小于第一阈值或编码块的宽高比是否大于第二阈值中的至少一个来确定是否将预测单元分区应用于编码块。在这种情况下,如下面的等式5所示,编码块的宽高比whratio可以被确定为编码块的宽度cbw和高度cbh的比率。

[等式5]

whratio=abs(log2(cbw/cbh))

可选地,当编码块的宽高比小于第一阈值或大于第二阈值时,可以将预测单元分区应用于编码块。在示例中,当第一阈值为4时,对于64×4或4×64尺寸的编码块,可不允许预测单元分区。

可选地,基于父节点的分区类型,可以确定是否允许预测单元分区。在示例中,当基于四叉树分区对编码块(父节点)进行分区时,可将预测单元分区应用于编码块(叶节点)。另一方面,当基于二叉树分区或三叉树分区对编码块(父节点)进行分区时,可以将预测单元分区设置为对于编码块(叶节点)是不允许的。

可选地,基于编码块的预测编码模式,可以确定是否允许预测单元分区。在示例中,仅当通过帧内预测对编码块进行编码时、当通过帧间预测对编码块进行编码时、或者当通过预定义的帧间预测模式对编码块进行编码时,才可以允许预测单元分区。在这种情况下,预定义帧间预测模式可包括合并模式、运动矢量预测模式、仿射合并模式或仿射运动矢量预测模式中的至少一个。

可选地,基于并行处理区域的尺寸,可确定是否允许预测单元分区。在示例中,当编码块的尺寸大于并行处理区域的尺寸时,可以不使用预测单元分区。

通过考虑上面列举的条件中的两个或更多个,可以确定是否将预测单元分区应用于编码块。

在另一示例中,可在比特流中用信号发送表示是否将预测单元分区应用于编码块的信息。可按照序列、画面、条带或块级别用信号发送所述信息。例如,表示是否将预测单元分区应用于编码块的标志triangle_partition_flag可按照编码块级别用信号发送。

当确定将预测单元分区应用于编码块时,可在比特流中用信号发送表示对编码块进行分区的线的数量或线的位置的信息。

在示例中,当编码块由对角线分区时,可在比特流中用信号发送表示对编码块进行分区的对角线的方向的信息。在示例中,可在比特流中用信号发送表示对角线的方向的标志triangle_partition_type_flag。该标志表示编码块是否由连接左上方和右下方的对角线分区,或者编码块是否由连接右上方和左下方的对角线分区。当编码块由连接左上方和右下方的对角线分区时,其可被称为左侧三角形分区类型,并且当编码块由连接右上方和左下方的对角线分区时,其可被称为右侧三角形分区类型。在示例中,当标志的值为0时,其可表示编码块的分区类型为左侧三角形分区类型,并且当标志的值为1时,其可表示编码块的分区类型为右侧三角形分区类型。

另外,可在比特流中用信号发送表示预测单元的尺寸是否相同的信息或表示对编码块进行分区的对角线的位置的信息。在示例中,当表示预测单元的尺寸的信息表示预测单元的尺寸相同时,可以省略表示对角线的位置的信息的编码,并且可以通过使用经过编码块的两个顶点的对角线将编码块分区为两个预测单元。另一方面,当表示预测单元的尺寸的信息表示预测单元的尺寸不相同时,可以基于表示对角线的位置的信息来确定对编码块进行分区的对角线的位置。在示例中,当左侧三角形分区类型被应用于编码块时,位置信息可表示对角线是否与编码块的左侧边界和下方边界相遇,或者对角线是否与上方边界和右侧边界相遇。可选地,当右侧三角形分区类型被应用于编码块时,位置信息可表示对角线是否与编码块的右侧边界和下方边界相遇,或者对角线是否与上方边界和左侧边界相遇。

可按照编码块级别用信号发送表示编码块的分区类型的信息。因此,可以针对应用预测单元分区的每个编码块来确定分区类型。

在另一示例中,可用信号发送表示序列、画面、条带、并行块或编码树单元的分区类型的信息。在这种情况下,可以将按顺序应用对角线分区的编码块、画面、条带、并行块或编码树单元的分区类型设置为相同。

可选地,可对用于确定编码树单元中应用了预测单元分区的第一编码单元的分区类型的信息进行编码和用信号发送,并且可将第二应用了预测单元分区的编码单元或之后应用了预测单元分区的编码单元设置为使用与第一编码单元相同的分区类型。

在另一示例中,编码块的分区类型可基于邻近块的分区类型被确定。在这种情况下,邻近块可包括与编码块的左上角相邻的邻近块、与右上角相邻的邻近块、与左下角相邻的邻近块、位于上方的邻近块或位于左侧的邻近块中的至少一个。在示例中,可将当前块的分区类型设置为与邻近块的分区类型相同。可选地,可基于左侧三角形分区类型是否被应用于左上方邻近块或右侧三角形分区类型是否被应用于右上方邻近块或左下方邻近块来确定当前块的分区类型。

为了对第一预测单元和第二预测单元执行运动预测补偿,可推导第一预测单元和第二预测单元中的每个的运动信息。在这种情况下,第一预测单元和第二预测单元的运动信息可从包括在合并候选列表中的合并候选被推导。为了区分一般合并候选列表与用于推导预测单元的运动信息的合并候选列表,用于推导预测单元的运动信息的合并候选列表被称作分区模式合并候选列表或三角形合并候选列表。另外,分区模式合并候选列表中包括的合并候选被称为分区模式合并候选或三角形合并候选。但是,应用上述推导合并候选的方法和上述构成合并候选列表的方法来推导分区模式合并候选并构成分区模式合并候选列表也包括在本公开的范围内。

可在比特流中用信号发送用于确定可包括在分区模式合并候选列表中的分区模式合并候选的最大数量的信息。所述信息可表示可包括在合并候选列表中的合并候选的最大数量与可包括在分区模式合并候选列表中的分区模式合并候选的最大数量之间的差。

分区模式合并候选可从编码块的空间邻近块和时间邻近块被推导。

图26是示出用于推导分区模式合并候选的邻近块的示图。

可以通过使用位于编码块上方的邻近块、位于编码块左侧的邻近块或包括在与编码块不同的画面中的同位块中的至少一个来推导分区模式合并候选。上方邻近块可以包括:包括位于编码块上方的样点(xcb+cbw-1,ycb-1)的块、包括位于编码块上方的样点(xcb+cbw,ycb-1)的块或包括位于编码块上方的样点(xcb-1,ycb-1)的块中的至少一个。左侧邻近块可以包括:包括位于编码块左侧的样点(xcb-1,ycb+cbh-1)的块或包括位于编码块左侧的样点(xcb-1,ycb+cbh)的块中的至少一个。同位块可以被确定为包括与编码块的右上角相邻的样点(xcb+cbw,ycb+cbh)的块或包括位于同位画面中的编码块的中心的样点(xcb/2,ycb/2)的块中的一个。

可以按照预定义顺序搜索邻近块,并且分区模式合并候选列表可根据预定义顺序被配置有分区模式合并候选。在示例中,可按照b1、a1、b0、a0、c0、b2和c1的顺序搜索分区模式合并候选以配置分区模式合并候选列表。

预测单元的运动信息可基于分区模式合并候选列表被推导。换言之,预测单元可共享单个分区模式合并候选列表。

为了推导预测单元的运动信息,可在比特流中用信号发送用于指定包括在分区模式合并候选列表中的分区模式合并候选中的至少一个的信息。在示例中,可在比特流中用信号发送用于指定分区模式合并候选中的至少一个的索引信息merge_triangle_idx。

索引信息可指定第一预测单元的合并候选与第二预测单元的合并候选的组合。在示例中,下表1是表示根据索引信息merge_triangle_idx的合并候选的组合的示例。

[表1]

当索引信息的值merge_triangle_idx为1时,其表示第一预测单元的运动信息从索引为1的合并候选被推导,并且第二预测单元的运动信息从索引为0的合并候选被推导。可以通过索引信息merge_triangle_idx来确定用于推导第一预测单元的运动信息的分区模式合并候选和用于推导第二预测单元的运动信息的分区模式合并候选。还可以基于索引信息确定应用了对角线分区的编码块的分区类型。换言之,索引信息可以指定第一预测单元的合并候选、第二预测单元的合并候选和编码块的分区方向的组合。当编码块的分区类型由索引信息确定时,可不对表示对编码块进行分区的对角线的方向的信息triangle_partition_type_flag进行编码。表2表示索引信息merge_triangle_idx的编码块的分区类型。

[表2]

当变量triangledir为0时,其表示左侧三角形分区类型被应用于编码块,并且当变量triangledir为1时,其表示右侧三角形分区类型被应用于编码块。通过组合表1和表2,可以设置索引信息merge_triangle_idx以指定第一预测单元的合并候选、第二预测单元的合并候选和编码块的分区方向的组合。在另一示例中,可用信号发送仅用于第一预测单元和第二预测单元中的一个的索引信息,并且可基于索引信息确定用于第一预测单元和第二预测单元中的另一个的合并候选的索引。在示例中,可基于表示分区模式合并候选中的一个的索引的索引信息merge_triangle_idx来确定第一预测单元的合并候选。并且,可以基于merge_triangle_idx指定第二预测单元的合并候选。在示例中,可通过将偏移与索引信息merge_triangle_idx相加或从索引信息merge_triangle_idx减去偏移来推导第二预测单元的合并候选。偏移可以是诸如1或2的整数。在示例中,第二预测单元的合并候选可以被确定为具有通过将1与merge_triangle_idx相加作为索引而获得的值的分区模式合并候选。当merge_triangle_idx指示分区模式合并候选中具有最大索引值的分区模式合并候选时,第二预测单元的运动信息可从索引为0的分区模式合并候选或具有从merge_triangle_idx减去1的值作为索引的分区模式合并候选被推导。可选地,第二预测单元的运动信息可从具有与由索引信息指定的第一预测单元的分区模式合并候选相同的参考画面的分区模式合并候选被推导。在这种情况下,具有与第一预测单元的分区模式合并候选相同的参考画面的分区模式合并候选可以表示l0参考画面或l1参考画面中的至少一个与第一预测单元的分区模式合并候选相同的分区模式合并候选。当存在具有与第一预测单元的分区模式合并候选相同的参考画面的多个分区模式合并候选时,可以基于合并候选是否包括双向运动信息或合并候选的索引与索引信息之间的差值中的至少一个来选择任意一个分区模式合并候选。

在另一示例中,可针对第一预测单元和第二预测单元中的每个用信号发送索引信息。在示例中,可在比特流中用信号发送用于确定第一预测单元的分区模式合并候选的第一索引信息1st_merge_idx和用于确定第二预测单元的分区模式合并候选的第二索引信息2nd_merge_idx。第一预测单元的运动信息可从基于第一索引信息1st_merge_idx确定的分区模式合并候选被推导,并且第二预测单元的运动信息可从基于第二索引信息2nd_merge_idx确定的分区模式合并候选被推导。

第一索引信息1st_merge_idx可表示包括在分区模式合并候选列表中的分区模式合并候选中的一个的索引。第一预测单元的分区模式合并候选可以被确定为由第一索引信息1st_merge_idx指示的分区模式合并候选。

由第一索引信息1st_merge_idx指示的分区模式合并候选可被设置为不可用作第二预测单元的分区模式合并候选。因此,第二预测单元的第二索引信息2nd_merge_idx可表示除由第一索引信息指示的分区模式合并候选以外的剩余分区模式合并候选中的任意一个的索引。当第二索引信息2nd_merge_idx的值小于第一索引信息1st_merge_idx的值时,第二预测单元的分区模式合并候选可被确定为具有由第二索引信息2nd_merge_idx表示的索引信息的分区模式合并候选。另一方面,当第二索引信息2nd_merge_idx的值等于或大于第一索引信息1st_merge_idx的值时,第二预测单元的分区模式合并候选可被确定为具有通过将第二索引信息2nd_merge_idx的值加1作为索引而获得的值的分区模式合并候选。

可选地,根据包括在分区模式合并候选列表中的分区模式合并候选的数量,可确定是否用信号发送第二索引信息。在示例中,当可包括在分区模式合并候选列表中的分区模式合并候选的最大数量不超过2时,可省略用信号发送第二索引信息。当省略用信号发送第二索引信息时,可通过将偏移与第一索引信息相加或从第一索引信息减去偏移来推导第二分区模式合并候选。在示例中,当可包括在分区模式合并候选列表中的分区模式合并候选的最大数量为2且第一索引信息指示索引0时,可通过将1与第一索引信息相加来推导第二分区模式合并候选。可选地,当可包括在分区模式合并候选列表中的分区模式合并候选的最大数量为2且第一索引信息指示1时,可通过从第一索引信息减去1来推导第二分区模式合并候选。

可选地,当省略用信号发送第二索引信息时,可以将第二索引信息推断为默认值。在这种情况下,默认值可以是0。可通过比较第一索引信息与第二索引信息来推导第二分区模式合并候选。在示例中,当第二索引信息小于第一索引信息时,可将索引为0的合并候选设置为第二分区模式合并候选,并且当第二索引信息与第一索引信息相同或大于第一索引信息时,可将索引为1的合并候选设置为第二分区模式合并候选。

当分区模式合并候选具有单向运动信息时,分区模式合并候选的单向运动信息可被设置为预测单元的运动信息。另一方面,当分区模式合并候选具有双向运动信息时,l0运动信息或l1运动信息中的仅一个可被设置为预测单元的运动信息。可以基于分区模式合并候选的索引或另一预测单元的运动信息来确定将采用l0运动信息或l1运动信息中的哪一个。

在示例中,当分区模式合并候选的索引为偶数时,预测单元的l0运动信息可被设置为0,并且分区模式合并候选的l1运动信息可被设置为预测单元的l1运动信息。另一方面,当分区模式合并候选的索引为奇数时,预测单元的l1运动信息可被设置为0,并且分区模式合并候选的l0运动信息可被设置为0。相反,当分区模式合并候选的索引是偶数时,分区模式合并候选的l0运动信息可被设置为预测单元的l0运动信息,并且当分区模式合并候选的索引是奇数时,分区模式合并候选的l1运动信息可被设置为预测单元的l1运动信息。可选地,对于第一预测单元,当用于第一预测单元的分区模式合并候选是偶数时,可以将分区模式合并候选的l0运动信息设置为第一预测单元的l0运动信息,但是对于第二预测单元,当用于第二预测单元的分区模式合并候选是奇数时,可以将分区模式合并候选的l1运动信息设置为第二预测单元的l1运动信息。

可选地,当第一预测单元具有l0运动信息时,第二预测单元的l0运动信息可被设置为0,并且分区模式合并候选的l1运动信息可被设置为第二预测单元的l1信息。另一方面,当第一预测单元具有l1运动信息时,第二预测单元的l1运动信息可被设置为0,并且分区模式合并候选的l0运动信息可被设置为第二预测单元的l0运动信息。

用于推导第一预测单元的运动信息的分区模式合并候选列表可被设置为与用于推导第二预测单元的运动信息的分区模式合并候选列表不同。

在示例中,当基于第一预测单元的索引信息指定分区模式合并候选列表中的用于推导第一预测单元的运动信息的分区模式合并候选时,可通过使用包括除由索引信息指示的分区模式合并候选之外的剩余分区模式合并候选的分区模式合并列表来推导第二预测单元的运动信息。具体地,第二预测单元的运动信息可从剩余分区模式合并候选中的一个被推导。

因此,包括在第一预测单元的分区模式合并候选列表中的分区模式合并候选的最大数量可与包括在第二预测单元的分区模式合并候选列表中的分区模式合并候选的最大数量不同。在示例中,当第一预测单元的分区模式合并候选列表包括m个合并候选时,第二预测单元的分区模式合并候选列表可包括除由第一预测单元的索引信息指示的分区模式合并候选之外的m-1个合并候选。

在另一示例中,可通过基于与编码块相邻的邻近块推导每个预测单元的合并候选但通过考虑预测单元的形状或位置来确定邻近块的可用性。

图27是用于解释按照每个预测单元确定邻近块的可用性的示例的示图。

不与第一预测单元相邻的邻近块可被设置为不可用于第一预测单元,并且不与第二预测单元相邻的邻近块可被设置为不可用于第二预测单元。

在示例中,如在图27的(a)所示的示例中,当左侧三角形分区类型应用于编码块时,可以确定与编码块相邻的邻近块中的与第一预测单元相邻的块a1、a0和a2可用于第一预测单元,但是可以确定块b0和b1不可用于第一预测单元。因此,第一预测单元的分区模式合并候选列表可以包括从块a1、a0和a2推导的分区模式合并候选,但其可以不包括从块b0和b1推导的分区模式合并候选。

如在图27的(b)所示的示例中,当左侧三角形分区类型应用于编码块时,与第二预测单元相邻的块b0和b1可被确定为可用于第二预测单元,但是块a1、a0和a2可被确定为不可用于第二预测单元。因此,第二预测单元的分区模式合并候选列表可包括从块b0和b1推导的分区模式合并候选,但其可不包括从块a1、a0和a2推导的分区模式合并候选。

因此,可以基于预测单元的位置或编码块的分区类型中的至少一个来确定预测单元可以使用的分区模式合并候选的数量或分区模式合并候选的范围。

可基于第一预测单元的运动信息和第二预测单元的运动信息中的每个来执行编码块的运动补偿预测。在这种情况下,可以在第一预测单元和第二预测单元的边界上产生质量劣化。在示例中,质量连续性可在第一预测单元和第二预测单元的边界上的边缘周围劣化。为了减少边界上的质量劣化,可以通过平滑滤波器或加权预测来推导预测样点。

可根据基于第一预测单元的运动信息获得的第一预测样点和基于第二预测单元的运动信息获得的第二预测样点的加权和运算来推导被应用对角线分区的编码块中的预测样点。可选地,可从基于第一预测单元的运动信息确定的第一预测块来推导第一预测单元的预测样点,并且可从基于第二预测单元的运动信息确定的第二预测块来推导第二预测单元的预测样点,但是可以基于包括在第一预测块中的第一预测样点和包括在第二预测块中的第二预测样点的加权和运算来推导第一预测单元和第二预测单元的边界区域上的预测样点。在示例中,下面的等式6表示推导第一预测单元和第二预测单元的预测样点的示例。

[等式6]

p(x,y)=w1*p1(x,y)+(1-w1)*p2(x,y)

在等式6中,p1表示第一预测样点,并且p2表示第二预测样点。w1表示应用于第一预测样点的权重,并且(1-w1)表示应用于第二预测样点的权重。如在等式6中所示的示例中,可通过从常数值减去应用于第一预测样点的权重来推导应用于第二预测样点的权重。

当左侧三角形分区类型被应用于编码块时,边界区域可以包括具有相同x轴坐标和y轴坐标的预测样点。另一方面,当右侧三角形分区类型被应用于编码块时,边界区域可包括x轴坐标与y轴坐标的和等于或大于第一阈值且等于或小于第二阈值的预测样点。

可基于编码块的尺寸、编码块的形状、预测单元的运动信息、预测单元的运动矢量差值、参考画面的画面顺序计数或对角线边界上的第一预测样点与第二预测样点之间的差值中的至少一个来确定边界区域的尺寸。

图28和图29是示出基于第一预测样点和第二预测样点的加权和运算推导预测样点的示例的示图。图28示出将左侧三角形分区类型应用于编码块的情况,图29示出将右侧三角形分区类型应用于编码块的情况。另外,图28的(a)和图的29(a)是表示亮度分量的预测方面的示图,并且图28的(b)和图29的(b)是表示色度分量的预测方面的示图。

在所示的示图中,在第一预测单元和第二预测单元的边界周围的预测样点上标记的数字表示应用于第一预测样点的权重。在示例中,当预测样点上标记的数字为n时,可通过将n/8的权重应用于第一预测样点且将(1-(n/8))的权重应用于第二预测样点来推导预测样点。

在非边界区域中,可将第一预测样点或第二预测样点确定为预测样点。查看图28中的示例,基于第一预测单元的运动信息推导的第一预测样点可被确定为属于第一预测单元的区域中的预测样点。另一方面,基于第二预测单元的运动信息推导的第二预测样点可被确定为属于第二预测单元的区域中的预测样点。

查看图29中的示例,可将基于第一预测单元的运动信息推导的第一预测样点确定为x轴坐标与y轴坐标的和小于第一阈值的区域中的预测样点。另一方面,可将基于第二预测单元的运动信息推导的第二预测样点确定为x轴坐标与y轴坐标的和大于第二阈值的区域中的预测样点。

可以基于编码块的尺寸、编码块的形状或颜色分量中的至少一个来确定确定非边界区域的阈值。在示例中,当亮度分量的阈值被设置为n时,色度分量的阈值可以被设置为n/2。

可基于第一预测样点和第二预测样点的加权和运算推导包括在边界区域中的预测样点。在这种情况下,可以基于预测样点的位置、编码块的尺寸、编码块的形状或颜色分量中的至少一个来确定应用于第一预测样点和第二预测样点的权重。

在示例中,如在图28的(a)中所示的示例中,可通过将相同权重应用于第一预测样点和第二预测样点来推导具有相同x轴坐标和y轴坐标的预测样点。可以通过将应用于第一预测样点和第二预测样点的权重比设置为(7:1)或(1:7)来推导x轴坐标与y轴坐标之间的差的绝对值为1的预测样点。

可选地,如在图28的(b)中所示的示例中,可通过将相同权重应用于第一预测样点和第二预测样点来推导具有相同x轴坐标和y轴坐标的预测样点,并且可通过将应用于第一预测样点和第二预测样点的权重比设置为(7:1)或(1:7)来推导x轴坐标与y轴坐标之间的差的绝对值为1的预测样点。

在示例中,如在图29的(a)所示的示例中,可以通过将样点权重应用于第一预测样点和第二预测样点来推导x轴坐标与y轴坐标的和比编码块的宽度或高度小1的预测样点。可以通过将应用于第一预测样点和第二预测样点的权重比设置为(3:1)或(1:3)来推导x轴坐标与y轴坐标的和与编码块的宽度或高度相同或者比编码块的宽度或高度小2的预测样点。可以通过将应用于第一预测样点和第二预测样点的权重比设置为(7:1)或(1:7)来推导x轴坐标与y轴坐标的和比编码块的宽度或高度大1或者比编码块的宽度或高度小3的预测样点。

可选地,如在图29的(b)所示的示例中,可以通过将样点权重应用于第一预测样点和第二预测样点来推导x轴坐标与y轴坐标的和比编码块的宽度或高度小1的预测样点。可以通过将应用于第一预测样点和第二预测样点的权重比设置为(7:1)或(1:7)来推导x轴坐标与y轴坐标的和与编码块的宽度或高度相同或比编码块的宽度或高度小2的预测样点。

在另一示例中,可以通过考虑预测样点的位置或编码块的形状来确定权重。等式7至等式9表示在将左侧三角形分区类型应用于编码块时推导权重的示例。等式7表示当编码块为正方形时推导应用于第一预测样点的权重的示例。

[等式7]

w1=(x-y+4)/8

在等式7中,x和y表示预测样点的位置。当编码块为非正方形时,可如在下面的等式8或等式9中推导应用于第一预测样点的权重。等式8表示编码块的宽度大于高度,并且等式9表示编码块的宽度小于高度。

[等式8]

w1=((x/whratio)-y+4)/8

[等式9]

w1=(x-(y*whratio)+4)/8

当将右侧三角形分区类型应用于编码块时,可以如等式10至等式12中那样确定应用于第一预测样点的权重。等式10表示当编码块为正方形时推导应用于第一预测样点的权重的示例。

[等式10]

w1=(cbw-1-x-y)+4)/8

在等式10中,cbw表示编码块的宽度。当编码块为非正方形时,可如在下面的等式11或等式12中推导应用于第一预测样点的权重。等式11表示编码块的宽度大于高度,并且等式12表示编码块的宽度小于高度。

[等式11]

w1=(cbh-1-(x/whratio)-y)+4)/8

[等式12]

w1=(cbw-1-x-(y*whratio)+4)/8

在等式11中,cbh表示编码块的高度。

当对编码块应用对角线分区时,可以将帧内预测模式和合并模式被组合的组合预测模式设置为不应用于编码块。

当编码块的编码/解码完成时,编码/解码完成的编码块的运动信息可被存储以用于后续编码块的编码/解码。运动信息可以以具有预设尺寸的子块为单位被存储。在示例中,具有预设尺寸的子块可具有4×4尺寸。可选地,根据编码块的尺寸或形状,可以不同地确定子块的尺寸或形状。

当子块属于第一预测单元时,第一预测单元的运动信息可被存储为子块的运动信息。另一方面,当子块属于第二预测单元时,第二预测单元的运动信息可被存储为子块的运动信息。

当子块在第一预测单元和第二预测单元的边界上时,第一预测单元的运动信息和第二预测单元的运动信息中的任意一个可被设置为子块的运动信息。在示例中,可将第一预测单元的运动信息设置为子块的运动信息,或者可将第二预测单元的运动信息设置为子块的运动信息。

在另一示例中,当子块在第一预测单元与第二预测单元的边界上时,可从第一预测单元推导子块的l0运动信息和l1运动信息中的任意一个,并且可从第二预测单元推导子块的l0运动信息和l1运动信息中的另一个。在示例中,可将第一预测单元的l0运动信息设置为子块的l0运动信息,并且可将第二预测单元的l1运动信息设置为子块的l1运动信息。但是,当第一预测单元和第二预测单元仅具有l0运动信息或仅具有l1运动信息时,可通过选择第一预测单元或第二预测单元中的任意一个来确定子块的运动信息。可选地,第一预测单元和第二预测单元的运动矢量平均值可被设置为子块的运动矢量。

可以在运动信息表中更新编码/解码完成的编码块的运动信息。在这种情况下,可以将应用预测单元分区的编码块的运动信息设置为不被添加到运动信息表。

可选地,可仅将通过对编码块进行分区而产生的多个预测单元中的任意一个的运动信息添加到运动信息表。在示例中,虽然可将第一预测单元的运动信息添加到运动信息表,但可不将第二预测单元的运动信息添加到运动信息表。在这种情况下,可以基于以下至少一项来选择将被添加到运动信息表的预测单元:编码块的尺寸、编码块的形状、预测单元的尺寸、预测单元的形状或是否对预测单元执行双向预测。

可选地,可将通过对编码块进行分区而产生的多个预测单元中的每个的运动信息添加到运动信息表。在这种情况下,可在编码装置和解码装置中预定义运动信息表的添加顺序。在示例中,包括左上角样点或左下角样点的预测单元的运动信息可在另一预测单元的运动信息之前添加到运动信息表。可选地,可基于每个预测单元的合并索引或参考画面索引或者运动矢量的大小中的至少一个来确定运动信息表的相加顺序。

可选地,可将对第一预测单元的运动信息与第二预测单元的运动信息进行组合的运动信息添加到运动信息表。组合运动信息的l0运动信息和l1运动信息中的任意一个可从第一预测单元被推导,并且l0运动信息和l1运动信息中的另一个可从第二预测单元被推导。

可选地,基于第一预测单元的参考画面是否与第二预测单元的参考画面相同,可确定将被添加到运动信息表的运动信息。在示例中,当第一预测单元的参考画面与第二预测单元的参考画面不同时,可将第一预测单元和第二预测单元中的任意一个的运动信息或对第一预测单元和第二预测单元进行组合的运动信息添加到运动信息表。另一方面,当第一预测单元的参考画面与第二预测单元的参考画面相同时,可将第一预测单元的运动矢量和第二预测单元的运动矢量的平均值添加到运动信息表。

可选地,基于编码块的尺寸、编码块的形状或编码块的分区形状,可以确定将被添加到运动信息表的运动矢量。在示例中,当将右侧三角形分区应用于编码块时,可将第一预测单元的运动信息添加到运动信息表。另一方面,当将左侧三角形分区应用于编码块时,可以将第二预测单元的运动信息添加到运动信息表,或者可以将对第一预测单元的运动信息和第二预测单元的运动信息进行组合的运动信息添加到运动信息表。

可以单独定义用于存储应用预测单元分区的编码块的运动信息的运动信息表。在示例中,应用预测单元分区的编码块的运动信息可存储在分区模式运动信息表中。分区模式运动信息表可被称作三角形运动信息表。换言之,未应用预测单元分区的编码块的运动信息可存储在一般运动信息表中,并且应用预测单元分区的编码块的运动信息可存储在分区模式运动信息表中。将应用了上述预测单元分区的编码块的运动信息添加到运动信息表的实施例可以被应用于更新分区模式运动信息表。在示例中,可将第一预测单元的运动信息、第二预测单元的运动信息、对第一预测单元的运动信息和第二预测单元的运动信息进行组合的运动信息以及对第一预测单元的运动矢量与第二预测单元的运动矢量进行平均的运动信息添加到分区模式运动信息表。

当预测模式分区不应用于编码块时,可通过使用一般运动信息表推导合并候选。另一方面,当预测模式分区应用于编码块时,可通过使用分区模式运动信息表推导合并候选。

当双向运动矢量应用于当前块时,可推导当前块的运动矢量,并且可基于推导的运动矢量按照每个子块来推导细化运动矢量。当推导细化运动矢量时,可以通过使用细化运动矢量来获得细化预测样点。

可以基于l0预测样点、l1预测样点和细化预测样点来推导当前块中的预测样点。等式13表示推导当前块中的预测样点的示例。

[等式13]

predbdof=(i(0)(x,y)+i(1)(x,y)+b(x,y)+offset)>>shift

在等式13中,predbdof表示当前块中的位置(x,y)处的预测样点。i(0)(x,y)表示位置(x,y)处的l0预测样点,并且i(1)(x,y)表示位置(x,y)处的l1预测样点。b(x,y)表示(x,y)的位置处的细化预测样点。可基于细化运动矢量推导细化预测样点。偏移可以被设置为固定值,或者可以基于当前画面的比特深度或块的尺寸/形状来推导。移位参数shift可以被设置为固定值,或者可以基于当前画面的比特深度或块的尺寸/形状来推导。

可以通过将双向光流应用于当前块来推导细化预测样点。在示例中,等式14表示推导当前块中的(x,y)的位置的细化预测样点的示例。

[等式14]

在等式14中,(vx,vy)表示细化运动矢量。

表示水平方向上的l1梯度,并且表示水平方向上的l0梯度。表示垂直方向上的l1梯度,并且表示垂直方向上的l0梯度。

可以基于水平方向梯度和垂直方向梯度推导细化运动矢量。具体地,可以基于自相关值推导细化运动矢量,其中,该自相关值基于水平方向梯度和垂直方向梯度被推导。在示例中,等式15表示推导细化运动矢量的示例。

[等式15]

在等式15中,s1至s6表示自相关值。

可以子块为单位确定细化运动矢量。换言之,子块中的样点可共享一个细化运动矢量。因此,可基于每个样点的梯度和按照子块的级别确定的细化运动矢量来推导子块中的每个样点的细化预测样点。

可以在编码装置和解码装置中预定义子块的尺寸和/或形状。可选地,可根据当前块的尺寸和/或形状自适应地确定子块的尺寸和/或形状。

等式16和等式17分别表示推导水平方向梯度和垂直方向梯度的示例。

[等式16]

[等式17]

在等式16和等式17中,k指示0或1。当k为0时,其表示l0方向,并且当k为1时,其表示l1方向。

可以通过与位置(i,j)处的预测样点相邻的邻近样点之间的差来推导水平方向梯度。具体地,可以基于与位置(i,j)的右侧相邻的预测样点i(k)(i+1,j)和与位置(i,j)的左侧相邻的预测样点i(k)(i-1,j)之间的差来推导水平方向梯度。

可以通过与位置(i,j)处的预测样点相邻的邻近样点之间的差来推导垂直方向梯度。具体地,可以基于与位置(i,j)的上方相邻的预测样点i(k)(i,j+1)和与位置(i,j)的下方相邻的预测样点i(k)(i,j-1)之间的差来推导垂直方向梯度。

在等式16和等式17中,示出了通过两个样点之间的差来推导梯度,但是可以通过使用更多样点来推导梯度。在示例中,可基于预测样点的左侧位置的n个样点和右侧位置的n个样点来推导水平方向梯度,并且可基于预测样点的上方位置的n个样点和下方位置的n个样点来推导垂直方向梯度。在这种情况下,n可以是实数,诸如1、2、3或4。可以根据当前块的尺寸/形状来不同地确定用于推导梯度的样点的数量。

移位参数shift1可以被设置为固定值,或者可以基于当前画面的比特深度或块的尺寸/形状来推导。

等式15中所示的自相关值可以如下面的等式18中那样被推导。

[等式18]

等式18中所示的参数可以如下面的等式19中那样被推导。

[等式19]

如在上述示例中,基于通过细化运动矢量推导的细化预测样点,推导预测样点可被称作双向光流(bdof)编码方法。

可基于以下至少一项来确定是否使用bdof编码方法:当前块的尺寸/形状、l0参考画面的输出顺序/类型、l1参考画面的输出顺序/类型、是否执行以子块为单位的运动补偿(例如,atmvp或stmvp)、是否应用仿射运动模型、是否应用对称mvd、双向权重(例如,l0权重及l1权重)是否相同或是否应用具有分区的预测模式。

在示例中,可以通过考虑当前画面和l0参考画面之间的差是否与当前画面和l1参考画面之间的差或l0参考画面和l1参考画面的时间方向相同来确定是否使用bdof编码方法。在示例中,仅在当前画面和l0参考画面之间的差与当前画面和l1参考画面之间的差相同时,或者当l0参考画面的时间方向与l1参考画面的时间方向不同时,才可以允许bdof编码方法。在这种情况下,时间方向表示参考画面是在前向方向上还是在后向方向上。前向参考画面指示poc大于当前画面的参考画面,并且后向参考画面指示poc小于当前画面的参考画面。

可选地,当仿射运动模型应用于当前块时,可将bdof编码方法设置为不可允许的。

可选地,仅当表示是否将一般合并模式应用于当前块的标志regular_merge_flag的值为1时,才可以应用bdof编码方法。当标志regular_merge_flag的值为1时,它表示编码方法(诸如以子块为单位的运动补偿、预测模式分区或ciip等)不应用于当前块。

可选地,仅当不将以子块为单位的运动补偿(例如,atmvp或stmvp)应用于当前块时,才可以应用bdof编码方法。

可选地,仅当不将对称mvd编码方法应用于当前块时,才可应用bdof编码方法。

可选地,仅当l0权重与l1权重相同时,才可以应用bdof编码方法。

可选地,仅当l0参考画面和l1参考画面都是短期参考画面时,才可以应用bdof编码方法。

可选地,仅在当前块的宽度、高度或尺寸中的至少一个等于或大于阈值时,可允许bdof编码方法。当前块的尺寸表示通过宽度与高度相乘推导的值。在示例中,宽度和高度相乘取log2的值可以被设置为当前块的尺寸值。可选地,包括在当前块中的样点的数量可被设置为当前块的尺寸值。阈值可以是诸如4、8、16或32等的整数。

可选地,可以将bdof编码方法设置为对于应用了具有分区的预测模式的块是不允许的。在示例中,在当前块被分区为两个三角形预测单元时,可以将其设置为“否”以应用bdof编码方法。

可选地,当应用对帧内预测和帧间预测进行组合的预测方法(组合帧内帧间预测,ciip)时,可以将bdof编码方法设置为不允许的。换言之,当不应用对帧内预测和帧间预测进行组合的预测方法(组合帧内帧间预测,ciip)时,可将bdof编码方法设置为可允许的。

可选地,可以通过组合多个上面列举的条件来确定是否允许bdof编码方法。

帧内块复制(ibc)用于从在当前画面中的当前块之前重建的区域预测当前块。具体地,可以通过使用当前画面中的预重建区域中的参考块来获得当前块的预测样点。

可以在比特流中用信号发送表示是否使用帧内块复制模式的信息。在示例中,可在比特流中用信号发送表示是否将帧内块复制模式应用于当前块的标志pred_mode_ibc_flag。

当表示当前块的编码模式的信息指示帧间预测时,可以用信号发送标志。在示例中,当pred_mode_ibc_flag的值为0时,表示通过使用与当前画面不同的预解码画面作为参考画面来执行当前块的预测。另一方面,当pred_mode_ibc_flag的值为1时,表示通过使用当前画面作为参考画面来执行当前块的预测。

可选地,当省略用信号发送标志pred_mode_ibc_flag时,可以基于当前块的尺寸或形状、编码模式或条带类型中的至少一个来确定是否使用帧内块复制模式。在示例中,在当前块的尺寸为4×4时或在当前块的编码模式为帧内模式时,可基于是否将跳过模式应用于当前块来确定是否应用ibc模式。具体地,在当前块的尺寸为4×4时或在当前块的编码模式为帧内模式时,可通过用ibc模式替换跳过模式来预测当前块。换言之,在当前块的尺寸是4×4时或者在当前块的编码模式是帧内模式时,可以通过使用当前画面作为参考画面来推导当前块的重建块。可以在比特流中用信号发送表示是否应用跳过模式的标志cu_skip_flag。当应用跳过模式时,可以将当前块的预测样点设置为重建样点。

在当前块的尺寸大于阈值时,可将ibc模式设置为不可用。阈值可以是64×64或128×128。可选地,可根据当前画面的尺寸、时间id或颜色分量来确定是否使用帧内块复制模式。

图30是用于解释基于帧内块复制模式的预测方面的示图。

当前块与参考块之间的坐标差可被定义为运动矢量。特别地,帧内块模式下的运动矢量可以被称为块矢量(bv)。例如,dx(当前块的左上方样点的x坐标与参考块的左上方样点的x坐标之间的差)可被定义为水平方向上的块矢量(或x轴块矢量),并且当前块的左上方样点的y坐标与参考块的左上方样点的y坐标之间的差可被定义为垂直方向上的块矢量(或y轴块矢量)。

在下文中,将参照附图详细描述帧内块复制模式。

图31是表示根据本公开的实施例的基于帧内块复制模式的当前块的预测处理的流程图。

首先,可推导当前块的块矢量(s3101)。可基于与当前块相邻的邻近块来推导当前块的块矢量。具体地,可通过将邻近块的块矢量设置为与当前块的块矢量相同或将差矢量与邻近块的块矢量相加,来推导当前块的块矢量。

在帧间预测模式下定义的运动矢量的推导方法也可以应用于在帧内块复制模式下推导块矢量。在示例中,可通过将合并模式应用于当前块而将邻近块的块矢量设置为当前块的块矢量。可选地,可通过将运动矢量预测模式应用于当前块而将差矢量与邻近块的块矢量相加来推导当前块的块矢量。

为了便于描述,在用于在帧内块复制模式下推导块矢量的元素前添加前缀“ibc”。在示例中,帧内块复制模式下的合并模式和运动矢量预测模式分别被称作ibc合并模式和ibc运动矢量预测模式。除非另有描述,否则帧间预测模式的实施例也可以应用于帧内块复制模式。在示例中,推导合并候选的方法和在帧间预测模式下更新运动信息表的方法可应用于推导ibc合并候选和更新ibc运动信息表。

另外,当需要对帧间预测模式和帧内块复制模式进行分类时,在用于在帧间预测模式下推导运动矢量的元素前添加前缀“一般”。

表示ibc合并模式是否应用于当前块的信息可在比特流中被用信号发送。在示例中,可在比特流中用信号发送标志ibc_merge_flag。当ibc_merge_flag的值为1时,其表示将ibc合并模式应用于当前块,并且当ibc_merge_flag的值为0时,其表示不将ibc合并模式应用于当前块。当可用ibc合并候选的数量为至少一个或更多个时,可用信号发送ibc_merge_flag。

当ibc_merge_flag的值为0时,ibc运动矢量预测模式可被应用于当前块。

在合并模式下,可以从与当前块相邻的邻近块中的至少一个推导当前块的块矢量。在这种情况下,邻近块可包括与当前块的上方相邻的上方邻近块、与当前块的左侧相邻的左侧邻近块、与当前块的左下角相邻的左下方邻近块、与当前块的右上角相邻的右上方邻近块或与当前块的左上角相邻的左上方邻近块中的至少一个。

具体地,当前块的块矢量可从与当前块相邻的邻近块中通过帧内块复制模式被编码的邻近块推导。可以将在与当前块相邻的邻近块中首先搜索的可用邻近块的块矢量推导为当前块的块矢量。

可选地,可从通过当前块周围的帧内块复制模式编码的邻近块推导ibc合并候选,并且可从ibc合并候选中的一个推导当前块的块矢量。还可以通过使用当前块的同位块来推导ibc合并候选。还可以通过使用与当前块不相邻的块来推导ibc合并候选。

可根据预定义顺序将ibc合并候选添加到ibc合并候选列表。

图32是说明将ibc合并候选添加到ibc合并候选列表的顺序的示图。

在当前块的左上方样点的坐标为(0,0)时,块a1可以表示包括在位置(-1,h-1)处的基本样点的块,块b1可以表示包括在位置(w-1,-1)处的基本样点的块,块b0可以表示包括在位置(w,-1)处的基本样点的块,块a0可以表示包括在位置(-1,h)处的基本样点的块,块b2可以表示包括在位置(-1,-1)处的基本样点的块。根据a1、b1、b0、a0和b2的顺序,可将ibc合并候选添加到ibc合并候选列表。

可选地,根据与所示的顺序不同的顺序,可配置ibc合并候选列表。在示例中,可根据b1、b0、a1、a0和b2的顺序或根据b1、a1、b0、a1和b2的顺序来配置ibc合并候选列表。

可选地,可通过仅使用当前块的上方位置的候选块中的一个和当前块的左侧位置的候选块中的一个来推导ibc合并候选。在示例中,可通过仅使用a1块和b1块推导ibc合并候选。

可选地,根据当前块的尺寸或形状,可不同地设置用于推导ibc合并候选的邻近块的数量或位置。在示例中,根据当前块的尺寸,可用邻近块的数量可以是0、1、2、3、4或5。

当ibc合并候选列表包括多个ibc合并候选时,可在比特流中用信号发送用于指定多个ibc合并候选中的一个的索引信息。在示例中,当前块的块矢量可从由语法元素ibc_merge_idx指定的ibc合并候选被推导。

通过帧间预测编码的块可被设置为不可用作ibc合并候选。可选地,可从通过帧间预测编码的块推导ibc合并候选。在这种情况下,可通过对由帧间预测编码的块的运动矢量进行缩放来推导ibc合并候选的块矢量。可基于当前画面的输出顺序(例如,poc)与通过帧间预测编码的块的参考画面的输出顺序之间的差来执行缩放。

色度(彩度)分量的块矢量可以通过缩放亮度(照度)分量的块矢量来推导。可以通过由移位变量对亮度分量的块矢量向右执行比特移位来执行缩放。可以根据色度格式来确定移位变量。

可由ibc合并候选列表包括的ibc合并候选的最大数量可在编码装置和解码装置中被预定义。在示例中,可由ibc合并候选列表包括的合并候选的最大数量可被设置为4、5或6。

可选地,可由ibc合并候选列表包括的ibc合并候选的最大数量可被设置为与可由一般合并候选列表包括的合并候选的最大数量相同。在示例中,可在比特流中用信号发送表示可由一般合并候选列表包括的合并候选的最大数量的语法元素six_minus_max_num_merge_cand。可由一般合并候选列表包括的合并候选的最大数量和可由ibc合并候选列表包括的ibc合并候选的最大数量可通过从6减去由six_minus_max_num_merge_cand指示的值来推导。

可选地,可个别地定义表示可由ibc合并候选列表包括的ibc合并候选的最大数量的语法元素和表示可由一般合并候选列表包括的合并候选的最大数量的语法元素。在示例中,可由ibc合并候选列表包括的ibc合并候选的最大数量可由语法元素six_minus_max_ibc_num_merge_cand确定,并且可由一般合并候选列表包括的合并候选的最大数量可由语法元素six_minus_max_num_merge_cand确定。

可选地,当不用信号发送表示ibc合并候选的最大数量的信息时,可将ibc合并候选的最大数量设置为预定义值。

当从至少一个邻近块推导的ibc合并候选的数量小于阈值时,包括在ibc运动信息表中的ibc运动信息候选可作为ibc合并候选添加到ibc合并候选列表。在这种情况下,阈值可以是从可由ibc合并候选列表包括的ibc合并候选的最大数量或ibc合并候选的最大数量减去偏移的值。偏移可以是自然数,诸如1或2等。

可选地,可在比特流中用信号发送表示是否允许通过使用ibc运动信息表来配置ibc合并候选列表的信息。在示例中,语法isusedhibccandlist_flag表示当产生ibc合并候选列表时是否可参考ibc运动信息表。可按照序列、画面、条带或块级别用信号发送标志。

图33是示出将ibc运动信息候选添加到ibc合并候选列表的示例的示图。

在所示示例中,ibcmergecandlist[i]表示索引为i的ibc合并候选,并且hibccandlist[j]表示索引为j的ibc运动信息候选。

当ibc合并候选列表包括的ibc合并候选的数量小于阈值时,可将ibc运动信息表包括的ibc运动信息候选添加到ibc合并候选列表。在示例中,当假设阈值为5时,由图33的(a)中的ibc合并候选列表包括的ibc合并候选的数量为2,因此ibc合并候选的数量小于阈值。

因此,ibc运动信息表包括的ibc运动信息候选可作为ibc合并候选添加到ibc合并候选列表。在示例中,在图33的(b)中示出将3个ibc运动信息候选添加到ibc合并候选列表。

当存在具有与ibc运动信息候选相同的块矢量的ibc合并候选时,可不将相应ibc运动信息候选添加到ibc合并候选列表。冗余检查的目标与通过一般运动信息候选与一般合并候选之间的冗余检查方法描述的示例相同。

当ibc合并候选列表包括的ibc合并候选的数量小于阈值时,尽管将ibc运动信息候选添加到ibc合并候选列表,但可从一般合并候选或一般运动信息候选推导ibc合并候选。具体地,可基于一般合并候选的运动矢量或一般运动信息候选的运动矢量推导块矢量,并且可将具有推导的块矢量作为运动信息的ibc合并候选添加到ibc合并候选列表。可通过对运动矢量进行缩放来推导块矢量。可以基于一般合并候选或一般运动信息候选的参考画面与当前画面之间的输出阶差来执行缩放。当一般运动信息具有双向运动矢量时,可以随机选择l0运动信息或l1运动信息中的一个,或者可以选择l0运动信息和l1运动信息中与当前画面具有较小输出阶差的一个。

可选地,当由ibc合并候选列表包括的ibc合并候选的数量小于阈值时,尽管将ibc运动信息候选添加到ibc合并候选列表,但可将零块矢量添加到ibc合并候选列表。零块矢量表示水平方向分量和垂直方向分量为0的块矢量。

ibc运动信息表包括从通过帧内块复制模式被编码/解码的块推导的ibc运动信息候选。在示例中,包括在ibc运动信息表中的ibc运动信息候选的运动信息可被设置为与基于帧内块复制模式被编码/解码的块的运动信息相同。在这种情况下,运动信息可包括块矢量、运动矢量分辨率或是否应用ibc合并模式(例如,ibc_merge_flag的值)中的至少一个。

图34是用于解释ibc运动信息表的更新方面的示图。

可从通过帧内块复制模式或ibc合并模式编码/解码的块推导ibc运动信息候选,并且可将推导的ibc运动信息候选添加到ibc运动信息表hibccandlist。在示例中,可根据块的编码/解码顺序将块矢量添加到ibc运动信息表。

当由ibc运动信息表包括的ibc运动信息候选的数量小于最大数量时,被编码/解码的块的块矢量可作为新ibc运动信息候选被添加到ibc运动信息表。另一方面,当ibc运动信息表包括的ibc运动信息候选的数量为最大数量时,可删除ibc运动信息表包括的ibc运动信息候选中的一个,并且可将被编码/解码的块的块矢量添加到ibc运动信息表。在示例中,如图34中所示,当将块b4的块矢量添加到ibc运动信息表时,可从ibc运动信息表去除具有最低索引的ibc运动信息候选。

可由ibc运动信息表包括的ibc运动信息候选的最大数量可在编码装置和解码装置中被预定义。在示例中,可由ibc运动信息表包括的ibc运动信息候选的最大数量可被设置为1、2、3、4、5或6等。

可选地,可在比特流中用信号发送表示可由ibc运动信息表包括的ibc运动信息候选的最大数量的信息。所述信息可表示可由ibc运动信息表包括的ibc运动信息候选的最大数量或可由ibc运动信息表包括的ibc运动信息候选的最大数量与可由一般运动信息表包括的一般运动信息候选的最大数量之间的差。可按照画面、条带或序列级别用信号发送所述信息。

当对当前块进行编码/解码时,可将当前块的块矢量添加到ibc运动信息表。在这种情况下,当与当前块的块矢量相同的ibc运动信息候选预先存在时,当前块的块矢量可不被添加到ibc运动信息表。

可选地,当与当前块的块矢量相同的ibc运动信息候选存在时,可省略与当前块的块矢量相同的ibc运动信息候选,并且可将当前块的块矢量添加到ibc运动信息表。其引起与更新与当前块的块矢量相同的ibc运动信息候选的索引相同的效果。

在当前块的尺寸小于阈值时,当前块的块矢量可不被添加到ibc运动信息表。阈值可以表示样点的宽度、高度或数量中的至少一个。在示例中,当由当前块包括的样点的数量等于或小于16时,可不将从当前块推导的ibc运动信息候选添加到ibc运动信息表。

尽管将帧内块复制模式应用于当前块,但是可以应用与合并处理区域相关的实施例。换言之,当与当前块相邻的邻近块包括在与当前块相同的合并处理区域中时,邻近块的块矢量可被设置为不可用作当前块的ibc合并候选。

用于帧内块复制模式的合并处理区域的尺寸和形状可被设置为与用于帧间预测模式的合并处理区域的尺寸和形状相同。

可选地,可在比特流中用信号发送用于确定帧内块复制模式的合并处理区域的尺寸和/或形状的信息。在示例中,可以在比特流中用信号发送表示用于帧间预测模式的合并处理区域的尺寸与用于帧内块复制模式的合并处理区域的尺寸之间的差的信息。

在当前块包括在合并处理区域中时,尽管包括在合并处理区域中的块被编码/解码,但可不将被编码/解码的块的块矢量添加到ibc运动信息表。

可选地,可通过仅使用合并处理区域中的预定义位置处的块来更新ibc运动信息表。预定义位置可以包括合并处理区域中的左上方位置的块、右上方位置的块、左下方位置的块、右下方位置的块、中心位置的块、与右侧边界相邻的块或与下方边界相邻的块中的至少一个。

可按照每个预设单元来初始化ibc运动信息表。预设单元可以是编码树单元、多个编码树单元、并行块或条带。在示例中,可按照每n个编码树单元或一个编码树单元行来初始化ibc运动信息表。在这种情况下,n可以是包括1的自然数。

当按照每个编码树单元行来初始化ibc运动信息表时,其表示每当邻接画面的左侧边界的编码树单元的编码/解码开始时初始化ibc运动信息表。

当ibc运动信息表为空时或当初始化ibc运动信息表时,可将初始ibc运动信息候选添加到ibc运动信息表。初始ibc运动信息候选可在编码装置和解码装置中具有预定义块矢量。

可选地,可从通过与当前编码树单元相邻的编码树单元中的通过帧内块复制模式编码/解码的块推导初始ibc运动信息候选。在示例中,可从包括在与当前编码树单元的左侧或上方相邻的编码树单元中的块推导初始ibc运动信息候选。

可通过在ibc运动矢量预测模式下组合块矢量预测值和块矢量差值来推导当前块的块矢量。可从与当前块相邻的邻近块推导块矢量预测值。在示例中,可从当前块的上方位置的块推导第一块矢量预测候选,并且可从当前块的左侧位置的块推导第二块矢量预测候选。

当多个块矢量预测候选可用时,可以在比特流中用信号发送指定多个块矢量预测候选中的至少一个的信息。在示例中,可在比特流中用信号发送指定两个块矢量预测候选中的一个的标志ibc_mvp_flag。

可基于在比特流中用信号发送的信息来确定块矢量差值。该信息可以包括用于确定块矢量的尺寸的信息和用于确定块矢量的方向的信息。

在示例中,可如在下面的等式20中推导当前块的块矢量。

[等式20]

bv[0]=bvp[0]+bvd[0]

bv[1]=bvp[1]+bvd[1]

bv表示当前块的块矢量,bvp表示块矢量预测值,并且bvd表示块矢量差值。[0]表示水平方向上的矢量分量(即,x轴矢量分量),并且[1]表示垂直方向上的矢量分量(即,y轴矢量分量)。

可以由块矢量指定参考块(s2802),并且可以将由块矢量指定的参考块中的样点设置为当前块的预测样点(s2803)。

可以在预定区域中执行参考块的搜索。因此,当前块的块矢量的最大值可被确定为当前块的边界与预定区域的边界之间的差。在示例中,水平方向上的块矢量的最大值可被设置为当前块的左侧边界与预定区域的左侧边界之间的差值,并且垂直方向上的块矢量的最大值可被设置为当前块的上方边界与预定区域的上方边界之间的差值。

在ibc合并模式下,当ibc合并候选的块矢量的最大值大于当前块的块矢量的最大值时,可将ibc合并候选设置为不可用。可选地,当ibc合并候选的块矢量的最大值大于当前块的块矢量时,ibc合并候选的块矢量可改变为当前块的块矢量的最大值。

预定区域可以包括以下至少一项:包括当前块的编码树单元、与当前编码树单元相邻的邻近编码树单元、包括当前块的当前条带或包括当前块的当前并行块。

在示例中,可以从当前编码树单元和邻近编码树单元中搜索参考块。换言之,不包括在当前编码树单元或邻近编码树单元中的块不能被设置为参考块。在这种情况下,邻近编码树单元可以包括与当前编码树单元的左侧相邻的左侧编码树单元、与当前编码树单元的上方相邻的上方编码树单元、与当前编码树单元的左上角相邻的左上方编码树单元、与当前编码树单元的右上角相邻的右上方编码树单元或与当前编码树单元的左下角相邻的左下方编码树单元中的至少一个。

邻近编码树单元的一些区域可被设置为不可用区域。可以设置包括在不可用区域中的块不可被设置为当前块的参考块。不可用区域可以基于当前编码树单元中的当前块的位置被确定。具体地,可以基于当前块的位置来确定不可用区域的尺寸或数量中的至少一个。

图35是示出根据当前块的位置的不可用区域的示图。

在将当前编码树单元和邻近编码树单元分区为具有相同尺寸和形状的多个区域之后,可以根据当前编码树单元中的当前块所属的区域来不同地确定不可用区域。在图35中,示出了当前编码树单元和邻近编码树单元被分区为4个区域,但是可以将编码树单元分区为多于或少于4个区域。

可以基于当前块中的预定样点的位置来执行当前块所属的区域的判定。预定样点可以包括左上方样点、右上方样点、左下方样点、右下方样点或中心样点中的至少一个。

在示例中,在当前块属于当前编码树单元中的左上方区域时,左侧编码树单元的左上方区域可以被设置为不可用区域。

在当前块属于当前编码树单元中的右上方区域时,左侧编码树单元的左上方区域和右上方区域可被设置为不可用区域。

在当前块属于当前编码树单元中的左下方区域时,左侧编码树单元的左上方区域、右上方区域和左下方区域可被设置为不可用区域。

在当前块属于当前编码树单元中的右下区域时,可以将左侧编码树单元的整个区域设置为不可用区域。

如在图35所示的示例中,可通过参考在当前编码树单元之前被编码/解码的三个编码树单元中的至少一个来执行当前块的预测。为此,应当保留用于存储关于三个编码树单元的信息的存储器。在示例中,当编码树单元的尺寸是64×64时,192×192尺寸的存储器是必要的。

但是,如在图35所示的示例中,当可参考编码树单元的位置根据当前编码树单元的位置而变化时,导致应该另外执行按照每个编码单元确定可参考编码树单元的位置的处理的问题。

为了解决这样的问题,在帧内块复制模式下单独设置预定尺寸的可参考缓冲器之后,可以将当前画面中被编码/解码的块存储在预定尺寸的缓冲器中。缓冲器可被称为ibc参考缓冲器。

ibc参考缓冲器的尺寸可在编码装置和解码装置中被预定义。ibc参考缓冲器可具有宽度和高度相同的正方形形状。在示例中,ibc参考缓冲器的尺寸可被定义为128×128或256×256尺寸。可选地,ibc参考缓冲器可具有宽度和高度不同的非正方形形状。在示例中,ibc参考缓冲器的尺寸可被定义为96×128或192×256尺寸。

在另一示例中,可根据编码树单元的尺寸确定ibc参考缓冲器的尺寸。在示例中,ibc参考缓冲器可被设置为256*n,并且n可被推导为128或64除以编码树单元的尺寸的值。

在另一示例中,可在比特流中用信号发送表示ibc参考缓冲器的尺寸的信息。可按照序列、画面或条带的级别用信号发送所述信息。

ibc参考缓冲器包括编码/解码完成的块的重建信息。具体地,当对当前块进行编码/解码时,可以将当前块的重建样点添加到缓冲器。在这种情况下,重建样点可以是在应用环内滤波器之前或之后的样点。

可根据预定比特深度将重建样点存储在ibc参考缓冲器中。在这种情况下,ibc参考缓冲器的比特深度可与当前画面的比特深度相同或不同。

可在比特流中用信号发送用于确定ibc参考缓冲器的比特深度的信息。在示例中,可在比特流中用信号发送表示ibc参考缓冲器的比特深度是否与当前画面的比特深度相同的信息或表示ibc参考缓冲器的比特深度的信息中的至少一个。表示ibc参考缓冲器的比特深度的信息还可表示ibc参考缓冲器的比特深度与当前画面的比特深度之间的差。

在另一示例中,可在编码装置和解码装置中预定义ibc参考缓冲器的比特深度。在示例中,ibc参考缓冲器的比特深度可被设置为7、8、9或10。

可选地,可基于颜色分量、颜色格式、画面类型或其是否为hdr画面中的至少一个来确定ibc参考缓冲器的比特深度。

图36是示出被编码/解码的当前块的重建信息存储在ibc参考缓冲器中的示例的示图。

可基于当前画面中的当前块的位置来确定ibc参考缓冲器中的当前块的存储位置。在这种情况下,当前块的位置表示当前块中预定义样点的位置。预定义样点可包括左上方样点、右上方样点、左下方样点、右下方样点或中心样点中的至少一个。

在示例中,可基于当前画面中的当前块的左上方样点的x轴位置和ibc参考缓冲器的宽度来确定当前块的x轴存储位置,并且可基于当前画面中的当前块的左上方样点的y轴位置和ibc参考缓冲器的高度来确定当前块的y轴存储位置。

等式21表示确定当前块中的重建样点的存储位置的示例。

[等式21]

ibc_buff[x%m][y%n]=reccu[x][y]

在等式21中,reccu[x][y]表示重建的当前块中的(x,y)样点的位置。ibc_buff[x][y]表示ibc参考缓冲器中的(x,y)样点的位置,并且m和n分别表示ibc参考缓冲器的宽度和高度。

结果,重建的当前块的存储位置可以被确定为具有通过与在x轴位置处的m的模运算推导的值和通过与在y轴位置处的n的模运算推导的值的坐标。

当在ibc参考缓冲器中的当前重建样点的存储位置处存在预存储的重建样点时,可用当前重建样点替换预存储的重建样点。

当使用ibc参考缓冲器时,块矢量可表示ibc参考缓冲器中的当前块的存储位置与参考块的位置之间的差。可以基于缓冲器中的当前块的存储位置来确定块矢量的最大尺寸。在示例中,块矢量的水平方向分量可以被确定为缓冲器中的当前块的存储位置与缓冲器的左侧边界之间的差或缓冲器中的当前块的存储位置与缓冲器的右侧边界之间的差的最大值。块矢量的垂直方向分量可以被确定为缓冲器中的当前块的存储位置与缓冲器的上方边界之间的差。

如在上述示例中,当前块的块矢量可从ibc合并候选被推导,或可通过将块矢量预测值和块矢量差值进行组合而被推导。

在这种情况下,可基于ibc参考缓冲器的尺寸来对修改的块矢量差值进行编码/解码以有效地对块矢量差值进行编码/解码。

图37是用于说明解释块矢量差值的编码方面的示例的示图。

可从当前块的块矢量减去块矢量预测值以推导水平方向上的块矢量差值bvd[0]和垂直方向上的块矢量差值bvd[1]。

基于isp参考缓冲器的尺寸,可推导水平方向上的修改的块矢量差值bvd'[0]和垂直方向上的修改的块矢量差值bvd'[1],并且可通过将修改之前的块矢量差值与修改之后的块矢量差值进行比较来选择将被编码的目标。

在示例中,水平方向上的块矢量差值bvd[0]和通过将ibc参考缓冲器的宽度m与水平方向上的块矢量差值bvd[0]相加推导的水平方向上的修改的块矢量差值bvd'[0]中具有较小绝对值的一个可被编码为水平方向上的块矢量差值。另外,垂直方向上的块矢量差值bvd[1]和通过将ibc参考缓冲器的高度n与垂直方向上的块矢量差值bvd[1]相加推导的垂直方向上的修改的块矢量差值bvd'[1]中具有较小绝对值的一个可被编码为垂直方向上的块矢量差值。

在示例中,在图37中所示的示例中,假设ibc参考缓冲器中的当前块的存储位置是(96,94)、参考块的位置是(16,64)、并且块矢量预测值是(-10,0)。可将表示当前块与参考块的存储位置之间的差的块矢量推导为(-80,0),并且可将表示块矢量与块矢量预测值之间的差的块矢量差值推导为(-70,0)。

水平方向上的修改的块矢量差值可通过将ibc缓冲器的宽度128与水平方向上的块矢量差值-70相加而推导为58,并且垂直方向上的修改的块矢量差值可通过将ibc缓冲器的高度128与垂直方向上的块矢量差值0相加而推导为128。由于水平方向上的修改的块矢量差值的绝对值小于水平方向上的块矢量差值,因此可将水平方向上的修改的块矢量差值编码为块矢量差值。另外,垂直方向上的修改的块矢量差值的绝对值大于垂直方向上的块矢量差值,垂直方向上的修改的块矢量可按照原样被编码为垂直方向上的修改的块矢量。

换言之,可对设置为(58,0)的块矢量差值进行编码。

当对块矢量差值和修改的块矢量差值中具有较小绝对值的块矢量差值进行编码时,水平方向上的块矢量差值和垂直方向上的块矢量差值的尺寸可分别不超过m/2和n/2。因此,可减少对块矢量差值进行编码所需的比特的数量。

在解码装置中,可通过使用ibc参考缓冲器的尺寸和块矢量来指定当前块的参考块。在这种情况下,可以通过将块矢量预测值和块矢量差值进行组合来推导块矢量。

具体地,可通过执行模运算来指定参考块的x轴位置,其中,所述模运算使用通过将当前块的x轴位置和水平方向上的块矢量以及ibc参考缓冲器的宽度m相加而推导的值。另外,可通过执行模运算来指定参考块的y轴位置,其中,所述模运算使用通过将当前块的y轴位置和垂直方向上的块矢量以及ibc参考缓冲器的高度n相加而推导的值。等式22表示基于块矢量确定参考块的位置的示例。

[等式22]

refx=x+(bvd[0]+bvp[0])%m

refy=y+(bvd[1]+bvp[1])%n

在等式22中,(x,y)表示当前块的位置,并且(refx,refy)表示参考块的位置。在示例中,在图37中所示的示例中,可通过将块矢量预测值(-10,0)与块矢量差值(58,0)相加而将当前块的块矢量推导为(48,0)。

在当前块的左上方样点的坐标为(96,46)时,将块矢量与当前块的左上方样点的坐标相加的值被推导为(144,46)。通过使用ibc参考缓冲器的宽度128和高度128的模运算,可将参考块的x轴位置推导为16(144%128),并且可将参考块的y轴位置推导为46(46%128)。

结果,当将块矢量添加到当前块的左上方样点的位置的值在ibc参考缓冲器的边界之外时,可通过将在ibc参考缓冲器的边界之外的矢量应用于相对边界来推导参考块。

在上述示例中,描述了基于ibc参考缓冲器的宽度m推导块矢量差值的水平方向分量,并且基于ibc参考缓冲器的高度n推导块矢量差值的垂直方向分量。

与所描述示例相反,基于ibc参考缓冲器的宽度m推导块矢量差值的水平方向分量,但可基于编码树单元的高度或ibc参考缓冲器的高度的一半来推导块矢量差值的垂直方向分量。

在示例中,可将垂直方向上的块矢量差值以及将编码树单元的高度与垂直方向上的块矢量差值相加的值中具有较小绝对值的一个值编码为垂直方向上的块矢量差值。在解码装置中,可以通过执行通过将垂直方向上的块矢量与当前块的y轴位置和编码树单元的高度相加而推导的值的模运算来确定参考块的y轴位置。

可按照每个预设单元来初始化ibc运动信息表。预设单元可以是编码树单元、多个编码树单元、并行块或条带。在示例中,可按照每n个编码树单元或一个/多个编码树单元行来初始化缓冲器。在这种情况下,n可以是包括1的自然数。

帧内预测是用于通过使用已经被编码/解码并且在当前块周围的重建样点来对当前块执行预测的方法。在这方面,在应用环内滤波器之前的重建样点可用于当前块的帧内预测。

帧内预测方法包括基于矩阵的帧内预测和根据具有邻近重建样点的方向的帧内预测。可以在比特流中用信号发送指示当前块的帧内预测方法的信息。该信息可以是1比特标志。可选地,可以基于当前块的位置、当前块的尺寸、当前块的形状或邻近块的帧内预测方法中的至少一个来确定当前块的帧内预测。在示例中,当存在跨画面边界的当前块时,可以将其设置为使得不将基于矩阵的帧内预测方法应用于当前块。

基于矩阵的帧内预测方法是基于存储在编码器和解码器中的矩阵与当前块周围的重建样点的矩阵乘积来获得当前块的预测块的方法。可以在比特流中用信号发送用于指定多个预存储矩阵中的任意一个的信息。解码器可以基于上面的信息和当前块的尺寸来确定用于对当前块执行帧内预测的矩阵。

一般帧内预测是基于非方向帧内预测模式或方向帧内预测模式获得当前块的预测块的方法。

可以通过从原始图像中减去预测图像来推导残差图像。在这方面,当将残差图像转换到频域时,即使从频率分量中去除高频分量,图像的主观图像质量也不会显著下降。因此,当高频分量的值被变换为小值时,或者当高频分量的值被设置为0时,可以在不引起大的视觉失真的情况下提高压缩效率。反映上面的特征,可以对当前块执行变换,以便将残差图像分解为二维频率分量。可以通过使用诸如dct(离散余弦变换)、dst(离散正弦变换)等变换方法来执行变换。

dct是通过使用余弦变换将残差图像分解(或变换)为二维频率分量,而dst是通过使用正弦变换将残差图像合成(或变换)为二维频率分量。作为对残差图像进行变换的结果,频率分量可以被表示为基本图像。在示例中,当对n×n尺寸的块执行dct变换时,可以获得n2个基本样式分量。可以通过变换获得包括在n×n尺寸的块中的每个基本样式分量的大小。根据使用的变换方法,基本样式分量的大小可以被称为dct系数或dst系数。

变换方法dct主要用于对分布有许多非零低频分量的图像进行变换。变换方法dst主要用于分布有许多高频分量的图像。

还可以通过使用除dct或dst之外的变换方法来对残差图像进行变换。

在下文中,将残差图像变换为二维频率分量被称为二维图像变换。另外,通过变换获得的基本样式分量的大小被称为变换系数。在示例中,变换系数可表示dct系数或dst系数。当应用以下描述的第一变换和第二变换两者时,变换系数可以表示由第二变换的结果产生的基本样式分量。另外,应用变换跳过的残差样点也被称作变换系数。

可以以块为单位确定变换方法。可以基于当前块的预测编码模式、当前块的尺寸或当前块的形状中的至少一个来确定变换方法。在示例中,在当前块通过帧内预测模式被编码并且当前块的尺寸小于n×n时,可通过使用dst变换方法执行变换。另一方面,当不满足条件时,可以通过使用dct变换方法来执行变换。

可以不对残差图像的一些块执行二维图像变换。不执行二维图像变换可被称为变换跳过。变换跳过可表示不对当前块执行第一变换和第二变换。当应用变换跳过时,可以将量化应用于不执行变换的残差值。

可以基于当前块的尺寸或形状中的至少一个来确定是否允许对当前块进行变换跳过。在示例中,仅在当前块的尺寸小于阈值时,可应用变换跳过。阈值与当前块的样点的宽度、高度或数量中的至少一个相关,并且可被定义为32×32等。可选地,可仅针对正方形块允许变换跳过。在示例中,可针对32×32、16×16、8×8或4×4尺寸的正方形块允许变换跳过。可选地,只有当不使用子分区帧内编码方法时,才可以允许变换跳过。

可选地,当将子分区帧内编码方法应用于当前块时,可以针对每个子分区确定是否应用变换跳过。

图38是示出对每个子块执行是否执行变换跳过的确定的示例的示图。

变换跳过可仅被应用于多个子块的一部分。在示例中,如在图38所示的示例中,可以将其设置为将变换跳过应用于当前块的上方位置处的子块,并且可以将其设置为不将变换跳过应用于下方位置处的子块。

可基于在比特流中用信号发送的信息来确定不允许变换跳过的子块的变换类型。在示例中,可以基于将在下文中描述的tu_mts_idx来确定变换类型。

可选地,可基于子块的尺寸确定子块的变换类型。在示例中,可基于子块的宽度是否等于或大于和/或等于或小于阈值来确定水平方向变换类型,并且可基于子块的高度是否等于或大于和/或等于或小于阈值来确定垂直方向变换类型。

在通过使用dct或dst对当前块执行变换之后,可以再次对变换后的当前块执行变换。在这方面,基于dct或dst的变换可被定义为第一变换,并且对应用第一变换的块再次执行变换可被定义为第二变换。

可通过使用多个变换核候选中的任意一个来执行第一变换。在示例中,可通过使用dct2、dct8或dst7中的任意一个来执行第一变换。

不同的变换核可用于水平方向和垂直方向。可在比特流中用信号发送表示水平方向的变换核与垂直方向的变换核的组合的信息。

第一变换的处理单元可不同于第二变换。在示例中,可对8×8块执行第一变换,并且可对变换后的8×8块内的4×4尺寸的子块执行第二变换。可选地,可针对属于3个4×4尺寸的子块的变换系数执行第二变换。所述3个子块可包括位于当前块的左上方处的子块、与所述子块的右侧邻近的子块和与所述子块的下方邻近的子块。可选地,可对8×8尺寸的块执行第二变换。

还可以将不执行第二变换的剩余区域中的变换系数设置为0。

可选地,可对4×4块执行第一变换,并且可对包括变换后的4×4块的具有8×8尺寸的区域执行第二变换。

可在比特流中用信号发送表示是否执行第二变换的信息。在示例中,可用信号发送表示是否执行第二变换的标志、或指定是否执行第二变换的索引信息和用于第二变换的变换核。在示例中,当索引信息为0时,其表示不对当前块执行第二变换。另一方面,当索引信息大于0时,可通过索引信息确定用于第二变换的变换核。

可选地,可基于水平方向变换核和垂直方向变换核是否彼此相同来确定是否执行第二变换。在一个示例中,可仅在水平方向变换核和垂直方向变换核彼此相同时执行第二变换。可选地,可仅在水平方向变换核和垂直方向变换核彼此不同时执行第二变换。

可选地,可仅在预定义变换核用于水平方向变换和垂直方向变换时允许第二变换。在一个示例中,当dct2变换核用于水平方向变换和垂直方向变换时,可允许第二变换。可选地,当将子分区帧内编码方法应用于当前块时,可以仅当dct2变换核用于水平方向变换和垂直方向变换时才允许第二变换。

可选地,可基于当前块的非零变换系数的数量确定是否执行第二变换。在一个示例中,在当前块的非零变换系数的数量小于或等于阈值时,预测方法可被配置为不使用第二变换。在当前块的非零变换系数的数量大于阈值时,预测方法可被配置为使用第二变换。只要使用帧内预测对当前块进行编码,预测方法就可以被配置为使用第二变换。

可选地,可基于当前块的最后非零变换系数的位置确定是否执行第二变换。在示例中,在当前块的最后非零变换系数的x轴坐标或y轴坐标中的至少一个大于阈值时,或者在当前块的最后非零变换系数所属的子块的x轴坐标或y轴坐标中的至少一个大于阈值时,可不执行第二变换。在这种情况下,可以在编码装置和解码装置中预定义阈值。可选地,可基于当前块的尺寸或形状确定阈值。

可选地,当在当前块中仅存在dc分量的变换系数时,可以将其设置为不执行第二变换。在这种情况下,dc分量表示当前块中左上方位置处的变换系数。

可选地,当将基于矩阵的帧内预测应用于当前块时,可以将其设置为不执行第二变换。

可在比特流中用信号发送表示当前块的变换类型的信息。该信息可以是表示用于水平方向的变换类型和用于垂直方向的变换类型的组合之一的索引信息tu_mts_idx。

基于由索引信息tu_mts_idx指定的变换类型候选,可确定用于垂直方向的变换核和用于水平方向的变换核。表3表示根据tu_mts_idx的变换类型组合。

[表3]

变换类型可被确定为dct2、dst7或dct8中的一个。可选地,可插入变换跳过作为变换类型候选。

当使用表3时,当tu_mts_idx为0时,可以在水平方向和垂直方向上应用dct2。当tu_mts_idx为2时,可以在水平方向上应用dct8,并且可以在垂直方向上应用dct7。

当应用子分区帧内编码方法时,可以独立地确定子块的变换核。在示例中,用于指定变换类型组合候选的信息可按照每个子块被编码并被用信号发送。因此,子块之间的变换核可不同。

可选地,子块可使用相同的变换类型。在这种情况下,可仅针对第一子块用信号发送指定变换类型组合候选的tu_mts_idx。可选地,可以按照编码块的级别用信号发送tu_mts_idx,并且可以通过参考按照编码块的级别用信号发送的tu_mts_idx来确定子块的变换类型。可选地,可以基于子块中的一个子块的尺寸、形状或帧内预测模式中的至少一个来确定变换类型,并且可以将确定的变换类型设置为用于所有子块。

图39是示出子块使用相同变换类型的示例的示图。

当编码块在水平方向上被分区时,可将编码块的上方位置处的子块(sub-cu0)的变换类型设置为与下方位置处的子块(sub-cu1)的变换类型相同。在示例中,如在图39的(a)中所示的示例中,当基于针对上方子块被用信号发送的tu_mts_idx来确定水平变换类型和垂直变换类型时,确定的变换类型也可被应用于下方子块。

当编码块在垂直方向上被分区时,可将编码块的左侧位置处的子块(sub-cu0)的变换类型设置为与右侧位置处的子块(sub-cu1)的变换类型相同。在示例中,如在图39的(b)中所示的示例中,当基于针对左侧子块被用信号发送的tu_mts_idx来确定水平变换类型和垂直变换类型时,确定的变换类型也可被应用于右侧子块。

可以基于当前块的尺寸或形状、非零系数的数量、是否执行第二变换或是否应用子分区帧内编码方法中的至少一个来确定是否对索引信息进行编码。在示例中,当将子分区帧内编码方法应用于当前块时,或者当非零系数的数量等于或小于阈值时,可以省略用信号发送索引信息。当省略用信号发送索引信息时,可将默认变换类型应用于当前块。

默认变换类型可包括dct2或dst7中的至少一个。当存在多个默认变换类型时,可通过考虑当前块的尺寸、形状或帧内预测模式、是否执行第二变换或是否应用子分区帧内编码方法中的至少一个来选择多个默认变换类型中的一个。在示例中,可以基于当前块的宽度是否在预设范围内将多个变换类型中的一个确定为水平方向变换类型,并且可以基于当前块的高度是否在预设范围内将多个变换类型中的一个确定为垂直方向变换类型。可选地,可根据当前块的尺寸、形状或帧内预测模式或是否执行第二变换来不同地确定默认模式。

可选地,当在当前块中仅存在dc分量的变换系数时,可以将水平方向变换类型和垂直方向变换类型设置为默认变换类型。在示例中,当在当前块中仅存在dc分量的变换系数时,可以将水平方向变换类型和垂直方向变换类型设置为dct2。

可基于当前块的尺寸或形状确定阈值。在示例中,在当前块的尺寸等于或小于32×32时,可将阈值设置为2,并且在当前块大于32×32时(例如,在当前块为32×64或64×32尺寸的编码块时),可将阈值设置为4。

多个查找表可以被预先存储在编码装置/解码装置中。分配给变换类型组合候选的索引值、变换类型组合候选的类型或变换类型组合候选的数量中的至少一个对于多个查找表中的每个可以是不同的。

基于当前块的尺寸、形状或帧内预测模式、是否应用第二变换或是否将变换跳过应用于邻近块中的至少一个,可选择用于当前块的查找表。

在示例中,在当前块的尺寸等于或小于4×4时,或当通过帧间预测对当前块进行编码时,可使用第一查找表,且在当前块的尺寸大于4×4时,或当通过帧内预测对当前块进行编码时,可使用第二查找表。

可选地,可在比特流中用信号发送指示多个查找表之一的信息。解码装置可基于所述信息选择当前块的查找表。

在另一示例中,可基于当前块的尺寸、形状、预测编码模式或帧内预测模式、是否应用第二变换或是否将变换跳过应用于邻近块中的至少一个来自适应地确定分配给变换类型组合候选的索引。在示例中,在当前块的尺寸为4×4时分配给变换跳过的索引可小于在当前块的尺寸大于4×4时分配给变换跳过的索引。具体地,在当前块的尺寸为4×4时,可以将索引0分配给变换跳过,并且在当前块大于4×4且等于或小于16×16时,可以将大于0的索引(例如,索引1)分配给变换跳过。在当前块大于16×16时,可以将最大值(例如,5)分配给变换跳过的索引。

可选地,当通过帧间预测对当前块进行编码时,可以将索引0分配给变换跳过。当通过帧内预测对当前块进行编码时,可以将大于0的索引(例如,索引1)分配给变换跳过。

可选地,在当前块是通过帧间预测被编码的4×4尺寸的块时,可以将索引0分配给变换跳过。另一方面,在当前块未通过帧间预测被编码时,或在当前块大于4×4时,可将大于0的索引(例如,索引1)分配给变换跳过。

还可使用与表3中枚举的变换类型组合候选不同的变换类型组合候选。在示例中,可使用由应用于水平方向变换或垂直方向变换中的一个的变换跳过和应用于水平方向变换或垂直方向变换中的另一个的变换核(诸如dct2、dct8或dst7等)组成的变换类型组合候选。在这种情况下,可以基于当前块的尺寸(例如,宽度和/或高度)、形状、预测编码模式或帧内预测模式中的至少一个来确定变换跳过将用作水平方向的变换类型候选还是垂直方向的变换类型候选。

表示是否显式地用信号发送用于确定当前块的变换类型的索引信息的信息可在比特流中被用信号发送。在示例中,表示显式变换类型确定是否被允许用于通过帧内预测被编码的块的信息sps_explicit_intra_mts_flag和/或表示显式变换类型确定是否被允许用于通过帧间预测被编码的块的信息sps_explicit_intra_mts_flag可以按照序列级被用信号发送。

当允许显式变换类型确定时,可以基于在比特流中用信号发送的索引信息tu_mts_idx来确定当前块的变换类型。另一方面,当不允许显式变换类型确定时,可基于当前块的尺寸或形状、是否允许以子块为单位执行变换、包括非零变换系数的子块的位置、是否执行第二变换或是否应用子分区帧内编码方法中的至少一个来确定变换类型。在示例中,可基于当前块的宽度确定当前块的水平方向变换类型,并且可基于当前块的高度确定当前块的垂直方向变换类型。例如,在当前块的宽度小于4或大于16时,可将水平方向变换类型确定为dct2。否则,可将水平方向变换类型确定为dst7。在当前块的高度小于4或大于16时,可将垂直方向变换类型确定为dct2。否则,可将垂直方向变换类型确定为dst7。在这种情况下,可基于当前块的尺寸、形状或帧内预测模式中的至少一个来确定将与宽度和高度进行比较的阈值,以确定水平方向变换类型和垂直方向变换类型。

可选地,在当前块具有高度和宽度相同的正方形形状时,可将水平方向变换类型和垂直方向变换类型设置为相同,但是在当前块具有高度和宽度彼此不同的非正方形形状时,可不同地设置水平方向变换类型和垂直方向变换类型。在示例中,在当前块的宽度大于高度时,可将水平方向变换类型确定为dst7,并且可将垂直方向变换类型确定为dct2。在当前块的高度大于宽度时,可将垂直方向变换类型确定为dst7,并且可将水平方向变换类型确定为dct2。

变换类型候选的数量和/或类型或变换类型组合候选的数量和/或类型可根据是否允许显式变换类型确定而不同。在示例中,当允许显式变换类型确定时,dct2、dst7及dct8可被用作变换类型候选。因此,水平方向变换类型和垂直方向变换类型中的每个可被设置为dct2、dst8或dct8。当不允许显式变换类型确定时,仅dct2和dst7可用作变换类型候选。因此,可将水平方向变换类型和垂直方向变换类型中的每个确定为dct2或dst7。

在解码装置中,可执行第二变换的逆变换(第二逆变换),并且可对其结果执行第一变换的逆变换(第一逆变换)。作为执行第二逆变换和第一逆变换的结果,可以获得当前块的残差信号。

当在编码装置中执行变换和量化时,解码装置可通过反量化和逆变换获得残差块。可以通过在解码装置中将预测块和残差块相加来获得当前块的重建块。

当获得当前块的重建块时,可以经由环内滤波来减少在量化和编码处理中发生的信息损失。环内滤波器可包括去块滤波器、样点自适应偏移滤波器(sao)或自适应环内滤波器(alf)中的至少一个。在下文中,在应用环内滤波器之前的重建块被称作第一重建块,并且在应用环内滤波器之后的重建块被称作第二重建块。

可通过将去块滤波器、sao或alf中的至少一个应用于第一重建块来获得第二重建块。在这种情况下,可在应用去块滤波器之后应用sao或alf。

去块滤波器用于减轻在以块为单位执行量化时产生的块边界上的块伪影。为了应用去块滤波器,可确定第一重建块与邻近重建块之间的块强度。

图40是示出确定块强度的处理的流程图。

在图40中所示的示例中,p表示第一重建块并且q表示邻近重建块。在这种情况下,邻近重建块可邻近当前块的左侧或上方。

在图40所示的示例中,示出了通过考虑p和q的预测编码模式、是否包括非零变换系数、是否通过使用相同的参考画面执行帧间预测或者运动矢量的差值是否等于或大于阈值来确定块强度。

可基于块强度来确定是否应用去块滤波器。在示例中,当块强度为0时,可以不执行滤波。

sao是为了减轻在频域中执行量化时产生的环状伪影。可以通过增加或减去通过考虑第一重建图像的样式而确定的偏移来执行sao。确定偏移的方法包括边缘偏移(eo)或频带偏移。eo表示根据周围像素的样式确定当前样点的偏移的方法。b0表示将公共偏移应用于区域中具有相似亮度值的一组像素的方法。具体地,像素亮度可以被划分为32个统一部分,并且具有相似亮度值的像素可以被设置为一个集合。在示例中,可将32个频带的4个相邻频带设置为一个群组,并且可将相同偏移值应用于属于4个频带的样点。

alf是通过将具有预定义尺寸/形状的滤波器应用于第一重建图像或应用了去块滤波器的重建图像来产生第二重建图像的方法。下面的等式23表示应用alf的示例。

[等式23]

可以以画面、编码树单元、编码块、预测块或变换块为单元选择预定义滤波器候选中的任意一个。对于滤波器候选中的每个,尺寸或形状中的任意一个可以是不同的。

图41示出预定义滤波器候选。

如在图41所示的示例中,可以选择5×5、7×7或9×9尺寸的菱形形状中的至少一个。

仅5×5尺寸的菱形形状可用于色度分量。

将如关于解码处理或编码处理所描述的实施例分别应用于编码处理或解码处理可以被包括在本公开的范围内。在本公开的范围内,按照预定顺序发生操作的实施例可以被修改为按照与预定顺序不同的顺序发生操作的实施例。

尽管基于一系列操作或流程图描述了上述实施例,但是实施例不将方法的操作的时间序列顺序限制于此。在另一示例中,操作可以根据需要同时被执行或者按照与其不同的顺序被执行。此外,在上述实施例中,构成框图的每个组件(例如,单元、模块等)可以以硬件设备或软件的形式被实现。多个组件可以彼此组合成单个组件,其中,单个组件可以使用单个硬件装置或软件被实现。可以使用可以经由各种计算机组件执行的程序指令来实现上述实施例。指令可以被记录在计算机可读存储介质中。计算机可读存储介质可以在其中单独地或彼此组合地包括程序指令、数据文件、数据结构等。计算机可读存储介质的示例包括被特别配置为在其中存储并执行程序指令的磁性介质(诸如硬盘、软盘和磁带)、光存储介质(诸如cd-rom、dvd)和磁光介质(诸如光盘)、以及硬件装置(诸如rom、ram、闪存等)。硬件设备可以被配置为作为一个或多个软件模块操作以执行根据本公开的处理,反之亦然。

工业实用性

本公开可以被应用于对视频进行编码/解码的电子装置。

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