基于历史的运动矢量预测(HMVP)模式的部分修剪方法
文献发布时间:2023-06-19 11:55:48
相关申请的交叉引用
根据适用的专利法和/或依据巴黎公约的规则,本申请旨在及时要求2018年12月3日提交的国际专利申请No.PCT/CN2018/118896的优先权和利益。其全部公开内容通过引用而并入,作为本申请的公开的一部分。
技术领域
该专利文件涉及图像和视频的编码和解码。
背景技术
数字视频占据互联网和其他数字通信网络上的最大带宽使用。随着能够接收和显示视频的联网用户设备的数量增加,预计对数字视频使用的带宽需求将继续增长。
发明内容
所公开的技术可以由视频解码器或编码器实施例在使用候选运动列表的视频解码或编码期间使用。
在一个示例方面,公开了一种视频处理的方法。该方法包括:确定对于从一个或多个基于历史的运动矢量预测(HMVP)表推导的HMVP候选的修剪规则;基于修剪规则对HMVP候选执行修剪或跳过修剪,其中,应用修剪来确定是否将HMVP候选插入当前块的最终候选列表中;以及基于最终候选列表,对当前块执行视频处理,其中HMVP候选被分类为多个类别之一,并且基于HMVP候选被分类到的类别而确定修剪规则。
在另一示例方面,公开了一种视频处理的方法。该方法包括:基于修剪规则来修剪基于历史的运动矢量预测(HMVP)候选,以确定是否将HMVP候选插入当前块的最终候选列表中;和基于所述最终候选列表,对所述当前块执行视频处理;其中,所述修剪包括将所述HMVP候选与所述最终候选列表中的至少一个特定运动候选进行比较,以及基于从何处推导出该特定运动候选来确定修剪规则。
在又一示例方面,公开了一种视频处理的方法。该方法包括:确定对于从一个或多个基于历史的运动矢量预测(HMVP)表推导的HMVP候选的修剪规则;基于所述修剪规则,通过将所述HMVP候选与最终候选列表中的至少一个特定运动候选进行比较来修剪所述HMVP候选,或者跳过对所述HMVP候选的修剪,其中,应用所述修剪来确定是否将所述HMVP候选插入当前块的最终候选列表中;和基于所述最终候选列表,对所述当前块执行视频处理,其中,所述HMVP候选被分类为多个类别之一,并且所述修剪规则基于所述HMVP候选被分类到的类别以及从何处推导出该特定运动候选而确定。
在再一示例方面,公开了一种视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,将当前块的第一候选列表中的运动候选分类为运动候选的多个类别;将来自第二候选列表的新的运动候选与第一类别的运动候选进行比较;基于比较结果确定是否将该新的运动候选插入第一候选列表中;响应于确定将该新的运动候选插入第一候选列表中,将该新的运动候选插入第一候选列表中;和基于第一候选列表来执行所述转换。
在一个示例方面,公开了一种视频处理的方法。该方法包括:在包括当前视频块的视频和当前视频块的比特流表示之间的转换期间,生成运动候选列表,将运动候选列表分类为运动候选的多个类别,其中每个类别被分配对应的修剪规则,以及通过根据修剪规则使用修剪方法执行修剪来决定运动候选是否可以被添加到运动候选的最终列表中并基于最终列表解码该块来执行转换。
在另一示例方面,公开了另一种视频处理的方法。该方法包括:通过使用基于从何处推导出Merge候选的规则对基于历史的运动矢量预测(HMVP)候选应用修剪过程来生成规则Merge候选列表,以及使用规则Merge候选列表来执行当前视频块和当前视频块的比特流表示之间的转换。
在又一示例方面,公开了另一种视频处理的方法。该方法包括:通过使用基于从中推导出几何预测模式候选的规则运动矢量的规则对几何预测模式候选应用修剪过程来生成候选列表,以及使用候选列表来执行当前视频块和当前视频块的比特流表示之间的转换。
在又一方面,公开了另一种视频处理的方法。该方法包括对于当前视频块和当前视频块的比特流表示之间的转换,执行确定对基于历史的运动矢量预测量表更新过程禁用修剪操作,其中该确定基于视频特性,以及基于对禁用修剪操作的确定来执行该转换。
在又一示例方面,公开了另一种视频处理的方法。该方法包括执行对于以下中的至少一个中的所允许的候选的最大数量的确定:(1)当前视频块的几何预测模式Merge候选列表,或(2)运动矢量差(MMVD)Merge候选列表中的基本Merge候选的最大数量,或(3)基于子块的MMVD Merge候选列表中的Merge候选的最大数量,或(4)几何预测模式列表中的仿射Merge候选的最大数量;以及基于该确定,执行当前视频块和当前块的比特流表示之间的转换,其中候选的最大数量在比特流表示中的指示符中信令通知。
在又一示例方面,公开了另一种视频处理的方法。该方法包括执行对于以下中的至少一个中的所允许的候选的最大数量的确定:(1)当前视频块的几何预测模式Merge候选列表,或者(2)运动矢量差(MMVD)Merge候选列表中的基本Merge候选的最大数量,或者(3)基于子块的MMVD Merge候选列表中的Merge候选的最大数量,或者(4)几何预测模式列表中的仿射Merge候选的最大数量;以及基于该确定,执行当前视频块和当前块的比特流表示之间的转换,其中所允许的候选的最大数量被确定为等于规则Merge候选列表中的候选的最大数量。
在又一示例方面,公开了一种视频编码器装置。视频编码器装置包括被配置为实施本文描述的方法的处理器。
在又一示例方面,公开了一种视频解码器装置。视频解码器装置包括被配置为实施本文描述的方法的处理器。
在又一方面,公开了一种其上存储有代码的计算机可读介质。当该代码由处理器执行时,使得处理器实施本文档中描述的方法。
本文件描述了这些和其他方面。
附图说明
图1是用于Merge候选列表构建的推导过程的示例。
图2示出了空域Merge候选的示例位置。
图3示出了考虑用于空域Merge候选的冗余检查的候选对的示例。
图4A-图4B示出了N×2N和2N×N分割的第二PU(Prediction Unit,预测单元)的示例位置。
图5是时域Merge候选的运动矢量缩放的图示。
图6示出了时域Merge候选C0和C1的候选位置。
图7示出了组合的双向预测Merge候选的示例。
图8概述了运动矢量预测候选的推导过程。
图9是空域运动矢量候选的运动矢量缩放的示例图示。
图10示出了用于CU(Coding Unit,编解码单元)的可选时域运动矢量预测(Alternative Temporal Motion Vector Prediction,ATMVP)运动预测的示例。
图11示出了具有四个子块(A-D)的一个CU及其邻近块(a-d)的示例。
图12是用不同MV(Motion Vector,运动矢量)精度进行编码的示例流程图。
图13A示出了135度分割类型(从左上角向右下角划分)。
图13B示出了45度划分模式。
图14示出了邻近块的位置。
图15示出了应用第一加权因子组的CU的示例。
图16A-16B示出了运动矢量存储示例。
图17示出了在TPM(Triangular Prediction Mode,三角形预测模式)标志编解码中用于上下文选择的邻近块(A和L)的示例。
图18A-图18B分别示出了4参数和6参数简化仿射运动模型。
图19示出了每一子块的仿射MVF(Motion Vector Field,运动矢量场)的示例。
图20A示出了4参数仿射模型的示例。
图20B示出了6参数仿射模型的示例。
图21示出了继承的仿射候选的AF_INTER的MVP(motion vector predictor,运动矢量预测量)的示例。
图22示出了构建的仿射候选的AF_INTER的MVP的示例。
图23A示出了五个邻近块场景中的AF_MERGE的候选的示例。
图23B示出了CPMV(control point motion vector,控制点运动矢量)预测量推导过程的示例流程。
图24示出仿射Merge模式的示例候选位置。
图25示出了帧内块补偿的示例。
图26示出了共位图片中的有效对应区域的示例。
图27示出了基于历史的运动矢量预测(history based motion vectorprediction,HMVP)的示例编解码流程。
图28描绘了修改的Merge候选列表构建过程。
图29示出了UMVE(Ultimate Motion Vector Expression,最终运动矢量表达)搜索过程的示例。
图30示出了UMVE搜索点的示例。
图31是视频处理装置的示例的框图。
图32是视频处理方法的示例的流程图。
图33是视频处理方法的另一示例的流程图。
图34是视频处理方法的又一示例的流程图。
图35是视频处理方法的再一示例的流程图。
图36是视频处理方法的再一示例的流程图。
具体实施方式
本文档提供了视频比特流的解码器可以使用的各种技术,以提高解压缩或解码的数字视频或图像的质量。此外,视频编码器还可以在编码的过程期间实施这些技术,以便重构用于进一步编码的解码帧。
为了便于理解,在本文档中使用了章节标题,并且不将实施例和技术限制于对应的章节。如此以来,来自一个章节的实施例可以与来自其它章节的实施例组合。
1.概述
本专利文档涉及视频编解码技术。具体地,它涉及视频编解码中运动矢量编解码。它可以应用于现有的视频编解码标准,如HEVC,或即将要定案的标准(例如,多功能视频编解码(Versatile Video Coding,VVC))。它也可以应用于未来的视频编解码标准或视频编解码器。
在本文档中,术语“视频处理”可以指视频编码、视频解码、视频压缩或视频解压缩。例如,视频压缩算法可以在从视频的像素表示到对应比特流表示的转换期间应用,反之亦然。
2.引言
视频编解码标准主要是通过熟知的ITU-T和ISO/IEC标准的发展而演变的。ITU-T制定了H.261和H.263,ISO/IEC制定了MPEG-1和MPEG-4可视化,并且这两个组织联合制定了H.262/MPEG-2视频和H.264/MPEG-4高级视频编解码(Advanced Video Coding,AVC)和H.265/HEVC标准。自H.262以来,视频编解码标准基于混合视频编解码结构,其中使用时域预测加变换编解码。为了探索HEVC以外的未来视频编解码技术,VCEG和MPEG于2015年联合成立了联合视频探索组(Joint Video Exploration Team,JVET)。此后,JVET采用了许多新方法,并将其放入名为联合探索模型(Joint Exploration Model,JEM)的参考软件中。2018年4月,VCEG(Q6/16)和ISO/IEC JTC1 SC29/WG11(MPEG)之间的联合视频专家组(JVET)成立,以致力于VVC标准,目标是与HEVC相比比特率降低50%。
2.1HEVC的帧间预测
每个帧间预测的PU具有针对一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。也可以使用inter_pred_idc信令通知对两个参考图片列表之一的使用。运动矢量可以被显式地编解码为相对于预测量的增量。
当用跳过模式对CU进行编解码时,一个PU与该CU相关联,并且不存在显著的残差系数、没有编解码的运动矢量增量或参考图片索引。指定Merge模式,由此从包括空域和时域候选的邻近PU获得当前PU的运动参数。Merge模式可以应用于任何帧间预测的PU,而不仅仅用于跳跃模式。Merge模式的替代方案是运动参数的显式传输,其中为每一PU显式地信令通知运动矢量(更准确地,与运动矢量预测量相比的运动矢量差(MVD))、每个参考图片列表的对应参考图片索引和参考图片列表的使用。在本公开中,这种模式被称为高级运动矢量预测(Advanced Motion Vector Prediction,AMVP)。
当信令指示要使用两个参考图片列表之一时,从一个样点块中产生PU。这被称为“单向预测”。单向预测可用于P条带和B条带。
当信令指示要使用两个参考图片列表两者时,从两个样点块中产生PU。这被称为“双向预测”。双向预测仅可用于B条带。
以下文本提供了关于HEVC中规定的帧间预测模式的详细信息。描述将从Merge模式开始。
2.1.1参考图片列表
在HEVC中,术语帧间预测用于表示从除当前解码图片之外的参考图片的数据元素(例如,样点值或运动矢量)推导的预测。像在H.264/AVC中一样,可以从多个参考图片中预测图片。用于帧间预测的参考图片被组织在一个或多个参考图片列表中。参考索引识别列表中哪些参考图片应该用于创建预测信号。
单个参考图片列表(列表0)用于P条带,并且两个参考图片列表(列表0和列表1)用于B条带。应当注意,就捕获/显示顺序而言,列表0/1中包括的参考图片可以是来自过去和未来的图片。
2.1.2Merge模式
2.1.2.1Merge模式的候选的推导
当使用Merge模式预测PU时,从比特流中解析指向Merge候选列表中的条目的索引并将其用于检索运动信息。在HEVC标准中规定了该列表的构建,并且可以概述为按照以下步骤的序列进行:
·步骤1:初始候选推导
o步骤1.1:空域候选推导
o步骤1.2:空域候选的冗余检查
o步骤1.3:时域候选推导
·步骤2:虚拟候选插入
o步骤2.1:创建组合双向预测候选
o步骤2.2:插入默认的运动候选(零运动候选)
这些步骤也示意性地描绘在图1中。对于空域Merge候选推导,在位于五个不同位置的候选当中选择最多四个Merge候选。对于时域Merge候选推导,在两个候选当中选择最多一个Merge候选。由于在解码器处假设每个PU的恒定数量的候选,因此当从步骤1获得的候选的数量未达到在条带头中信令通知的Merge候选的最大数量(MaxNumMergeCand)时,生成附加候选。由于候选的数量是恒定的,因此使用截断一元二值化(Truncated Unarybinarization,TU)对最佳Merge候选的索引进行编码。如果CU的尺寸等于8,则当前CU的所有PU共享单个Merge候选列表,其与2N×2N预测单元的Merge候选列表相同。
在下文中,将详细描述与上述步骤相关联的操作。
图1示出了用于Merge候选列表构造的推导过程的示例。
2.1.2.2空域候选推导
在空域Merge候选的推导中,在位于图2中描绘的位置的候选当中选择最多四个Merge候选。
图2示出了空域Merge候选的示例位置。
推导的顺序是A
图3示出了考虑用于空域Merge候选的冗余检查的候选对的示例。为了降低计算复杂度,在所提到的冗余检查中并非所有可能的候选对都被考虑。相反,只考虑与图3中的箭头链接的对,并且该候选仅在用于冗余检查的对应候选不具有相同的运动信息时才被添加到列表中。重复运动信息的另一源是与不同于2N×2N的分割相关联的“第二PU”。作为示例,图4A-图4B分别描绘了N×2N和2N×N的情况下的第二PU。在当前PU被分割为N×2N时,不被考虑位置A
图4A-图4B示出了N×2N和2N×N分割的第二PU的示例位置。
2.1.2.3时域候选推导
在该步骤中,仅一个候选被添加到列表。具体地,在该时域Merge候选的推导中,基于属于给定参考图片列表内与当前图片具有最小POC(Picture Order Count,图片顺序计数)差的图片的共位(co-located)PU来推导缩放运动矢量。在条带头中显式地信令通知要用于推导共位PU的参考图片列表。如在图5中由虚线所示的,获得了对时域Merge候选的缩放运动矢量,该缩放运动矢量是使用POC距离tb和td从共位PU的运动矢量缩放的,其中tb被定义为当前图片的参考图片与当前图片之间的POC差,并且td被定义为共位图片的参考图片与共位图片之间的POC差。时域Merge候选的参考图片索引被设置为等于零。HEVC规范中描述了缩放过程的实际实现。对于B条带,两个运动矢量(一个用于参考图片列表0,并且另一个用于参考图片列表1)被获得并组合,以生成双向预测Merge候选。
图5是时域Merge候选的运动矢量缩放的图示。
如图6所示,在属于参考帧的共位PU(Y)中,在候选C
图6示出了时域Merge候选的候选位置C0和C1。
2.1.2.4虚拟候选插入
除了空域和时域的Merge候选之外,存在两种附加类型的虚拟Merge候选:组合的双向预测Merge候选和零Merge候选。
2.1.2.4.1组合的双向预测Merge候选
通过利用空域和时域的Merge候选来生成组合的双向预测Merge候选。组合的双向预测Merge候选仅用于B条带。通过将初始候选的第一参考图片列表运动参数与另一初始候选的第二参考图片列表运动参数组合来生成组合的双向预测候选。如果这两个元组提供不同的运动假设,则它们将形成新的双向预测候选。
图7示出了组合的双向预测Merge候选的示例。
作为示例,图7描绘了当原始列表(在左边)中的两个候选(其具有mvL0和refIdxL0或mvL1和refIdxL1)用于创建被添加到最终列表(在右边)的组合的双向预测Merge候选。存在许多关于组合的规则,这些规则被考虑以生成这些附加Merge候选。
2.1.2.4.2默认运动候选
插入零运动候选以填充Merge候选列表中的剩余条目,并因此达到MaxNumMergeCand容量。这些候选具有零空域位移和参考图片索引,该索引从零开始并且每次向列表中添加新的零运动候选时递增。
更具体地,按顺序执行以下步骤,直到Merge列表已满:
1.将变量numRef设置为与用于P条带的列表0相关联的参考图片的数量,或者用于B条带的两个列表中的参考图片的最小数量;
2.添加不重复的零运动候选:
对于变量i为0…numRef-1,为列表0(如果是P条带)或两个列表(如果是B条带)添加其MV设置为(0,0)且参考图片索引设置为i的默认运动候选。
3.添加重复的零运动候选,其中MV设置为(0,0),列表0的参考图像索引设置为0(如果是P条带),而两个列表的参考图像索引设置为0(如果是B条带)。
2.1.3AMVP
AMVP利用运动矢量与邻近PU的时空相关性,该时空相关性用于运动参数的显式传输。对于每个参考图片列表,通过首先检查左边、上方的时域邻近的PU位置的可用性,移除冗余候选并添加零矢量以使候选列表为恒定长度,来构建运动矢量候选列表。然后,编码器可以从候选列表中选择最佳预测量,并发送指示所选候选的对应索引。与Merge索引信令类似,使用截断一元对最佳运动矢量候选的索引进行编码。在这种情况下,要编码的最大值是2(见图8)。在接下来的章节中,将提供关于运动矢量预测候选的推导过程的细节。
2.1.3.1AMVP候选的推导
图8概述了运动矢量预测候选的推导过程。
在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选推导,最终基于位于如图2所示描绘的五个不同位置的每个PU的运动矢量来推导两个运动矢量候选。
对于时域运动矢量候选推导,从基于两个不同共位位置而推导的两个候选中选择一个运动矢量候选。在产生第一时空候选列表之后,移除列表中的重复运动矢量候选。如果潜在候选的数量大于二,则从列表中移除相关联的参考图片列表内其参考图片索引大于1的运动矢量候选。如果时空运动矢量候选的数量小于二,则将附加的零运动矢量候选(其中MV被设置为(0,0))添加到列表。
2.1.3.2空域运动矢量候选
在空域运动矢量候选的推导中,在从位于如图2所描绘的位置的PU中推导的五个潜在候选当中考虑最多两个候选,那些位置与运动Merge的位置相同。当前PU的左侧的推导顺序被定义为A
·没有空域缩放
-(1)相同的参考图片列表,以及相同的参考图片索引(相同的POC)
-(2)不同的参考图片列表,但是相同的参考图片(相同的POC)
·空域缩放
-(3)相同的参考图片列表,但是不同的参考图片(不同的POC)
-(4)不同的参考图片列表,以及不同的参考图片(不同的POC)
首先检查非空域缩放情况,然后是空域缩放。当不管参考图片列表如何POC在邻近PU的参考图片与当前PU的参考图片之间不同时,考虑空域缩放。如果左边候选的所有PU都不可用或者都是帧内编解码的,则允许针对上方运动矢量的缩放以帮助对左边和上方MV候选的并行推导。否则,针对上方运动矢量不允许空域缩放。
图9是空域运动矢量候选的运动矢量缩放的示例说明。
在空域缩放过程中,以与时域缩放类似的方式来缩放邻近PU的运动矢量,如图9所示。主要差异在于给定参考图片列表和当前PU的索引作为输入;实际缩放过程与时域缩放的过程相同。
2.1.3.3时域运动矢量候选
除了参考图片索引推导之外,用于推导时域Merge候选的所有过程与用于推导空域运动矢量候选的过程相同(参见图6)。参考图片索引被信令通知给解码器。
2.2JEM中基于子CU的运动矢量预测方法
在具有QTBT(QuadTrees plus Binary Trees,四叉树加二叉树)的JEM中,每个CU对于每个预测方向最多可以有一组运动参数。通过将大CU划分成子CU并且推导大CU的所有子CU的运动信息,在编码器中考虑两个子CU级别运动矢量预测方法。可选时域运动矢量预测(ATMVP)方法允许每个CU从共位参考图片中比当前CU小的多个块中提取多组运动信息。在空时运动矢量预测(Spatial-Temporal Motion Vector Prediction,STMVP)方法中,通过使用时域运动矢量预测量和空域邻近运动矢量来递归地推导子CU的运动矢量。
为了保持对于子CU运动预测的更准确的运动场,当前禁用参考帧的运动压缩。
图10示出了用于CU的ATMVP运动预测的示例。
2.2.1可选时域运动矢量预测
在可选时域运动矢量预测(ATMVP)方法中,通过从比当前CU小的块提取多组运动信息(包括运动矢量和参考索引)来修改运动矢量时域运动矢量预测(Temporal MotionVector Prediction,TMVP)。在示例中,子CU是正方形的N×N块(N默认被设置为4)。
ATMVP分两个步骤来预测CU内的子CU的运动矢量。第一步骤是用所谓的时域矢量来识别参考图片中的对应块。参考图片也称为运动源图片。第二步骤是将当前CU划分成子CU,并从与每个子CU相对应的块中获得运动矢量以及每个子CU的参考索引。
在第一步骤中,参考图片和对应块由当前CU的空域邻近块的运动信息确定。为了避免邻近块的反复的扫描过程,使用当前CU的Merge候选列表中的第一Merge候选。第一可用运动矢量以及其相关联的参考索引被设置为时域矢量和运动源图片的索引。这样,在ATMVP中,与TMVP相比,可以更准确地识别对应块,在TMVP中,对应块(有时称为共位块)总是相对于当前CU处于右下或中心位置。
在第二步骤中,通过向当前CU的坐标添加时域矢量,通过运动源图片中的时域矢量来识别子CU的对应块。对于每个子CU,其对应块的运动信息(覆盖中心样点的最小运动网格)用于推导子CU的运动信息。在识别对应的N×N块的运动信息之后,以与HEVC的TMVP相同的方式将其转换成当前子CU的运动矢量和参考索引,其中运动缩放和其它过程适用。例如,解码器检查是否满足低延迟条件(即当前图片的所有参考图片的POC小于当前图片的POC),并且可能使用运动矢量MVx(与参考图片列表X相对应的运动矢量)来预测每个子CU的运动矢量MVy(例如,其中X等于0或1,并且Y等于1-X)。
2.2.2空时运动矢量预测(STMVP)
在该方法中,按照光栅扫描顺序递归地推导子CU的运动矢量。图11示出了这个概念。让我们考虑8×8的CU,它包含4个4×4的子CU:A、B、C和D。当前帧中的邻近的4×4块被标记为a、b、c和d。
子CU A的运动推导通过识别其两个空域邻近者(neighbour)开始。第一邻近者是子CU A上方的N×N块(块c)。如果这个块c不可用或是帧内编解码的,则检查子CU A上方的其它N×N块(从左到右,从块c开始)。第二邻近者是子CU A左边的块(块b)。如果块b不可用或是帧内编解码的,则检查子CU A左边的其它块(从上到下,从块b开始)。从每个列表的邻近块中获得的运动信息被缩放到给定列表的第一参考帧。接下来,通过遵循如HEVC规定的TMVP推导的相同过程来推导子块A的时域运动矢量预测量(TMVP)。在位置D处的共位块的运动信息被相应地提取和缩放。最后,在检索和缩放运动信息之后,对每个参考列表单独地平均所有可用的运动矢量(最多3个)。分配平均的运动矢量作为当前子CU的运动矢量。
图11示出了具有四个子块(A-D)的一个CU及其相邻块(a-d)的示例。
2.2.3子CU运动预测模式信令
子CU模式被启用作为附加Merge候选,并且不需要附加语法元素来信令通知这些模式。两个附加Merge候选被添加到每个CU的Merge候选列表以表示ATMVP模式和STMVP模式。如果序列参数集指示启用了ATMVP和STMVP,则可以使用多达七个Merge候选。附加Merge候选的编码逻辑与HM中的Merge候选的编码逻辑相同,这意味着,对于P条带或B条带中的每个CU,针对两个附加Merge候选可能还需要两次以上RD检查。
在JEM中,Merge索引的所有位元(bin)都由CABAC进行上下文编解码。而在HEVC中,仅对第一位元进行上下文编解码,并且对其余位元进行上下文旁路编解码。
2.3VVC中的帧间预测方法
存在若干种用于帧间预测改进的新的编解码工具,诸如用于信令通知MVD的自适应运动矢量差分辨率(Adaptive motion vector difference resolution,AMVR)、仿射预测模式、三角形预测模式(TPM)、多假设帧内模式(MHIntra,又称为帧内-帧间)ATMVP、广义双向预测(GBI)、双向光流(BIO)。
2.3.1自适应运动矢量差分辨率
在HEVC中,当在条带头中的use_integer_mv_flag等于0时,以四分之一(quarter)亮度样点为单位信令通知(PU的运动矢量和预测运动矢量之间的)运动矢量差(MotionVector Difference,MVD)。在VVC中,引入了局部自适应运动矢量分辨率(LocallyAdaptive Motion Vector Resolution,LAMVR)。在VVC中,可以以四分之一亮度样点、整数亮度样点或四亮度样点(即
对于具有至少一个非零MVD分量的CU,信令通知第一标志以指示在CU中是否使用四分之一亮度样点MV精度。当第一标志(等于1)指示未使用四分之一亮度样点MV精度时,信令通知另一个标志以指示使用整数亮度样点MV精度还是四亮度样点MV精度。
当CU的第一MVD分辨率标志为零或未针对CU进行编解码(意味着CU中的所有MVD均为零)时,四分之一亮度样点MV分辨率用于CU。当CU使用整数亮度样点MV精度或四亮度样点MV精度时,CU的AMVP候选列表中的MVP被取整到对应精度。
在编码器中,CU级别的RD检查用于确定哪个MVD分辨率要用于CU。也就是说,对于每个MVD分辨率,执行三次CU级别的RD检查。为了加快编码器速度,在JEM中应用以下编码方案:
·在具有正常四分之一亮度样点MVD分辨率的CU的RD检查期间,存储当前CU(整数亮度样点准度)的运动信息。存储的运动信息(取整之后)被用作在针对具有整数亮度样点和4亮度样点MVD分辨率的相同CU的RD检查期间的进一步的小范围运动矢量细化的起始点,使得耗时的运动估计过程不会重复三次。
·有条件地调用具有4亮度样点MVD分辨率的CU的RD检查。对于CU,当整数亮度样点MVD分辨率的RD成本远大于四分之一亮度样点MVD分辨率的RD成本时,跳过对于CU的4亮度样点MVD分辨率的RD检查。
编码过程如图12所示。首先,测试1/4像素MV,计算RD成本并表示为RDCost0,然后测试整数MV,并且RD成本表示为RDCost1。如果RDCost1
图12示出了用不同MV精度进行编码的示例流程图。
2.3.2三角形预测模式
三角形预测模式(TPM)的概念是为运动补偿预测引入一种新的三角形分割。如图13A-图13B所示,它沿对角线或相反的对角线方向将CU划分成两个三角形预测单元。CU中的每个三角形预测单元使用其自己的单向预测运动矢量和参考帧索引而被帧间预测,该单向预测运动矢量和参考帧索引从单个单向预测候选列表中推导。在预测三角形预测单元之后,对对角线边缘执行自适应加权过程。然后,将变换和量化过程应用于整个CU。注意,该模式仅适用于Merge模式(注意:跳过模式被视为特殊Merge模式)。
图13A示出了135度分割类型(从左上角向右下角划分)。图13B示出了45度分割模式。
2.3.2.1 TPM的单向预测候选列表
图14示出了邻近块的位置。本章节以及本文档中关于TPM的其他讨论通常适用于任何几何分割模式,并参照TPM模式进行了具体说明。
单向预测候选列表,称为TPM运动候选列表,包括五个单向预测运动矢量候选。如图14所示,它是从七个邻近块推导的,包括五个空域邻近块(1到5)和两个时域共位块(6到7)。收集七个邻近块的运动矢量并按照单向预测运动矢量、双向预测运动矢量的L0运动矢量、双向预测运动矢量的L1运动矢量以及双向预测运动矢量的L0运动矢量和L1运动矢量的平均运动矢量的顺序,将其放入单向预测候选列表。如果候选的数量少于五个,则零运动矢量被添加到列表中。添加到该TPM列表中的运动候选被称为TPM候选,从空域/时域块推导的运动信息被称为规则运动候选(regular motion candidate)。
更具体地,涉及以下步骤:
1)
2)设置变量numCurrMrgCand=0。
3)对于从A
应用
4)对于从A
应用
5)对于从A
应用
6)对于从A
–如果列表0参考图片的条带QP小于列表1参考图片的条带QP,则首先将列表1的运动信息缩放到列表0参考图片,并将两个MV(一个来自原始列表0,并且另一个是来自列表1的缩放的MV)的平均值添加到TPM Merge列表中,这样的候选称为来自列表0的平均单向预测运动候选(averaged uni-prediction from List 0 motion candidate),并且numCurrMrgCand增加1。
–否则,首先将列表0的运动信息缩放到列表1参考图片,并将两个MV(一个来自原始列表1,并且另一个是来自列表0的缩放的MV)的平均值添加到TPM Merge列表中,这样的TPM候选被称为来自列表1的平均单向预测运动候选(averaged uni-prediction fromList 1motion candidate),并且numCurrMrgCand增加1。
应用
7)如果numCurrMrgCand小于5,则添加零运动矢量候选而无需修剪。
a.将变量numRef设置为与用于P条带的列表0相关联的参考图片的数量,或者用于B条带的两个列表中的参考图片的最小数量;
b.添加不重复的零运动候选:
i.对于变量i为0…numRef-1,按顺序添加两个TPM候选:
–对于列表0的其MV设置为(0,0)且参考图片索引设置为i的默认运动候选
–对于列表1的其MV设置为(0,0)且参考图片索引设置为i的默认运动候选
将候选插入列表时,如果必须与先前添加的所有候选进行比较,以查看其是否与其中一个相同,这种过程称为完全修剪。
2.3.2.2自适应加权过程
在预测每个三角形预测单元之后,将自适应加权过程应用于两个三角形预测单元之间的对角线边缘,以推导整个CU的最终预测。两个加权因子组定义如下:
·第一加权因子组:{7/8,6/8,4/8,2/8,1/8}和{7/8,4/8,1/8}分别用于亮度和色度样点;
·第二加权因子组:{7/8,6/8,5/8,4/8,3/8,2/8,1/8}和{6/8,4/8,2/8}分别用于亮度和色度样点。
基于两个三角形预测单元的运动矢量的比较来选择加权因子组。当下列任一条件为真时,使用第二加权因子组:
–两个三角形预测单元的参考图片彼此不同。
–两个运动矢量的水平值之差的绝对值大于16像素。
–两个运动矢量的垂直值之差的绝对值大于16像素。
否则,使用第一加权因子组。图15示出了一个示例。
图15示出了应用第一加权因子组的CU的示例。
2.3.2.3运动矢量存储
三角形预测单元的运动矢量(图16A-图16B中的Mv1和Mv2)存储在4×4网格中。对于每个4×4网格,取决于4×4网格在CU中的位置,存储单向预测运动矢量或双向预测运动矢量。如图16A-图16B所示,为位于非加权区域(即不位于对角线边缘)的4×4网格存储单向预测运动矢量Mv1或Mv2。另一方面,为位于加权区域的4×4网格存储双向预测运动矢量。双向预测运动矢量根据以下规则从Mv1和Mv2中推导:
1)在Mv1和Mv2具有来自不同方向(L0或L1)的运动矢量的情况下,Mv1和Mv2被简单地组合以形成双向预测运动矢量。
2)在Mv1和Mv2都来自相同的L0(或L1)方向的情况下,
–如果Mv2的参考图片与L1(或L0)参考图片列表中的图片相同,则Mv2被缩放到该图片。Mv1和缩放的Mv2被组合以形成双向预测运动矢量。
–如果Mv1的参考图片与L1(或L0)参考图片列表中的图片相同,则Mv1被缩放到该图片。缩放的Mv1和Mv2被组合以形成双向预测运动矢量。
–否则,对于加权区域只存储Mv1。
图16A-图16B示出了运动矢量存储示例。
2.3.2.4三角形预测模式(TPM)的信令通知
可以首先在CU级别信令通知指示TPM是否被使用的一比特标志。此后,进一步信令通知两种划分模式(如图13A-图13B所描绘的)的指示,以及为两个分区中的每一个选择的Merge索引。
当以下任一条件对于CU为真时,跳过该标志的信令通知,并且不应用TPM。
–如果TPM使用的SPS标志为假
–如果覆盖当前块的条带的条带类型不是B条带
–如果当前块尺寸小于64
–如果当前块用仿射模式来编解码
2.3.2.4.1 TPM标志的信令
分别用W和H来表示一个亮度块的宽度和高度。如果W*H<64,则禁用三角形预测模式。
当一个块用仿射模式进行编解码时,也禁用三角形预测模式。
当一个块用Merge模式进行编解码时,可以信令通知一比特标志来指示对于该块是启用还是禁用三角形预测模式。
基于以下等式,该标志用3个上下文进行编解码。
Ctx索引=((左边的块L可用&&L是用TPM进行编解码的?)1:0)
+((上方的块A可用&&A是用TPM进行编解码的?)1:0);
图17示出了在TPM标志编解码中用于上下文选择的邻近块(A和L)的示例。
2.3.2.4.2两种划分模式(如图13A-图13B所描绘的)的指示以及为两个分区中的每个分区选择的Merge索引的信令
注意,划分模式、两个分区的Merge索引是联合编解码的。在示例中,限制两个分区不能使用相同的参考索引。因此,存在2(划分模式)*N(最大Merge候选数量)*(N-1)种可能性,其中N被设置为5。一个指示被编解码,并且划分模式、两个Merge索引和编解码的指示之间的映射从下面定义的数组中推导:
const uint8_t g_TriangleCombination[TRIANGLE_MAX_NUM_CANDS][3]={{0,1,0},{1,0,1},{1,0,2},{0,0,1},{0,2,0},{1,0,3},{1,0,4},{1,1,0},{0,3,0},{0,4,0},{0,0,2},{0,1,2},{1,1,2},{0,0,4},{0,0,3},{0,1,3},{0,1,4},{1,1,4},{1,1,3},{1,2,1},{1,2,0},{0,2,1},{0,4,3},{1,3,0},{1,3,2},{1,3,4},{1,4,0},{1,3,1},{1,2,3},{1,4,1},{0,4,1},{0,2,3},{1,4,2},{0,3,2},{1,4,3},{0,3,1},{0,2,4},{1,2,4},{0,4,2},{0,3,4}};
划分模式(45度或135度)=g_TriangleCombination[信令通知的指示][0];
候选A的Merge索引=g_TriangleCombination[信令通知的指示][1];
候选B的Merge索引=g_TriangleCombination[信令通知的指示][2];
一旦推导出了两个运动候选A和B,就可以根据A或B设置两个分区(PU1和PU2)的运动信息。PU1是否使用Merge候选A或B的运动信息取决于两个运动候选的预测方向。表1示出了推导出的两个运动候选A和B与两个分区之间的关系。
表1:从推导出的两个Merge候选(A、B)中推导分区的运动信息
2.3.2.4.3指示的熵编解码(由merge_triangle_idx表示)
为了用更少的比特来编码更大的数字(以用更多的比特来编码更小的数字为代价),这可以使用
1.使用上述0阶指数哥伦布码对
2.用二进制对x mod 2
表2:指数哥伦布-k编解码示例
2.3.3仿射运动补偿预测
在HEVC中,只有平移运动模型被应用于运动补偿预测(motion compensationprediction,MCP)。然而,在真实世界里,可以存在许多种运动,例如,放大/缩小、旋转、透视运动和/或其它不规则运动。在VVC中,用4参数仿射模型和6参数仿射模型应用简化的仿射变换运动补偿预测。如图18A和图18B所示,块的仿射运动场对于4参数仿射模型由两个控制点运动矢量(CPMV)来描述以及对于6参数仿射模型由三个CPMV来描述。
图18A-图18B分别示出了4参数和6参数简化仿射运动模型。
块的运动矢量场(MVF)由以下等式来描述:分别通过等式(1)中的4参数仿射模型(其中4参数被定义为变量a、b、e和f)和等式(2)中的6参数仿射模型(其中6参数被定义为变量a、b、c、d、e和f):
其中,(mv
为了进一步简化运动补偿预测,应用了基于子块的仿射变换预测。为了推导每个M×N(在当前VVC中,M和N都被设置为4)子块的运动矢量,如图19所示,根据等式(1)和(2)计算每个子块的中心样点的运动矢量,并舍入到1/16分数精度。然后,可以应用对于1/16像素的运动补偿插值滤波器来生成具有推导出的运动矢量的每个子块的预测。仿射模式引入了1/16像素的插值滤波器。
图19示出了每一子块的仿射MVF的示例。
在MCP之后,每个子块的高精度运动矢量被取整并保存为与正常运动矢量相同的精度。
2.3.3.1用于仿射预测的信令通知
类似于平移运动模型,也有两种模式用于信令通知由于仿射预测的边信息。它们是AFFINE_INTER和AFFINE_MERGE模式。
2.3.3.2AF_INTER模式
对于宽度和高度都大于8的CU,可以应用AF_INTER模式。在比特流中信令通知CU级别的仿射标志,以指示是否使用AF_INTER模式。
在这种模式下,对于每个参考图片列表(列表0或列表1),仿射AMVP候选列表以以下顺序用三种类型的仿射运动预测量构建,其中每个候选包括当前块的估计的CPMV。在编码器侧发现的最佳CPMV(诸如图22中的mv
1)继承的仿射运动预测量
检查顺序类似于HEVC AMVP列表构建中的空域MVP的顺序。首先,从{A1,A0}中的被仿射编解码并且具有与当前块相同的参考图片的第一块中推导左边继承的仿射运动预测量。第二,从{B1,B0,B2}中的被仿射编解码并且具有与当前块相同的参考图片的第一块推导上方继承的仿射运动预测量。图21中描绘了五个块A1、A0、B1、B0、B2。
一旦发现邻近块被用仿射模式编解码,则覆盖该邻近块的编解码单元的CPMV被用于推导当前块的CPMV的预测量。例如,如果A1用非仿射模式编解码,而A0用4参数仿射模式编解码,则左边继承的仿射MV预测量将从A0中推导出。在这种情况下,覆盖A0的CU的CPMV,如图23B中的左上角CPMV的
2)构建的仿射运动预测量
如图22所示,构建的仿射运动预测量包括从具有相同参考图片的邻近帧间编解码块中推导的控制点运动矢量(CPMV)。如果当前仿射运动模型是4参数仿射,则CPMV的数量是2,否则如果当前仿射运动模型是6参数仿射,则CPMV的数量是3。左上方的CPMV
–如果当前仿射运动模型是4参数仿射,则只有当
–如果当前仿射运动模型是6参数仿射,则只有当
当将构建的仿射运动预测量插入候选列表中时,不应用修剪过程。
3)正常AMVP运动预测量
以下条件适用,直到仿射运动预测量的数量达到最大值为止。
1)通过将所有CPMV设置为等于
2)通过将所有CPMV设置为等于
3)通过将所有CPMV设置为等于
4)通过将所有CPMV设置为等于HEVC TMVP(如果可用的话),推导仿射运动预测量。
5)通过将所有CPMV设置为零MV,推导仿射运动预测量。
注意,
图20A示出了4参数仿射模型的示例。图20B示出了6参数仿射模型的示例。
图21示出了继承的仿射候选的AF_INTER的MVP的示例。
图22示出了构建的仿射候选的AF_INTER的MVP的示例。
在AF_INTER模式下,当使用4/6参数仿射模式时,需要2/3个控制点,并且因此需要为这些控制点编解码2/3个MVD,如图20A-图20B所示。在示例中,提出了按如下方式来推导MV,即,从mvd
其中,
2.3.3.3AF_MERGE模式
当在AF_MERGE模式下应用CU时,它从有效的邻近重构块中获得用仿射模式编解码的第一块。并且候选块的选择顺序是从左、上、右上、左下到左上,如图23A所示(依次由A、B、C、D、E表示)。例如,如果邻近的左下块以仿射模式编解码,如图23B中的A0所表示,则提取包含块A的邻近CU/PU的左上角、右上角和左下角的控制点(CP)运动矢量mv
根据简化的仿射运动模型等式(1)和(2),推导当前CU的CPMVmv
图23A示出了五个邻近块场景中的AF_MERGE候选的示例。图23B示出了CPMV预测量推导过程的示例流程。
在示例中,仿射Merge候选列表可以由以下步骤构建:
1)插入继承的仿射候选
继承的仿射候选是指候选是从其有效邻近仿射编解码块的仿射运动模型中推导的。从邻近块的仿射运动模型中推导最多两个继承仿射候选,并将其插入候选列表中。对于左侧预测量,扫描顺序为{A0,A1};对于上方预测量,扫描顺序为{B0,B1,B2}。
2)插入构建的仿射候选
如果仿射Merge候选列表中的候选的数量小于MaxNumAffineCand(例如,5),则将构建的仿射候选插入候选列表中。构建的仿射候选是指通过组合每个控制点的邻近运动信息来构建候选。
a)控制点的运动信息首先从图24A所示的指定的空域邻近者和时域邻近者中推导。CPk(k=1,2,3,4)代表第k个控制点。A0、A1、A2、B0、B1、B2和B3是预测CPk(k=1,2,3)的空域位置;T是预测CP4的时域位置。
CP1、CP2、CP3和CP4的坐标分别是(0,0)、(W,0)、(H,0)和(W,H),其中W和H是当前块的宽度和高度。
图24示出了仿射Merge模式的示例候选位置。
每个控制点的运动信息按照以下优先级顺序获得:
–对于CP1,检查优先级是B2->B3->A2。如果B2可用,则使用B2。否则,如果B2不可用,则使用B3。如果B2和B3都不可用,则使用A2。如果三个候选全部都不可用,则无法获得CP1的运动信息。
–对于CP2,检查优先级是B1->B0。
–对于CP3,检查优先级是A1->A0。
–对于CP4,使用T。
b)其次,使用控制点的组合来构建仿射Merge候选。
I.构建6参数仿射候选需要三个控制点的运动信息。三个控制点可以从以下四个组合中选择一个({CP1,CP2,CP4}、{CP1,CP2,CP3}、{CP2,CP3,CP4}、{CP1,CP3,CP4})。组合{CP1,CP2,CP3}、{CP2,CP3,CP4}、{CP1,CP3,CP4}将转换为由左上、右上和左下控制点表示的6参数运动模型。
II.构建4参数仿射候选需要两个控制点的运动信息。这两个控制点可以从以下两个组合中选择一个({CP1,CP2}、{CP1,CP3}。这两个组合将被转换为由左上和右上控制点表示的4参数运动模型。
III.构建的仿射候选的组合按以下顺序插入候选列表:
{CP1,CP2,CP3}、{CP1,CP2,CP4}、{CP1,CP3,CP4}、{CP2,CP3,CP4}、{CP1,CP2}、{CP1,CP3}
i.对于每个组合,检查每个CP的列表X的参考索引,如果它们都相同,则该组合对于列表X具有有效的CPMV。如果该组合对于列表0和列表1都不具有有效的CPMV,则该组合被标记为无效。否则,它是有效的,并且CPMV被放入子块Merge列表中。
3)用零运动矢量进行填充
重复候选:如果仿射Merge候选列表中的候选的数量少于5,则对于列表0(如果是P条带)和两个列表(如果是B条带)的具有零参考索引的,且仿射模型类型被设置为4参数的零运动矢量被插入候选列表中,直到列表满为止。
更具体地,对于子块Merge候选列表,4参数Merge候选的MV被设置为(0,0)并且预测方向被设置为来自列表0的单向预测(对于P条带)和双向预测(对于B条带)。
2.3.4当前图片参考
在HEVC屏幕内容编解码扩展(screen content coding,SCC)中采用了帧内块复制(IBC(Intra block copy),或帧内图片块补偿),也称为当前图片参考(CPR)。该工具对于屏幕内容视频的编解码非常有效,因为文本和图形丰富的内容中的重复图案经常出现在同一图片中。将先前重构的具有相同或类似图案的块作为预测量可以有效地减少预测误差,从而提高编解码。图25示出了帧内块补偿的示例。
类似于HEVC SCC中的CRP设计,在VVC中,IBC模式的使用在序列和图片级别上都被信令通知。当在序列参数集(SPS)下启用IBC模式时,它可以在图片级别下启用。当在图片级别下启用IBC模式时,当前重构的图片被视为参考图片。因此,在现有的VVC帧间模式的基础上,不需要在块级别上进行语法改变来信令通知IBC模式的使用。
主要特点:
–它被视为正常帧间模式。因此,Merge和跳过模式也适用于IBC模式。Merge候选列表构建是统一的,包含来自邻近位置的、以IBC模式编解码或以HEVC帧间模式编解码的Merge候选。根据选择的Merge索引,Merge或跳过模式下的当前块可以合并到IBC模式编解码的邻近者中,或者以其它方式合并到用不同图片作为参考图片的正常帧间模式编解码的邻近者中。
–用于IBC模式的块矢量预测和编解码方案重用用于HEVC帧间模式(AMVP和MVD编解码)下的运动矢量预测和编解码的方案。
–对于IBC模式的运动矢量,也称为块矢量,以整数像素精度编解码,但解码后以1/16像素精度存储在存储器中,因为插值和去块阶段需要四分之一像素精度。当用于IBC模式的运动矢量预测时,存储的矢量预测量将右移4。
–搜索范围:限于当前CTU内。
–启用仿射模式/三角形模式/GBI/加权预测时,不允许CPR。
2.3.5ATMVP
在一些示例中,当生成ATMVP Merge候选时,按顺序应用以下步骤:
a.按顺序检查如图2所示的邻近块A1、B1、B0、A0,以找到第一帧间编解码的而不是CPR编解码的块,表示为块X;
b.初始化TMV=(0,0)。如果存在块X的MV(表示为MVn),参考共位参考图片(如在条带头中信令通知的),TMV被设置为等于MVn。
c.假设当前块的中心点是(x0,y0),那么在共位图片中将(x0,y0)的对应位置定位为M=(x0+MV*x,y0+MV*y)。找到覆盖M的块Z。
i.如果Z是帧内编解码的,则ATMVP不可用;
ii.如果Z是帧间编解码的,则块Z的两个列表的MVZ_0和MVZ_1将被缩放到(参考列表0索引0)和(参考列表1索引1)作为MVdefault0、MVdefault1,并被存储。
d.对于每个8×8子块,假设其中心点是(x0S,y0S),然后在共位图片中将(x0S,y0S)的对应位置定位为MS=(x0S+MV*x,y0S+MV*y)。找到覆盖MS的块ZS。
i.如果ZS是帧内编解码的,则MVdefault0、MVdefault1被分配给子块;
ii.如果ZS是帧间编解码的,则块ZS的两个列表的MVZS_0和MVZS_1被缩放到(参考列表0索引0)和(参考列表1索引0),并被分配给子块;
2.3.5.1ATMVP中的MV剪裁(clip)和掩码:
当在共位图片中定位对应的位置(诸如M或MS)时,它被剪裁到预定区域内。CTU的尺寸是S×S,S=128。假设共位CTU的左上位置是(xCTU,yCTU),则(xN,yN)处的对应位置M或MS将被剪裁到有效区域XCTU<=xN 除了剪裁,(xN,yN)还被掩码为xN=xN&MASK,yN=yN&MASK,其中MASK是等于~(2 图26示出了共位图片中的有效对应区域的示例。 2.3.6VVC的Merge列表设计 VVC中支持三种不同的Merge列表构建过程: 1)子块Merge候选列表:它包括ATMVP和仿射Merge候选。仿射模式和ATMVP模式共享一个Merge列表构建过程。这里,ATMVP和仿射Merge候选可以按顺序添加。子块Merge列表尺寸在条带头中信令通知,并且最大值为5。 2)单向预测TPM Merge列表:对于三角形预测模式,两个分区共享一个Merge列表构建过程,即使两个分区可以选择它们自己的Merge候选索引。当构建该Merge列表时,检查块的空域邻近块和两个时域块。从空域邻近块和时域块中推导出的运动信息在此被称为规则运动候选。这些规则运动候选被进一步用于推导多个TPM候选。请注意,变换在整个块级别下执行,即使两个分区也可以使用不同的运动矢量来生成它们自己的预测块。单向预测TPM Merge列表尺寸被固定为5。 3)规则Merge列表:对于剩余的编解码块,共享一个Merge列表构建过程。这里,可以按顺序插入空域/时域/HMVP、成对组合的双向预测Merge候选和零运动候选。规则Merge列表尺寸在条带头中信令通知,并且最大值为6。 2.3.6.1子块Merge候选列表 建议将除了用于非子块Merge候选的规则Merge列表之外,所有子块相关的运动候选被放入单独的Merge列表中。 子块相关的运动候选被放入单独的Merge列表中,该列表被命名为“子块Merge候选列表”。 在一个示例中,子块Merge候选列表包括仿射Merge候选、和ATMVP候选和/或基于子块的STMVP候选。 2.3.6.1.1 在示例中,正常Merge列表中的ATMVP Merge候选被移动到仿射Merge列表的第一位置。使得新列表(即基于子块的Merge候选列表)中的所有Merge候选都基于子块编解码工具。 2.3.6.1.2子块Merge候选列表的构建过程 在一些示例中,除了规则Merge候选列表之外,还添加了称为子块Merge候选列表(也称为仿射Merge候选列表)的特殊Merge候选列表。子块Merge候选列表按以下顺序填充候选: a.ATMVP候选(可能可用或不可用); b.继承的仿射候选; c.构建的仿射候选; d.填充为零MV的4参数仿射模型 2.3.6.2规则Merge列表 与Merge列表设计不同,在VVC中,采用基于历史的运动矢量预测(HMVP)方法。此外,描述的组合的双向预测Merge候选已经被成对双向预测Merge候选替代。 2.3.6.2.1HMVP 在HMVP中,存储先前编解码的运动信息。先前编解码块的运动信息被定义为HMVP候选。多个HMVP候选被存储在名为HMVP表的表中,并且该表在编码/解码过程中实时维护。当开始编码/解码新片时,HMVP表被清空。每当有帧间编解码的非仿射/非ATMVP块时,相关联的运动信息被添加到表的最后一个条目中作为新的HMVP候选。整个编解码流程如图27所示。 HMVP候选可以用于AMVP和Merge候选列表构建过程。图28描绘了修改的Merge候选列表构建过程(以不同的阴影突出显示)。当Merge候选列表在TMVP候选插入后未满时,存储在HMVP表中的HMVP候选可以用来填充Merge候选列表。考虑到一个块通常与最近的邻近块在运动信息方面具有更高的相关性,表中的HMVP候选以索引的降序插入。表中的最后一个条目首先被添加到列表中,而第一个条目被最后添加。类似地,冗余消除也适用于HMVP候选。一旦可用的Merge候选的总数达到信令通知的所允许的Merge候选的最大数量,Merge候选列表构建过程就终止。 2.3.6.2.1.1两阶段修剪过程 修剪可以分为两个阶段: 1)更新表:当一个块是帧间编解码的和非仿射模式时,其运动信息被用来更新表,作为新的HMVP候选。在向表中添加新的HMVP候选之前,应用修剪。 -如果它与表中任何一个现有的HMVP候选相同,则从表中删除重复的候选,并向前移动所有后续的HMVP候选(即索引减少1),并且在所有现有的候选之后添加该新的HMVP候选。 -否则,如果表未满,并且它与表中任何现有的HMVP候选不相同,则它将直接添加到表中现有的候选之后。 2)向候选列表添加HMVP候选:HMVP表中的HMVP候选可以用于Merge/AVMP模式。 -对于规则Merge模式,当在检查空域和时域Merge候选之后Merge列表未满时,可以基于HMVP候选索引的降序进一步检查HMVP表中的HMVP候选。 -对于要检查的每个HMVP候选,将其与所有先前添加的Merge候选(即那些已被添加到Merge列表中的候选)进行比较,如果没有一个现有的候选与HMVP候选相同,则这样的HMVP候选被添加到Merge列表中。否则,如果HMVP候选与现有的候选之一相同,则不会将其添加到Merge列表中。 2.3.6.2.2成对平均候选 成对平均候选(pairwise average candidate)是通过对当前Merge候选列表中的预定义候选对进行平均而生成的,并且预定义的候选对被定义为{(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)},其中这些数字表示Merge候选列表的Merge索引。为每个参考列表单独计算平均运动矢量。如果两个运动矢量在一个列表中可用,则即使这两个运动矢量指向不同的参考图片,也会对它们进行平均;如果只有一个运动矢量可用,则直接使用该运动矢量;如果没有运动矢量可用,则保持该列表无效。成对平均候选代替了HEVC标准中的组合的候选。假设两个Merge候选的MV分别为MV0=(MV0x,MV0y)和MV1=(MV1x,MV1y),则表示为MV*=(MV*x,MV*y)的成对Merge候选的MV被推导为 MV*x=(MV0x+MV1x)/2; MV*y=(MV0y+MV1y)/2; 另外,当MV0和MV1参考当前图片(即CPR模式)时,MV*x和MV*y进一步被取整,以移除具有比全像素更高的精度的部分,从而确保获得整数MV: MV*x=(MV*x/16)<<4; MV*y=(MV*y/16)<<4; 注意,对于每对,如果两个中的一个用CPR进行编解码,而另一个不是,则不允许这样的对来生成成对平均候选。 2.3.6.2.3规则Merge列表构建过程 当使用规则Merge模式预测块时,从比特流中解析指向规则Merge候选列表中的条目的索引并将其用于检索运动信息。该列表的构建在当前的VVC标准中有所规定,并可以根据以下步骤序列进行概述,与HEVC相比的变化以更大的字体来黑体显示: ·步骤1:初始候选推导 o步骤1.1:空域候选推导 o步骤1.2:空域候选的冗余检查/移除 o步骤1.3:时域候选推导 o步骤1.4:进行冗余检查/移除的HMVP候选(与HEVC相比,是由VVC新引入的) ·步骤2:虚拟候选插入 o步骤2.1:创建成对双向预测候选(代替HEVC中的原始的组合的双向预测候选) o步骤2.2:插入默认运动候选(零运动候选) 2.3.7 MHIntra 利用帧间-帧内预测模式,多假设预测组合了一个帧内预测和一个Merge索引的预测。这样的块被视为特殊的帧间编解码块。在Merge CU中,为Merge模式信令通知一个标志,以当标志为真时从帧内候选列表中选择帧内模式。对于亮度分量,帧内候选列表从包括DC模式、平面模式、水平模式和垂直模式的4种帧内预测模式中推导,并且帧内候选列表的尺寸可以是3或4,这取决于块形状。当CU宽度大于CU高度的两倍时,水平模式被排除在帧内模式列表之外,并且当CU高度大于CU宽度的两倍时,垂直模式从帧内模式列表中移除。使用加权平均来组合由帧内模式索引选择的一个帧内预测模式和由Merge索引选择的一个Merge索引的预测。对于色度分量,DM总是在没有额外信令的情况下应用。 用于组合预测的权重描述如下。当选择DC模式或平面模式,或CB宽度或高度小于4时,施加相等的权重。对于CB宽度和高度大于或等于4的那些CB,当选择水平/垂直模式时,一个CB首先被垂直/水平划分为四个等面积区域。每个权重集,表示为(w_intrai,w_interi),其中i为1至4,并且(w_intra1,w_inter1)=(6,2)、(w_intra2,w_inter2)=(5,3)、(w_intra3,w_inter3)=(3,5)和(w_intra4,w_inter4)=(2,6)将被施加于对应区域。(w_intra1,w_inter1)用于最接近参考样点的区域,并且(w_intra4,w_inter4)用于最远离参考样点的区域。然后,可以通过将两个加权预测相加并右移3比特来计算组合的预测。此外,可以保存预测量的帧内假设的帧内预测模式,以供后面的邻近CU参考。 2.3.7.1 MHIntra编解码的块中的帧内预测模式的信令通知 当使用帧间-帧内模式时,选择四种允许的帧内预测模式(DC模式、平面模式、水平模式和垂直模式)之一并信令通知。三种最有可能的模式(Most Probable Mode,MpM)是从左侧和上方邻近块构建的。帧内编解码的邻近块或IIP编解码的邻近块的帧内预测模式被视为一个MPM。如果帧内预测模式不是四种允许的帧内预测模式之一,则它将根据角度差舍入到垂直模式或水平模式。邻近块必须与当前块在同一CTU行上。 假设当前块的宽度和高度是W和H。如果W>2*H或H>2*W,则在帧间-帧内模式下只能使用三个MPM之一。否则,所有四种有效的帧内预测模式都可以用于帧间-帧内模式。 应当注意,帧间-帧内模式下的帧内预测模式不能用于预测正常帧内编解码块中的帧内预测模式。 帧间-帧内预测只能在W*H>=64时使用。 2.3.8 MMVD 在示例中,提出了最终运动矢量表达(UMVE,也称为具有运动矢量差的Merge(motion vector difference,MMVD))。UMVE通过所提出的运动矢量表达方法而用于跳过模式或Merge模式。 UMVE重用与VVC中的规则Merge候选列表中包括的那些相同的Merge候选。在Merge候选当中,可以选择其中的一个或多个(命名为基本候选),并通过所提出的运动矢量表达方法进一步扩展。 UMVE提供了一种新的运动矢量差(MVD)表示方法,该方法使用起点、运动幅度和运动方向来表示MVD。 图29示出了UMVE搜索过程的示例。 图30示出了UMVE搜索点的示例。 提出的这种技术按原样使用Merge候选列表。但是对于UMVE的扩展,仅考虑作为默认Merge类型(MRG_TYPE_DEFAULT_N)的候选。 基本候选(base candidate)索引(IDX)定义了起点。基本候选索引指示列表中的候选当中的最佳候选,如下所示。 表1.基本候选IDX
如果基本候选的数量等于1,则不信令通知基本候选IDX。 距离索引是运动幅度信息。距离索引指示距起点信息的预定义距离。预定义的距离如下: 表2.距离IDX
方向索引表示MVD相对于起点的方向。方向索引可以表示如下所示的四个方向: 表3.方向IDX
UMVE标志在发送跳过标志和Merge标志之后立即被信令通知。如果跳过和Merge标志为真,则解析UMVE标志。如果UMVE标志等于1,则解析UMVE语法元素。但是,如果不是1,则解析仿射标志。如果仿射标志等于1,这就是仿射模式,但是,如果不是1,则跳过/Merge索引将被解析用于VTM的跳过/Merge模式。 不需要由于UMVE候选的附加行缓冲区(line buffer)。因为软件的跳过/Merge候选直接用作基本候选。使用输入的UMVE索引,在运动补偿之前就决定MV的补充。不需要为此保留长的行缓冲区。 在当前的通用测试条件下,Merge候选列表中的第一Merge候选或第二Merge候选可以被选择作为基本候选。 3.由本文档中公开的实施例所解决的问题的示例 在VVC的当前设计中,三个不同的Merge列表被用于不同的过程,这增加了硬件实施成本。 1)将完全修剪应用于TPM候选,其中将要被插入的每个TPM候选与列表中的所有现有候选进行比较。这种设计导致用于运动矢量推导的低吞吐量。 2)两阶段修剪操作(第一阶段是更新HMVP表,其中将每个新的HMVP候选与表中所有现有候选进行比较,第二阶段是将HMVP候选插入AMVP/Merge候选列表,其中将HMVP候选与其他非HMVP候选(例如,空域和时域Merge候选)进行比较)。与诸如仅应用第二阶段的单阶段修剪操作相比,当前设计可以在相同数量的修剪操作下带来更好的编解码增益,因为表中所有的HMVP候选都是唯一的。 3)在添加一个HMVP候选时,应用完全修剪来将HMVP候选与Merge列表中所有现有的非HMVP候选进行比较。 4)TPM Merge列表/MMVD基本候选的数量固定为5或2。这种设计对于具有不同能力的编码器实施方式是不友好的。 4.示例实施例和技术 下面的详细发明应当被认为是解释一般构思的示例。这些发明不应该被狭义地解释。此外,这些发明可以以任何方式组合。 在下面的描述中,我们使用“三角形分割模式”来表示非正方形/非矩形分割模式(TPM)的一个示例,并且插入到TPM候选列表中的运动矢量预测候选被命名为“TPM候选”。应当注意,其他类型的分割也可以适用。针对TPM候选列表提出的方法可以应用于非正方形/非矩形分割(例如,几何分割)的任何其他运动候选列表。 所提出的方法可以应用于任何类型的运动候选列表构建过程(包括但不限于用于规则平移运动或TPM候选或仿射运动候选的AMVP/Merge列表构建)。 假设修剪之前的(N+1)个运动候选按顺序由MCand 1.可以将运动候选分类为具有不同修剪方法的不同类别,在一个示例中,分类可以基于修剪之前的相关联的索引和/或基于添加新的运动候选之前列表中可用运动候选的数量。 a.在一个示例中,对于类别中的候选,如何应用修剪可能是相同的。 b.在一个示例中,一个类别可以从中选择的修剪方法可以包括但不限于在将该类别中的候选添加到候选列表之前应用完全修剪,应用部分修剪,不进行修剪。 c.候选可以基于候选的索引被分类为不同类别。修剪方法可以基于类别来选择。 i.例如,[StartIdx,K ii.例如,在[StartIdx,K iii.此外,在一个示例中,对于那些索引在[StartIdx,K d.修剪方法可以基于候选列表的状态来选择。该状态包括诸如列表中有多少候选和/或哪些类型的候选已经在列表中的信息。 i.在一个示例中,如果在添加新候选之前列表中已经有等于或多于L个可用候选,则可以应用部分修剪。 ii.在一个示例中,如果在添加新候选之前列表中有少于L个可用候选,则可以应用完全修剪。 e.如何应用修剪方法(包括不修剪)可以取决于列表中可用候选的数量。 i.在一个示例中,如果在添加新候选之前列表中有少于L ii.在一个示例中,如果在添加新候选之前列表中已经有等于或多于L iii.在一个示例中,如果在添加新候选之前列表中已经有等于或多于L f.在一个示例中,对于应用于一个新候选的完全修剪过程,需要将该候选与候选列表中的所有现有的(先前添加的)候选进行比较。 i.如果有一个现有的候选与新候选相同或相似,则该新候选不会被添加到列表中。 ii.如果所有现有的候选与新候选不相同或相似,则该新候选可以被添加到列表中,诸如当列表未满时。 g.在一个示例中,对于部分修剪过程,候选MCand i.如果在选择性现有的候选中有一个现有的候选与新候选相同或相似,则该新候选不会被添加到列表中。 ii.如果所有选择性现有的候选与新候选不相同或相似,可以将该新候选添加到列表中,诸如当列表未满时。 h.在一个示例中,对于部分修剪过程,可以将候选MCand i.可选地,对于部分修剪过程,可以将候选与先前添加的具有非连续索引的候选进行修剪,诸如,可以将MCand j.变量(包括StartIdx和/或K k.变量(包括StartIdx和/或K l.在一个示例中,K m.在一个示例中,StartIdx被设置为1。 n.变量(包括K o.变量M还可以在一个候选到另一个候选之间变化。也就是说,对于候选列表中的不同候选,要比较的候选的数量(即修剪操作的数量)可以不同。 2.上述运动候选可以是从规则运动候选(例如,空域/时域运动候选、和/或HMVP候选、和/或成对平均运动候选)推导的TPM候选。 a.可选地,上述运动候选可以仅指从单向预测规则运动候选(例如,空域/时域运动候选、和/或HMVP候选、和/或具有单向预测的成对平均运动候选)推导的那些TPM候选。 b.可选地,上述运动候选可以仅指从双向预测规则运动候选(例如,空域/时域运动候选、和/或HMVP候选、和/或具有双向预测的成对平均运动候选)推导的那些TPM候选。 3.上述运动候选可以指从一个或多个查找表中推导的空域/时域运动候选和选择性HMVP候选。 a.在一个示例中,首先获得空域/时域、HMVP候选的所有运动信息,而无需修剪。然后可以应用上述方法。 4.上述方法可能仅适用于HMVP候选,即如何对HMVP候选应用修剪可以取决于类别。 a.在这种情况下,StartIdx可以被定义为在添加任何HMVP候选之前可用Merge候选的数量减1。例如,如果在检查任何HMVP候选之前有M个候选(例如,MCand i.此外,可选地,完全修剪过程被定义为将HMVP候选与所有前M个候选进行比较。 ii.此外,可选地,部分修剪过程被定义为将HMVP候选与前M个候选中的部分(即前M个候选的子集)进行比较。 iii.此外,可选地,不同的子集可以用于具有不同索引的HMVP候选。 b.此外,可选地,其他类型的运动候选(例如,空间/时间Merge候选)可以应用修剪过程的不同的方式。 5.在规则Merge候选列表构建过程中,如何对HMVP候选应用修剪过程(例如,应该将先前添加的Merge候选中的哪一个与HMVP候选进行比较)可以取决于Merge候选从何处推导而来。 a.在一个示例中,可以将一个HMVP候选与从给定的相对邻近块推导的另一个Merge候选进行比较。 b.在一个示例中,对于所有HMVP候选,对应该将HMVP候选与之进行比较的邻近块的选择可以是相同的。例如,可以将所有HMVP候选与从左侧块和/或时域邻近块推导的空域Merge候选进行比较。 c.可以将具有不同索引的候选HMVP与从不同块推导的候选进行比较。 6.在TPM候选列表构建过程中,如何应用修剪过程(例如,应该将先前添加的TPM候选中的哪一个与新候选进行比较)可以取决于这些TPM候选从哪个规则运动候选推导而出。 a.可选地,此外,当对TPM候选插入过程启用修剪时,修剪不应用于规则Merge候选推导过程。 7.对于候选列表,如果需要的话,在修剪之后,它可以包括上述运动候选。另外,它还可以添加其他默认运动候选。 a.在一个示例中,可以添加默认运动候选,而无需任何修剪操作。 8.当块用特定类型的运动候选来编解码时,对HMVP表更新过程的修剪操作被禁用。 a.在一个示例中,特定类型被定义为虚拟Merge候选类型,其可以包括成对平均Merge候选/零运动候选/默认运动候选/组合的双向预测运动候选。 b.在一个示例中,特定类型被定义为时域Merge候选类型。 c.在一个示例中,特定类型被定义为与帧内-帧间编解码块相关联的那些运动候选。 d.在一个示例中,当对HMVP表更新过程的修剪操作被禁用时,一个块的运动信息和/或从一个块的运动信息推导的那些可以在所有现有HMVP候选之后被直接添加到表中。 e.可选地,当对HMVP表更新过程的修剪操作被禁用时,不允许一个块的运动信息和/或从一个块的运动信息推导的那些来更新HMVP表。 9.当块用特定维度来编解码时,对HMVP表更新过程的修剪操作被禁用。 a.在一个示例中,维度被设置为4×4。 b.在一个示例中,维度被设置为样点数量等于和/或小于阈值(例如, 64)的任何块尺寸。 c.W>=T0和/或H>=T1,例如,T0和T1都被设置为64。 10.可以在比特流中信令通知TPM Merge候选列表中允许的最大候选数量的指示。例如,它可以在SPS/VPS/PPS/图片头/条带头/片组头/CTU中信令通知。 a.最大数量可以直接用信令通知。可选地,可以信令通知给定值K和最大数量之间的差,例如,K被设置为5或6。 b.在一个示例中,信令通知的TPM Merge候选中允许的最大候选数量(表示为M2)不能大于规则Merge候选列表中允许的最大候选数量(表示为M1)。 i.例如,M1-M2被信令通知为一个非负整数。 c.可选地,它不被信令通知,而是被推断为与M1相同。 d.在一个示例中,应用截断一元码或一元码来对TPM Merge候选列表中允许的最大候选数量的这种指示进行编解码。 11.MMVD Merge候选列表中允许的基本Merge候选的最大数量的指示可以在比特流中信令通知。例如,它可以在SPS/VPS/PPS/图片头/条带头/片组头/CTU中信令通知。 a.在一个示例中,可以信令通知给定值K和最大数量之间的差,例如,K被设置为5或6。 b.在一个示例中,信令通知的MMVD Merge候选中允许的最大候选数量被表示为M2,规则Merge候选列表中允许的最大候选数量被表示为M1。 i.例如,M1-M2被信令通知为一个非负整数。 c.在一个示例中,应用截断一元码或一元码来对基本Merge候选的最大数量的这种指示进行编解码。 12.基于子块的MMVD Merge候选列表中允许的基本Merge候选的最大数量的指示可以在比特流中信令通知。例如,它可以在SPS/VPS/PPS/图片头/条带头/片组头/CTU中信令通知。 a.在一个示例中,可以信令通知给定值K和最大数量之间的差,例如,K被设置为5或6。 b.在一个示例中,信令通知的基于子块的MMVD Merge候选中允许的最大候选数量被表示为M2,子块Merge候选列表中允许的最大候选数量被表示为M1。 i.例如,M1-M2被信令通知为一个非负整数。 c.在一个示例中,应用截断一元码或一元码来对基本Merge候选的最大数量的这种指示进行编解码。 13.当仿射模式可以被允许用于TPM编解码块时,TPM候选可以从为当前子块Merge候选列表推导的那些仿射候选(命名为规则仿射候选)中推导。 a.在一个示例中,如果使用一个双向预测仿射候选,则一个仿射候选的列表0和列表1运动信息可以独立地用作两个单向预测仿射候选,即,生成两个TPM仿射候选。 14.当仿射模式可以被允许用于TPM编解码块时,TPM仿射Merge候选列表中允许的最大候选数量可以在比特流中信令通知。例如,它可以在SPS/VPS/PPS/图片头/条带头/片组头/CTU中信令通知。 a.最大数量可以直接信令通知。可选地,可以信令通知给定值K和最大数量之间的差,例如,K被设置为5或6。 b.在一个示例中,信令通知的在TPM仿射Merge候选中允许的最大候选数量(表示为M2)不能大于子块Merge候选列表中允许的最大候选数量,或者不能大于仿射Merge候选列表中允许的最大候选数量(表示为M1)。 i.例如,M1-M2被信令通知为一个非负整数。 a.在一个示例中,它用一元码来二值化。 c.在一个示例中,M2和M1之间的差可以被信令通知。 d.可选地,它不被信令通知,而是被推断为与M1相同。 5.实施例 5.1实施例#1:用于TPM的单向预测候选列表(对规则运动候选不进行修剪,并且对TPM候选进行有限修剪) 涉及以下步骤来推导TPM列表,并移除对规则运动候选的冗余检查(修剪过程),并且应用TPM候选修剪。 示例描述如下: 1.从A 2.从Col1和/或Col2(对应于图14中的块6-7)获得规则运动候选,而无需修剪 3.从HMVP候选获得规则运动候选,而无需修剪。 4.设置变量numCurrMrgCand=0,numCheckedCand=0; 5.对于每个可用规则运动候选和numCurrMrgCand小于M,执行以下步骤将TPM候选添加到列表中: –如果规则运动候选是单向预测(来自列表0或列表1), 1)如果numCheckedCand小于Thres, 修剪函数PF(numCurrMrgCand)被应用于规则运动候选。如果修剪过程返回假(即没有找到相同或相似的TPM候选),则这样的规则运动候选作为TPM候选被添加到Merge列表中,并且numCurrMrgCand增加1。 否则(numCheckedCand等于或大于Thres),它将作为TPM候选直接添加到Merge列表中,并且numCurrMrgCand增加1。 2)numCheckedCand增加1。 –如果规则运动候选是双向预测,则按顺序添加以下两个候选。 1)来自列表0的运动信息(即被修改为来自列表0的单向预测)被设置为第一新TPM候选。 2)如果numCheckedCand小于Thres, 修剪函数PF(numCurrMrgCand)被调用到第一新TPM候选。如果修剪过程返回假,则这样的第一新TPM候选作为TPM候选被添加到Merge列表中,并且numCurrMrgCand增加1。 否则(numCheckedCand等于或大于Thres),它将作为TPM候选直接添加到Merge列表中,并且numCurrMrgCand增加1。 3)numCheckedCand增加1。 4)来自列表1的运动信息(即被修改为来自列表1的单向预测)被设置为第二新TPM候选。 5)如果numCheckedCand小于Thres, 修剪函数PF(numCurrMrgCand)被调用到第二新TPM候选。如果修剪过程返回假,则这样的第二新TPM候选作为TPM候选被添加到Merge列表中,并且numCurrMrgCand增加1。 否则(numCheckedCand等于或大于Thres),它将作为TPM候选直接添加到Merge列表中,并且numCurrMrgCand增加1。 6)numCheckedCand增加1。 6.如果numCurrMrgCand小于M,则将按顺序添加默认运动候选,直到numCurrMrgCand等于M。 在一个示例中,默认运动候选按顺序以以下步骤添加,直到numCurrMrgCand等于M: –设置变量numRef=最小值(列表0中参考图片的数量,列表1中参考图片的数量)。 –每个i为0…numRef-1, i)添加默认运动候选,其中MV被设置为(0,0),并且参考图片索引被设置为i,预测方向被设置为列表0,并且numCurrMrgCand增加1。 ii)添加默认运动候选,其中MV被设置为(0,0),并且参考图片索引被设置为i,预测方向被设置为列表1,并且numCurrMrgCand增加1。 –设置变量numPrevMrgCand=numCurrMrgCand。 –对于i为0…(M-numPrevMrgCand-1),添加默认运动候选,其中MV被设置为(0,0),并且参考图片索引被设置为0,预测方向被设置为列表0,并且numCurrMergeCand增加1。 函数PF(x)的定义: –设置起始索引=(x>=Thres2)?L:0。 –设置结束索引=x-1 –对于每个i为[起始索引,结束索引](包括端点),如果新候选与列表中的第i个候选相同(或相似),则为真; –如果列表中没有索引在[起始索引,结束索引]内的候选,则返回假。 注意,变量Thres、Thres2、M可以是预先定义的或被信令通知的。在一个示例中,Thres被设置为5、6或7,Thres2被设置为4。 图31是视频处理装置2600的框图。装置2600可以用于实施本文描述的一个或多个方法。装置2600可以包含在智能手机、平板电脑、计算机、物联网(IoT)接收器等中。装置2600可以包括一个或多个处理器2602、一个或多个存储器2604和视频处理硬件2606。(多个)处理器2602可以被配置为实施本文档中描述的一个或多个方法。存储器(多个存储器)2604可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件2606可以用于在硬件电路中实施本文档中描述的一些技术。 图32是视频处理的示例方法3200的流程图。方法3200包括:在包括当前视频块的视频和当前视频块的比特流表示之间的转换期间,生成(3202)运动候选列表,将运动候选列表分类(3204)为多个运动候选类别,其中每个类别被分配对应的修剪规则,以及通过根据修剪规则使用修剪方法执行修剪来决定运动候选是否可以被添加到运动候选的最终列表中并基于最终列表解码该块来执行(3206)转换。 应当理解,已经公开了若干种技术,这些技术通过允许在视频或图像的编码或解码中使用ATMVP编解码工具,而有益于结合在诸如智能手机、膝上型电脑、台式电脑和类似设备的视频处理设备中的视频编码器和解码器实施例。可以使用以下基于条款的描述来描述各种实施例和技术。 1.一种视频处理的方法,包括: 在包括当前视频块的视频和当前视频块的比特流表示之间的转换期间,生成运动候选列表, 将运动候选列表分类成多个运动候选类别,其中每个类别被分配对应的修剪规则;和 通过根据修剪规则使用修剪方法执行修剪以决定是否可以将运动候选添加到运动候选的最终列表中,并基于该最终列表解码该块,来执行转换。 2.根据条款1所述的方法,其中,该分类基于运动候选的索引。 3.根据条款1-2中任一项所述的方法,其中,修剪方法可以包括在将运动候选添加到运动候选的最终列表之前进行完全修剪、部分修剪或不修剪。 4.根据条款1-3中任一项所述的方法,其中,第一类别包括索引在范围[StartIdx,K0]内的运动候选,第二类别包括索引在[K0+1,K1]范围内的运动候选,并且其中,第三类别包括在[K1+1,N]范围内的剩余运动候选,其中StartIdx、K0、K1和N是整数。 5.根据条款4所述的方法,其中,修剪规则规定对第一类别使用完全修剪,对第二类别使用部分修剪,并且对第三类别不进行修剪。 6.根据条款4所述的方法,其中,修剪规则规定对第一类别使用完全修剪和部分修剪,并且对第二类别不应用修剪。 7.根据条款1-6中任一项所述的方法,其中,修剪规则取决于运动候选列表的状态。 8.根据条款7所述的方法,其中,运动候选列表的状态包括运动候选的最终列表中的运动候选的数量或运动候选列表中的候选的类型。 9.根据条款1-8中任一项所述的方法,其中,运动候选列表中的运动候选包括从规则运动候选推导的至少一些几何分割模式运动候选。 10.根据条款3所述的方法,其中,完全修剪包括,对于新候选,将新候选与运动候选的最终列表中的所有现有候选进行比较,其中(1)在现有候选与新候选相同的情况下,新候选不被添加到运动候选的最终列表中,或者(2)在新候选与另一个现有候选相同的情况下,仅在运动候选列表未满的情况下,将新候选添加到运动候选的最终列表中。 11.根据条款3所述的方法,其中,部分修剪包括以下中的至少一个:(1)将新候选MCandidx与先前添加的具有连续索引的M个候选进行修剪,其中M小于idx,或者(2)将新候选MCandidx与先前添加的具有非连续索引的M个候选进行修剪,其中M是整数。 12.根据条款11所述的方法,其中,将MCandidx与(MCandidx-1,MCandidx-2,MCandidx-3,…,MCandidx-M)进行比较;或者将MCandidx与(Mcand0,MCand1,MCand2,…,MCandM)进行比较。 13.根据条款12所述的方法,其中,M针对所有候选是固定数字。 14.根据条款12所述的方法,其中,M针对不同的候选索引而改变。 15.根据条款4-14中任一项所述的方法,其中,运动候选列表对应于基于历史的运动矢量预测(HMVP)候选。 16.根据条款15所述的方法,其中,在添加HMVP候选之前,StartIdx比可用运动候选的数量小一。 17.根据条款15-16中任一项所述的方法,其中,完全修剪过程包括将HMVP候选与运动候选列表中的所有前M个候选进行比较。 18.一种视频处理的方法,包括: 通过使用基于从何处推导Merge候选的规则,对基于历史的运动矢量预测(HMVP)候选应用修剪过程来生成规则Merge候选列表,和 使用规则Merge候选列表来执行当前视频块和当前视频块的比特流表示之间的转换。 19.根据条款18所述的方法,其中,修剪过程包括将HMVP候选与针对邻近块推导的Merge候选进行比较。 20.根据条款19所述的方法,其中,邻近块对应于左侧块或时域邻近块。 21.根据条款18-20中任一项所述的方法,其中,将具有不同索引的HMVP候选与从不同视频块推导的Merge候选进行比较。 22.一种视频处理的方法,包括: 通过使用基于从中推导出几何预测模式候选的规则运动矢量的规则对几何预测模式候选应用修剪过程来生成候选列表,和 使用候选列表来执行当前视频块和当前视频块的比特流表示之间的转换。 23.根据条款22所述的方法,其中,生成候选列表包括避免对规则Merge候选应用修剪。 24.根据条款18-23中任一项所述的方法,其中,候选列表是通过添加默认运动候选来生成的。 25.根据条款24所述的方法,其中,默认运动候选是在不进行修剪的情况下添加的。 26.一种视频处理方法,包括: 对于当前视频块和当前视频块的比特流表示之间的转换,执行确定对基于历史的运动矢量预测表更新过程禁用修剪操作,其中该确定基于视频特性;和 基于对禁用修剪操作的确定来执行转换。 27.根据条款26所述的方法,其中,视频特性是当前视频块的运动矢量类型或维度。 28.一种视频处理的方法,包括: 执行对于以下中的至少一个所允许的候选的最大数量的确定:(1)当前视频块的几何预测模式Merge候选列表,或(2)运动矢量差(MMVD)Merge候选列表中的基本Merge候选的最大数量,或(3)基于子块的MMVD Merge候选列表中的Merge候选的最大数量,或(4)几何预测模式列表中的仿射Merge候选的最大数量;和 基于该确定来执行当前视频块和当前块的比特流表示之间的转换, 其中,候选的最大数量在比特流表示中的指示符中信令通知。 29.根据条款28所述的方法,其中,该指示符对应于所允许的候选的最大数量减去K之间的差,其中K是整数。 30.根据条款29所述的方法,其中,K=5或6。 31.根据条款28-30中任一项的方法,其中,所允许的候选的最大数量是M2,并且M2不大于M1,其中M1是规则Merge候选列表中的候选的最大数量。 32.根据第31条所述的方法,其中,该指示符信令通知M1和M2之间的差。 33.根据条款28-32中任一项所述的方法,其中,该指示符以序列参数集级别或视频参数集级别或图片参数集级别或图片头级别或条带头级别或片组头级别或编解码树单元级别被包括在比特流表示中。 34.一种视频处理的方法,包括: 执行对于以下中的至少一个所允许的候选的最大数量的确定:(1)当前视频块的几何预测模式Merge候选列表,或(2)运动矢量差(MMVD)Merge候选列表中的基本Merge候选的最大数量,或(3)基于子块的MMVD Merge候选列表中的Merge候选的最大数量,或(4)几何预测模式列表中的仿射Merge候选的最大数量;和 基于该确定来执行当前视频块和当前块的比特流表示之间的转换, 其中,所允许的候选的最大数量被确定为等于规则Merge候选列表中的候选的最大数量。 35.根据条款1-34中任一项所述的方法,其中,该转换包括从当前视频块的像素值生成比特流表示。 36.根据条款1-34中任一项所述的方法,其中,该转换包括从比特流表示生成当前视频块的像素值。 37.一种视频编码器装置,其包括被配置为实施条款1-34中任一项或多项所述的方法的处理器。 38.一种视频解码器装置,其包括被配置为实施条款1-34中任一项或多项所述的方法的处理器。 39.一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于执行条款1至34中任一项的方法的程序代码。 图33是视频处理的示例方法3300的流程图。方法3300包括:确定(3302)对于从一个或多个基于历史的运动矢量预测(HMVP)表推导的HMVP候选的修剪规则;基于修剪规则对HMVP候选执行(3304)修剪或跳过修剪,其中,应用修剪来确定是否将HMVP候选插入当前块的最终候选列表中;以及基于最终候选列表,对当前块执行(3306)视频处理,其中HMVP候选被分类为多个类别之一,并且修剪规则基于HMVP候选被分类到的类别而确定。 图34是视频处理的示例方法3400的流程图。方法3400包括:基于修剪规则来修剪(3402)基于历史的运动矢量预测(HMVP)候选,以确定是否将HMVP候选插入当前块的最终候选列表中;以及基于最终候选列表,对当前块执行(3404)视频处理;其中,修剪包括将HMVP候选与最终候选列表中的特定运动候选进行比较,以及基于从何处推导出特定运动候选来确定修剪规则。 图35是视频处理的示例方法3500的流程图。方法3500包括:确定(3502)对于从一个或多个基于历史的运动矢量预测(HMVP)表推导的HMVP候选的修剪规则;基于修剪规则,通过将HMVP候选与最终候选列表中的至少一个特定运动候选进行比较来修剪(3504)HMVP候选,或者跳过对HMVP候选的修剪,其中,应用修剪来确定是否将HMVP候选插入当前块的最终候选列表中;以及基于最终候选列表,对当前块执行(3506)视频处理,其中,HMVP候选被分类为多个类别之一,并且修剪规则基于HMVP候选被分类到的类别以及从何处推导出至少一个特定运动候选而确定。 图36是视频处理的示例方法3600的流程图。方法3600包括:对于视频的当前块和视频的比特流表示之间的转换,将当前块的第一候选列表中的运动候选分类(3602)为运动候选的多个类别;将来自第二候选列表的新运动候选与第一类别的运动候选进行比较(3604);基于比较结果确定(3606)是否将新运动候选插入第一候选列表中;响应于确定将新运动候选插入第一候选列表中,将新运动候选插入(3608)第一候选列表中;以及基于第一候选列表来执行(3610)转换。 在一些示例中,分类基于HMVP候选列表中的HMVP候选的索引。 在一些示例中,HMVP候选列表包括来自一个或多个HMVP表的一个或多个HMVP候选。 在一些示例中,HMVP候选列表中的HMVP候选被分类为至少两个类别,该至少两个类别包括第一类别和第二类别。 在一些示例中,修剪规则包括完全修剪、部分修剪和非修剪中的至少一种。 在一些示例中,将相同的修剪规则应用于一个类别中的HMVP候选。 在一些示例中,将不同的修剪规则应用于不同的类别。 在一些示例中,完全修剪包括:将HMVP候选与最终候选列表中的M个候选进行比较。 在一些示例中,部分修剪包括:将HMVP候选与最终候选列表中的M个候选的子集进行比较。 在一些示例中,为具有不同索引的HMVP候选选择不同的子集。 在一些示例中,最终候选列表中的M个候选是最终候选列表中的前M个候选。 在一些示例中,M表示在将HMVP候选插入最终候选列表中之前最终候选列表中的现有的运动候选的数量。 在一些示例中,最终候选列表中的M个候选是非HMVP候选。 在一些示例中,如果最终候选列表中的运动候选的数量小于第一阈值,则将完全修剪应用于HMVP候选;如果最终候选列表中的运动候选的数量不小于第一阈值且小于第二阈值,则应用部分修剪;并且如果最终候选列表中的运动候选的数量不小于第二阈值,则应用非修剪。 在一些示例中,仅当HMVP候选与最终候选列表中的所有M个候选都不相同也不相似,且最终候选列表未满时,将HMVP候选插入最终候选列表中。 在一些示例中,如果HMVP候选与最终候选列表中的M个候选之一相同或相似,或者最终候选列表已满,则跳过将HMVP候选插入最终候选列表。 在一些示例中,仅当HMVP候选与最终候选列表中的M个候选的子集不相同也不相似,且最终候选列表未满时,将HMVP候选插入最终候选列表中。 在一些示例中,如果HMVP候选与最终候选列表中的M个候选的子集之一相同或相似,或者最终候选列表已满,则跳过将HMVP候选插入最终候选列表。 在一些示例中,响应于修剪规则为非修剪,将HMVP候选直接添加到最终候选列表,而无需修剪。 在一些示例中,对于第一类别中的第一HMVP候选,应用完全修剪或部分修剪,并且对于第二类别中的第二HMVP候选,应用非修剪。 在一些示例中,对于第一类别中的第一HMVP候选,应用非修剪,并且对于第二类别中的第二HMVP候选,应用完全修剪或部分修剪。 在一些示例中,用不同于针对HMVP候选的修剪规则来修剪插入最终候选列表中的至少一个非HMVP候选。 在一些示例中,第一类别包括至少一个索引在[StartIdx,K 在一些示例中,至少一个特定运动候选是从与当前块邻近的一个或多个块推导的。 在一些示例中,将要被修剪的所有HMVP候选与从在与当前块邻近的至少一个特定相对位置处的至少一个块推导的至少一个相同的空域候选进行比较。 在一些示例中,将具有不同索引的第一HMVP候选和第二HMVP候选与从不同块推导的运动候选进行比较。 在一些示例中,与当前块邻近的块包括左侧空域邻近块或时域邻近块中的至少一个。 在一些示例中,该方法还包括:跳过将新运动候选与第二类别的运动候选进行比较,其中,第二类别的运动候选包括第一候选列表中除了第一类别的运动候选之外的运动候选。 在一些示例中,第一类别的运动候选包括从左侧空域邻近块推导的运动候选。 在一些示例中,第二候选列表是基于历史的运动矢量预测(HMVP)表。 在一些示例中,第一候选列表是Merge候选列表、高级运动矢量预测(AMVP)候选列表、三角形分割模式(TPM)Merge候选列表和子块Merge候选列表中的一个。 在一些示例中,分类基于HMVP候选列表中的HMVP候选的索引。 在一些示例中,HMVP候选列表包括来自一个或多个HMVP表的一个或多个HMVP候选。 在一些示例中,HMVP候选列表中的HMVP候选被分类为至少两个类别,该至少两个类别包括第一类别和第二类别。 在一些示例中,修剪规则包括对最终候选列表中的至少一个特定运动候选进行修剪和非修剪中的至少一种。 在一些示例中,对至少一个特定运动候选进行修剪包括:将HMVP候选与最终候选列表中的至少一个特定运动候选进行比较。 在一些示例中,仅当HMVP候选与最终候选列表中的至少一个特定运动候选不相同也不相似时,将HMVP候选插入最终候选列表中。 在一些示例中,如果HMVP候选与最终候选列表中的至少一个特定运动候选之一相同或相似,或者最终候选列表已满,则跳过将HMVP候选插入最终候选列表。 在一些示例中,响应于修剪规则为非修剪,将HMVP候选直接添加到最终候选列表,而无需修剪。 在一些示例中,对于第一类别中的第一HMVP候选,应用对至少一个特定运动候选的修剪,并且对于第二类别中的第二HMVP候选,应用非修剪。 在一些示例中,对于第二类别中的第二HMVP候选,应用对至少一个特定运动候选的修剪,并且对于第一类别中的第一HMVP候选,应用非修剪。 在一些示例中,至少一个特定运动候选是从与当前块邻近的一个或多个块推导的。 在一些示例中,将要被修剪的所有HMVP候选与从在与当前块邻近的至少一个特定相对位置处的至少一个块推导的至少一个相同的空域候选进行比较。 在一些示例中,与当前块邻近的块包括左侧空域邻近块或时域邻近块中的至少一个。 在一些示例中,第一类别包括至少一个索引在[StartIdx,K 在一些示例中,视频处理包括将当前块编码成当前块的比特流表示和从当前块的比特流表示解码当前块中的至少一个。 在一个示例方面,公开了一种用于视频处理的装置。该装置包括被配置为实施上述方法的处理器。 在一个示例方面,公开了一种存储在非暂时性计算机可读介质上的计算机程序产品。计算机程序产品包括用于执行上述方法的程序代码。 本领域技术人员将理解,公开了用于在各种视频编解码场景下使用运动候选列表的技术。视频块可以被编码到比特流表示,该比特流表示包括放置在各种头或网络适配层中的非连续比特等。 本文档中描述的所公开的和其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路中实施,或者在计算机软件、固件或硬件中实施,包括本文档中公开的结构及其结构等同物,或者在它们中的一个或多个的组合中实施。所公开的和其他实施例可以实施为一个或多个计算机程序产品,即编码在计算机可读介质上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基底、存储器设备、实现机器可读传播信号的物质组合,或者它们中的一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,例如,包括可编程处理器、计算机或多个处理器或计算机。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如,机器生成的电信号、光信号或电磁信号,其被生成来编码信息以传输到合适的接收器装置。 计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其它单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其它程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件中(例如,存储一个或多个模块、子程序或部分代码的文件)。计算机程序可以被部署为在位于一个站点或分布在多个站点并通过通信网络互连的一个或多个计算机上执行。 本文档中描述的过程和逻辑流程可以由一个或多个可编程处理器执行,该处理器运行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路来执行,并且装置也可以实施为专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。 举例来说,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或者被可操作地耦合以从一个或多个大容量存储设备接收数据或向其传送数据或两者兼有。然而,计算机可能不需要这样的设备。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如,EPROM、EEPROM和闪存设备;磁盘,例如,内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路来补充或并入专用逻辑电路。 虽然本专利文档包含许多细节,但这些不应被解释为对任何主题或所要求保护的范围的限制,而是对特定技术的特定实施例所特有的特征的描述。本专利文档中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合来实施。此外,尽管上述特征可以被描述为以某些组合起作用,甚至最初被要求这样来保护,但是在某些情况下,可以从所要求保护的组合中删除该组合中的一个或多个特征,并且所要求保护的组合可以指向子组合或子组合的变体。 类似地,尽管在附图中以特定顺序描述了操作,但这不应理解为要求以所示的特定顺序或顺序地执行这些操作,或者要求执行所有所示的操作,以获得期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应该理解为在所有实施例中都需要这种分离。 仅描述了几个实施方式和示例,并且可以基于本专利文档中描述和图示的内容进行其它实施、增强和变化。