首页 / 专利库 / 广播 / 帧内预测 / 双向光流中的梯度计算

双向光流中的梯度计算

阅读:626发布:2020-05-08

专利汇可以提供双向光流中的梯度计算专利检索,专利查询,专利分析的服务。并且公开了双向光流中的梯度计算。一种视频处理方法包括:在 运动矢量 细化处理中,对具有第一尺寸的第一 块 或子块执行时域梯度 修改 处理,以生成所述第一块或子块的修改的时域梯度;以及根据所述第一块或子块的所述修改的时域梯度,对具有第二尺寸的第二块或子块执行所述运动矢量细化处理,其中所述第一尺寸不同于所述第二尺寸。,下面是双向光流中的梯度计算专利的具体信息内容。

1.一种视频处理方法,包括:
运动矢量细化处理中,对具有第一尺寸的第一或子块执行时域梯度修改处理,以生成所述第一块或子块的修改的时域梯度;以及
根据所述第一块或子块的所述修改的时域梯度,对具有第二尺寸的第二块或子块执行所述运动矢量细化处理,其中所述第一尺寸不同于所述第二尺寸。
2.根据权利要求1所述的方法,其中,所述运动矢量细化处理还包括:
使用所述修改的时域梯度导出所述第二块或子块的细化运动矢量。
3.根据权利要求1所述的方法,其中,在双向光流BIO技术或在解码器侧运动矢量细化DMVR技术或速率上转换FRUC技术中实现所述运动矢量细化处理。
4.根据权利要求1至3中任一项所述的方法,其中,所述第一块或子块包含M1xN1个样本,并且所述第二块或子块包含M2xN2个样本,其中M1、N1、M2及N2为整数。
5.根据权利要求4所述的方法,其中,M1=N1=8,M2=N2=4。
6.根据权利要求4所述的方法,其中,M1=N1=4,M2=N2=8。
7.一种视频处理方法,包括:
使用视频块或所述视频块内的子块的部分像素来计算所述视频块或所述视频块内的子块的部分时域和/或空域梯度;以及
使用所述部分时域和/或空域梯度来导出所述视频块或所述视频块内的子块的细化运动矢量。
8.根据权利要求7所述的方法,其中,使用来自每N行和/或列的像素来计算所述部分时域和/或空域梯度,N是整数。
9.根据权利要求8所述的方法,其中,N=2。
10.根据权利要求7所述的方法,其中,使用来自所述视频块或所述视频块内的所述子块的左上/右上/左下/右下四分之一的像素来计算所述部分时域和/或空域梯度。
11.根据权利要求7所述的方法,其中,使用来自所述视频块或所述视频块内的所述子块的左上/右上/左下/右下四分之一的每N行和/或列的像素来计算所述部分时域和/或空域梯度。
12.根据权利要求7所述的方法,其中,在两步运动矢量细化处理或多步运动矢量细化处理期间,使用所述视频块或所述视频块内的所述子块的部分像素来计算所述部分时域和/或空域梯度,其中,所述部分时域和/或空域梯度仅用于导出所述视频块或所述子块的细化运动矢量。
13.根据权利要求1至12中任一项所述的方法,其中,所述块对应于预测单元、或者编码单元、或者块、或者子块。
14.根据权利要求1至13中任一项所述的方法,还包括:
通过使用所述运动矢量,执行所述块和所述块的比特流表示之间的转换。
15.根据权利要求14所述的方法,其中,所述转换从所述比特流表示生成所述块。
16.根据权利要求14所述的方法,其中,所述转换从所述块生成所述比特流表示。
17.一种视频处理装置,其包括处理器,所述处理器被配置以实现权利要求1至16中任一项或多项中所述的方法。
18.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于执行权利要求1至16中任一项所述的方法的程序代码。

说明书全文

双向光流中的梯度计算

[0001] 根据适用专利法和/或适用于巴黎公约的规则,本申请及时要求2018年10月22日提交的国际专利申请No.PCT/CN2018/111181号的优先权和权益。上述国际专利申请作为本申请公开的一部分通过引用并入。

技术领域

[0002] 本专利文件涉及视频编码技术、设备和系统。

背景技术

[0003] 运动补偿(Motion Compensation)是一种视频处理中的技术,给出先前的和/或将来的,通过考虑相机和/或视频中的对象的运动来预测视频中的帧。运动补偿可以用于视频数据的编码和解码以实现视频压缩。发明内容
[0004] 本文件公开了与视频编码和解码中使用运动补偿相关的方法、系统和设备。
[0005] 在一个示例方面,公开了一种视频处理方法。该方法包括:在运动矢量细化处理中,对具有第一尺寸的第一或子块执行时域梯度修改处理,以生成所述第一块或子块的修改的时域梯度;以及根据所述第一块或子块的所述修改的时域梯度,对具有第二尺寸的第二块或子块执行所述运动矢量细化处理,其中所述第一尺寸不同于所述第二尺寸。
[0006] 在另一示例方面,公开了另一种视频处理方法。该方法包括:使用视频块或所述视频块内的子块的部分像素来计算所述视频块或所述视频块内的子块的部分时域和/或部分空域梯度;以及使用所述部分时域和/或空域梯度来导出所述视频块或所述视频块内的子块的细化运动矢量。
[0007] 在另一个示例方面,公开了一种视频处理方法。该方法包括:基于来自当前视频块的比特流表示的解码的运动信息,使用多步细化处理生成运动矢量信息的多个细化值;以及基于多个细化值重构当前视频块或解码其它视频块。
[0008] 在另一示例方面,公开了另一种视频处理方法。该方法包括:为当前块和当前块的比特流表示之间的转换,执行当前块的子块的多步细化处理、以及子块的两个预测块之间的时域梯度修改处理,其中,基于从当前视频块的比特流表示中解码的运动信息,使用多步细化处理、运动矢量信息的多个细化值;以及基于细化值执行当前块和比特流表示之间的转换。
[0009] 在又一示例方面,公开了另一种视频处理方法。该方法包括:使用当前视频块的多步解码器侧运动矢量细化处理来确定最终运动矢量;以及使用最终运动矢量执行当前块和比特流表示之间的转换。
[0010] 在又一方面,公开了另一种视频处理方法。该方法包括:在当前视频块和当前视频块的比特流表示之间的转换期间,将多个不同的运动矢量细化处理应用于当前视频块的不同子块;以及使用从多个不同的运动矢量细化处理生成的当前视频块的最终运动矢量,执行当前块和比特流表示之间的转换。
[0011] 在又一方面,公开了另一种视频处理方法。该方法包括:使用规则来执行当前视频块和当前视频块的比特流表示之间的转换,该规则在使用基于子块的编码工具对当前视频块进行编码的情况下,限制编码单元或预测单元的子块的最大数目,其中,基于子块的编码工具包括仿射编码、高级时域运动矢量预测器、双向光流或解码器侧运动矢量细化编码工具中的一个或多个。
[0012] 在又一示例方面,公开了另一种视频处理方法。该方法包括:使用规则来执行当前视频块和当前视频块的比特流表示之间的转换,该规则在使用基于子块的编码工具对当前视频块进行编码的情况下,规定对当前视频块的色度分量使用不同于当视频块的亮度分量的分割,其中,基于子块的编码工具包括仿射编码、高级时域运动矢量预测器、双向光流或解码器侧运动矢量细化编码工具中的一个或多个。
[0013] 在又一示例方面,公开了另一种视频处理方法。该方法包括:在双向光流(BIO)技术或解码器侧运动矢量细化(DMVR)技术的早期终止阶段中,确定与当前视频块相关联的参考视频块之间的差;以及基于该差执行当前视频块的进一步处理。
[0014] 在又一典型的方面,本文描述的各种技术可以被实现为存储在非暂时性计算机可读介质上的计算机程序产品。该计算机程序产品包括用于执行本文所述方法的程序代码。
[0015] 在又一典型的方面,视频解码器装置可以实现如本文所述的方法。
[0016] 在附图和下面的描述中描述一个或多个实现的细节。其他特征将从说明书和附图以及权利要求书中显而易见。

附图说明

[0017] 图1示出了Merge候选列表构造的推导过程的示例。
[0018] 图2示出了空域Merge候选的示例位置
[0019] 图3示出了考虑用于空域Merge候选的冗余检查的候选对的示例。
[0020] 图4示出N×2N和2N×N分割的第二个PU的示例位置。
[0021] 图5是时域Merge候选的运动矢量缩放的图示。
[0022] 图6示出了时域Merge候选的候选位置C0和C1的示例。
[0023] 图7示出了组合双向预测Merge候选的示例。
[0024] 图8示出了运动矢量预测候选的推导过程的示例。
[0025] 图9是空域运动矢量候选的运动矢量缩放的示例说明。
[0026] 图10示出了编码单元(CU)的替代时域运动矢量预测器(ATMVP)的示例。
[0027] 图11示出了具有四个子块(A-D)及其临近块(a-d)的一个CU的示例。
[0028] 图12是应用OBMC的子块的示例说明。
[0029] 图13示出了用于导出IC参数的临近样本的示例。
[0030] 图14示出了简化仿射运动模型的示例。
[0031] 图15示出了每个子块的仿射MVF的示例。
[0032] 图16示出AF_INTER模式的运动矢量预测器(MV)的示例。
[0033] 图17A至17B示出AF_Merge模式的候选的示例。
[0034] 图18示出了双边匹配的示例处理。
[0035] 图19示出了模板匹配的示例处理。
[0036] 图20示出了帧速率上转换(FRUC)中单边运动估计(ME)的实现。
[0037] 图21示出了最终运动矢量表达(UMVE)搜索处理的实施例
[0038] 图22示出了UMVE搜索点的示例。
[0039] 图23示出了距离索引和距离偏移映射的示例。
[0040] 图24示出了光流轨迹的示例。
[0041] 图25A至25B示出了具有/不具有块扩展的BIO:a)访问位置在块外;b)使用填充来避免附加的内存访问和计算。
[0042] 图26示出了基于双边模板匹配使用解码器侧运动矢量细化(DMVR)的示例。
[0043] 图27示出了交织预测的示例。
[0044] 图28示出了BIO的迭代运动矢量细化的示例。
[0045] 图29是用于实现本文所述的视频编码或解码技术的硬件平台的框图
[0046] 图30示出了用于实现本文所述的方法和技术的硬件平台的示例。
[0047] 图31是视频处理的示例方法的流程图
[0048] 图32是视频处理的示例方法的流程图。
[0049] 图33是视频处理的示例方法的流程图。

具体实施方式

[0050] 本文提供了几种可实施在数字视频编码器和解码器中的技术。为了清晰理解,在本文中使用了章节标题,并且不将每个章节中公开的技术和实施例的范围仅限于该章节。
[0051] 1.综述
[0052] 本发明涉及视频编码技术。具体来说,涉及视频编码中的运动补偿。所公开的技术可以应用于如HEVC的现有的视频编码标准,或待定的标准(多功能视频编码)。它也可适用于未来的视频编码标准或视频编解码器。
[0053] 在本文档中,术语“视频处理”可以指视频编码、视频解码、视频压缩或视频解压缩。例如,视频压缩算法可以在从视频的像素表示到对应的比特流表示的转换期间应用,反之亦然。
[0054] 2.介绍
[0055] 视频编码标准主要通过开发众所周知的ITU-T和ISO/IEC标准而发展起来的。ITU-T制作了H.261和H.263,ISO/IEC制作了MPEG-1和MPEG-4视频,并且这两个组织共同制作了H.262/MPEG-2视频和H.264/MPEG-4高级视频编码(AVC)和H.265/HEVC标准。自H.262开始,视频编码标准基于混合视频编码结构,其中利用了时域预测加变换编码。为探索HEVC之外的未来视频编码技术,VCEG和MPEG于2015年共同成立了联合视频探索团队(JVET)。从那时起,JVET采用了许多新的方法,并将其应用到了名为联合探索模型(JEM)的参考软件中。2018年4月,VCEG(Q6/16)和ISO/IEC JTC1 SC29/WG11(MPEG)之间的联合视频专家团队(JVET)成立,以致于目标是与HEVC相比其降低50%比特率的VVC标准。
[0056] 2.1 HEVC/H.265中的帧间预测
[0057] 每个帧间预测的PU都有一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。两个参考图片列表之一的使用也可以使用inter_pred_idc发信令通知。运动矢量可显式地编码为相对于预测器的增量。
[0058] 当CU采用跳跃模式编码时,一个PU与CU相关联,并且没有显著的残差系数,没有编码运动矢量增量或参考图片索引。指定了一种Merge模式,通过该模式,可以从临近的PU(包括空域和时域候选)中获取当前PU的运动参数。Merge模式可以应用于任何帧间预测的PU,而不仅仅是跳跃模式。Merge模式的另一种选择是运动参数的显式传输,其中运动矢量(更精确地,与运动矢量预测器相比的运动矢量差)、每个参考图片列表的对应的参考图片索引、以及参考图片列表的使用都会根据每个PU显式地发信令通知。在本公开中,这样的模式被命名为高级运动矢量预测(AMVP)。
[0059] 当信令指示要使用两个参考图片列表中的一个时,从一个样本块中生成PU。这被称为“单向预测”。单向预测对P条带(slice)和B条带都可用。
[0060] 当信令指示要使用两个参考图片列表时,从两个样本块中生成PU。这被称为“双向预测”。双向预测仅对B条带可用。
[0061] 下文提供了在HEVC中规定的关于帧间预测模式的细节。描述将从Merge模式开始。
[0062] 2.1.1 Merge模式
[0063] 2.1.1.1 Merge模式的候选的推导
[0064] 当使用Merge模式预测PU时,从比特流中解析指向Merge候选列表中条目的索引,并且使用该索引检索运动信息。在HEVC标准中规定了此列表的构建,并且可按以下步骤顺序进行概括:
[0065] 步骤1:初始候选推导
[0066] 步骤1.1:空域候选推导
[0067] 步骤1.2:空域候选冗余检查
[0068] 步骤1.3:时域候选推导
[0069] 步骤2:附加候选插入
[0070] 步骤2.1:创建双向预测候选
[0071] 步骤2.2:插入零运动候选
[0072] 在图1中也示意性地示出了这些步骤。对于空域Merge候选推导,在位于五个不同位置的候选中最多选择四个Merge候选。对于时域Merge候选推导,在两个候选中最多选择一个Merge候选。由于在解码器处假定每个PU的候选数为常量,因此当从步骤1获得的候选数未达到条带报头中信令通知的最大Merge候选数(maxNumMergeCand)时,生成附加的候选。由于候选数是恒定的,所以最佳Merge候选的索引使用截断的一元二值化(TU)进行编码。如果CU的尺寸等于8,则当前CU的所有PU都共享一个Merge候选列表,这与2N×2N预测单元的Merge候选列表相同。
[0073] 在下文中,详细描述与前述步骤相关联的操作。
[0074] 2.1.1.2空域候选推导
[0075] 在空域Merge候选的推导中,在位于图2所示位置的候选中最多选择四个Merge候选。推导顺序为A1,B1,B0,A0和B2。只有当位置A1,B1,B0,A0的任何PU不可用(例如,因为它属于另一个条带或片)或是帧内编码时,才考虑位置B2。在增加A1位置的候选后,对剩余候选的增加进行冗余检查,其确保具有相同运动信息的候选被排除在列表之外,从而提高编码效率。为了降低计算的复杂度,在所提到的冗余检查中并不考虑所有可能的候选对。相反,只有与图3中的箭头链接的对才会被考虑,并且只有当用于冗余检查的对应候选没有相同的运动信息时,才将候选添加到列表中。复制运动信息的另一个来源是与2Nx2N不同的分区相关的“第二PU”。例如,图4分别描述了N×2N和2N×N情况下的第二PU。当当前的PU被划分为N×2N时,对于列表构建不考虑A1位置的候选。实际上,通过添加此候选可能导致两个具有相同运动信息的预测单元,这对于在编码单元中仅具有一个PU是冗余的。同样地,当当前PU被划分为2N×N时,不考虑位置B1。
[0076] 2.1.1.3时域候选推导
[0077] 在此步骤中,只有一个候选添加到列表中。特别地,在这个时域Merge候选的推导中,基于属于与给定参考图片列表中当前图片具有最小POC差的图片的并置PU导出了缩放运动矢量。用于推导并置PU的参考图片列表在条带报头中显式地发信令通知。获取时域Merge候选的缩放运动矢量(如图5中虚线所示),其使用POC距离tb和td从并置PU的运动矢量进行缩放,其中tb定义为当前图片的参考图片和当前图片之间的POC差,并且td定义为并置图片的参考图片与并置图片之间的POC差。时域Merge候选的参考图片索引设置为零。HEVC规范中描述了缩放处理的实际实现。对于B条带,得到两个运动矢量(一个是对于参考图片列表0,另一个是对于参考图片列表1)并将其组合使其成为双向预测Merge候选。
[0078] 在属于参考帧的并置PU(Y)中,在候选C0和C1之间选择时域候选的位置,如图6所示。如果位置C0处的PU不可用、帧内编码或在当前CTU行之外,则使用位置C1。否则,位置C0被用于时域Merge候选的推导。
[0079] 2.1.1.4附加候选插入
[0080] 除了空域和时域Merge候选,还有两种附加类型的Merge候选:组合双向预测Merge候选和零Merge候选。组合双向预测Merge候选是利用空域和时域Merge候选生成的。组合双向预测Merge候选仅用于B条带。通过将初始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数相结合,生成组合双向预测候选。如果这两个元组提供不同的运动假设,它们将形成新的双向预测候选。作为示例,图7示出了该情形,其中原始列表(在左侧)中具有MVL0和refIdxL0或MVL1和refIdxL1的两个候选被用于创建添加到最终列表(在右侧)中的组合双向预测Merge候选。定义了许多关于被认为生成这些附加Merge候选的组合的规则。
[0081] 插入零运动候选以填充Merge候选列表中的其余条目,从而达到MaxNumMergeCand的容量。这些候选具有零空域位移和从零开始并且每次将新的零运动候选添加到列表中时都会增加的参考图片索引。这些候选使用的参考帧的数目对于单向预测和双向预测分别是1帧和2帧。最后,对这些候选不执行冗余检查。
[0082] 2.1.1.5并行处理的运动估计区域
[0083] 为了加快编码处理,可以并行执行运动估计,从而同时导出给定区域内所有预测单元的运动矢量。从空域邻域导出Merge候选可能会干扰并行处理,因为一个预测单元在完成相关运动估计之前无法从相邻的PU导出运动参数。为了缓和编码效率和处理延迟之间的平衡,HEVC使用“log2_parallel_merge_level_minus2”语法元素定义了其尺寸在图片参数集中被信令通知的运动估计区域(MER)。当定义MER时,落入同一区域的Merge候选标记为不可用,并且因此在列表构建中不考虑。
[0084] 2.1.2 AMVP
[0085] AMVP利用运动矢量与临近的PU的空时相关性,其用于运动参数的显式传输。对于每个参考图片列表,首先通过检查左上方的时域临近的PU位置的可用性、去掉多余的候选并且加上零矢量以使候选列表长度恒定来构建运动矢量候选列表。然后,编码器可以从候选列表中选择最佳的预测器,并发送指示所选候选的对应索引。与Merge索引信令类似,最佳运动矢量候选的索引使用截断的一元进行编码。在这种情况下,要编码的最大值是2(参见图8)。在以下各章节中,提供了关于运动矢量预测候选的推导过程的细节。
[0086] 图8概括了运动矢量预测候选的推导过程。
[0087] 2.1.2.1 AMVP候选的推导
[0088] 在运动矢量预测中,考虑了两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选的推导,基于位于图2所示的五个不同位置的每个PU的运动矢量最终推导出两个运动矢量候选。
[0089] 对于时域运动矢量候选的推导,从两个候选中选择一个运动矢量候选,这两个候选是基于两个不同的并置位置推导出的。在作出第一个空时候选列表后,移除列表中重复的运动矢量候选。如果潜在候选的数量大于二,则从列表中移除相关联的参考图片列表中参考图片索引大于1的运动矢量候选。如果空时运动矢量候选数小于二,则会在列表中添加附加的零运动矢量候选。
[0090] 2.1.2.2空域运动矢量候选
[0091] 在推导空域运动矢量候选时,在五个潜在候选中最多考虑两个候选,这五个候选来自图2所示位置上的PU,这些位置与运动Merge的位置相同。当前PU左侧的推导顺序定义为A0、A1、以及缩放的A0、缩放的A1。当前PU上侧的推导顺序定义为B0、B1,B2、缩放的B0、缩放的B1、缩放的B2。因此,每侧有四种情况可以用作运动矢量候选,其中两种情况不需要使用空域缩放,并且两种情况使用空域缩放。四种不同的情况概括如下:
[0092] --无空域缩放
[0093] (1)相同的参考图片列表,并且相同的参考图片索引(相同的POC)
[0094] (2)不同的参考图片列表,但是相同的参考图片(相同的POC)
[0095] --空域缩放
[0096] (3)相同的参考图片列表,但是不同的参考图片(不同的POC)
[0097] (4)不同的参考图片列表,并且不同的参考图片(不同的POC)
[0098] 首先检查无空域缩放的情况,然后检查允许空域缩放的情况。当POC在临近PU的参考图片与当前PU的参考图片之间不同时,都会考虑空域缩放,而不管参考图片列表如何。如果左侧候选的所有PU都不可用或是帧内编码,则允许对上述运动矢量进行缩放,以帮助左侧和上方MV候选的平行推导。否则,不允许对上述运动矢量进行空域缩放。
[0099] 在空域缩放处理中,以与时域缩放类似的方式缩放临近PU的运动矢量,如图9所示。主要区别是,给出当前PU的参考图片列表和索引作为输入;实际的缩放处理与时域缩放处理相同。
[0100] 2.1.2.3时域运动矢量候选
[0101] 除了参考图片索引的推导外,时域Merge候选的所有推导过程与空域运动矢量候选的推导过程相同(参见图6)。将参考图片索引信令通知给解码器。
[0102] 2.2 JEM中的新的帧间预测方法
[0103] 2.2.1基于子CU的运动矢量预测
[0104] 在具有QTBT的JEM中,每个CU对于每个预测方向最多可以具有一组运动参数。通过将大的CU分割成子CU并推导该大CU的所有子CU的运动信息,编码器中考虑了两种子CU级的运动矢量预测方法。可替代时域运动矢量预测(ATMVP)方法允许每个CU从并置参考图片中多个小于当前CU的块中提取多组运动信息。在空时运动矢量预测(STMVP)方法中,通过利用时域运动矢量预测值和空域邻接运动矢量递归地推导子CU的运动矢量。
[0105] 为了为子CU运动预测的保持更精确的运动场,当前禁用参考帧的运动压缩。
[0106] 2.2.1.1可替代时域运动矢量预测
[0107] 在可替代时域运动矢量预测(ATMVP)方法中,运动矢量时域运动矢量预测(TMVP)是通过从小于当前CU的块中提取多组运动信息(包括运动矢量和参考索引)来修改的。如图10所示,子CU为方形N×N块(默认N设置为4)。
[0108] ATMVP分两步预测CU内的子CU的运动矢量。第一步是用所谓的时域矢量识别参考图片中的对应块。参考图片称为运动源图片。第二步是将当前CU划分成子CU,并从每个子CU对应的块中获取运动矢量以及每个子CU的参考索引,如图10所示。
[0109] 在第一步中,参考图片和对应的块由当前CU的空域临近块的运动信息确定。为了避免临近块的重复扫描处理,使用当前CU的Merge候选列表中的第一个Merge候选。第一个可用的运动矢量及其相关联的参考索引被设置为时域矢量和运动源图片的索引。这样,在ATMVP中,与TMVP相比,可以更准确地识别对应的块,其中对应的块(有时称为并置块)始终位于相对于当前CU的右下或中心位置。
[0110] 在第二步中,通过将时域矢量添加到当前CU的坐标中,通过运动源图片中的时域矢量识别子CU的对应块。对于每个子CU,使用其对应块的运动信息(覆盖中心样本的最小运动网格)来推导子CU的运动信息。在识别出对应N×N块的运动信息后,将其转换为当前子CU的运动矢量和参考索引,与HEVC的TMVP方法相同,其中应用运动缩放和其它处理。例如,解码器检查是否满足低延迟条件(例如,当前图片的所有参考图片的POC都小于当前图片的POC),并可能使用运动矢量MVx(与参考图片列表X对应的运动矢量)来为每个子CU预测运动矢量MVy(X等于0或1且Y等于1-X)。
[0111] 2.2.1.2空时运动矢量预测
[0112] 在这种方法中,子CU的运动矢量是按照光栅扫描顺序递归推导的。图11说明了该概念。考虑一个8×8的CU,它包含四个4×4的子CU A、B、C和D。当前帧中临近的4×4的块标记为a、b、c和d。
[0113] 子CU A的运动推导由识别其两个空域邻居开始。第一个邻居是子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的运动矢量。
[0114] 图11示出了具有四个子块(A-D)和临近块(a-d)的一个CU的示例。
[0115] 2.2.1.3子CU运动预测模式信令通知
[0116] 子CU模式作为附加的Merge候选启用,并且不需要附加的语法元素来对该模式发信令。将另外两个Merge候选添加到每个CU的Merge候选列表中,以表示ATMVP模式和STMVP模式。如果序列参数集指示启用了ATMVP和STMVP,则最多使用七个Merge候选。附加Merge候选的编码逻辑与HM中的Merge候选的编码逻辑相同,这意味着对于P条带或B条带中的每个CU,需要对两个附加Merge候选进行两次更多RD检查。
[0117] 在JEM中,Merge索引的所有bin都由CABAC进行上下文编码。然而在HEVC中,只有第一个bin是上下文编码的,并且其余的bin是上下文旁路编码的。
[0118] 2.2.2自适应运动矢量差分辨率
[0119] 在HEVC中,当在条带报头中use_integer_mv_flag等于0时,运动矢量差(MVD)(在PU的运动矢量和预测运动矢量之间)以四分之一亮度样本为单位发信令通知。在JEM中,引入了局部自适应运动矢量分辨率(LAMVR)。在JEM中,MVD可以用四分之一亮度样本、整数亮度样本或四亮度样本的单位进行编码。MVD分辨率控制在编码单元(CU)级别,并且MVD分辨率标志有条件地为每个至少有一个非零MVD分量的CU发信令。
[0120] 对于具有至少一个非零MVD分量的CU,发信令通知第一个标志以指示CU中是否使用四分之一亮度样本MV精度。当第一个标志(等于1)指示不使用四分之一亮度样本MV精度时,发信令通知另一个标志以指示是使用整数亮度样本MV精度还是使用四亮度样本MV精度。
[0121] 当CU的第一个MVD分辨率标志为零或没有为CU编码(意味着CU中的所有MVD都为零)时,CU使用四分之一亮度样本MV分辨率。当一个CU使用整数亮度样本MV精度或四亮度样本MV精度时,该CU的AMVP候选列表中的MVP将取整到对应的精度。
[0122] 在编码器中,CU级别的RD检查用于确定哪个MVD分辨率将用于CU。也就是说,对每个MVD分辨率执行三次CU级别的RD检查。为了加快编码器速度,在JEM中应用以下编码方案。
[0123] --在对具有正常四分之一亮度采样MVD分辨率的CU进行RD检查期间,存储当前CU(整数亮度采样精度)的运动信息。在对具有整数亮度样本和4亮度样本MVD分辨率的同一个CU进行RD检查时,将存储的运动信息(取整后)用作进一步小范围运动矢量细化的起始点,从而使耗时的运动估计处理不会重复三次。
[0124] --有条件地调用具有4亮度样本MVD分辨率的CU的RD检查。对于CU,当整数亮度样本MVD分辨率的RD检查成本远大于四分之一亮度样本MVD分辨率的RD检查成本时,将跳过对CU的4亮度样本MVD分辨率的RD检查。
[0125] 2.2.3更高运动矢量存储精度的示例
[0126] 在HEVC中,运动矢量精度是四分之一像素(4:2:0视频的四分之一亮度样本和八分之一色度样本)。在JEM中,内部运动矢量存储和Merge候选的精度增加到1/16像素。较高运动矢量精度(1/16像素)用于以跳跃/Merge模式编码的CU的运动补偿帧间预测。对于正常AMVP模式编码的CU,使用整数像素或四分之一像素运动,如前面所述的。
[0127] 具有与HEVC运动补偿插值滤波器相同的滤波器长度和归一化因子的SHVC上采样插值滤波器被用作附加分数像素位置的运动补偿插值滤波器。在JEM中色度分量运动矢量精度是1/32样本,通过使用两个临近1/16像素分数位置的滤波器的平均值推导出1/32像素分数位置的附加插值滤波器。
[0128] 2.2.4重叠块运动补偿
[0129] 先前在H.263中已经使用了重叠块运动补偿(OBMC)。在JEM中,不同于在H.263中,可以使用CU级别的语法打开和关闭OBMC。当OBMC用于JEM时针对所有运动补偿(MC)块边界执行OBMC,但CU的右边界和底边界除外。此外,它还适用于亮度和色度分量。在JEM中,MC块对应于编码块。当CU用子CU模式(包括子CU MERGE、仿射和FRUC模式)编码时,CU的每个子块都是MC块。为了用统一的方式处理CU边界,对所有MC块边界,在子块级别执行OBMC,其中子块尺寸设置为等于4×4,如图12所示。
[0130] 当OBMC应用于当前子块时,除了当前运动矢量外,四个相连的临近子块的运动矢量(如果可用且与当前运动矢量不同)也可用于推导当前子块的预测块。将这些基于多个运动矢量的多个预测块组合起来,以生成当前子块的最终预测信号
[0131] 基于临近子块运动矢量的预测块表示为PN,其中N表示临近的上、下、左、右子块的索引,并且基于当前子块运动矢量的预测块表示为PC。当PN基于包含与当前子块相同的运动信息的临近子块的运动信息时,OBMC不从PN处执行的。否则,每个PN的样本都添加到PC中的相同样本中,即将PN的四行/列添加到PC。PN使用权重因子{1/4,1/8,1/16,1/32},PC使用权重因子{3/4,7/8,15/16,31/32}。例外情况是小MC块(即编码块的高度或宽度等于4或CU是用子CU模式编码的),对此在PC中只添加PN的两行/列。在这种情况下,PN使用权重因子{1/4,1/8},PC使用权重因子{3/4,7/8}。对于基于垂直(平)临近子块的运动矢量生成的PN,将PN的同一行(列)中的样本以相同的权重因子添加到PC中。
[0132] 在JEM中,对于尺寸小于或等于256亮度样本的CU,会对CU级别标志发信令,以指示当前CU是否应用OBMC。对于尺寸大于256亮度样本或未使用AMVP模式编码的CU,默认情况下应用OBMC。在编码器处,当OBMC应用于CU时,在运动估计阶段会考虑其影响。使用上临近块和左临近块的运动信息通过OBMC形成的预测信号被用来补偿当前CU的原始信号的上边界和左边界,并且然后应用正常的运动估计处理。
[0133] 2.2.5局部照明补偿
[0134] 局部照明补偿(LIC)基于用于照明变化的线性模型,使用比例因子a和偏移量b。并且其对每个帧间模式编码的编码单元(CU)自适应地启用或禁用。
[0135] 当LIC应用于CU时,采用最小二乘误差法,通过使用当前CU的临近样本及其对应的参考样本导出参数a和b。更具体地,如图13所示,使用参考图片中CU的子采样(2:1子采样)临近样本和对应的样本(由当前CU或子CU的运动信息识别)。推导出IC参数并将其分别应用于每个预测方向。
[0136] 当使用Merge模式对CU进行编码时,LIC标志以类似于Merge模式下运动信息复制的方式从临近块复制;否则,将为CU信令通知LIC标志,以指示LIC是否适用。
[0137] 当为图片启用LIC时,需要附加的CU级RD检查来确定是否为CU应用LIC。当对CU启用LIC时,对于整数像素运动搜索和分数像素运动搜索,分别使用绝对差的平均去除和(MR-SAD)和绝对Hadamard变换差的平均去除和(MR-SATD),而不使用SAD和SATD。
[0138] 为了降低编码复杂度,在JEM中应用以下编码方案:
[0139] --当当前图片与其参考图片之间没有明显的照度变化时,对整个图片禁用LIC。为了识别这种情况,在编码器处计算当前图片的直方图和当前图片的每个参考图片的直方图。如果当前图片和当前图片的每个参考图片之间的直方图差小于给定阈值,则对当前图片禁用LIC;否则,对当前图片启用LIC。
[0140] 2.2.6仿射运动补偿预测
[0141] 在HEVC中,运动补偿预测(MCP)仅应用平移运动模型。然而,在真实世界中可能存在多种运动,例如放大/缩小、旋转、透视运动和其他不规则运动。在JEM中应用了简化的仿射变换运动补偿预测。如图14所示,用两个控制点运动矢量描述块的仿射运动场。
[0142] 块的运动矢量场(MVF)由以下等式描述:
[0143]
[0144] 其中,(v0x,v0y)是左上角控制点的运动矢量,并且(v1x,v1y)是右上角控制点的运动矢量。
[0145] 为了进一步简化运动补偿预测,应用基于子块的仿射变换预测。如等式2推导子块尺寸M×N,其中MvPre是运动矢量分数精度(例如,JEM中的1/16)。(v2x,v2y)是左下控制点的运动矢量,其根据等式1计算。
[0146]
[0147] 用等式2推导出之后,如果需要,M和N应当被向下调节使其分别作为w和h的除数。
[0148] 为了推导出每个M×N子块的运动矢量,如图15所示,可以根据等式1计算每个子块的中心样本的运动矢量,并且舍入到1/16分数精度。然后应用之前所述的运动补偿插值滤波器,利用推导出的运动矢量生成各子块的预测。
[0149] 在MCP之后,对每个子块的高精度运动矢量进行舍入,并将其保存为与正常运动矢量相同的精度。
[0150] 在JEM中,有两个仿射运动模式:AF_INTER模式和AF_Merge模式。对于宽度和高度都大于8的CU,可以应用AF_INTER模式。在比特流中,CU级别的仿射标志被信令通知,以指示是否使用AF_INTER模式。在这种模式中,使用临近的块构建具有运动矢量对{(v0,v1)|v0={vA,vB,vc},v1={vD,vE}}的候选列表。如图16所示,从块A、B或C的运动矢量中选择v0。根据参考列表,以及临近块参考的POC、当前CU参考的POC和当前CU的POC之间的关系对来自临近块的运动矢量进行缩放。从临近的块D和E中选择v1的方法类似。当候选列表的数目小于2时,该列表由复制每个AMVP候选组成的运动矢量对来填充。当候选列表大于2时,可以首先根据临近运动矢量的一致性对候选进行排序(一对候选中两个运动矢量的相似性),并且只保留前两个候选。使用RD成本检查来确定选择哪个运动矢量对候选作为当前CU的控制点运动矢量预测(CPMVP)。并且在比特流中信令通知指示CPMVP在候选列表中的位置的索引。在确定了当前仿射CU的CPMVP后,应用仿射运动估计,并且找到控制点运动矢量(CPMV)。然后,在比特流中信令通知CPMV和CPMVP的差。
[0151] 当在AF_MERGE模式中应用CU时,它从有效的临近重构块中获得以仿射模式编码的第一个块。并且候选块的选择顺序是从左、上、右上、左下到左上,如图17A所示。如果临近的左下块A以仿射模式被编码,如图17B所示,则导出包含块A的CU的左上角、右上角和左下角的运动矢量v2,v3和v4。并且根据v2,v3和v4计算当前CU左上角的运动矢量v0。其次,计算当前CU右上方的运动矢量v1。
[0152] 在导出当前CU的CPMV v0和v1之后,根据简化的仿射运动模型等式1,生成当前CU的MVF。为了识别当前CU是否以AF_MERGE模式编码,当至少一个临近块以仿射模式编码时,在比特流中信令通知仿射标志。
[0153] 2.2.7模式匹配运动矢量推导
[0154] 模式匹配运动矢量推导(PMMVD)模式是基于帧速率上转换(FRUC)技术的特殊Merge模式。在这种模式下,块的运动信息不会被发信令通知,而是在解码器侧推导。
[0155] 对于CU,当其Merge标志为真时,对FRUC标志发信令通知。当FRUC标志为假时,对Merge索引发信令通知并且使用常规Merge模式。当FRUC标志为真时,对另一个FRUC模式标志发信令通知来指示将使用哪种模式(双边匹配或模板匹配)来推导该块的运动信息。
[0156] 在编码器侧,基于对正常Merge候选所做的RD成本选择决定是否对CU使用FRUC Merge模式。即通过使用RD成本选择来检查CU的两个匹配模式(双边匹配和模板匹配)。导致最低成本的模式进一步与其它CU模式相比较。如果FRUC匹配模式是最有效的模式,那么对于CU,FRUC标志设置为真,并且使用相关的匹配模式。
[0157] FRUC Merge模式中的运动推导过程有两个步骤:首先执行CU级运动搜索,然后执行子CU级运动细化。在CU级,基于双边匹配或模板匹配,推导整个CU的初始运动矢量。首先,生成一个MV候选列表,并且选择导致最低匹配成本的候选作为进一步细化CU级的起点。然后在起始点附近执行基于双边匹配或模板匹配的局部搜索,并且将导致最小匹配成本的MV作为整个CU的MV。接着,以推导的CU运动矢量为起点,进一步在子CU级细化运动信息。
[0158] 例如,对于W×H CU运动信息推导执行以下推导过程。在第一阶段,推导整个W×H CU的MV。在第二阶段,该CU进一步被分成M×M子CU。M的值按照等式(3)计算,D是预先定义的划分深度,在JEM中默认设置为3。然后推导每个子CU的MV值。
[0159]
[0160] 如图18所示,通过沿当前CU的运动轨迹在两个不同的参考图片中找到两个块之间最接近的匹配,使用双边匹配来推导当前CU的运动信息。在连续运动轨迹假设下,指向两个参考块的运动矢量MV0和MV1应与当前图片和两个参考图片之间的时域距离,例如,TD0和TD1成正比。作为特殊情况,当当前图片在时间上位于两个参考图片之间并且当前图片到两个参考图片的时域距离相同时,双边匹配成为基于镜像的双向MV。
[0161] 如图19所示,通过在当前图片中的模板(当前CU的顶部和/或左侧临近块)和参考图片中的块(与模板尺寸相同)之间找到最接近的匹配,使用模板匹配来推导当前CU的运动信息。除了上述的FRUC Merge模式外,模板匹配也应用于AMVP模式。在JEM中,正如在HEVC中一样,AMVP有两个候选。利用模板匹配方法,推导了新的候选。如果由模板匹配新推导的候选与第一个现有AMVP候选不同,则将其插入AMVP候选列表的最开始处,并且然后将列表尺寸设置为2(即移除第二个现有AMVP候选)。当应用于AMVP模式时,仅应用CU级搜索。
[0162] 2.2.7.1 CU级MV候选集
[0163] CU级的MV候选集包括:
[0164] (i)原始AMVP候选,如果当前CU处于AMVP模式,
[0165] (ii)所有Merge候选,
[0166] (iii)在前述中介绍的插值MV场中的几个MV。
[0167] (iv)顶部和左侧临近运动矢量
[0168] 当使用双边匹配时,Merge候选的每个有效MV用作输入,以生成假设为双边匹配的MV对。例如,Merge候选在参考列表A处的一个有效MV为(MVa,refa)。然后在另一个参考列表B中找到其配对的双边MV的参考图片refb,以便refa和refb在时域上位于当前图片的不同侧。如果参考列表B中的refb不可用,则将refb确定为与refa不同的参考,并且其到当前图片的时域距离是列表B中的最小距离。确定refb后,通过基于当前图片和refa、refb之间的时域距离缩放MVa而推导MVb。
[0169] 还将来自插值MV场中的四个MV添加到CU级候选列表中。更具体地,添加当前CU的位置(0,0),(W/2,0),(0,H/2)和(W/2,H/2)处插值的MV。
[0170] 当在AMVP模式下应用FRUC时,原始的AMVP候选也添加到CU级的MV候选集。
[0171] 在CU级,可以将AMVP CU的最多15个MV和Merge CU的最多13个MV添加到候选列表中。
[0172] 2.2.7.2子CU级MV候选集
[0173] 在子CU级的MV候选集包括:
[0174] (i)从CU级搜索确定的MV,
[0175] (ii)顶部、左侧、左上方和右上方临近的MV,
[0176] (iii)来自参考图片的并置MV的缩放版本,
[0177] (iv)最多4个ATMVP候选,
[0178] (v)最多4个STMVP候选。
[0179] 来自参考图片的缩放MV推导如下。两个列表中的所有参考图片都被遍历。参考图片中子CU的并置位置处的MV被缩放为起始CU级MV的参考。
[0180] ATMVP和STMVP候选被限制为前四个。
[0181] 在子CU级,最多17个MV被添加到候选列表中。
[0182] 2.2.7.3插值MV场的生成
[0183] 在对帧进行编码之前,基于单向ME生成整个图片的插值运动场。然后,该运动场可以随后用作CU级或子CU级的MV候选。
[0184] 首先,两个参考列表中每个参考图片的运动场在4×4的块级别上被遍历。对于每个4×4块,如果与块相关联的运动通过当前图片中的4×4块(如图20所示),并且该块没有被分配任何插值运动,则根据时域距离TD0和TD1将参考块的运动缩放到当前图片(与HEVC中TMVP的MV缩放相同),并且在当前帧中将该缩放运动指定给该块。如果没有缩放的MV指定给4×4块,则在插值运动场中将块的运动标记为不可用。
[0185] 2.2.7.4插值和匹配成本
[0186] 当运动矢量指向分数样本位置时,需要运动补偿插值。为了降低复杂度,对双边匹配和模板匹配都使用双线性插值而不是常规的8抽头HEVC插值。
[0187] 匹配成本的计算在不同的步骤处有点不同。当从CU级的候选集中选择候选时,匹配成本是双边匹配或模板匹配的绝对和差(SAD)。在确定起始MV后,双边匹配在子CU级搜索的匹配成本C计算如下:
[0188]
[0189] 这里,w是权重系数,被经验地设置为4。MV和MVs分别指示当前MV和起始MV。仍然将SAD用作模板匹配在子CU级搜索的匹配成本。
[0190] 在FRUC模式下,MV通过仅使用亮度样本推导。推导的运动将用于亮度和色度的MC帧间预测。确定MV后,对亮度使用8抽头(8-taps)插值滤波器并且对色度使用4抽头(4-taps)插值滤波器执行最终MC。
[0191] 2.2.7.5 MV细化
[0192] MV细化是基于模式的MV搜索,以双边匹配成本或模板匹配成本为标准。在JEM中,支持两种搜索模式—无限制中心偏置菱形搜索(UCBDS)和自适应交叉搜索,分别在CU级别和子CU级别进行MV细化。对于CU级和子CU级的MV细化,都在四分之一亮度样本精度下直接搜索MV,接着是八分之一亮度样本MV细化。将CU和子CU步骤的MV细化的搜索范围设置为8个亮度样本。
[0193] 2.2.7.6模板匹配FRUC Merge模式中预测方向的选择
[0194] 在双边匹配Merge模式下,总是应用双向预测,因为CU的运动信息是基于在两个不同的参考图片中沿当前CU运动轨迹上两个块之间的最近匹配导出的。模板匹配Merge模式没有这种限定。在模板匹配Merge模式下,编码器可以为CU从列表0的单向预测、列表1的单向预测或者双向预测中做出选择。该选择基于如下的模板匹配成本:
[0195] 如果costBi<=factor*min(cost0,cost1)
[0196] 则使用双向预测;
[0197] 否则,如果cost0<=cost1
[0198] 则使用列表0中的单向预测;
[0199] 否则,
[0200] 使用列表1中的单向预测;
[0201] 其中cost0是列表0模板匹配的SAD,cost1是列表1模板匹配的SAD,并且costBi是双向预测模板匹配的SAD。factor的值等于1.25,意味着选择处理朝双向预测偏移。
[0202] 帧间预测方向选择可以仅应用于CU级模板匹配处理。
[0203] 2.2.8广义的双向预测
[0204] 在传统的双向预测中,使用相等的权重0.5对来自L0和L1的预测器进行平均以生成最终预测器。预测器生成公式如式(4)所示:
[0205] PTraditionalBiPred=(PL0+PL1+RoundingOffset)>>shiftNum,   (4)
[0206] 在式(4)中,PTraditionalBiPred是传统双向预测的最终预测器,PL0和PL1分别是来自L0和L1的预测器,并且RoundingOffset和shiftNum被用于对最终预测器进行归一化。
[0207] 提出广义的双向预测(GBI)以允许对来自L0和L1的预测器应用不同的权重。预测器生成如式(5)所示。
[0208] PGBi=((1-w1)*PL0+w1*PL1+RoundingOffsetGBi)>>shiftNumGBi,   (5)
[0209] 在式(5)中,PGBi是GBi的最终预测。(1-w1)和w1分别是应用到L0和L1的预测器的所选择的GBI权重。RoundingOffsetGBi和shiftNumGBi被用于对GBi中的最终预测器进行归一化。
[0210] w1的支持的权重是{-1/4,3/8,1/2,5/8,5/4}。支持一个等权重集和四个不等权重集。对于等权重情况,生成最终预测器的处理与传统双向预测模式中的处理完全相同。对于随机访问(RA)条件下的真实双向预测情况,候选权重集的数量减少为三个。
[0211] 对于高级运动矢量预测(AMVP)模式,如果用双向预测对该CU进行编码,则GBI中的权重选择会在CU级显式地信令通知。对于Merge模式,权重选择是从Merge候选继承的。在这个提议中,GBI支持DMVR以生成模板的加权平均以及BMS-1.0的最终预测器。
[0212] 2.2.9多重假设帧间预测
[0213] 在多重假设帧间预测模式中,除了传统的单向/双向预测信号以外,信令通知一个或多个附加预测信号。通过按样本加权叠加获得所生成的整体预测信号。利用单向/双向预测信号puni/bi和第一附加帧间预测信号/假设h3,如下所示得出所生成的预测信号p3:
[0214] p3=(1-α)puni/bi+αh3
[0215] 对预测单元语法结构的更改如下所示:
[0216]
[0217] 根据以下映射,由语法元素add_hyp_weight_idx规定加权因子α:
[0218]add_hyp_weight_idx α
0 1/4
1 -1/8
[0219] 应当注意的是,对于附加预测信号,取消了预测列表0/列表1的概念,而使用了一个组合列表。通过以增加的参考索引交替地插入来自列表0和列表1的参考帧来生成此组合列表,并省略已经被插入的参考帧从而避免重复输入。
[0220] 与以上类似,可以使用一个以上的附加预测信号。所生成的整体预测信号利用每个附加预测信号迭代地累加。
[0221] pn+1=(1-αn+1)pn+αn+1hn+1
[0222] 获得所生成的整体预测信号作为最后一个pn(即,具有最大索引n的pn)。
[0223] 应当注意的是,对于使用Merge模式(而不是跳跃模式)的帧间预测块,也可以规定附加帧间预测信号。还应当注意的是,在Merge的情况下,不仅单向/双向预测参数,而且所选的Merge候选的附加预测参数也可以用于当前块。
[0224] 2.2.10 AMVP模式的单向预测的多重假设预测
[0225] 当多重假设预测被应用于改进AMVP模式的单向预测时,一个标志被信令通知以对等于1或2的inter_dir启用或禁用多重假设预测,其中1、2和3分别表示列表0、列表1和双向预测。此外,当标志为真(true)时,还会信令通知另一个Merge索引。以这种方式,多重假设预测将单向预测转化为双向预测,其中在AMVP模式下使用原始语法元素获得一个运动,而使用Merge方案获得另一个运动。最终的预测使用1:1的权重来组合这两个预测,就像在双向预测中那样。首先从排除子CU候选(例如,仿射、可替代时域运动矢量预测(ATMVP))的Merge模式导出Merge候选列表。接下来,它被分成两个单独的列表,一个用于列表0(L0)包含来自候选的所有L0运动,并且另一个用于列表1(L1)包含所有L1运动。在移除冗余和填补空缺后,分别为L0和L1生成两个Merge列表。应用多重假设预测来改进AMVP模式有两个约束条件。首先,对那些亮度编码块(CB)区域大于或等于64的CU启用。其次,仅当在低延迟B图片中时应用于L1。
[0226] 2.2.11跳跃/Merge模式的多重假设预测
[0227] 当多重假设预测被应用于跳跃或Merge模式时,显式地信令通知是否启用多重假设预测。除了原始的Merge索引预测之外,还选择附加的Merge索引预测。因此,多重假设预测的每个候选隐含一对Merge候选,其中一个用于第一Merge索引预测,另一个用于第二Merge索引预测。然而,在每一对中,第二Merge索引预测的Merge候选被隐式地导出为后续Merge候选(即,已经信令通知的Merge索引加一),而不信令通知任何附加的Merge索引。通过排除这些包含相似Merge候选的对而移除冗并填补空缺之后,形成多重假设预测的候选列表。然后,从一对两个Merge候选中获取运动以生成最终预测,其中将5:3的权重分别应用于第一个和第二Merge索引预测。此外,启用了多重假设预测的Merge或跳跃CU除了保存现有假设的运动信息外,还可以保存附加假设的运动信息,以供后续临近CU参考。应当注意的是,子CU候选(例如,仿射、ATMVP)被排除在候选列表之外,并且对于低延迟B图片,多重假设预测不应用于跳跃模式。此外,当多重假设预测应用于Merge或跳跃模式时,对于CU宽度或CU高度小于16的CU,或CU宽度和CU高度均等于16的CU,在多重假设的运动补偿中使用双向线性插值滤波器。因此,表1中计算了启用多重假设预测的每个Merge或跳跃CU的最差情况带宽(需要对每个样本访问样本),并且对于多重假设被禁用的每个4x4的CU,每个数字小于最差情况带宽的一半。
[0228] 2.2.12最终运动矢量表达
[0229] 提出了最终运动矢量表达(UMVE)。UMVE与提出的运动矢量表达方法被用于跳跃或Merge模式。
[0230] UMVE像在VVC中使用一样重用Merge候选。在Merge候选中,可以选择候选,并通过所提出的运动矢量表达方法进一步扩展。
[0231] UMVE提供了具有简化的信令的新的运动矢量表达。表达方法包括起点、运动幅度和运动方向。
[0232] 图21示出了UMVE搜索处理的示例。
[0233] 图22示出了UMVE搜索点的示例。
[0234] 这个提出的技术按原样使用Merge候选列表。但是只有默认Merge类型(MRG_TYPE_DEFAULT_N)的候选才被考虑用于UMVE的扩展。
[0235] 基础候选索引定义了起点。基础候选索引指示列表中候选的最佳候选,如下所示。
[0236] 表1基础候选IDX
[0237]
[0238] 如果基础候选的数目等于1,则不信令通知基础候选IDX。
[0239] 距离索引是运动幅度信息。距离索引指示距离起点信息的预定义的距离。
[0240] 预定义的距离如下所示:
[0241] 表2距离IDX
[0242]
[0243] 方向索引表示MVD相对于起点的方向。方向索引可以表示如下所示的四个方向。
[0244] 表3方向IDX
[0245]方向IDX 00 01 10 11
x-轴 + – N/A N/A
y-轴 N/A N/A + –
[0246] 在发送跳跃标志和Merge标志之后立即信令通知UMVE标志。如果跳跃和Merge标志为真,则解析UMVE标志。如果UMVE标志等于1,则解析UMVE语法。但是,如果不是1,则解析仿射标志。如果仿射标志等于1,则是仿射模式,但是,如果不是1,则解析VTM的跳跃/Merge模式的跳跃/Merge索引。
[0247] 由于UMVE候选而导致的附加行缓冲区是不需要的。因为软件的跳跃/Merge候选被直接用作基础候选。通过使用输入UMVE索引,在运动补偿前判定MV的补充。不需要为此保留长的行缓冲区。
[0248] 2.2.13具有预测偏移的仿射Merge模式
[0249] UMVE被扩展到仿射Merge模式,之后我们将其称为UMVE仿射模式。所提出的方法选择第一个可用的仿射Merge候选作为基础预测器。然后,它将运动矢量偏移应用于来自基础预测器的每个控制点的运动矢量值。如果没有可用的仿射Merge候选,则不会使用所提出的方法。
[0250] 在不改变的情况下使用所选择的基础预测器的帧间预测方向、以及每个方向的参考索引。
[0251] 在当前的实现中,假设当前块的仿射模型为4参数模型,只需导出2个控制点。因此,只有基础预测器的前2个控制点将被用作控制点预测器。
[0252] 对于每个控制点,zero_MVD标志被用于指示当前块的控制点是否与相应的控制点预测器具有相同的MV值。如果zero_MVD标志为真,则控制点不需要其他信令。否则,为控制点信令通知距离索引和偏移方向索引。
[0253] 使用尺寸为5的距离偏移表,如下表所示。信令通知距离索引以指示要使用的距离偏移。距离索引和距离偏移值的映射如图23所示。
[0254] 表1距离偏移表
[0255]
[0256]
[0257] 方向索引可以表示如下所示的四个方向,其中只有x或y方向可具有MV差,但是不是在两个方向上。
[0258] 偏移方向IDX 00 01 10 11X方向因子 +1 –1 0 0
Y方向因子 0 0 +1 –1
[0259] 如果帧间预测是单向的,则将信令通知的距离偏移应用到每个控制点预测器的偏移方向上。结果将会是每个控制点的MV值。
[0260] 例如,当基础预测器是单向时,控制点的运动矢量值是MVP(vpx,vpy)。当信令通知了距离偏移和方向索引时,当前块的对应控制点的运动矢量将计算如下:
[0261] MV(vx,vy)=MVP(vpx,vpy)+MV(x-dir-factor*distance-offset,y-dir-factor*distance-offset);
[0262] 如果帧间预测是双向的,则将信令通知的距离偏移应用到控制点预测器的L0运动矢量的信令通知的偏移方向上,并且将相反方向的相同的距离偏移应用到控制点预测器的L1运动矢量上。结果将会是每个控制点在每个帧间预测方向上的MV值。
[0263] 例如,当基础预测器是单向时,L0上的控制点的运动矢量值是MVPL0(v0px,v0py),并且L1上的控制点的运动矢量是MVPL1(v1px,v1py)。当信令通知了距离偏移和方向索引时,当前块的对应控制点的运动矢量将计算如下:
[0264] MVL0(v0x,v0y)=MVPL0(v0px,v0py)+MV(x-dir-factor*distance-offset,y-dir-factor*distance-offset);
[0265] MVL1(v0x,v0y)=MVPL1(v1px,v1py)+MV(-x-dir-factor*distance-offset,-y-dir-factor*distance-offset)。
[0266] 2.2.14双向光流
[0267] 在BIO中,首先执行运动补偿以生成当前块(在每个预测方向上)的第一预测。第一预测用于导出块内每个子块/像素的空域梯度,时域梯度和光流,然后将其用于生成第二预测,即子块/像素的最终预测。细节描述如下。
[0268] 双向光流(BIO)是在块方式运动补偿之上执行的用于双向预测的样本方式运动细化。样本级的运动细化不使用信令。
[0269] 图24示出光流轨迹的示例。
[0270] 设I(k)为块运动补偿后来自参考k(k=0,1)的亮度值,并且 分别为I(k)梯度的水平分量和垂直分量。假设光流是有效的,则运动矢量场(vx,vy)由等式给出:
[0271]
[0272] 将此光流等式与每个样本的运动轨迹的埃尔米特插值相结合,得到唯一的三阶多项式,该多项式在末端同时匹配函数值I(k)和其导数 该多项式在t=0时的值是BIO预测:
[0273]
[0274] 这里,τ0和τ1表示到参考帧的距离,如图24所示。基于Ref0和Ref1的POC计算距离τ0和τ1:τ0=POC(current)-POC(Ref0),τ1=POC(Ref1)-POC(current)。如果两个预测都来自同一个时域方向(都来自过去或都来自未来),则符号是不同的(例如,τ0·τ1<0)。在这种情况下,只有当预测不是来自同一时刻时(即,τ0≠τ1),才应用BIO。两个参考区域都具有非零运动(MVx0,MVy0,MVx1,MVy1≠0),并且块运动矢量与时域距离成比例(MVx0/MVx1=MVy0/MVy1=-τ0/τ1)。
[0275] 通过最小化A点和B点(图24中运动轨迹与参考帧平面相交)之间的值的差Δ来确定运动矢量场(vx,vy)。对Δ,模型仅使用局部泰勒展开的第一个线性项:
[0276]
[0277] 等式7中的所有值取决于样本位置(i′,j′),目前为止从标记中将其忽略。假设在局部周围区域的运动是一致的,可以在以当前预测点(i,j)为中心的(2M+1)x(2M+1)方形窗口Ω内最小化Δ,其中M等于2:
[0278]
[0279] 对于这个优化问题,JEM使用简化方法,首先在垂直方向上最小化,然后在水平方向最小化。这导致:
[0280]
[0281]
[0282] 其中,
[0283]
[0284] 为了避免除以零除或很小的值,在式12和式13中引入正则化参数r和m。
[0285] r=500·4d-8                   (12)
[0286] m=700·4d-8                 (13)
[0287] 这里,d是视频样本的位深度。
[0288] 为了使BIO的内存访问与常规双向预测运动补偿相同,仅计算当前块内的位置的所有预测和梯度值I(k), 在式11中,以预测块边界上当前预测点为中心的(2M+1)x(2M+1)的方形窗口Ω需要访问块外的位置(如图25A所示)。在JEM中,块外的值I(k), 设置为等于块内最近的可用值。例如,这可以实现为填充,如图
25B所示。
[0289] 图25A至25B示出具有/不具有块扩展的BIO:a)访问在块外的位置;b)使用填充来避免附加的内存访问和计算。
[0290] 使用BIO,可以对每个样本的运动场进行细化。为了降低计算复杂度,在JEM中采用了基于块设计的BIO。基于4x4块计算运动细化。在基于块的BIO中,对4x4块中所有样本的等式11中的sn值进行聚合,然后将sn的聚合值用于4x4块的推导的BIO运动矢量偏移。更具体地说,下面的等式被用于基于块的BIO推导:
[0291]
[0292] 其中,bk表示属于预测块的第k个4x4块的样本组。等式9-11中的sn替换为((sn,bk)>>4)以推导相关联的运动矢量偏移。
[0293] 在某些情况下,由于噪声或不规则运动,BIO的MV团(regiment)可能不可靠。因此,在BIO中,MV团的幅度被钳位到阈值thBIO。该阈值是基于当前图片的参考图片是否全部来自一个方向确定的。如果当前图片的所有参考图片都来自一个方向,则该阈值的值被设置为12×214-d,否则其被设置为12×213-d。
[0294] 使用与HEVC运动补偿处理一致的操作(2D可分离FIR)通过运动补偿插值同时计算BIO的梯度。该2D可分离FIR的输入是与运动补偿处理相同的参考帧样本,以及根据块运动矢量的分数部分的分数位置(fracX,fracY)。如果是水平梯度 首先使用BIOfilterS对信号进行垂直插值,该BIOfilterS对应于具有去缩放位移d-8的分数位置fracY。然后在水平方向上应用梯度滤波器BIOfilterG,该BIOfilterG对应于具有去缩放位移18-d的分数位置fracX。如果是垂直梯度 首先使用BIOfilterG垂直地应用梯度滤波器,该BIOfilterG对应于具有去缩放位移d-8的分数位置fracY。然后在水平方向上使用
BIOfilterS执行信号移位,该BIOfilterS对应于具有去缩放位移18-d的分数位置fracX。用于梯度计算BIOfilterG和信号移位BIOfilterF的插值滤波器的长度可以更短(6-tap),以保持合理的复杂度。表2示出了用在BIO中块运动矢量的不同分数位置的梯度计算的示滤波器。表3示出了用在BIO中预测信号生成的插值滤波器。
[0295] 表2 BIO中用于梯度计算的滤波器
[0296] 分数像素位置 梯度的插值滤波器(BIOfilterG)0 {8,-39,-3,46,-17,5}
1/16 {8,-32,-13,50,-18,5}
1/8 {7,-27,-20,54,-19,5}
3/16 {6,-21,-29,57,-18,5}
1/4 {4,-17,-36,60,-15,4}
5/16 {3,-9,-44,61,-15,4}
3/8 {1,-4,-48,61,-13,3}
7/16 {0,1,-54,60,-9,2}
1/2 {-1,4,-57,57,-4,1}
[0297] 表3 BIO中用于预测信号生成的插值滤波器
[0298] 分数像素位置 用于预测信号的插值滤波器(BIOfilterS)0 {0,0,64,0,0,0}
1/16 {1,-3,64,4,-2,0}
1/8 {1,-6,62,9,-3,1}
3/16 {2,-8,60,14,-5,1}
1/4 {2,-9,57,19,-7,2}
5/16 {3,-10,53,24,-8,2}
3/8 {3,-11,50,29,-9,2}
7/16 {3,-11,44,35,-10,3}
1/2 {3,-10,35,44,-11,3}
[0299] 在JEM中,当两个预测来自不同的参考图片时,BIO应用于所有的双向预测块。当为CU启用LIC时,禁用BIO。
[0300] 在JEM中,在正常MC处理之后将OBMC应用于块。为了降低计算复杂度,在OBMC处理期间不应用BIO。这意味着在OBMC处理期间,当使用自己的MV时,才将BIO应用于块的MC处理,而当使用临近块的MV时,不将BIO应用于块的MC处理。
[0301] 提出了在计算BIO中的时间梯度之前,可以首先修改参考块(或预测块),并且基于修改后的参考块来计算时间梯度。在一示例中,对于所有参考块均值被去除。在一示例中,均值被定义为参考块中所选样本的平均值。在一个示例中,参考块X或参考块X的子块中的所有像素用于计算MeanX。在一个示例中,仅参考块X或参考块的子块中的部分像素被用于计算MeanX。例如,仅使用每隔第二行/列中的像素。
[0302] 2.2.15解码器侧运动矢量细化
[0303] 在双向预测操作中,对于一个块区域的预测,将两个分别由列表0的运动矢量(MV)和列表1的MV形成的预测块组合形成单个预测信号。在解码器侧运动矢量细化(DMVR)方法中,通过双边模板匹配处理进一步细化双向预测的两个运动矢量。解码器中应用的双边模板匹配用于在双边模板和参考图片中的重构样本之间执行基于失真的搜索,以便在不传输附加运动信息的情况下获得细化的MV。
[0304] 在DMVR中,双边模板被生成为两个预测块的加权组合(即平均),其中两个预测块分别来自初始的列表0的MV0和列表1的MV1,如图26所示。模板匹配操作包括计算生成的模板与参考图片中的样本区域(在初始预测块周围)之间的成本度量。对于两个参考图片中的每一个,产生最小模板成本的MV被视为该列表的更新MV,以替换原始MV。在JEM中,为每个列表搜索九个MV候选。九个MV候选包括原始MV和8个周围MV,这八个周围MV在水平或垂直方向上或两者与原始MV具有一个亮度样本的偏移。最后,使用图26所示的两个新的MV(即MV0′和MV1′)生成最终的双向预测结果。绝对差之和(SAD)被用作成本度量。应当注意的是,在计算由一个周围MV生成的预测块的成本时,实际上使用取整的MV(至整数像素)而不是实际的MV来获取预测块。
[0305] 在不传输附加语法元素的情况下,将DMVR应用于双向预测的Merge模式,其中一个MV来自过去的参考图片,并且另一个MV来自未来的参考图片。在JEM中,当为CU启用LIC、仿射运动、FRUC或子CU Merge候选时,不应用DMVR。
[0306] 图26示出基于双边模板匹配的DMVR的示例。
[0307] 2.3相关方法
[0308] 对于视频编码中的运动细化和编码,提出了MV更新方法和两步帧间预测方法。将BIO中参考块0和参考块1之间的导出的MV缩放并添加到列表0和列表1的原始运动矢量中。同时,使用更新的MV来进行运动补偿,并生成第二帧间预测作为最终预测。
[0309] 同时,通过移除参考块0和参考块1之间的平均差来修改时域梯度。
[0310] 对于视频编码中基于子块的预测的方法,对于不同的多个子块,仅为色度分量生成一组MV。
[0311] 3.与其它技术的关系
[0312] 提出了基于子块的预测方法。首先,提出根据颜色分量和颜色格式(例如,4:2:0或4:2:2)以不同的方式将当前块划分为子块。其次,提出一个颜色分量的子块的MV可以从另一个颜色分量的一个或多个子块的已经被导出的MV中导出。第三,提出统一Merge仿射模式和非Merge仿射模式的约束。
[0313] 例如,如果8x8的CU被划分成四个4x4的子块,并且每个子块都有自己的运动矢量,那么,计算四个运动矢量的平均,并在YCbCr 4:2:0的情况下将其(按比例缩小2)用作色度分量的运动矢量。以这种方式,对4x4的块而不是四个2x2的块执行Cb/Cr分量的运动补偿,并且可以节省存储器带宽。
[0314] 提出了用于子块运动补偿的交织预测。利用交织预测,将块划分为具有多于一个划分模式的子块。划分模式定义为将块划分为子块的方式,包括子块的尺寸和子块的位置。对于每个划分模式,可以通过基于该划分模式导出每个子块的运动信息来生成对应的预测块。因此,即使对于一个预测方向,也可以通过多个划分模式生成多个预测块。可选地,对于每个预测方向,只可以应用一种划分模式。
[0315] 假设存在X个划分模式,并且使用X个划分模式通过基于子块的预测生成当前块的X个预测块(表示为P0,P1,…,Px-1)。当前块的最终预测(表示为P)可以生成为:
[0316]
[0317] 其中(x,y)是块中像素的坐标,并且wi(x,y)是Pi的加权值。在不失一般性的情况下,假设 其中N是非负值。图27示出了具有两个划分模式的交织预测的示例。
[0318] 4.使用本技术的实施例所解决的问题的示例
[0319] 提出了一种两步帧间预测方法,然而,这种方法可以被多次执行以获得更精确的运动信息,从而可以期望更高的编码增益。
[0320] 在DMVR中,没有两步帧间预测方法。
[0321] 5.以逐项列举格式示出的示例实施例
[0322] 为了解决上述问题,提出了对那些需要执行解码器侧运动细化处理的编码工具(例如,DMVR)和/或那些依赖于与用于运动补偿的最终运动信息不同的一些中间运动信息的编码工具(例如,BIO)不止一次进行细化运动信息(例如,运动矢量)。
[0323] 还提出,即使对于在解码器侧不应用运动信息细化的编码工具,编码块内的块/子块的运动信息也可以细化一次或多次,并且细化的运动信息可以用于之后待编码的块的运动矢量预测和/或滤波处理。
[0324] 在下文中,DMVD用于表示DMVR或BIO或其它解码器侧运动矢量细化方法或像素细化方法。
[0325] SATD表示为绝对转换差之和,MRSATD表示为绝对转换差的平均去除和,SSE表示为平方差之和,MRSSE表示为平方差的平均去除和。
[0326] 下面的详细条目应视为解释一般概念的示例。这些发明不应狭隘地加以解释。此外,这些条目描述了可以以任何方式组合的编码/解码技术。
[0327] 1.提出了运动矢量的细化处理可以被执行多次,例如,执行N次,其中N是非负整数。假设信令通知的MV为(MVLX0_x,MVLX0_y),并且第i个细化的MV为(MVLXi_x,MVLXi_y),其中LX=L0或L1且i=1…,N。
[0328] a)在一个示例中,可以使用第(i-1)个细化的运动矢量(即,在第(i-1)次迭代之后的运动矢量,并且当(i-1)等于0时,使用信令通知的运动矢量)来生成PU/CU/块/子块的第i个运动补偿参考块。可选地,第i个运动补偿参考块可进一步用于导出第i个时域梯度、空域梯度和细化的运动矢量。示例如图28所示。
[0329] b)在不同的运动矢量细化步骤中,可以使用与未使用所提出的方法编码的帧间编码块所使用的插值滤波器不同的插值滤波器来进行运动补偿,以降低存储器带宽。例如,在第1至第N-1步中使用短抽头滤波器。
[0330] c)在用于生成参考块之前,可以首先修改来自第i次迭代的中间细化MV。在一个示例中,分数MV被取整为整数MV,并且然后在一些步骤中(例如,第1至第N-1步中)用于生成参考块。
[0331] d)在一些或所有迭代中,一个块可以首先被划分成若干子块,并且以相同的方式将每个子块视为尺寸等于子块尺寸的正常编码块。
[0332] i.在一个示例中,首先将块划分成多个子块,并且每个块的运动信息可以被多次细化。
[0333] ii.可选地,首先将块划分为多个子块,并且仅对于部分子块,可以多次细化其运动信息。
[0334] iii.可选地,首先将块划分成多个子块,不同子块的运动信息可以用不同的迭代次数来细化(例如,对于一些子块,不应用细化,并且对于一些子块,运动信息可以被多次细化)。
[0335] iv.可选地,整个块的运动信息被细化N-1次,并且然后,基于第(N-1)次细化的运动信息,该块被划分成多个子块,并且对于每个子块,其运动信息可以进一步被细化。
[0336] e)在不同的步骤中,可以在不同的子块尺寸下导出细化的MV。
[0337] f)在一个示例中,使用第N步中的细化的运动矢量来执行运动补偿,并且然后使用2.2.14中描述的方法来生成CU/子块的最终预测。
[0338] g)在一个示例中,在每个步骤(或一些步骤)中生成块/子块的预测,并对其加权平均以生成块/子块的最终预测。
[0339] h)在一个示例中,可以进一步约束在每个步骤中导出的MV。
[0340] i.例如,对于所有的1<=i<=N,|MVLXi_x-MVLX0_x|<=Tx并且|MVLXi_y-MVLX0_y|<=Ty。
[0341] ii.例如,对于所有1<=i,j<=N,Max{MVLXi_x-MVLXj_x}<=Tx并且Max{MVLXi_y-MVLXj_y}<=Ty。
[0342] iii.阈值Tx和Ty可以相等或不相等。它们可以是预定义的数字,也可以在VPS/SPS/PPS/条带报头/片组报头/片/CTU/CU中从编码器向解码器信令通知。
[0343] i)如果第K步之后的细化MV和第K步中的输入MV相似,则可在第K步之后终止块/子块的运动矢量细化处理。
[0344] i.例如,如果细化的MV的垂直或/和水平分量与输入MV(在任何预测方向上)之间的绝对差不大于T四分之一像素距离,其中T=1/4、1/3、1/2、1、2、3、4……等,则终止运动矢量细化处理。
[0345] ii.例如,如果细化的MV的垂直或/和水平分量与输入MV(在任何预测方向上)之间的绝对差之和不大于T四分之一像素距离,则终止运动矢量细化处理。
[0346] j)迭代次数N可以是自适应的。
[0347] i.例如,N取决于当前块的尺寸。
[0348] 1.例如,块越大,N越大,反之亦然。
[0349] ii.例如,N取决于当前块的编码模式。
[0350] iii.例如,N取决于当前块的MVD(运动矢量差)。
[0351] 1.例如,当|MVD|较大时,N较大。
[0352] iv.例如,N取决于QP。
[0353] 1.例如,当QP较大时,N较大。
[0354] v.可以在VPS/SPS/PPS/图片报头/条带报头/片组报头/片/CTU/CU中从编码器向解码器信令通知N。
[0355] 2.利用项目1中的细化的运动矢量,两步帧间预测处理可扩展到多步帧间预测,其中,N次迭代后的最终细化运动矢量被用于执行最终运动补偿并生成块/子块的最终预测。
[0356] a)可选地,在每个步骤(或一些步骤)中生成块/子块的预测,并且可以用这些预测生成块/子块的最终预测。在一个示例中,它们被加权平均以生成块/子块的最终预测。
[0357] 3.提出了可以对每个M1xN1的子块执行时域梯度修改处理,尽管对每个M2xN2的子块可以执行BIO处理。
[0358] a)在一个示例中,对每个8x8块执行时域梯度修改处理,以及为每个4x4块导出细化的运动矢量。也就是说,M1=N1=8,M2=N2=4。
[0359] b)在一个示例中,对每个4x4块执行时域梯度修改处理,以及为每个8x8块导出细化的运动矢量。
[0360] c)在一个示例中,对每个4x4块执行时域梯度修改处理,以及为每个4x4块导出细化的运动矢量。
[0361] d)在一个示例中,对每个8x8块执行时域梯度修改处理,以及为每个8x8块导出细化的运动矢量。
[0362] e)M1、N1、M2、N2可预先定义,或取决于块尺寸/编码模式,或在VPS/SPS/PPS/图片报头/片组等中信令通知。
[0363] 4.提出仅使用块/子块的部分像素来计算时域/空域梯度,时域/空域梯度可用于导出块/子块的运动矢量。
[0364] a)在一个示例中,计算每N行或/和列的时域和空域梯度。例如,N=2。
[0365] b)在一个示例中,计算CU/子块的左上/右上/左下/右下四分之一的时域和空域梯度。
[0366] c)在一个示例中,计算CU/子块的左上/右上/左下/右下四分之一的每N行或/和列的时域和空域梯度。
[0367] d)针对两步帧间预测或第2项中的多步帧间预测,可以启用这些方法,其中时域/空域梯度仅可用于导出块/子块的细化运动矢量,并且不直接用于细化块/子块的预测。
[0368] 5.提出DMVR中的运动矢量的细化处理可以被多次执行。
[0369] a)在一个示例中,可以将第(i-1)个细化的运动矢量(即,在(i-1)次迭代之后的运动矢量,并且当(i-1)等于0时,使用信令通知的运动矢量)用作第i次运动矢量细化处理中的起始搜索点,i=1,…,N,其中N是非负整数。
[0370] b)在不同的运动矢量细化步骤中,可以使用与未使用所提出的方法编码的帧间编码块所使用的插值滤波器不同的插值滤波器来降低存储器带宽。例如,在第1至第N-1步中使用短抽头滤波器。
[0371] c)在一个示例中,将分数MV取整为整数MV,并且然后用作一些步骤中的起始搜索点,例如在第1至第N-1步中。
[0372] 6.提出了在BIO、DMVR或其它解码器侧运动细化技术中导出的细化的运动矢量仅可用于一些分量的最终运动补偿。
[0373] a)在一个示例中,细化的运动矢量仅用于Cb或/和Cr分量的最终运动补偿。
[0374] b)在一个示例中,细化的运动矢量仅用于亮度分量的最终运动补偿。
[0375] c)在一个示例中,在BIO中,使用细化的运动矢量来执行运动补偿并生成色度分量的最终预测,并且使用2.2.14中描述的方法来生成亮度分量的最终预测。
[0376] i.例如,仅对运动矢量进行一次细化,并且用于色度分量的运动补偿,并且使用2.2.14中描述的方法来生成亮度分量的最终预测。
[0377] d)在一个示例中,在BIO中,使用2.2.14中描述的方法生成亮度和色度分量的最终预测。
[0378] e)在一个示例中,在BIO和DMVR中,使用细化的运动矢量来执行运动补偿并生成亮度和色度分量的最终预测。
[0379] 7.视频编码中基于子块的预测方法可用于色度分量的运动补偿以降低存储器带宽。例如,将四个临近的4x4块分组在一起,并且仅为色度分量导出一组运动矢量(在YCbCr 4:2:0的情况下),并且用于执行4x4色度块的运动补偿。
[0380] 8.提出可以在子块级别执行BIO或/和DMVR和/或其他解码器侧运动细化技术。
[0381] a)可选地,此外,视频编码中的交织预测可用于为不同的划分模式导出不同的运动矢量,并且基于所有划分模式的预测值生成最终预测。
[0382] 9.可以在特定条件下应用所提出的方法,诸如基于块尺寸、编码模式信息、运动信息、条带/图片/片类型等。
[0383] a)在一个示例中,当块尺寸包含小于M×H个样本时(例如,16、32或64个亮度样本),则不允许上述方法。
[0384] b)在一个示例中,当块尺寸包含多于M×H个样本时(例如,16、32或64个亮度样本),则不允许上述方法。
[0385] c)可选地,当块宽度或/和高度的最小尺寸小于或不大于X时,不允许上述方法。在一个示例中,X被设置为8。
[0386] d)可选地,当块宽度>th1或>=th1和/或块高度>th2或>=th2时,不允许上述方法。在一个示例中,X被设置为64。
[0387] i.例如,对于MxM(例如,128x128)的块,禁用上述方法。
[0388] ii.例如,对于NxM/MxN的块,禁用上述方法,例如,其中N>=64,M=128。
[0389] iii.例如,对于NxM/MxN的块,禁用上述方法,例如,其中N>=4,M=128。
[0390] e)可选地,当块宽度
[0391] f)在一个示例中,在BIO中,对于以AMVP模式编码的块禁用上述方法。
[0392] g)在一个示例中,在BIO或DMVR中,对于以跳跃模式编码的块禁用上述方法。
[0393] 10.对于基于子块的方法(例如,仿射、ATMVP、BIO、DMVR等),可以为各种CU/PU尺寸固定子块的最大数目。假设将有KxL个子块,并且一个块尺寸由MxN表示。
[0394] a)在一个示例中,子块的宽度设置为max(THw,M/K)。
[0395] b)在一个示例中,子块的高度设置为max(THh,N/L)。
[0396] c)THw和/或THh可以预先定义的(例如,4),或者可在SPS/PPS/图片/条带/片组/片级/CTU组/CTU行/CTU/CU/PU中信令通知。
[0397] d)THw和/或THh可取决于当前块是双向预测还是单向预测。在一个示例中,对于单向预测,THw和/或THh可以设置为4,对于双向预测,THw和/或THh可以设置为8。
[0398] 11.对于基于子块的方法(例如,仿射、ATMVP、BIO、DMVR等),对于不同的颜色分量,是否以及如何将块划分为子块可以是不同的。
[0399] a)在一个示例中,是否以及如何划分色度块取决于色度块的宽度和高度,而不取决于是否以及如何划分其对应的亮度块。
[0400] b)在一个示例中,是否以及如何划分色度块取决于色度块的宽度和高度,而不取决于是否以及如何划分其对应的亮度块。
[0401] c)在一个示例中,是否以及如何划分色度块取决于是否以及如何划分其对应的亮度块。
[0402] 12.上述方法包括所提出的方法以及BIO、DMVR或其他解码器侧运动细化技术,或者可应用于子块级的基于子块的方法(例如,仿射、ATMVP等)。
[0403] a)在一个示例中,可以为每个子块调用项目1和项目2中BIO和DMVR的迭代运动矢量细化。
[0404] b)在一个示例中,当块的宽度或高度或宽度和高度二者都大于(或等于)阈值L时,可以将该块划分为多个子块。以相同的方式将每个子块视为尺寸等于子块尺寸的普通编码块。
[0405] i.在一个示例中,L是64,64x128/128x64的块被划分为两个64x64的子块,128x128的块被划分为四个64x64的子块。然而,其中N<64的Nx128/128xN的块不被划分成子块。
[0406] ii.在一个示例中,L是64,64x128/128x64的块被划分为两个64x64的子块,128x128的块被划分为四个64x64的子块。同时,其中N<64的Nx128/128xN的块被划分成两个Nx64/64xN的子块。
[0407] iii.在一个示例中,当宽度(或高度)大于L时,垂直(或水平)地划分,并且子块的宽度或/和高度不大于L。
[0408] iv.在一个示例中,对于垂直方向和水平方向L可以不同。例如,如果块的宽度大于LW,则可以垂直地划分块;如果块的高度大于LH,则可以水平地划分块。
[0409] v.在一个示例中,LW可以是VPDU(虚拟管道数据单元)的宽度,LH可以是VPDU的高度。
[0410] c)在一个示例中,当块的尺寸(即,宽度*高度)大于阈值L1时,它可以被划分成多个子块。以相同的方式将每个子块视为尺寸等于子块尺寸的普通编码块。
[0411] i.在一个示例中,块被分成具有不大于L1的相同尺寸的子块。
[0412] ii.在一个示例中,如果块的宽度(或高度)不大于阈值L2,则不将其垂直地(水平地)划分。
[0413] iii.在一个示例中,L1是VPDU的尺寸。
[0414] iv.在一个示例中,L1是1024,并且L2是32。例如,16x128块被划分为两个16x64子块。
[0415] v.在一个示例中,L2=sqrt(L1)。
[0416] vi.在一个示例中,如果块尺寸(宽度和高度分别用W和H表示)大于L1,则子块的宽度(用subW表示)和高度(用subH表示)导出如下:
[0417] 如果W>=L2且H>=L2
[0418] subW=W/L2;
[0419] subH=H/L2;
[0420] 否则,如果W>L2且H
[0421] subH=H;
[0422] subW=W*H/L1;
[0423] 否则,如果WL2
[0424] subW=W;
[0425] subH=W*H/L1;
[0426] d)在一个示例中,可以应用一个块的两级划分,其中可以应用不同的规则来决定如何进行划分。
[0427] i.在一个示例中,可以使用第12.b项中的方法首先将块划分为子块,并且可以使用第12.c项中的方法进一步划分这些子块。
[0428] ii.在一个示例中,可以使用第12.c项中的方法首先将块划分为子块,并且可以使用第12.b项中的方法进一步划分这些子块。
[0429] e)阈值L可以是预定义的,或者可在SPS/PPS/图片/条带/片组/片级中信令通知。
[0430] f)可选地,阈值可取决于特定的编码信息,诸如块尺寸、图片类型、时域层索引等。
[0431] g)在一个示例中,可以在这些子块的边界处执行去块。
[0432] 13.提出了在多重假设帧内和帧间预测中可以禁用DMVD。
[0433] a)可选地,在多重假设帧内和帧间预测中可以启用DMVD。
[0434] 14.建议在MMVD(具有MVD的Merge模式)或UMVE模式中禁用DMVD。
[0435] a)可选地,可以在MMVD(具有MVD的Merge模式)或UMVE模式中启用DMVD。
[0436] 15.提出了在三角预测中可以禁用DMVD。
[0437] a)可选地,可以在三角形预测中启用DMVD。
[0438] 16.在一个示例中,是否以及如何应用运动细化方法(诸如DMVR或/和BIO和/或其他解码器侧运动细化技术)取决于参考图片。
[0439] a)在一个示例中,如果参考图片是当前编码图片,则不应用运动细化方法;
[0440] b)在一个示例中,如果参考图片是当前编码图片,则不应用先前项目中声明的多次时域运动细化方法;
[0441] c)是否以及如何应用运动细化方法(诸如DMVR或/和BIO和/或其他解码器侧运动细化技术)取决于子块相对于覆盖子块的块的位置、和/或相对于编码树单元(CTU)的位置、和/或相对于片/图片的左上角位置的位置。
[0442] 17.提出了BIO或/和DMVR或其他编码工具的早期终止阶段依赖于差计算,可以仅针对一些代表位置计算两个参考块或/和子块之间的差(例如,SAD/SATD/SSE/MRSAD/MRSATD/MRSSE等)。
[0443] a)在一个示例中,对于块或/和子块仅计算偶数行的差。
[0444] b)在一个示例中,对于块或/和子块仅计算一个块/子块的四个角样本的差。
[0445] c)在一个示例中,可以使用视频编码中解码器侧运动矢量推导的改进的方法来选择代表位置。
[0446] d)在一个示例中,可以仅针对一些代表子块计算两个参考块之间的差(例如,SAD/SATD/SSE/MRSAD/MRSATD/MRSSE等)。
[0447] e)在一个示例中,将针对代表位置或子块计算的差(例如,SAD/SATD/SSE/MRSAD/MRSATD/MRSSE等)相加以得到整个块/子块的差。
[0448] 18.在一个示例中,直接计算两个参考块之间的差(而不是计算为参考子块之间的差的和),并用于判定是否对整个块启用或禁用BIO或/和DMVR或其他依赖于差计算的编码工具。
[0449] a)在一个示例中,可以使用项目14中描述的方法来计算两个参考块之间的差。
[0450] 19.实施例
[0451] 本节介绍如何在子块级DMVD中将块划分成子块的实施例。
[0452] 实施例1
[0453] a)步骤1:如果块尺寸为128x128,则将其划分为4个64x64的子块。如果块的尺寸为Nx128或128xN(N<128),则将其划分为2个Nx64或64xN的子块。对于其他块,它们不被划分。
[0454] b)步骤2:对于尺寸不是128x128、或Nx128或128xN(N<128)的块,并且对于步骤1中生成的子块,如果其尺寸(即宽度*高度)大于256,则使用12.c中描述的方法将其进一步划分为尺寸为256的子块,其中L1=256,并且L2=16。
[0455] 实施例2
[0456] a)步骤1:如果块尺寸为128x128,则将其划分为4个64x64的子块。如果块尺寸为Nx128或128xN,则将其划分为2个Nx64或64xN的子块(N<128)。对于其他块,它们不被划分。
[0457] b)步骤2:对于尺寸不是128x128、或Nx128或128xN(N<128)的块,并且对于步骤1中生成的子块,如果其尺寸(即宽度*高度)大于1024,则使用12.c中描述的方法将其进一步划分为尺寸为1024的子块,其中L1=1024,并且L2=32。
[0458] 实施例3
[0459] a)步骤1:如果块尺寸为128x128,则将其划分为4个64x64的子块。如果块尺寸为Nx128或128xN,则将其划分为2个Nx64或64xN的子块(N<128)。对于其他块,它们不被划分。
[0460] 实施例4
[0461] a)步骤1:如果块尺寸为256x256,则将其划分为4个128x128的子块。如果块尺寸为Nx256或256xN,则将其划分为2个Nx128或128xN的子块(N<256)。对于其他块,它们不被划分。
[0462] b)步骤2:对于尺寸不是256x256、或Nx256或256xN(N<256)的块,对于步骤1中生成的子块,如果其尺寸(即宽度*高度)大于1024,则使用12.c中描述的方法进一步将其划分成尺寸为1024的子块,其中L1=1024,并且L2=32。
[0463] 实施例5
[0464] a)步骤1:如果块的宽度或高度大于64,则使用12.b中描述的方法将其划分为子块,其中LW=LH=64。
[0465] b)步骤2:对于宽度和高度不大于64的块,并且对于步骤1中生成的子块,如果其尺寸(即宽度*高度)大于1024,则使用12.c中描述的方法将其进一步划分为尺寸为1024的子块,其中L1=1024,并且L2=32。
[0466] 图29是说明可以用于实现本公开技术的各个部分的计算机系统或其他控制设备2600的结构的示例的示意图。在图29中,计算机系统2600包括通过互连2625连接的一个或多个处理器2605和存储器2610。互连2625可以表示由适当的桥、适配器或控制器连接的任何一条或多条单独的物理总线、点对点连接或两者。因此,互连2625可以包括例如系统总线、外围组件互连(PCI)总线、超传输或工业标准体系结构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)、IIC(I2C)总线或电气与电子工程师协会(IEEE)标准674总线(有时被称为“火线”)。
[0467] 处理器2605可以包括中央处理器(CPU),来控制例如主机的整体操作。在一些实施例中,处理器2605通过执行存储在存储器2610中的软件或固件来实现这一点。处理器2605可以是或可以包括一个或多个可编程通用或专用微处理器数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等,或这些器件的组合。
[0468] 存储器2610可以是或包括计算机系统的主存储器。存储器2610表示任何适当形式的随机存取存储器(RAM)、只读存储器(ROM)、闪存等,或这些设备的组合。在使用中,存储器2610除其他外可包含一组机器指令,当处理器2605执行该指令时,使处理器2605执行操作以实现本公开技术的实施例。
[0469] 通过互连2625连接到处理器2605的还有(可选的)网络适配器2615。网络适配器2615为计算机系统2600提供与远程设备(诸如存储客户机和/或其他存储服务器)通信的能力,并且可以是例如以太网适配器或光纤通道适配器。
[0470] 图30示出了可以用于实施本公开技术的各个部分的设备2700的示例实施例的框图。移动设备2700可以是笔记本电脑、智能手机、平板电脑、摄像机或其他能够处理视频的设备。移动设备2700包括处理器或控制器2701来处理数据,以及与处理器2701通信的存储器2702来存储和/或缓冲数据。例如,处理器2701可以包括中央处理器(CPU)或微控制器单元(MCU)。在一些实现中,处理器2701可以包括现场可编程阵列(FPGA)。在一些实现中,移动设备2700包括或与图形处理单元(GPU)、视频处理单元(VPU)和/或无线通信单元通信,以实现智能手机设备的各种视觉和/或通信数据处理功能。例如,存储器2702可以包括并存储处理器可执行代码,当处理器2701执行该代码时,将移动设备2700配置为执行各种操作,例如接收信息、命令和/或数据、处理信息和数据,以及将处理过的信息/数据发送或提供给另一个数据设备,诸如执行器或外部显示器。为了支持移动设备2700的各种功能,存储器2702可以存储信息和数据,诸如指令、软件、值、图像以及处理器2701处理或引用的其他数据。例如,可以使用各种类型的随机存取存储器(RAM)设备、只读存储器(ROM)设备、闪存设备和其他合适的存储介质来实现存储器2702的存储功能。在一些实现中,移动设备2700包括输入/输出(I/O)单元2703,来将处理器2701和/或内存2702与其他模块、单元或设备进行接口。例如,I/O单元2703可以与处理器2701和内存2702进行接口,以利用与典型数据通信标准兼容的各种无线接口,例如,在中的一台或多台计算机和用户设备之间。在一些实现中,移动设备2700可以通过I/O单元2703使用有线连接与其他设备进行接口。I/O单元2703可以包括无线传感器,例如用于检测远程控制信号的红外探测器,或其他合适的无线人机界面技术。移动设备2700还可以与其他外部接口(例如数据存储器)和/或可视或音频显示设备2704连接,以检索和传输可由处理器处理、由存储器存储或由显示设备2704或外部设备的输出单元上显示的数据和信息。例如,显示设备2704可以根据所公开的技术显示基于MVP修改的视频帧
[0471] 图31是视频处理的方法3100的流程图。方法3100包括:基于来自当前视频块的比特流表示的解码的运动信息,使用多步细化处理生成(3102)运动矢量信息的多个细化值;以及基于多个细化值重构(3104)当前视频块或解码其它视频块。
[0472] 另一视频处理方法包括:为当前块和当前块的比特流表示之间的转换,执行当前块的第一子块的多步细化处理、以及当前块的第二子块的时域梯度修改处理,其中,使用多步细化处理、在当前视频块的比特流表示中信令通知的运动矢量信息的多个细化值;以及使用多个细化值中选择的一个来执行当前块和比特流表示之间的转换。
[0473] 另一种视频处理方法包括:使用当前视频块的多步解码器侧向运动矢量细化处理来确定最终运动矢量;以及使用最终运动矢量执行当前块和比特流表示之间的转换。
[0474] 另一种视频处理方法包括:在当前视频块和当前视频块的比特流表示之间的转换期间,将多个不同的运动矢量细化处理应用于当前视频块的不同子块;以及使用从多个不同的运动矢量细化处理生成的当前视频块的最终运动矢量,执行当前块和比特流表示之间的转换。
[0475] 在所公开的实施例中,当前视频块的比特流表示可以包括比特流的位(视频的压缩表示),比特流的位可以是非连续的,并且可以取决于报头信息,这在视频压缩技术中是已知的。此外,当前块可以包括代表一个或多个亮度和色度分量的样本,或其旋转变体(例如,YCrCb或YUV等)。
[0476] 下面的条款列表如下描述了一些实施例和技术。
[0477] 1.一种视频处理方法,包括:基于来自当前视频块的比特流表示的解码的运动信息,使用多步细化处理生成运动矢量信息的多个细化值;以及基于多个细化值重构当前视频块或解码其它视频块。例如,细化操作可以包括平均操作。在另一个例子中,使用细化处理的一个步骤的细化值来重构当前视频块。在又一个例子中,使用细化处理的一个步骤的细化值来解码其它视频块。
[0478] 2.根据条款1所述的方法,其中,转换从比特流表示生成当前块。
[0479] 3.根据条款1所述的方法,其中,转换从当前块生成比特流表示。
[0480] 4.根据条款1至3中任一项所述的方法,其中,多步细化处理包括:使用第(i-1)步的细化值来生成第i步的细化值,其中i=1至N,其中N是在多步细化处理中执行的细化步骤的总数,并且其中N大于1。
[0481] 5.根据条款1至4中任一项所述的方法,其中执行转换包括:在多步细化处理的步骤中,使用该步骤的运动矢量信息的细化值生成当前块的运动补偿参考块。
[0482] 6.根据条款5所述的方法,其中,生成运动补偿参考块对多步细化处理的一些步骤使用不同的滤波器。
[0483] 7.根据条款1至6中任一项所述的方法,其中,执行转换包括:在每个步骤使用为该步骤生成的细化运动矢量生成参考块。
[0484] 8.根据条款7所述的方法,其中,通过首先将细化运动矢量取整为整数值生成参考块。
[0485] 9.根据条款1所述的方法,其中,多步细化处理的步骤包括:将当前块划分为多个子块,并且对多个子块中的至少一些执行附加多步细化处理。
[0486] 10.根据条款9所述的方法,其中,对所有的多个子块执行附加多步细化处理。
[0487] 11.根据条款1所述的方法,其中,在基于当前块的特性实现多步细化处理的若干步骤之后执行对当前块的划分。
[0488] 12.根据条款9至12中任一项所述的方法,其中,对当前块的划分包括:以步骤相关的方式划分当前块,使得在至少两个步骤中,不同尺寸的子块被用于附加多步细化处理。
[0489] 13.根据条款1至12中任一项所述的方法,其中,通过对多个细化值进行加权平均计算出多个细化值中选择的一个。
[0490] 14.根据条款1所述的方法,其中,基于连续步骤中细化值的变化超过度量而判定在终止多步细化处理之前执行的步骤的数目。
[0491] 15.根据条款14所述的方法,其中,所述度量包括:在步骤处的细化值的垂直或水平分量与在比特流中信令通知的运动信息之间的绝对差。
[0492] 16.根据条款14所述的方法,其中,在终止多步细化处理之前执行的步骤的数目是当前块的特性的函数。
[0493] 17.根据条款16所述的方法,其中,当前块的特征包括当前块的尺寸、当前块的编码方式、或者当前块的运动矢量差的值或量化参数。
[0494] 18.根据条款14所述的方法,其中,在视频级、序列级、图片级、条带级、片级、编码树单元级或编码单元级,在比特流中信令通知在终止多步细化处理之前执行的步骤的数目。
[0495] 19.根据条款1至18中任一项所述的方法,其中,多个细化值中选择的一个是在多步细化处理的最后一步中计算出的细化值。
[0496] 20.根据条款1至19中任一项所述的方法,其中,在多步细化处理的每一步中,从上一步生成中间运动矢量,并用于在上一步之后计算下一步的细化估计。
[0497] 21.一种视频处理方法,包括:
[0498] 为当前块和当前块的比特流表示之间的转换,执行当前块的子块的多步细化处理、以及子块的两个预测块之间的时域梯度修改处理,其中,基于从当前视频块的比特流表示中解码的运动信息,使用多步细化处理、运动矢量信息的多个细化值;以及
[0499] 基于细化值执行当前块和比特流表示之间的转换。
[0500] 22.根据条款21所述的方法,其中,第二子块包括M1xN1个像素,并且第一子块包括M2xN2个像素,其中M1、N1、M2和N2是整数。
[0501] 23.根据条款22所述的方法,其中,M1=N1=8,M2=N2=4。
[0502] 24.根据条款21至23中任一项所述的方法,其中,M1、N1、M2、N2是预先定义的,或者取决于当前块的尺寸或当前块的编码模式,或者在视频级、序列级、图片级、条带级、图片报头级或片级信令通知。
[0503] 25.根据条款1至24中任一项所述的方法,其中,多步细化处理的每一步使用当前块或当前块的子块的部分像素。
[0504] 26.根据条款25所述的方法,其中,多步细化处理使用来自每N行或N列的像素。
[0505] 27.一种视频处理方法,包括:使用当前视频块的多步解码器侧运动矢量细化处理确定最终运动矢量;以及使用最终运动矢量执行当前块和比特流表示之间的转换。
[0506] 28.根据条款27所述的方法,其中,当前视频块的多步解码器侧运动矢量细化处理是在条款1中所述的多步细化处理的第i步的细化值上执行的,其中i是整数。
[0507] 29.根据条款27至28中任一项所述的方法,其中,用于多步细化处理的插值滤波器不同于用于转换另一块的插值滤波器。
[0508] 30.根据条款1至26中任一项所述的方法,其中,多个细化值中选择的一个用于亮度和Cr、Cb色度分量的子集的运动补偿。
[0509] 31.根据条款30所述的方法,其中,子集对应于亮度分量。
[0510] 32.根据条款30所述的方法,其中,子集对应于色度分量。
[0511] 33.根据条款32所述的方法,其中,色度分量的运动分量包括低带宽运动补偿处理,其中色度分量的子样本版本被用于运动补偿。
[0512] 34.一种视频处理方法,包括:在当前视频块和当前视频块的比特流表示之间的转换期间,将多个不同的运动矢量细化处理应用于当前视频块的不同子块;以及使用从多个不同的运动矢量细化处理生成的当前视频块的最终运动矢量,执行当前块和比特流表示之间的转换。
[0513] 35.根据条款34所述的方法,其中,转换从比特流表示生成当前块。
[0514] 36.根据条款34所述的方法,其中,转换从当前块生成比特流表示。
[0515] 37.根据条款34至36中任一项所述的方法,其中,多个不同的运动矢量细化处理包括双向光流处理或多步细化处理。
[0516] 38.根据条款34至37中任一项所述的方法,其中,基于子块的尺寸或编码模式、或者子块在当前块内的位置、或者用于对当前块进行编码的参考图片的类型,选择性地将多个不同的运动矢量细化处理应用于子块。
[0517] 39.根据条款38所述的方法,还包括:在参考图片是当前块的当前编码图片的情况下,避免应用多个不同的运动矢量细化处理。
[0518] 40.根据条款1至39中任一项所述的方法,其中,当前块对应于预测单元、或者编码单元、或者块、或者子块。
[0519] 41.一种视频处理方法,包括:
[0520] 使用规则来执行当前视频块和当前视频块的比特流表示之间的转换,该规则在使用基于子块的编码工具对当前视频块进行编码的情况下,限制编码单元或预测单元的子块的最大数目,其中,基于子块的编码工具包括仿射编码、高级时域运动矢量预测器、双向光流或解码器侧运动矢量细化编码工具中的一个或多个。
[0521] 42.根据条款41所述的方法,其中,规则还规定了子块的宽度或高度。
[0522] 43.根据条款42所述的方法,其中,当前视频块包括M x N个像素,并且其中子块的尺寸为K x L个像素,其中K、L、M、N是整数。
[0523] 44.根据条款43所述的方法,其中,每个子块的宽度是THw和M/K的最大值,其中HTw是整数。
[0524] 45.根据条款43至44中任一项所述的方法,其中,每个子块的宽度是THh和N/L的最大值,其中THh是整数。
[0525] 46.一种视频处理方法,包括:
[0526] 使用规则来执行当前视频块和当前视频块的比特流表示之间的转换,该规则在使用基于子块的编码工具对当前视频块进行编码的情况下,规定对当前视频块的色度分量使用不同于视频块的亮度分量的分割,其中,基于子块的编码工具包括仿射编码、高级时域运动矢量预测器、双向光流或解码器侧运动矢量细化编码工具中的一个或多个。
[0527] 47.根据条款46所述的方法,其中,规则基于当前视频块的尺寸和宽度或当前视频块的色度分量规定色度分量的分割。
[0528] 48.根据条款41至47中任一项所述的方法,其中,转换包括从比特流表示生成当前视频块的像素值。
[0529] 49.根据条款41至47中任一项所述的方法,其中,转换包括从当前视频块的像素值生成比特流表示。
[0530] 50.根据条款9所述的方法,其中,将当前块划分为多个子块包括:基于当前视频块的尺寸确定多个子块的尺寸。
[0531] 51.一种视频处理方法,包括:在双向光流(BIO)技术或解码器侧运动矢量细化(DMVR)技术的早期终止阶段中,确定与当前视频块相关联的参考视频块之间的差;以及基于该差执行当前视频块的进一步处理。
[0532] 52.根据条款51所述的方法,其中,确定所述差是基于参考视频块的偶数行。
[0533] 53.根据条款51所述的方法,其中,确定所述差是基于参考视频块的角样本。
[0534] 54.根据条款51所述的方法,其中,确定差是基于参考视频块的子块。
[0535] 55.根据条款51所述的方法,其中,参考视频块包括第一参考视频块和第二参考视频块,所述差基于第一参考视频块和第二参考视频块之间的差的和。
[0536] 56.根据条款51至55中任一项所述的方法,其中,差包括以下一个或多个:绝对差之和(SAD)、绝对转换差之和(SATD)、平方差之和(SSE)、绝对差的平均去除和(MRSAD)、绝对转换差的平均去除和(MRSATD)或平方差的平均去除和(MRSSE)。
[0537] 57.一种视频处理装置,其包括处理器,所述处理器被配置以实现权利要求1至56中任一项或多项中所述的方法。
[0538] 58.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于执行权利要求1至56中任一项所述的方法的程序代码。
[0539] 图32是视频处理的方法3200的流程图。方法3200包括:在运动矢量细化处理中,对具有第一尺寸的第一块或子块执行时域梯度修改处理(3202),以生成所述第一块或子块的修改的时域梯度,以及根据所述第一块或子块的所述修改的时域梯度,对具有第二尺寸的第二块或子块执行所述运动矢量细化处理(3204),其中所述第一尺寸不同于所述第二尺寸。
[0540] 在一些示例中,所述运动矢量细化处理还包括:使用所述修改的时域梯度导出所述第二块或子块的细化运动矢量。
[0541] 在一些示例中,在双向光流(BIO)技术或在解码器侧运动矢量细化(DMVR)技术或帧速率上转换(FRUC)技术中实现所述运动矢量细化处理。
[0542] 在一些示例中,所述第一块或子块包含M1xN1个样本,并且所述第二块或子块包含M2xN2个样本,其中M1、N1、M2及N2为整数。
[0543] 在一些示例中,M1=N1=8,M2=N2=4。
[0544] 在一些示例中,M1=N1=4,M2=N2=8。
[0545] 在一些示例中,M1、N1、M2、N2是预先定义的,或者取决于所述视频块的尺寸或所述视频块的编码模式,或者在视频参数集(VPS)/序列参数集(SPS)/图片参数集(PPS)/图片报头/片组的至少一个中信令通知。
[0546] 图33是视频处理的方法3300的流程图。方法3300包括:使用视频块或所述视频块内的子块的部分像素来计算所述视频块或所述视频块内的子块的部分时域和/或空域梯度(3302),以及使用所述部分时域和/或空域梯度来导出所述视频块或所述视频块内的子块的细化运动矢量(3304)。
[0547] 在一些示例中,使用来自每N行和/或列的像素来计算所述部分时域和/或所述空域梯度,N是整数。
[0548] 在一些示例中,N=2。
[0549] 在一些示例中,使用来自所述视频块或所述视频块内的所述子块的左上/右上/左下/右下四分之一的像素来计算所述部分时域和/或空域梯度。
[0550] 在一些示例中,使用来自所述视频块或所述视频块内的所述子块的左上/右上/左下/右下四分之一的每N行和/或列的像素来计算所述部分时域和/或空域梯度。
[0551] 在一些示例中,在两步运动矢量细化处理或多步运动矢量细化处理期间,使用所述视频块或所述视频块内的所述子块的部分像素来计算所述部分时域和/或空域梯度,其中,所述部分时域和/或空域梯度仅用于导出所述视频块或所述子块的细化运动矢量。
[0552] 在一些示例中,所述块对应于预测单元、或者编码单元、或者块、或者子块。
[0553] 在一些示例中,所述方法还包括:通过使用所述运动矢量,执行所述块和所述块的比特流表示之间的转换。
[0554] 在一些示例中,所述转换从所述比特流表示生成所述块。
[0555] 在一些示例中,所述转换从所述块生成所述比特流表示。
[0556] 本文件中描述的主题的实现和功能操作可以在各种系统、数字电子电路、或计算机软件、固件或硬件中实现,包括本说明书中所公开的结构及其结构等效体,或其中一个或多个的组合。本说明中描述的主题的实现可以实现为一个或多个计算机程序产品,即一个或多个编码在有形的且非易失的计算机可读介质上的计算机程序指令的模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或其中多个的组合。术语“数据处理单元”或“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。传播的信号是人为生成的信号,例如,机器生成的电、光或电磁信号,其被生成以编码信息以传输到合适的接收器设备。
[0557] 计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
[0558] 本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
[0559] 例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如,内部硬盘或可移动硬盘;磁光盘;以及CD ROM和DVD ROM盘。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
[0560] 虽然本专利文件包含许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中移除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。
[0561] 同样,尽管附图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。
[0562] 仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中描述和说明的内容做出。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈