一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

非对称加权双向预测Merge的制作方法

2022-11-14 03:02:22 来源:中国专利 TAG:

非对称加权双向预测merge
1.本专利申请是下列发明专利申请的分案申请:
2.申请号:201910487915.2
3.申请日:2019年6月5日
4.发明名称:非对称加权双向预测merge
5.相关申请的交叉引用
6.根据适用的专利法和/或《巴黎公约》的规定,本技术及时要求于2018年6月5日提交的国际专利申请号pct/cn2018/089919的优先权和利益。将国际专利申请号pct/cn2018/089919的全部公开以引用方式并入本文,作为本技术公开的一部分。
技术领域
7.一般来说,本专利文件涉及视频编解码技术。


背景技术:

8.运动补偿是视频处理中的一种技术,通过考虑摄像机和/或视频中的对象的运动,给定先前帧和/或将来帧来预测视频中的帧。运动补偿可以用于视频数据的编码和解码中以实现视频压缩。


技术实现要素:

9.描述了与用于运动补偿的非对称加权双向预测merge相关的设备、系统和方法。更一般地,所述的本公开技术为视频编码的merge模式提供增强。
10.在一个典型的方面,提供了一种视频数据处理方法,包括:构建当前视频块的merge运动候选列表;从merge运动候选列表中确定merge候选;以及如果merge候选是非对称双向预测merge候选,则禁用编解码工具;其中,将由非对称双向预测merge候选指示的不同权重应用于当前视频块的第一预测块和第二预测块,以获得最终预测块。
11.在另一典型的方面,提供了一种处理视频数据的装置,包括处理器和其上具有指令的非暂时性存储器,其中指令在由处理器执行时使得处理器:构建当前视频块的merge运动候选列表;从merge运动候选列表中确定merge候选;以及如果merge候选是非对称双向预测merge候选,则禁用编解码工具;其中,将由非对称双向预测merge候选指示的不同权重应用于当前视频块的第一预测块和第二预测块,以获得最终预测块。
12.在又一典型的方面,提供了一种非暂时性计算机可读存储介质,其中存储有指令,指令使得处理器:构建当前视频块的merge运动候选列表;从merge运动候选列表中确定merge候选;以及如果merge候选是非对称双向预测merge候选,则禁用编解码工具;其中,将由非对称双向预测merge候选指示的不同权重应用于当前视频块的第一预测块和第二预测块,以获得最终预测块。
13.在一个典型的方面,公开的技术可用于提供解码视频数据的方法,包括:基于第一参考merge候选和第二参考merge候选的非对称加权构建用于生成当前视频块的merge候
选,其包括运动矢量和对应参考图片。在一个示例中,非对称加权包括应用于第一参考merge候选的第一权重和应用于第二参考merge候选的与第一权重不同的第二权重。该方法还包括:在构建之后,将merge候选插入到merge候选列表中,从至少merge候选列表中导出运动信息,并且基于merge候选列表生成当前块。
14.在另一个典型的方面,本公开技术可用于提供一种使用非对称加权双向预测merge的视频编码方法。该方法包括:基于第一参考merge候选和第二参考merge候选的非对称加权构建merge候选,其中非对称加权包括第一权重和与第一权重不同的第二权重;在构建之后,将merge候选插入到merge候选列表中,从至少merge候选列表中导出运动信息,并且基于运动信息对被帧间编解码的视频数据的当前块进行编码。
15.在又一典型的方面,上述方法以处理器可执行代码的形式实施,并且存储在计算机可读的程序介质中。
16.在又一典型的方面,公开了一种设备,其被配置为或可操作以执行上述方法。该设备可以包括被编程以实现该方法的处理器。
17.在又一典型的方面,一种视频解码器装置,其可以实现如本文所述的方法。
18.在附图、说明书和权利要求书中更详细地描述了所公开技术的上述方面、以及其他方面和特征。
附图说明
19.图1示出了构建merge候选列表的示例。
20.图2示出了空间候选的位置的示例。
21.图3示出了接受空间merge候选的冗余检查的候选对的示例。
22.图4a和图4b示出了基于当前块的大小和形状的第二预测单元(pu)的位置示例。
23.图5示出了时域merge候选的运动矢量缩放示例。
24.图6示出了时域merge候选的候选位置示例。
25.图7示出了生成组合的双向预测merge候选的示例。
26.图8示出了构建运动矢量预测候选的示例。
27.图9示出了空间运动矢量候选的运动矢量缩放示例。
28.图10示出了使用编码单元(cu)的可选时域运动矢量预测(atmvp)算法的运动预测示例。
29.图11示出了空时运动矢量预测(stmvp)算法使用的带有子块和相邻块的编码单元(cu)的示例。
30.图12示出了简化仿射运动模型的示例。
31.图13示出了每个子块的仿射运动矢量场(mvf)的示例。
32.图14示出了af_inter仿射运动模式的运动矢量预测(mvp)的示例。
33.图15a和图15b示出了af_merge仿射运动模式的示例候选。
34.图16示出了模式匹配运动矢量推导(pmmvd)模式中的双边匹配的示例,该模式是基于帧速率上转换(fruc)算法的特殊merge模式。
35.图17示出了fruc算法中模板匹配的示例。
36.图18示出了fruc算法中的单边运动估计的示例。
37.图19示出了双向光流(bio)算法使用的光流轨迹的示例。
38.图20a和图20b示出了使用无块扩展的双向光流(bio)算法的示例快照。
39.图21示出了基于双边模板匹配的解码器侧运动矢量优化(dmvr)算法的示例。
40.图22示出了根据所公开的技术使用非对称加权双向预测merge的视频解码示例方法的流程图。
41.图23示出了根据所公开的技术使用非对称加权双向预测merge的视频编码示例方法的流程图。
42.图24是说明可用于实现本公开技术的各个部分的计算机系统或其他控制设备的结构的示例的框图。
43.图25示出了可用于实施本公开技术的各个部分的移动设备的示例实施例的框图。
具体实施方式
44.由于对高分辨率视频的需求日益增加,视频编码方法和技术在现代技术中无处不在。视频编解码器通常包括压缩或解压缩数字视频的电子电路或软件,并且不断地被改进以提供更高的编码效率。视频编解码器将未压缩的视频转换为压缩格式,或反之亦然。视频质量、用于表示视频的数据量(由比特率决定)、编码和解码算法的复杂度、对数据丢失和错误的敏感度、易于编辑、随机访问和端到端延迟(延迟)之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如,高效视频编码(hevc)标准(也称为h.265或mpeg-h第2部分)、待最终确定的通用视频编码标准或其他当前和/或未来的视频编码标准。
45.所公开技术的实施例可以应用于现有的视频编码标准(例如,hevc、h.265)和未来的标准,以提高运行时间性能。它与视频编码中的merge模式有着特定的关系。在本文件中,使用章节标题来提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实现)仅限于各自的章节。为了便于理解,本文件中使用了章节,并且不将各章节中公开的技术和实施例的范围仅限制在该章节中。
46.1.hevc/h.265中的帧间预测的示例
47.多年来,视频编码标准有了显著的改进,并且现在在某种程度上提供了高编码效率和对更高分辨率的支持。最新标准诸如hevc和h.265等是基于混合视频编码结构,其中采用了时域预测加变换编码。
48.1.1预测模式的示例
49.每个帧间预测的pu(预测单元)都有一个或两个参考图片列表的运动参数。在一些实施例中,运动参数包括运动矢量和参考图片指数。在其他实施例中,两个参考图片列表之一的使用也可以使用inter_pred_idc发信令。在又一实施例中,运动矢量可显式地编码为相对于预测器的增量。
50.当cu采用跳跃模式编码时,pu与cu相关联,并且没有显著的残差系数,没有编码运动矢量增量或参考图片指数。指定了一种merge模式,通过该模式,可以从相邻的pu(包括空间和时间候选)中获取当前pu的运动参数。merge模式可以应用于任何帧间预测的pu,而不仅仅是跳跃模式。merge模式的另一种选择是运动参数的显式传输,其中每个参考图片列表的运动矢量、对应的参考图片指数以及参考图片列表的使用都会根据每个pu显式地发信令。
51.当信令指示要使用两个参考图片列表中的一个时,从一个样本块中生成pu。这被称为“单向预测”。单向预测对p条带(slice)和b条带都可用。
52.当信令指示要使用两个参考图片列表时,从两个样本块中生成pu。这被称为“双向预测”。双向预测仅对b条带可用。
53.1.1.1构建merge模式的候选的实施例
54.当使用merge模式预测pu时,从比特流中解析指向merge候选列表中条目的指数,并且使用该指数检索运动信息。此列表的构建可按以下步骤顺序进行概括:
55.步骤1:初始候选推导
56.步骤1.1:空间候选推导
57.步骤1.2:空间候选冗余检查
58.步骤1.3:时域候选推导
59.步骤2:附加候选插入
60.步骤2.1:创建双向预测候选
61.步骤2.2:插入零运动候选
62.图1示出了基于上面概括的步骤序列构建merge候选列表的示例。对于空间merge候选推导,在位于五个不同位置的候选中最多选择四个merge候选。对于时域merge候选推导,在两个候选中最多选择一个merge候选。由于在解码器处假定每个pu的候选数为常量,因此当候选数未达到片报头中发信令的最大merge候选数(maxnummergecand)时,生成附加的候选。由于候选数是恒定的,所以最佳merge候选的指数使用截断的一元二值化(tu)进行编码。如果cu的大小等于8,则当前cu的所有pu都共享一个merge候选列表,这与2n
×
2n预测单元的merge候选列表相同。
63.1.1.2构建空间merge候选
64.在空间merge候选的推导中,在位于图2所示位置的候选中最多选择四个merge候选。推导顺序为a1,b1,b0,a0和b2。只有当位置a1,b1,b0,a0的任何pu不可用(例如,因为它属于另一个条带或片(tile))或是内部编码时,才考虑位置b2。在增加a1位置的候选后,对剩余候选的增加进行冗余检查,其确保具有相同运动信息的候选被排除在列表之外,从而提高编码效率。
65.为了降低计算的复杂度,在所提到的冗余检查中并不考虑所有可能的候选对。相反,只有与图3中的箭头链接的对才会被考虑,并且只有当用于冗余检查的对应候选没有相同的运动信息时,才将候选添加到列表中。复制运动信息的另一个来源是与2nx2n不同的分区相关的“第二pu”。例如,图4a和4b分别描述了n
×
2n和2n
×
n情况下的第二pu。当当前的pu被划分为n
×
2n时,对于列表构建不考虑a1位置的候选。在一些实施例中,添加此候选可能导致两个具有相同运动信息的预测单元,这对于在编码单元中仅具有一个pu是冗余的。同样地,当当前pu被划分为2n
×
n时,不考虑位置b1。
66.1.1.3构建时域merge候选
67.在此步骤中,只有一个候选添加到列表中。特别地,在这个时域merge候选的推导中,基于与给定参考图片列表中当前图片具有最小poc差异的并置pu导出了缩放运动矢量。用于推导并置pu的参考图片列表在条带报头中显式地发信令。
68.图5示出了时域merge候选(如虚线所示)的缩放运动矢量的推导示例,其使用poc
距离tb和td从并置pu的运动矢量进行缩放,其中tb定义为当前图片的参考图片和当前图片之间的poc差异,并且td定义为并置图片的参考图片与并置图片之间的poc差异。时域merge候选的参考图片指数设置为零。对于b条带,得到两个运动矢量(一个是对于参考图片列表0,另一个是对于参考图片列表1)并将其组合使其成为双向预测merge候选。
69.在属于参考帧的并置pu(y)中,在候选c0和c1之间选择时域候选的位置,如图6所示。如果位置c0处的pu不可用、内部编码或在当前ctu之外,则使用位置c1。否则,位置c0被用于时域merge候选的推导。
70.1.1.4构建附加类型的merge候选
71.除了空时merge候选,还有两种附加类型的merge候选:组合双向预测merge候选和零merge候选。组合双向预测merge候选是利用空时merge候选生成的。组合双向预测merge候选仅用于b条带。通过将初始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数相结合,生成组合双向预测候选。如果这两个元组提供不同的运动假设,它们将形成新的双向预测候选。
72.图7示出了此过程的一个示例,其中原始列表(710,在左侧)中具有mvl0和refidxl0或mvl1和refidxl1的两个候选被用于创建添加到最终列表(720,在右侧)中的组合双向预测merge候选。
73.插入零运动候选以填充merge候选列表中的其余条目,从而达到maxnummergecand的容量。这些候选具有零空间位移和从零开始并且每次将新的零运动候选添加到列表中时都会增加的参考图片指数。这些候选使用的参考帧的数目对于单向预测和双向预测分别是1帧和2帧。在一些实施例中,对这些候选不执行冗余检查。
74.1.1.5并行处理的运动估计区域的示例
75.为了加快编码处理,可以并行执行运动估计,从而同时导出给定区域内所有预测单元的运动矢量。从空间邻域导出merge候选可能会干扰并行处理,因为一个预测单元在完成相关运动估计之前无法从相邻的pu导出运动参数。为了缓和编码效率和处理延迟之间的平衡,可以定义运动估计区域(mer)。mer的大小可在图片参数集(pps)中发信令。当定义mer时,落入同一区域的merge候选标记为不可用,并且因此在列表构建中不考虑。
76.1.2运动矢量预测的实施例
77.运动矢量预测利用运动矢量与相邻的pu的空时相关性,其用于运动参数的显式传输。首先通过检查左上方的时域相邻的pu位置的可用性、去掉多余的候选位置并且加上零矢量以使候选列表长度恒定来构建运动矢量候选列表。然后,编码器可以从候选列表中选择最佳的预测器,并发送指示所选候选的对应指数。与merge指数信令类似,最佳运动矢量候选的指数使用截断的一元进行编码。
78.1.2.1构建运动矢量预测候选的示例
79.图8概括了运动矢量预测候选的推导过程,并可以对每个参考图片列表使用refidx作为输入来实现。
80.在运动矢量预测中,考虑了两种类型的运动矢量候选:空间运动矢量候选和时域运动矢量候选。对于空间运动矢量候选的推导,基于位于先前图2所示的五个不同位置的每个pu的运动矢量最终推导出两个运动矢量候选。
81.对于时域运动矢量候选的推导,从两个候选中选择一个运动矢量候选,这两个候
选是基于两个不同的并置位置推导出的。在作出第一个空时候选列表后,移除列表中重复的运动矢量候选。如果潜在候选的数量大于二,则从列表中移除相关联的参考图片列表中参考图片指数大于1的运动矢量候选。如果空时运动矢量候选数小于二,则会在列表中添加附加的零运动矢量候选。
82.1.2.2构建空间运动矢量候选
83.在推导空间运动矢量候选时,在五个潜在候选中最多考虑两个候选,这五个候选来自先前图2所示位置上的pu,这些位置与运动merge的位置相同。当前pu左侧的推导顺序定义为a0、a1、以及缩放的a0、缩放的a1。当前pu上面的推导顺序定义为b0、b1,b2、缩放的b0、缩放的b1、缩放的b2。因此,每侧有四种情况可以用作运动矢量候选,其中两种情况不需要使用空间缩放,并且两种情况使用空间缩放。四种不同的情况概括如下:
84.‑‑
无空间缩放
85.(1)相同的参考图片列表,并且相同的参考图片指数(相同的poc)
86.(2)不同的参考图片列表,但是相同的参考图片(相同的poc)
87.‑‑
空间缩放
88.(3)相同的参考图片列表,但是不同的参考图片(不同的poc)
89.(4)不同的参考图片列表,并且不同的参考图片(不同的poc)
90.首先检查无空间缩放的情况,然后检查允许空间缩放的情况。当poc在相邻pu的参考图片与当前pu的参考图片之间不同时,都会考虑空间缩放,而不考虑参考图片列表。如果左侧候选的所有pu都不可用或是内部编码,则允许对上述运动矢量进行缩放,以帮助左侧和上方mv候选的平行推导。否则,不允许对上述运动矢量进行空间缩放。
91.如图9中的示例所示,对于空间缩放情况,以与时域缩放类似的方式缩放相邻pu的运动矢量。一个区别是,给出当前pu的参考图片列表和指数作为输入;实际的缩放处理与时域缩放处理相同。
92.1.2.3构建时域运动矢量候选
93.除了参考图片指数的推导外,时域merge候选的所有推导过程与空间运动矢量候选的推导过程相同(如图6中的示例所示)。在一些实施例中,向解码器发参考图片指数的信令。
94.2.联合探索模型(jem)中帧间预测方法的示例
95.在一些实施例中,使用名为联合探索模型(jem)的参考软件来探索未来的视频编码技术。在jem中,基于子块的预测被用于多种编码工具中,诸如仿射预测、可选时域运动矢量预测(atmvp)、空时运动矢量预测(stmvp)、双向光流(bio)、帧速率上转换(fruc)、局部自适应运动矢量分辨率(lamvr)、重叠块运动补偿(obmc)、局部照明补偿(lic)和解码器侧运动矢量细化(dmvr)。
96.2.1基于的运动矢量预测示例
97.在具有四叉树加二叉树(qtbt)的jem中,每个cu对于每个预测方向最多可以具有一组运动参数。在一些实施例中,通过将大的cu分割成子cu并导出该大cu的所有子cu的运动信息,编码器中考虑了两种子cu级的运动矢量预测方法。可选时域运动矢量预测(atmvp)方法允许每个cu从多个小于并置参考图片中当前cu的块中获取多组运动信息。在空时运动矢量预测(stmvp)方法中,通过利用时域运动矢量预测器和空间邻接运动矢量递归地导出
子cu的运动矢量。在一些实施例中,为了保持子cu运动预测的更精确的运动场,可以禁用参考帧的运动压缩。
98.2.1.1可选时域运动矢量预测(atmvp)的示例
99.在atmvp方法中,通过从小于当前cu的块中提取多组运动信息(包括运动矢量和参考指数),修改时域运动矢量预测(tmvp)方法。
100.图10示出了cu 1000的atmvp运动预测处理的示例。atmvp方法分两步预测cu 1000内子cu 1001的运动矢量。第一步是用时域矢量识别参考图片1050中的对应块1051。参考图片1050也被称为运动源图片。第二步是将当前的cu 1000拆分为子cu 1001,并从每个子cu对应的块中获取每个子cu的运动矢量和参考指数。
101.在第一步中,参考图片1050和对应的块由当前cu 1000的空间相邻块的运动信息确定。为了避免相邻块的重复扫描处理,使用当前cu 1000的merge候选列表中的第一个merge候选。第一个可用的运动矢量及其相关联的参考指数被设置为时间矢量和运动源图片的指数。这样,与tmvp相比,可以更准确地识别对应的块,其中对应的块(有时称为并置块)始终位于相对于当前cu的右下角或中心位置。
102.在第二步中,通过将时域矢量添加到当前cu的坐标中,通过运动源图片1050中的时域矢量识别子cu 1051的对应块。对于每个子cu,使用其对应块的运动信息(例如,覆盖中心样本的最小运动网格)来导出子cu的运动信息。在识别出对应n
×
n块的运动信息后,将其转换为当前子cu的运动矢量和参考指数,与hevc的tmvp方法相同,其中应用运动缩放和其他处理。例如,解码器检查是否满足低延迟条件(例如,当前图片的所有参考图片的poc都小于当前图片的poc),并可能使用运动矢量mvx(例如,与参考图片列表x对应的运动矢量)来为每个子cu预测运动矢量mvy(例如,x等于0或1且y等于1-x)。
103.2.1.2空时运动矢量预测(stmvp)示例
104.在stmvp方法中,子cu的运动矢量按照光栅扫描顺序递归导出。图11示出具有四个子块和相邻块的一个cu的例子。考虑8
×
8的cu 1100,其包括四个4
×
4子cu a(1101)、b(1102)、c(1103)和d(1104)。当前帧中相邻的4
×
4块标记为a(1111)、b(1112)、c(1113)和d(1114)。
105.子cu a的运动推导由识别其两个空间邻居开始。第一个邻居是子cu a1101上方的n
×
n块(块c 1113)。如果该块c(1113)不可用或内部编码,则检查子cu a(1101)上方的其他n
×
n块(从左到右,从块c 1113处开始)。第二个邻居是子cu a 1101左侧的一个块(块b 1112)。如果块b(1112)不可用或是内部编码,则检查子cu a 1101左侧的其他块(从上到下,从块b 1112处开始)。每个列表从相邻块获得的运动信息被缩放到给定列表的第一个参考帧。接下来,按照hevc中规定的与tmvp相同的程序,推导出子块a 1101的时间运动矢量预测(tmvp)。提取块d 1104处的并置块的运动信息并进行相应的缩放。最后,在检索和缩放运动信息后,对每个参考列表分别平均所有可用的运动向量。将平均运动矢量指定为当前子cu的运动矢量。
106.2.1.3子cu运动预测模式信令的示例
107.在一些实施例中,子cu模式作为附加的merge候选模式启用,并且不需要附加的语法元素来对该模式发信令。将另外两个merge候选添加到每个cu的merge候选列表中,以表示atmvp模式和stmvp模式。在其他实施例中,如果序列参数集指示启用了atmvp和stmvp,则
最多可以使用七个merge候选。附加merge候选的编码逻辑与hm中的merge候选的编码逻辑相同,这意味着对于p或b条带中的每个cu,可能需要对两个附加merge候选进行两次额外的rd检查。在一些实施例中,例如jem,merge指数的所有双向n文件都由cabac(基于文本的自适应二进制算术编码)进行上下文编码的。在其他实施例中,例如hevc,只有第一个双向n文件是上下文编码的,并且其余的双向n文件是上下文旁路编码的。
108.2.2自适应运动矢量残差分辨率的示例
109.在一些实施例中,当在条带报头中use_integer_mv_flag等于0时,运动矢量差(mvd)(在pu的运动矢量和预测运动矢量之间)以四分之一亮度样本为单位发信令。在jem中,引入了局部自适应运动矢量分辨率(lamvr)。在jem中,mvd可以用四分之一亮度样本、整数亮度样本或四亮度样本的单位进行编码。mvd分辨率控制在编码单元(cu)级别,并且mvd分辨率标志有条件地为每个至少有一个非零mvd分量的cu发信令。
110.对于具有至少一个非零mvd分量的cu,第一个标志将发信令以指示cu中是否使用四分之一亮度样本mv精度。当第一个标志(等于1)指示不使用四分之一亮度样本mv精度时,另一个标志发信令以指示是使用整数亮度样本mv精度还是使用四亮度样本mv精度。
111.当cu的第一个mvd分辨率标志为零或没有为cu编码(意味着cu中的所有mvd都为零)时,cu使用四分之一亮度样本mv分辨率。当一个cu使用整数亮度样本mv精度或四亮度样本mv精度时,该cu的amvp候选列表中的mvp将四舍五入到对应的精度。
112.在编码器中,cu级别的rd检查用于确定哪个mvd分辨率将用于cu。也就是说,对每个mvd分辨率执行三次cu级别的rd检查。为了加快编码器速度,在jem中应用以下编码方案:
113.‑‑
在对具有正常四分之一亮度采样mvd分辨率的cu进行rd检查时,存储当前cu(整数亮度采样精度)的运动信息。在对具有整数亮度样本和4亮度样本mvd分辨率的同一个cu进行rd检查时,将存储的运动信息(舍入后)用作进一步小范围运动矢量细化的起始点,从而使耗时的运动估计处理不会重复三次。
114.‑‑
有条件地调用具有4亮度样本mvd分辨率的cu的rd检查。对于cu,当整数亮度样本mvd分辨率的rd检查成本远大于四分之一亮度样本mvd分辨率的rd检查成本时,将跳过对cu的4亮度样本mvd分辨率的rd检查。
115.2.3更高运动矢量存储精度的示例
116.在一些实施例中,运动矢量精度为四分之一像素(用于4:2:0视频的四分之一亮度样本和八分之一色度样本)。在jem中,内部运动矢量存储和merge候选的精度增加到1/16像素。对于采用跳跃/merge模式编码的cu,采用较高的运动矢量精度(1/16像素)进行运动补偿帧间预测。对于使用普通amvp模式编码的cu,使用整数像素或四分之一像素运动,如前所述。
117.在一些实施例中,在hevc(shvc)的可扩展的延伸中将上采样插值滤波器用作附加分数像素位置的运动补偿插值滤波器,该滤波器具有与hevc运动补偿插值滤波器相同的滤波器长度和归一化因子。在jem中,色度分量的运动矢量精度为1/32样本,通过使用两个相邻1/16像素分数位置的滤波器的平均值,推导出1/32像素分数位置的附加插值滤波器。
118.2.4仿射运动补偿预测的示例
119.在hevc中,运动补偿预测(mcp)仅应用平移运动模型。然而,相机和对象可能具有多种运动,例如放大/缩小、旋转、透视运动和/或其他不规则运动。另一方面,jem应用了简
化的仿射变换运动补偿预测。图12示出了由两个控制点运动矢量v0和v1描述的块1400的仿射运动场的例子。块1400的运动矢量场(mvf)可以由以下等式描述:
[0120][0121]
如图12所示,(v
0x
,v
0y
)是左上角控制点的运动矢量,并且(v
1x
,v
1y
)是右上角控制点的运动矢量。为了简化运动补偿预测,可以应用基于子块的仿射变换预测。子块尺寸m
×
n推导如下:
[0122][0123]
这里,mvpre是运动矢量分数精度(例如,jem中的1/16)。(v
2x
,v
2y
)是左下控制点的运动矢量,其根据等式(1)计算。如果需要,m和n可以被向下调节使其分别作为w和h的除数。
[0124]
图13示出了块1500的每个子块的仿射运动矢量场(mvf)的例子。为了推导出每个m
×
n子块的运动矢量,可以根据等式(1)计算每个子块的中心样本的运动矢量,并且四舍五入到运动矢量分数精度(例如,jem中的1/16)。然后可以应用运动补偿插值滤波器,利用推导出的运动矢量生成各子块的预测。在mcp之后,对每个子块的高精度运动矢量进行取整,并将其保存为与正常运动矢量相同的精度。
[0125]
在jem中,有两个仿射运动模式:af_inter模式和af_merge模式。对于宽度和高度都大于8的cu,可以应用af_inter模式。在位流中,cu级别的仿射标志被发信令,以指示是否使用af_inter模式。在af_inter模式中,使用相邻的块构建具有运动矢量对{(v0,v1)|v0={va,vb,vc},v1={vd,ve}}的候选列表。
[0126]
图14示出了在af_inter模式中块1600的运动矢量预测(mvp)的例子。如图16所示,v0从子块a、b或c的运动矢量中选择。可以根据参考列表对相邻块的运动矢量进行缩放。也可以根据相邻块参考的图片顺序计数(poc)、当前cu参考的poc和当前cu的poc之间的关系对运动矢量进行缩放。从相邻的子块d和e中选择v1的方法类似。当候选列表的数目小于2时,该列表由复制每个amvp候选组成的运动矢量对来填充。当候选列表大于2时,可以首先根据相邻的运动矢量对候选进行排序(例如,基于一对候选中两个运动矢量的相似性)。在一些实现中,保留前两个候选。在一些实施例中,使用速率失真(rd)成本检查来确定选择哪个运动矢量对候选作为当前cu的控制点运动矢量预测(cpmvp)。可以在位流中发出指示cpmvp在候选列表中的位置的指数。在确定了当前仿射cu的cpmvp后,应用仿射运动估计,并且找到控制点运动矢量(cpmv)。然后,在比特流中对cpmv和cpmvp的差异发信令。
[0127]
当在af_merge模式下应用cu时,它从有效的相邻重构块中获取用仿射模式编码的第一个块。图15a示出了当前编码单元cu 1700的候选块的选择顺序的例子。如图15a所示,选择顺序可以是从当前cu 1700的左(1701)、上(1702)、右上(1703)、左下(1704)到左上(17017)。图15b示出了在af_merge模式中当前cu 1700候选块的另一个例子。如果相邻的左下块1701以仿射模式编码,如图15b所示,则导出包含子块1701的cu左上角、右上角和左下
角的运动矢量v2、v3和v4。当前cu 1700左上角的运动矢量v0是基于v2、v3和v4计算的。可以相应地计算当前cu右上方的运动矢量v1。
[0128]
根据等式(1)中的仿射运动模型计算当前cu的cpmv v0和v1后,可以生成当前cu的mvf。为了确定当前cu是否使用af_merge模式编码,当至少有一个相邻的块以仿射模式编码时,可以在比特流中发出仿射标志。
[0129]
2.5模式匹配运动矢量推导(pmmvd)的示例
[0130]
pmmvd模式是基于帧速率上转换(fruc)方法的特殊merge模式。在这种模式下,块的运动信息不会被发信令,而是在解码器端导出。
[0131]
对于cu,当其merge标志为真时,fruc标志可以被发信令。当fruc标志为假时,merge指数可以被发信令并且使用常规merge模式。当fruc标志为真时,另一个fruc模式标志可以被发信令来指示将使用哪种模式(例如,双向匹配或模板匹配)来导出该块的运动信息。
[0132]
在编码器端,基于对正常merge候选所做的rd成本选择决定是否对cu使用fruc merge模式。例如,通过使用rd成本选择来检查cu的多个匹配模式(例如,双向匹配和模板匹配)。导致最低成本的模式进一步与其它cu模式相比较。如果fruc匹配模式是最有效的模式,那么对于cu,fruc标志设置为真,并且使用相关的匹配模式。
[0133]
通常,fruc merge模式中的运动推导处理有两个步骤:首先执行cu级运动搜索,然后执行子cu级运动优化。在cu级,基于双向匹配或模板匹配,导出整个cu的初始运动矢量。首先,生成一个mv候选列表,并且选择导致最低匹配成本的候选作为进一步优化cu级的起点。然后在起始点附近执行基于双向匹配或模板匹配的局部搜索。将最小匹配成本的mv结果作为整个cu的mv值。接着,以导出的cu运动矢量为起点,进一步在子cu级细化运动信息。
[0134]
例如,对于w
×
h cu运动信息推导执行以下推导过程。在第一阶段,推导出了整个w
×
h cu的mv。在第二阶段,该cu进一步被分成m
×
m子cu。m的值按照等式(3)计算,d是预先定义的划分深度,在jem中默认设置为3。然后导出每个子cu的mv值。
[0135][0136]
图16示出在帧速率上转换(fruc)方法中使用的双向匹配的例子。通过沿当前cu(1800)的运动轨迹在两张不同的参考图片(1810,1811)中找到两个块之间最接近的匹配,使用双向匹配来获得当前cu的运动信息。在连续运动轨迹假设下,指向两个参考块的运动矢量mv0(1801)和mv1(1802)与当前图片和两个参考图片之间的时间距离(例如,td0(1803)和td1(1804)成正比。在一些实施例中,当当前图片1800暂时位于两个参考图片(1818,1811)之间并且当前图片到两个参考图片的时间距离相同时,双向匹配成为基于镜像的双向mv。
[0137]
图17示出在帧速率上转换(fruc)方法中使用的模板匹配的例子。模板匹配可以用于通过查找当前图片中的模板(例如,当前cu的顶部和/或左侧相邻块)与参考图片1910中的块(例如,与模板大小相同)之间的最接近匹配来获取当前cu 1900的运动信息。除了上述的fruc merge模式外,模板匹配也可以应用于amvp模式。在jem和hevc中,amvp都具有两个候选。通过模板匹配方法,可以导出新的候选。如果通过模板匹配新导出的候选与第一个现有的amvp候选不同,则将其插入amvp候选列表的最开始处,并且然后将列表大小设置为2
(例如,通过移除第二个现有amvp候选)。当应用于amvp模式时,仅应用cu级搜索。
[0138]
cu级设置的mv候选可以包括以下:(1)初始amvp候选,如果当前cu处于amvp模式,(2)所有merge候选,(3)插值mv场(稍后描述)中的数个mv,以及顶部和左侧相邻运动矢量。
[0139]
当使用双向匹配时,merge候选的每个有效mv可以用作输入,以生成假设为双向匹配的mv对。例如,merge候选在参考列表a处的一个有效mv为(mva,refa)。然后在另一个参考列表b中找到其配对的双向mv的参考图片refb,以便refa和refb在时间上位于当前图片的不同侧。如果参考列表b中的参考refb不可用,则将参考refb确定为与参考refa不同的参考,并且其到当前图片的时间距离是列表b中的最小距离。确定参考refb后,通过基于当前图片和参考refa、参考refb之间的时间距离缩放mva导出mvb。
[0140]
在一些实现中,还可以将来自插值mv场中的四个mv添加到cu级候选列表中。更具体地,添加当前cu的位置(0,0),(w/2,0),(0,h/2)和(w/2,h/2)处插值的mv。当在amvp模式下应用fruc时,原始的amvp候选也添加到cu级的mv候选集。在一些实现中,在cu级,可以将amvp cu的15个mv和merge cu的13个mv添加到候选列表中。
[0141]
在子cu级设置的mv候选包括从cu级搜索确定的mv,(2)顶部、左侧、左上方和右上方相邻的mv,(3)参考图片中并置的mv的缩放版本,(4)一个或多个atmvp候选(例如,最多四个)和(5)一个或多个stmvp候选(例如,最多四个)。来自参考图片的缩放mv导出如下。两个列表中的参考图片都被遍历。参考图片中子cu的并置位置处的mv被缩放为起始cu级mv的参考。atmvp和stmvp候选可以是前四个。在子cu级,一个或多个mv(例如,最多17个)被添加到候选列表中。
[0142]
插值mv场的生成。在对帧进行编码之前,基于单向me生成整个图片的内插运动场。然后,该运动场可以随后用作cu级或子cu级的mv候选。
[0143]
在一些实施例中,两个参考列表中每个参考图片的运动场在4
×
4的块级别上被遍历。图18示出了在fruc法中的单向运动估计(me)2000的例子。对于每个4
×
4块,如果与块相关联的运动通过当前图片中的4
×
4块,并且该块没有被分配任何内插运动,则根据时间距离td0和td1将参考块的运动缩放到当前图片(与hevc中tmvp的mv缩放相同),并且在当前帧中将该缩放运动指定给该块。如果没有缩放的mv指定给4
×
4块,则在插值运动场中将块的运动标记为不可用。
[0144]
插值和匹配成本。当运动矢量指向分数采样位置时,需要运动补偿插值。为了降低复杂度,对双向匹配和模板匹配都使用双线性插值而不是常规的8抽头hevc插值。
[0145]
匹配成本的计算在不同的步骤处有点不同。当从cu级的候选集中选择候选时,匹配成本可以是双向匹配或模板匹配的绝对和差(sad)。在确定起始mv后,双向匹配在子cu级搜索的匹配成本如下:
[0146][0147]
这里,w是权重系数。在一些实施例中,w可以被经验地设置为4。mv和mvs分别指示当前mv和起始mv。仍然可以将sad用作模式匹配在子cu级搜索的匹配成本。
[0148]
在fruc模式下,mv通过仅使用亮度样本导出。导出的运动将用于亮度和色度的mc帧间预测。确定mv后,对亮度使用8抽头(8-taps)插值滤波器并且对色度使用4抽头(4-taps)插值滤波器执行最终mc。
[0149]
mv细化是基于模式的mv搜索,以双向匹配成本或模板匹配成本为标准。在jem中,支持两种搜索模式—无限制中心偏置菱形搜索(ucbds)和自适应交叉搜索,分别在cu级别和子cu级别进行mv细化。对于cu级和子cu级的mv细化,都在四分之一亮度样本精度下直接搜索mv,接着是八分之一亮度样本mv细化。将cu和子cu步骤的mv细化的搜索范围设置为8个亮度样本。
[0150]
在双向匹配merge模式下,应用双向预测,因为cu的运动信息是在两个不同的参考图片中基于当前cu运动轨迹上两个块之间的最近匹配得出的。在模板匹配merge模式下,编码器可以从列表0的单向预测、列表1的单向预测或者双向预测中为cu做出选择。该选择可以基于如下的模板匹配成本:
[0151]
如果costbi《=factor*min(cost0,cost1)
[0152]
则使用双向预测;
[0153]
否则,如果cost0《=cost1
[0154]
则使用列表0中的单向预测;
[0155]
否则,
[0156]
使用列表1中的单向预测;
[0157]
这里,cost0是列表0模板匹配的sad,cost1是列表2模板匹配的sad,并且cost双向是双向模板匹配的sad。例如,当factor的值等于1.25时,意味着选择过程朝双向预测偏移。帧间预测方向选择可应用于cu级模板匹配处理。
[0158]
2.6双向光流(bio)的示例
[0159]
双向光流(bio)方法是在分块运动补偿之上对双向预测进行的样本方向运动细化。在一些实现中,样本级的运动细化不使用信令。
[0160]
设i
(k)
为块运动补偿后到参考k(k=0,1)的亮度值,并且分别为i(k)梯度的水平分量和垂直分量。假设光流是有效的,则运动矢量场(v
x
,vy)由下式给出:
[0161][0162]
将此光流等式与每个样品运动轨迹的埃尔米特插值相结合,得到一个唯一的三阶多项式,该多项式在末端同时匹配函数值i
(k)
和其导数该多项式在t=0时的值是bio预测:
[0163][0164]
图19示出了双向光流(bio)方法中的示例光流轨迹。这里,τ0和τ1表示到参考帧的距离。基于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)。
[0165]
通过最小化a点和b点之间的值的差δ来确定运动矢量场(v
x
,vy)。图20a-20b示出了运动轨迹与参考帧平面相交的示例。对δ,模型仅使用局部泰勒展开的第一个线性项:
[0166][0167]
上述等式中的所有值取决于样本位置,表示为(i

,j

)。假设在局部周围区域的运动是一致的,那么δ可以在以当前预测点(i,j)为中心的(2m 1)x(2m 1)方形窗口ω内最小化,其中m等于2:
[0168][0169]
对于这个优化问题,jem使用简化方法,首先在垂直方向上最小化,然后在水平方向最小化。结果如下:
[0170][0171][0172]
其中,
[0173][0174]
为了避免被零除或很小的值除,可在式(9)和式(10)中引入正则化参数r和m。
[0175]
r=500
·4d-8
ꢀꢀꢀ
等式(12)
[0176]
m=700
·4d-8
ꢀꢀꢀ
等式(13)
[0177]
这里,d是视频样本的位深度。
[0178]
为了使bio的内存访问与常规双向预测运动补偿相同,计算当前块内位置的所有预测和梯度值i
(k)
,图20a示出了块2200外部的访问位置示例。如图20a所示,在等式(11)中,以预测区块边界上当前预测点为中心的(2m 1)
×
(2m 1)的方形窗口ω需要访问区块外的位置。在jem中,块外的值i
(k)
,设置为等于块内最近的可用值。例如,这可以实现为填充区域2201,如图20b所示。
[0179]
使用bio,可以对每个样本的运动场进行细化。为了降低计算复杂度,在jem中采用了基于块的bio。运动细化可以基于4x4块计算。在基于块的bio中,可以对4x4块中所有样本的等式(11)中的sn值进行聚合,然后将sn的聚合值用于推导4x4块的bio运动矢量偏移。更具体地说,下面的等式可以用于基于块的bio推导:
[0180][0181]
这里,bk表示属于预测块的第k个4x4块的样本组。等式(9)和等式(10)中的sn替换
为((s
n,bk
)》》4)以推导相关联的运动矢量偏移。
[0182]
在某些情况下,由于噪声或不规则运动,bio的mv团可能不可靠。因此,在bio中,mv团的大小被固定到一个阈值。该阈值是基于当前图片的参考图片是否全部来自一个方向确定的。例如,如果当前图片的所有参考图片都来自一个方向,该阈值的值被设置为12
×214-d
,否则其被设置为12
×213-d

[0183]
可以使用与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和信号替换biofilters的插值滤波器的长度可以更短(例如,6-tap),以保持合理的复杂度。表1示出了可用在bio中于计算块运动矢量不同分数位置梯度的示例滤波器。表2示出了可用于在bio中预测信号生成的插值示例滤波器。
[0184]
表1bio中用于梯度计算的示例滤波器
[0185]
分数像素位置梯度的插值滤波器(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}
[0186]
表2bio中用于预测信号生成的示例插值滤波器
[0187]
分数像素位置用于预测信号的插值滤波器(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}
[0188]
在jem中,当两个预测来自不同的参考图片时,bio可应用于所有的双向预测块。当为cu启用局部照明补偿(lic)时,可以禁用bio。
[0189]
在一些实施例中,在正常mc处理之后将obmc应用于块。为了降低计算复杂度,在obmc处理期间可能不应用bio。这意味着在obmc处理期间,当使用自己的mv时,将bio应用于块的mc处理,而当使用相邻块的mv时,bio不应用于块的mc处理。
[0190]
2.7解码器侧运动矢量优化(dmvr)的示例
[0191]
在双向预测操作中,对于一个块区域的预测,将两个分别由列表0的运动矢量(mv)和列表1的mv形成的预测块组合形成单个预测信号。在解码器侧运动矢量细化(dmvr)方法中,通过双边模板匹配处理进一步细化双向预测的两个运动矢量。解码器中应用的双边模板匹配用于在双边模板和参考图片中的重建样本之间执行基于失真的搜索,以便在不传输附加运动信息的情况下获得细化的mv。
[0192]
在dmvr中,双边模板被生成为两个预测块的加权组合(即平均),其中两个预测块分别来自列表0的初始mv0和列表1的mv1,如图21所示。模板匹配操作包括计算生成的模板与参考图片中的样本区域(在初始预测块周围)之间的成本度量。对于两个参考图片中的每一个,产生最小模板成本的mv被视为该列表的更新mv,以替换原始mv。在jem中,为每个列表搜索九个mv候选。九个mv候选包括原始mv和8个周边mv,这八个周边mv在水平或垂直方向上或两者与原始mv具有一个亮度样本的偏移。最后,使用图21所示的两个新的mv(即mv0

和mv1

)生成最终的双向预测结果。绝对差异之和(sad)被用作成本度量。
[0193]
在不传输附加语法元素的情况下,将dmvr应用于双向预测的merge模式,其中一个mv来自过去的参考图片,并且另一个mv来自未来的参考图片。在jem中,当为cu启用lic、仿射运动、fruc或子cu merge候选时,不应用dmvr。
[0194]
3.使用非对称加权的相关方法的实施例
[0195]
在现有的实现中,如等式(15)所示,提出了用于帧间编解码的广义双向预测(g双向):
[0196]
p[x]=(1-w)
·
p0[x v0] w
·
p1[x vi]
ꢀꢀꢀ
等式(15)
[0197]
这里,w是权重值,x是当前块的坐标,p0和p1分别是列表0和列表1中的参考图片,并且v0和v1是p0和p1中的运动矢量。g双向模式下的候选权重集包括总共7个权重(w={-1/4,1/4,3/8,1/2,5/8,3/4,5/4}),包括对应于传统的双向预测模式的0.5。指示候选权重集中权重值的条目位置的指数被发信令。每个cu最多有一个指数被发信令,并且对应的权重值在该cu中的所有pu和所有颜色分量中被共享。
[0198]
为了减少指数的信令开销,每个编码单元(cu)最多分配一个w,在其所有的双向预测单元(pu)中共享。如果cu包含至少一个需要对运动矢量差(mvd)发信令的双向预测pu,则对指数w显式地发信令。否则,不需要对指数发信令。然后,应用以下规则确定cu中每个pu的权重值:
[0199]
‑‑
对于每个需要信令mvd的双向预测pu(即正常预测模式和仿射预测模式),其权重值设置为等于显式发信令的w。
[0200]
‑‑
对于每个使用merge模式、高级时域运动矢量预测或仿射merge模式编码的双向预测pu,直接从用于相关联的merge候选的权重值中推断出其权重值w。
[0201]
‑‑
对于其余的双向预测pu,它们的权重值设置为等于默认的权重值,即0.5。
[0202]
然而,该方法在amvp模式下对不同的权值进行复杂的选择,并且与传统方法相比编码时间增加到了300%。此外,信令成本可能高,因为它为amvp情形显式地对权重指数发信令。
[0203]
4.非对称加权双向预测merge的示例方法
[0204]
图22示出了使用非对称加权双向预测merge进行视频解码的示例性方法2200的流程图。方法2200包括接收被帧间编解码的视频数据的当前块。当前块可以从通过网络连接接收的视频比特流中接收,也可以从本地存储的压缩视频文件中接收。例如,解码过程可以对视频比特流执行解析,以在解析过程中到达与当前块对应的位。
[0205]
方法2200包括在步骤2210处,为生成当前视频块,基于第一参考merge候选和第二参考merge候选的非对称加权构建merge候选。在一些实施例中,非对称加权包括第一权重和与第一权重不同的第二权重。在一些实施例中,merge候选指示运动矢量和对应的参考图片。在一些实施例中,用于视频解码的非对称加权是基于如下所述的等式(16)中的模型。
[0206]
方法2200包括在步骤2220处,在构建之后将merge候选插入到merge候选列表中。
[0207]
在一些其他实现中,方法2200可能包括从至少merge候选列表中推导出运动信息。例如,运动信息可以包括运动矢量(和对应的参考帧)。
[0208]
方法2200包括在步骤2230处,基于merge候选列表生成当前块。在公开技术的一些实施例中,该生成可以包括基于运动信息、运动矢量和对应的参考图片解码当前块。解码过程可以使用运动补偿,其中当前块的像素值是基于运动矢量和参考图片对应块的像素值计算的。
[0209]
图23示出了使用非对称加权双向预测merge的视频编码示例性方法的流程图。方法2300包括在步骤2310处,基于第一参考merge候选和第二参考merge候选的非对称加权构建merge候选。在一些实施例中,非对称加权包括第一权重和与第一权重不同的第二权重。在一些实施例中,用于视频编码的非对称加权是基于如下所述的等式(16)中的模型。
[0210]
方法2300包括在步骤2320处,在构建之后将merge候选插入到merge候选列表中。
[0211]
方法2300包括在步骤2330处,从至少merge候选列表中推导出运动信息。
[0212]
方法2300包括在步骤2340处,基于运动信息编码被帧间编解码的视频数据的当前块。
[0213]
方法2200和2300可进一步包括第一参考merge候选和第二参考merge候选的非对称加权的不同实施例。在一些实施例中,第一参考merge候选和第二参考merge候选都可以是双向候选,这样每个候选都可以包括两个运动矢量和对应的运动信息。在其他实施例中,只有第一或第二个参考merge候选中的一个可以是双向候选。
[0214]
在一些实施例中,merge候选基于来自第一参考merge候选的两个不同运动矢量(和对应运动信息)的非对称加权。在其他实施例中,merge候选基于来自第二参考merge候选的两个不同运动矢量的非对称加权。在其他实施例中,merge候选基于来自第一和第二参考merge候选的运动矢量的非对称加权。
[0215]
分别在图22和图23中描述的方法2200和2300可进一步包括使用以下模型进行双向预测:
[0216]
p[x]=a
·
p0[x v0] b
·
p1[x vi]
ꢀꢀꢀ
等式(16)
[0217]
这里,pi[x vi]是参考图片列表i中与位于x处的像素相关联的预测值,并且如果a等于b,则将权重(a,b)定义为对称,否则(a不等于b),则将权重定义为非对称。在一些实施例中,a b=1。
[0218]
在一些实施例中,非对称加权双向预测merge候选可以推导出与现有设计(如hevc和jem等)中的merge候选相同的运动信息,包括预测方向、参考指数、运动矢量(以及权重,如果启用了通用双向预测工具)。然而,与现有的应用对称加权双向预测的merge候选不同,在merge候选列表的构建处理中使用非对称加权双向预测(如果未启用gbi),或者通过应用不同的非对称加权考虑更多的merge候选(如果启用gbi)。
[0219]
下面的例子说明了使用非对称加权生成双向预测merge候选的各种实现和运动补偿算法。下文所述的示例可并入上述方法的上下文中,例如方法2200及2300,其可分别在解码器及编码器上实施。
[0220]
示例1非对称加权可以应用于一个、部分或所有现有的merge候选(或未来新设计的merge候选)。例如,空间merge候选、时域merge候选、附加merge候选、atmvp、stmvp、pmmvd等可用于生成非对称加权双向预测merge候选,这些候选将进一步插入merge列表中。
[0221]
(a)在一个示例中,可以将非对称加权应用于前n个可用的双向merge候选,其中n是一个正整数。
[0222]
(b)在一个示例中,非对称加权只能应用于在当前图片与其两个参考图片之间具有非对称图片顺序计数(poc)(顺序图片)差异的n个双向merge候选。将abspocdiff(x,y)表示为计算图片x和y之间绝对poc差异的函数,将p0和p1表示为分别来自列表0和列表1的参考图片,并且将pc表示为当前图片。如果abspocdiff(p0,pc)不等于abspocdiff(p1,pc),则将poc差异定义为非对称。
[0223]
(c)在一个示例中,只能选择某些类型的merge候选(例如高级时域运动矢量预测或仿射merge模式)来应用非对称加权。
[0224]
(d)在一个示例中,可以通过将非对称加权应用于具有对称权重的merge候选来导出新的merge候选。如果用现有方法推导的merge候选已经具有非对称加权,诸如具有从相邻块继承的权重的空间merge候选,则不会选择此空间merge候选应用非对称加权。或者,在另一方面,可以通过将不同的非对称加权应用于具有非对称加权的merge候选来导出新的merge候选,诸如用现有方法推导出的空间merge候选或时域merge候选。
[0225]
(e)当生成非对称加权双向预测merge候选时,等式(16)中的权重值w受到如下限制:
[0226]
(i)当abspocdiff(pc,p0)《abspocdiff(pc,p1)时,只能将大于1/2的权重值分配给a。
[0227]
(ii)当abspocdiff(pc,p0)》abspocdiff(pc,p1)时,只能将大于1/2的权重值分配给b。
[0228]
示例2可以将一个或一组非对称加权应用于选定的n个双向merge候选。
[0229]
(a)在一个示例中,个别的非对称(a,b)被应用于n个merge候选中的每一个。不同的(a,b)可以被应用于不同的merge候选。
[0230]
(b)在一个示例中,几个非对称的(a,b)可以被应用于n个merge候选中的每一个。一些候选可能共享相同的(a,b)。
[0231]
(c)在一个示例中,几个非对称的(a,b)可以被应用于前m(m《n)个merge候选,并且只有一个非对称的(a,b)应用于剩余的n

m个merge候选。例如,m设置为等于1。
[0232]
示例3非对称加权集可以在vps(视频参数集)、sps(序列参数集)、pps(图片参数集)或条带报头段中向解码器发信令。或者,非对称加权可以隐式地固定在编码器和解码器中。
[0233]
(a)在一个示例中,a的非对称加权包括{1/16,2/16,3/16,4/16,5/16,6/16,7/16,9/16,10/16,11/16,12/16,13/16,14/16,15/16}。
[0234]
(b)在一个示例中,a的非对称重量包括{1/8,2/8,3/8,5/8,6/8,7/8}。
[0235]
(c)在更一般的情况下,a的非对称加权包括{1/2n,2/2n,

,2
n-2/2n,2
n-1/2n},其中n是一个正整数,如2、3、4和5。
[0236]
(d)在一个示例中,a和b的非对称加权也可以为负数。
[0237]
示例4。将非对称加权双向预测merge候选插入merge列表时遵循以下规则:
[0238]
(a)在一个示例中,相同的规则可以应用于一个条带/片/图片/序列中的所有块。或者,顺序可以从块到块进行调整。
[0239]
(b)如果非对称加权双向预测merge候选a是从对称加权双向预测merge候选b生成的,则在merge候选列表中的b之后(可能不直接在b之后)插入a。
[0240]
(c)假设非对称加权双向预测merge候选a1和a2分别从对称加权双向预测merge候选b1和b2生成,如果在merge列表中b1在b2之前,那么在merge列表中a1也应该a2之前(可能不直接在a2之前),反之亦然。
[0241]
(d)如果从一个对称加权双向预测merge候选生成多个具有权重(a1,b1),(a2,b2),

,(ana,bna)的非对称加权双向预测merge候选,则按给定顺序插入,例如按abs(ai

1/2)的升序插入,其中abs(x)计算x的绝对值,并且1《=i《=na。如果abs(ai

1/2)等于abs(aj

1/2),则它们可以按任意顺序插入。
[0242]
(e)在一个示例中,刚好在第一个双向预测merge候选之后插入两个非对称加权双向预测merge候选,其权重值为(1/4,3/4)和(3/4,1/4)。
[0243]
(f)在一个示例中,新生成的加权双向预测merge候选可以添加到用现有方法推导出的某个merge候选之后,例如刚好在tmvp或atmvp或stmvp或者联合双向预测merge候选之后添加。
[0244]
(g)可以首先构建两个merge候选列表,一个是使用现有方法,另一个是通过对第一个列表或第一个列表中的部分merge候选应用非对称加权获得的。在这种情况下,可以为不同的块调用两个候选列表的不同顺序。
[0245]
示例5对使用双向预测merge模式编码的块存储权重值,并且可以由后面编码的块重用。
[0246]
(a)在一个示例中,空间/时域merge候选的非对称加权值可以从merge列表构建过程中对应的空间/时间相邻块的权重值继承。在这种情况下,这些merge候选本身就是非对称加权的双向预测merge候选。在一个例子中,这些候选不再用于生成新的非对称加权双向预测merge候选。只有对称加权才能用于生成非对称加权merge候选。或者,这些候选也可用于生成新的非对称加权双向预测merge候选,但具有不同的加权值。
[0247]
(b)在一个示例中,在merge列表构建过程中,不继承非对称的权重值。
[0248]
(c)当启用通用双向预测工具时,上述方法也可适用。
[0249]
示例6对于非对称加权双向预测merge候选,最大merge列表长度增加l,其中l大于等于0。
[0250]
(a)如果最多可以将t个非对称加权双向预测merge候选添加到merge列表中,则l《=t。
[0251]
示例7非对称加权双向预测merge候选与现有编码工具的融合。
[0252]
(a)当应用加权预测、局部照明补偿或双向光流时,非对称加权双向预测merge候选不会插入到merge候选列表中。
[0253]
(b)非对称加权双向预测merge候选禁用dmvr。
[0254]
(c)或者,为非对称加权双向预测merge候选启用dmvr,并且如等式(16)所示生成模板p。
[0255]
(i)在使用细化的运动信息(在每个参考列表中)进行运动细化和运动补偿后,对称加权平均适用于最终的双向预测。
[0256]
(ii)在使用细化的运动信息(在每个参考列表中)进行运动细化和运动补偿后,非对称加权平均(与非对称加权双向预测merge候选相同)适用于最终的双向预测。
[0257]
示例8是否以及如何将非对称加权双向预测merge候选插入merge候选列表可能取决于当前块的大小和/或形状、和/或编码块信息。
[0258]
(a)在一个示例中,假设当前块大小为m
×
n,如果m
×
n《=t,则非对称加权双向预测merge候选不会插入到merge候选列表中;或者,如果m
×
n》=t,则非对称加权双向预测merge候选不会插入到merge候选列表中。t是例如32或64的整数。
[0259]
(b)或者,它只能在m等于n或m不等于n时适用。
[0260]
(c)或者,它可以取决于块模式,例如非仿射模式。
[0261]
(d)或者,它也可能取决于从现有设计中得出的merge候选的总数(不包括组合的双向预测merge候选和/或零运动merge候选)。如果达到了允许的merge候选的总数,则不需要添加非对称加权的双向预测merge候选。
[0262]
示例9非对称加权双向预测可以应用于所有分量,包括y,cb,cr或r,g,b。或者只适用于一个或一些分量。例如,它仅应用于y分量。
[0263]
示例10如果满足以下一个或多个条件,具有加权值(a1,b1)的非对称加权双向预测merge候选比具有相同运动信息(关于参考图片r0的mv0,关于参考图片r1的mv1)但不同的加权值(a2,b2)(且a1

b1》a2

b2)的非对称加权双向预测merge候选具有更高的优先级(或者说,插入到更靠近merge候选列表前面的merge候选列表中)。
[0264]
(a)r0的量化参数(qp)低于r1的qp
[0265]
(b)r0比r1更接近当前图片
[0266]
(c)mv0指向的参考块的qp低于mv1指向的参考块的qp
[0267]
示例11应当注意的是,所提出的方法也适用于多重假设运动预测。
[0268]
(a)在一个示例中,对于多个预测块,可以对每个预测块应用不同的权重。
[0269]
(b)或者,如果是双向预测,则对于每个参考图片列表,可以首先获取两个临时预测块(可以由与一个参考图片列表相关联多个参考块生成),并且可以进一步应用两个权重。
[0270]
(c)或者,如果是单向预测但是来自两个或两个以上的参考块,也可以应用非对称加权。
[0271]
示例12merge模式下的修剪处理除了考虑运动信息外,还可以考虑权重。
[0272]
5.公开技术的示例实施
[0273]
图24是说明可用于实现本公开技术的各个部分的计算机系统或其他控制设备的结构的示例的框图,包括(但不限于)方法2200和2300。在图24中,计算机系统2400包括通过互连2425连接的一个或多个处理器2405和存储器2410。互连2425可以表示由适当的桥、适配器或控制器连接的任何一条或多条单独的物理总线、点对点连接或两者。因此,互连2425可以包括例如系统总线、外围组件互连(pci)总线、超传输或工业标准体系结构(isa)总线、小型计算机系统接口(scsi)总线、通用串行总线(usb)、iic(i2c)总线或电气与电子工程师协会(ieee)标准674总线(有时被称为“火线”)。
[0274]
处理器2405可以包括中央处理器(cpu),来控制例如主机的整体操作。在一些实施例中,处理器2405通过执行存储在存储器2410中的软件或固件来实现这一点。处理器2405可以是或可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(dsp)、可编程控制器、专用集成电路(asic)、可编程逻辑器件(pld)等,或这些器件的组合。
[0275]
存储器2410可以是或包括计算机系统的主存储器。存储器2410表示任何适当形式的随机存取存储器(ram)、只读存储器(rom)、闪存等,或这些设备的组合。在使用中,存储器2410除其他外可包含一组机器指令,当处理器2405执行该指令时,使处理器2405执行操作以实现本公开技术的实施例。
[0276]
通过互连2425连接到处理器2405的还有(可选的)网络适配器2415。网络适配器2415为计算机系统2400提供与远程设备(诸如存储客户机和/或其他存储服务器)通信的能力,并且可以是例如以太网适配器或光纤通道适配器。
[0277]
图25示出了可以用于实施本公开技术的各个部分的移动设备2500的示例实施例的框图,包括(但不限于)方法2200和2300。移动设备2500可以是笔记本电脑、智能手机、平板电脑、摄像机或其他能够处理视频的设备。移动设备2500包括处理器或控制器2501来处理数据,以及与处理器2501通信的存储器2502来存储和/或缓冲数据。例如,处理器2501可以包括中央处理器(cpu)或微控制器单元(mcu)。在一些实现中,处理器2501可以包括现场可编程门阵列(fpga)。在一些实现中,移动设备2500包括或与图形处理单元(gpu)、视频处理单元(vpu)和/或无线通信单元通信,以实现智能手机设备的各种视觉和/或通信数据处理功能。例如,存储器2502可以包括并存储处理器可执行代码,当处理器2501执行该代码时,将移动设备2500配置为执行各种操作,例如接收信息、命令和/或数据、处理信息和数据,以及将处理过的信息/数据发送或提供给另一个数据设备,诸如执行器或外部显示器。
[0278]
为了支持移动设备2500的各种功能,存储器2502可以存储信息和数据,诸如指令、软件、值、图像以及处理器2501处理或引用的其他数据。例如,可以使用各种类型的随机存取存储器(ram)设备、只读存储器(rom)设备、闪存设备和其他合适的存储介质来实现存储器2502的存储功能。在一些实现中,移动设备2500包括输入/输出(i/o)单元2503,来将处理器2501和/或内存2502与其他模块、单元或设备进行接口。例如,i/o单元2503可以与处理器2501和内存2502进行接口,以利用与典型数据通信标准兼容的各种无线接口,例如,在云中的一台或多台计算机和用户设备之间。在一些实现中,移动设备2500可以通过i/o单元2503
使用有线连接与其他设备进行接口。移动设备2500还可以与其他外部接口(例如数据存储器)和/或可视或音频显示设备2504连接,以检索和传输可由处理器处理、由存储器存储或由显示设备2504或外部设备的输出单元上显示的数据和信息。例如,显示设备2504可以根据所公开的技术显示包含块(cu、pu或tu)的视频帧,其中该块基于是否使用运动补偿算法编码该块来应用块内复制。
[0279]
在一些实施例中,视频解码器装置可以实现视频解码的方法,其中使用本文所述的非对称加权双向预测merge进行视频解码。该方法可类似于上述方法2200。
[0280]
在一些实施例中,视频解码的解码器端方法可以使用非对称加权双向预测merge并通过下述方法来提高视频质量:接收被帧间编解码的视频数据的当前块;基于第一参考merge候选和第二参考merge候选的非对称加权构建merge候选,其中非对称加权包括第一权重和与第一权重不同的第二权重;在上述构建之后将merge候选插入到merge候选列表中;从至少merge候选列表导出运动信息;并且基于运动信息、运动矢量和对应的参考图片解码当前块。
[0281]
在一些实施例中,视频解码方法可以使用如关于图24和图25所述的在硬件平台上实现的解码装置来实现。在一些实施例中,视频解码操作可以由视频编码器在编码过程中执行,在编码过程中,视频编码器如解码器一样确定重构的视频图像。
[0282]
从上述来看,应当理解的是,为了便于说明,本发明公开的技术的具体实施例已经在本文中进行了描述,但是可以在不偏离本发明范围的情况下进行各种修改。因此,除了的之外,本发明公开的技术不限于权利要求的限定。
[0283]
本专利文件中描述的主题的实现和功能操作可以在各种系统、数字电子电路、或计算机软件、固件或硬件中实现,包括本说明书中所公开的结构及其结构等效体,或其中一个或多个的组合。本说明说中描述的主题的实现可以实现为一个或多个计算机程序产品,即一个或多个编码在有形的且非易失的计算机可读介质上的计算机程序指令的模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或其中多个的组合。术语“数据处理单元”或“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。
[0284]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
[0285]
本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电
路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。
[0286]
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
[0287]
意图在于本说明书和附图仅被视为示例性的,其中示例性意味着示例。如本文所用,“或”旨在包括“和/或”,除非上下文另有明确说明。
[0288]
虽然本专利文件包含许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中移除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。
[0289]
同样,尽管图纸中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。
[0290]
仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中描述和说明的内容做出。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献