不同解码器侧运动
矢量推导模式之间的交互
1.本分案申请是申请日为2019年8月5日、申请号为201910718733.1、发明名称为“不同解码器侧运动矢量推导模式之间的交互”的分案申请。
2.相关申请的交叉引用
3.根据适用的专利法和/或巴黎公约的规定,本技术及时要求于2018年8月4日提交的国际专利申请号pct/cn2018/098691、2018年10月6日提交的国际专利申请号pct/cn2018/109250的优先权和利益。将国际专利申请号pct/cn2018/098691和pct/cn2018/109250的全部公开以引用方式并入本文,作为本技术公开的一部分。
技术领域
4.本专利文档涉及视频编码技术、设备和系统。
背景技术:
5.尽管视频压缩有所进步,数字视频在互联网和其他数字通信网络上仍占最大的带宽使用量。随着能够接收和显示视频的连接用户设备的数量增加,预计数字视频使用所需的带宽将继续增长。
技术实现要素:
6.描述了与数字视频编码有关的设备、系统和
方法,并且具体地,描述了基于根据两步帧间预测生成的更新的运动矢量的运动细化。所描述的方法可以应用于现有视频编码标准(例如,高效视频编码(hevc))和未来视频编码标准或视频编解码器。
7.在一个代表性方面,提供了一种视频处理方法,包括:确定当前块的原始运动信息;将原始运动信息的原始运动矢量和基于原始运动矢量推导的推导运动矢量缩放到相同的目标精度;从缩放的原始和推导的运动矢量生成更新的运动矢量;以及基于更新的运动矢量,执行当前块和包括当前块的视频的比特流表示之间的转换。
8.在另一个代表性方面,提供了一种视频处理方法,包括:确定当前块的原始运动信息;基于细化方法更新当前块的原始运动信息的原始运动矢量;将更新的运动矢量裁剪到一个范围内;以及基于裁剪的更新的运动矢量,执行当前块和包括当前块的视频的比特流表示之间的转换。
9.在又一个代表性方面,提供了一种视频处理方法,包括:确定与当前块相关联的原始运动信息;基于特定预测模式生成更新的运动信息;以及基于更新的运动信息,执行当前块与包括当前块的视频数据的比特流表示之间的转换,其中,特定预测模式包括双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术或模板匹配技术中的一个或多个。
10.在又一个代表性方面,提供了一种视频处理方法,包括:从运动矢量差(mvd)精度集确定用仿射模式处理的当前块的mvd精度;基于所确定的mvd精度,执行当前块与包括当前块的视频的比特流表示之间的转换。
11.在又一个代表性方面,提供了一种视频处理方法,包括:确定与当前块相关联的未更新的运动信息;基于多个解码器侧运动矢量推导(dmvd)方法更新未更新的运动信息,以生成当前块的更新的运动信息;以及基于更新的运动信息,执行当前块与包括当前块的视频的比特流表示之间的转换。
12.在又一个代表性方面,所公开的技术可以用于提供用于视频编码的方法。该方法包括接收视频数据的当前块的比特流表示,分别基于第一缩放运动矢量与第一和第二缩放参考运动矢量的加权和来生成更新的第一和第二参考运动矢量,其中,基于来自第一参考块的第一参考运动矢量和来自第二参考块的第二参考运动矢量推导第一运动矢量,其中当前块与第一和第二参考块相关联,其中通过将第一运动矢量缩放到目标精度来生成第一缩放运动矢量,并且其中通过分别将第一和第二参考运动矢量缩放到目标精度来生成第一和第二缩放参考运动矢量,以及基于更新的第一和第二参考运动矢量处理比特流表示以生成当前块。
13.在又一个代表性方面,所公开的技术可以用于提供用于视频编码的方法。该方法包括基于与当前块相关联的第一运动信息为当前块生成中间预测,将第一运动信息更新为第二运动信息,以及基于中间预测或第二运动信息生成当前块的最终预测。
14.在又一个代表性方面,所公开的技术可以用于提供用于视频编码的方法。该方法包括接收视频数据的当前块的比特流表示,基于与当前块相关联的运动信息生成中间运动信息,分别基于第一和第二参考运动矢量生成更新的第一和第二参考运动矢量,其中,当前块与第一和第二参考块相关联,并且其中第一和第二参考运动矢量分别与第一和第二参考块相关联,以及基于中间运动信息或更新的第一和第二参考运动矢量处理比特流表示以生成当前块。
15.在又一个代表性方面,所公开的技术可以用于提供用于视频编码的方法。该方法包括基于与当前块相关联的第一运动信息为当前块生成中间预测,将第一运动信息更新为第二运动信息,以及基于中间预测或第二运动信息生成当前块的最终预测。
16.在又一个代表性方面,所公开的技术可以用于提供用于视频编码的方法。该方法包括接收视频数据的当前块的比特流表示,基于与当前块相关联的运动信息生成中间运动信息,分别基于第一和第二参考运动矢量生成更新的第一和第二参考运动矢量,其中,当前块与第一和第二参考块相关联,并且其中第一和第二参考运动矢量分别与第一和第二参考块相关联,以及基于中间运动信息或更新的第一和第二参考运动矢量处理比特流表示以生成当前块。
17.在又一个代表性方面,所公开的技术可以用于提供用于视频编码的方法。该方法包括基于与当前块相关联的第一运动信息为当前块生成中间预测,将第一运动信息更新为第二运动信息,以及基于中间预测或第二运动信息生成当前块的最终预测。
18.在又一个代表性方面,所公开的技术可以用于提供用于视频编码的方法。该方法包括接收视频数据的当前块的比特流表示,基于与当前块相关联的运动信息生成中间运动信息,分别基于第一和第二参考运动矢量生成更新的第一和第二参考运动矢量,其中当前块与第一和第二参考块相关联,并且其中第一和第二参考运动矢量分别与第一和第二参考块相关联,并且基于中间运动信息或更新的第一和第二参考运动矢量处理比特流表示以生成当前块。
19.在又一个代表性方面,所公开的技术可以用于提供用于视频编码的方法,该方法包括通过修改与当前块相关联的参考块,对于当前块的比特流表示生成更新的参考块;基于更新的参考块,计算用于双向光流(bio)运动细化的时间梯度;以及基于时间梯度,在比特流表示和当前块之间执行包括bio运动细化的转换。
20.在又一个代表性方面,所公开的技术可以用于提供用于视频编码的方法,该方法包括对于当前块的比特流表示,生成用于双向光流(bio)运动细化的时间梯度;通过从时间梯度中减去第一均值和第二均值的差来生成更新的时间梯度,其中第一均值是第一参考块的均值,其中第二均值是第二参考块的均值,并且其中第一和第二参考块与当前块相关联;以及基于更新的时间梯度,在比特流表示和当前块之间执行包括bio运动细化的转换。
21.在又一代表性方面,上述方法以处理器可执行代码的形式体现并存储在计算机可读程序介质中。
22.在又一代表性方面,公开了一种配置或可操作以执行上述方法的设备。该设备可以包括被编程为实现该方法的处理器。
23.在又一代表性方面,视频解码器装置可实现如本文中所描述的方法。
24.在附图、说明书和权利要求中更详细地描述了所公开技术的上述和其他方面和特征。
附图说明
25.图1示出了建构merge候选列表的
示例。
26.图2示出了空间候选的位置的示例。
27.图3示出了经受空间merge候选的冗余校验的候选对的示例。
28.图4a和4b示出了基于当前块的尺寸和形状的第二预测单元(pu)的位置的示例。
29.图5示出了用于时间merge候选的运动矢量缩放的示例。
30.图6示出了时间merge候选的候选位置的示例。
31.图7示出了生成组合的双向预测merge候选的示例。
32.图8示出了建构运动矢量预测候选的示例。
33.图9示出了用于空间运动矢量候选的运动矢量缩放的示例。
34.图10示出了使用用于编码单元(cu)的可选时间运动矢量预测(atmvp)算法的运动预测的示例。
35.图11示出了具有由空间-时间运动矢量预测(stmvp)算法使用的子块和相邻块的编码单元(cu)的示例。
36.图12a和12b示出了当使用重叠块运动补偿(obmc)算法时子块的示例快照。
37.图13示出了用于推导局部照明补偿(lic)算法的参数的相邻样本的示例。
38.图14示出了简化的仿射运动模型的示例。
39.图15示出了每个子块的仿射运动矢量场(mvf)的示例。
40.图16示出了af_inter仿射运动模式的运动矢量预测(mvp)的示例。
41.图17a和17b示出了af_merge仿射运动模式的示例候选。
42.图18示出了模式匹配运动矢量推导(pmmvd)模式中的双边匹配的示例,其是基于帧速率上转换(fruc)算法的特殊merge模式。
43.图19示出了fruc算法中的模板匹配的示例。
44.图20示出了fruc算法中的单边运动估计的示例。
45.图21示出了由双向光流(bio)算法使用的光流轨迹的示例。
46.图22a和22b示出了使用没有块扩展的双向光流(bio)算法的示例快照。
47.图23示出了基于双边模板匹配的解码器侧运动矢量细化(dmvr)算法的示例。
48.图24示出了在变换系数上下文建模中使用的模板定义的示例。
49.图25示出了运动矢量缩放的不同示例。
50.图26a和26b示出pu/cu中的内部和边界子块的示例。
51.图27示出了根据当前公开的技术的用于视频编码的示例方法的流程图。
52.图28示出了根据当前公开的技术的用于视频编码的另一示例方法的流程图。
53.图29示出了根据当前公开的技术的用于视频编码的另一示例方法的流程图。
54.图30示出了根据当前公开的技术的用于视频编码的另一示例方法的流程图。
55.图31示出了根据当前公开的技术的用于视频编码的另一示例方法的流程图。
56.图32示出了在基于双向光流的视频编码中推导运动矢量的示例。
57.图33示出了根据当前公开的技术的用于视频编码的另一示例方法的流程图。
58.图34示出了根据当前公开的技术的用于视频编码的另一示例方法的流程图。
59.图35示出了根据当前公开的技术的用于视频编码的另一示例方法的流程图。
60.图36示出了根据当前公开的技术的用于视频编码的另一示例方法的流程图。
61.图37是用于实现本文档中描述的视觉媒体解码或视觉媒体编码技术的硬件平台的示例的框图。
62.图38示出了根据当前公开的技术的用于视频处理的另一示例方法的流程图。
63.图39示出了根据当前公开的技术的用于视频处理的另一示例方法的流程图。
64.图40示出了根据当前公开的技术的用于视频处理的另一示例方法的流程图。
65.图41示出了根据当前公开的技术的用于视频处理的另一示例方法的流程图。
66.图42示出了根据当前公开的技术的用于视频处理的另一示例方法的流程图。
具体实施方式
67.由于对更高分辨率视频的需求的增加,在现代技术中普遍存在视频编码方法和技术。视频编解码器通常包括压缩或解压缩数字视频的电子电路或软件,并且不断改进以提供更高的编码效率。视频编解码器将未压缩视频转换为压缩格式,反之亦然。视频质量、用于表示视频的数据量(由比特率确定)、编码和解码算法的复杂度、对数据丢失和错误的敏感性、编辑的简易性、随机访问和端到端延迟(迟延)之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如,高效视频编码(hevc)标准(也称为h.265或mpeg-h第2部分)、要完成的通用视频编码标准、或其他当前和/或未来的视频编码标准。
68.所公开的技术的实施例可以应用于现有视频编码标准(例如,hevc、h.265)和未来标准以改进压缩性能。在本文档中使用章节标题以提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实现)限制于仅相应的部分。
69.1.hevc/h.265中的帧间预测的示例
70.多年来,视频编码标准已经显著改进,并且现在部分地提供高编码效率和对更高
分辨率的支持。诸如hevc和h.265的最新标准基于混合视频编码结构,其中利用时间预测加变换编码。
71.1.1.预测模型的示例
72.每个帧间预测的pu(预测单元)具有用于一个或两个参考图片列表的运动参数。在一些实施例中,运动参数包括运动矢量和参考图片索引。在其他实施例中,也可以使用inter_pred_idc来信令通知两个参考图片列表中的一个的使用。在又一其他实施例中,可以将运动矢量明确地编码为相对于预测器的增量。
73.当用跳过模式对cu进行编码时,一个pu与cu相关联,并且不存在显著的残差系数、没有编码的运动矢量增量或参考图片索引。指定merge模式,从而从相邻pu获得当前pu的运动参数,包括空间和时间候选。merge模式可以应用于任何帧间预测的pu,而不仅应用于跳过模式。merge模式的替代是运动参数的显式传输,其中,对于每个pu,明确地用信令通知运动矢量、每个参考图片列表的对应参考图片索引和参考图片列表使用。
74.当信令指示将使用两个参考图片列表中的一个时,从一个样本块产生pu。这被称为“单向预测(uni-prediction)”。单向预测可用于p条带和b条带两者。
75.当信令指示将使用两个参考图片列表时,从两个样本块产生pu。这被称为“双向预测(bi-prediction)”。双向预测仅适用于b条带。
76.1.1.1.1建构用于merge模式的候选的实施例
77.当使用merge模式预测pu时,从比特流解析指向merge候选列表中的条目的索引并将其用于检索运动信息。该列表的建构(construction)可以根据以下步骤顺序进行总结:
78.·
步骤1:原始候选推导
79.о步骤1.1:空间候选推导
80.о步骤1.2:空间候选的冗余校验
81.о步骤1.3:时间候选推导
82.·
步骤2:插入额外的候选
83.о步骤2.1:创建双向预测候选
84.о步骤2.2:插入零运动候选
85.图1示出了基于上面总结的步骤序列建构merge候选列表的示例。对于空间merge候选推导,在位于五个不同位置的候选当中选择最多四个merge候选。对于时间merge候选推导,在两个候选当中选择最多一个merge候选。由于在解码器处假设恒定数量的候选用于每个pu,因此当候选的数量未达到在条带报头中用信令通知的最大merge候选数量(maxnummergecand)时,生成额外的候选。由于候选的数量是恒定的,因此使用截断的一元二值化(truncated unary binarization,tu)来编码最佳merge候选的索引。如果cu的尺寸等于8,则当前cu的所有pu共享单个merge候选列表,其与2n
×
2n预测单元的merge候选列表相同。
86.1.1.2建构空间merge候选
87.在空间merge候选的推导中,在位于图2描绘的位置的候选当中选择最多四个merge候选。推导的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任何pu不可用(例如,因为它属于另一条带或区块)或者是帧内编码时,才考虑位置b2。在添加位置a1处的候选之后,对剩余候选的添加进行冗余校验,其确保具有相同运动信息的候选被排除在列表之外,使
得编码效率提高。为了降低计算复杂度,在所提到的冗余校验中并未考虑所有可能的候选对。相反,仅考虑图3中用箭头连接的对,并且仅在用于冗余校验的对应候选具有不一样的运动信息时,才将候选添加到列表。重复运动信息的另一来源是与不同于2n
×
2n的分区相关联的“第二pu”。作为示例,图4a和4b描绘了分别针对n
×
2n和2n
×
n的情况的第二pu。当当前pu被分区为n
×
2n时,位置a1处的候选不被考虑用于列表建构。在一些实施例中,通过添加该候选可能导致具有相同运动信息的两个预测单元,这对于在编码单元中仅具有一个pu是多余的。类似地,当当前pu被分区为2n
×
n时,不考虑位置b1。
88.1.1.1.3建构时间merge候选
89.在该步骤中,只有一个候选被添加到列表中。具体地,在该时间merge候选的推导中,基于共同定位的pu来推导缩放的运动矢量,该共同定位的pu属于给定参考图片列表内与当前图片具有最小poc差的图片。在条带报头中明确地用信令通知要用于推导共同定位的pu的参考图片列表。
90.图5示出了针对时间merge候选(如虚线)的缩放运动矢量的推导的示例,其是使用poc距离tb和td从共同定位的pu的运动矢量缩放的,其中tb被定义为当前图片的参考图片与当前图片之间的poc差,td被定义为是共同定位的图片的参考图片与共同定位的图片之间的poc差。时间merge候选的参考图片索引被设置为等于零。对于b条带,获得两个运动矢量,一个用于参考图片列表0,另一用于参考图片列表1,并且结合该两个运动矢量以获得双向预测merge候选。
91.在属于参考帧的共同定位的pu(y)中,在候选c0和c1之间选择时间候选的位置,如图6所示。如果位置c0处的pu不可用、是帧内编码的、或者在当前ctu之外,则使用位置c1。否则,位置c0用于时间merge候选的推导。
92.1.1.4建构merge候选的额外类型
93.除了空-时merge候选之外,还存在两种额外类型的merge候选:组合的双向预测merge候选和零merge候选。通过利用空-时merge候选来生成组合的双向预测merge候选。组合的双向预测merge候选仅用于b条带。通过将原始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数组合来生成组合的双向预测候选。如果这两个元组提供不同的运动假设,它们将形成一个新的双向预测候选。
94.图7示出了该过程的示例,其中原始列表中的两个候选(左侧的710)中具有mvl0和refidxl0或mvl1和refidxl1,其被用于创建添加到最终列表(右侧)的组合的双向预测merge候选的情况。
95.插入零运动候选以填充merge候选列表中的剩余条目,从而达到maxnummergecand容量。这些候选具有零空间位移和参考图片索引,该参考图片索引从零开始并且每当新的零运动候选被添加到列表时增加。这些候选使用的参考帧的数量是1和2,分别用于单向和双向预测。在一些实施例中,不对这些候选执行冗余校验。
96.1.1.5用于并行处理的运动估计区域的示例
97.为了加速编码处理,可以并行执行运动估计,从而同时推导给定区域内的所有预测单元的运动矢量。从空间邻域推导merge候选可能干扰并行处理,因为一个预测单元直到其相关联的运动估计完成时才能从相邻pu推导运动参数。为了减轻编码效率和处理等待时间之间的折衷,可以定义运动估计区域(motion estimation region,mer),mer的尺寸在图
片参数集(pps)中使用“log2_parallel_merge_level_minus2”语法元素信令通知。当定义mer时,落入同一区域的merge候选被标记为不可用,因此在列表建构中不予考虑。
98.1.2高级运动矢量预测(amvp)的实施例
99.amvp利用运动矢量与相邻pu的时空相关性,其用于运动参数的显式传输。其通过首先校验在时间上相邻的pu位置的上方,左侧的可用性,移除冗余候选并添加零矢量以使候选列表为恒定长度来建构运动矢量候选列表。然后,编码器可以从候选列表中选择最佳预测器,并发送指示所选候选的对应索引。与merge索引信令类似,使用截断的一元来编码最佳运动矢量候选的索引。在这种情况下要编码的最大值是2(参见图8)。在以下部分中,提供了关于运动矢量预测候选的推导过程的细节。
100.1.2.1建构运动矢量预测候选的示例
101.图8总结了运动矢量预测候选的推导过程,并且可以针对每个参考图片列表以索引作为输入来实现。
102.在运动矢量预测中,考虑两种类型的运动矢量候选:空间运动矢量候选和时间运动矢量候选。对于空间运动矢量候选推导,最终基于位于先前在图2中所示的五个不同位置的每个pu的运动矢量推导两个运动矢量候选。
103.对于时间运动矢量候选推导,从两个候选中选择一个运动矢量候选,其是基于两个不同的共同定位的位置推导的。在产生时空候选的第一列表之后,移除列表中的重复的运动矢量候选。如果潜在候选的数量大于2,则从列表中移除相关联的参考图片列表内的其参考图片索引大于1的运动矢量候选。如果空-时运动矢量候选的数量小于2,则将额外的零运动矢量候选添加到列表中。
104.1.2.2建构空间运动矢量候选
105.在空间运动矢量候选的推导中,在五个潜在候选当中考虑最多两个候选,其从位于如先前在图2中所示的位置的pu中推导,那些位置与运动merge的位置相同。将当前pu的左侧的推导顺序定义为a0、a1,以及缩放的a0、缩放的a1。将当前pu的上侧的推导顺序定义为b0、b1、b2,缩放的b0、缩放的b1、缩放的b2。因此,对于每一侧,存在可以用作运动矢量候选的四种情况,其中两种情况不需要使用空间缩放,两种情况使用空间缩放。四种不同的情况总结如下:
106.·
没有空间缩放
[0107]-(1)相同的参考图片列表,以及相同的参考图片索引(相同的poc)
[0108]-(2)不同的参考图片列表,但相同的参考图片(相同的poc)
[0109]
·
空间缩放
[0110]-(3)相同的参考图片列表,但不同的参考图片(不同的poc)
[0111]-(4)不同的参考图片列表,以及不同的参考图片(不同的poc)
[0112]
首先校验无空间缩放的情况,然后校验空间缩放。当poc在相邻pu的参考图片与当前pu的参考图片之间不同而不管参考图片列表时,考虑空间缩放。如果左候选的所有pu都不可用或者是帧内编码的,则允许对上述运动矢量进行缩放以帮助左和上mv候选的并行推导。否则,不允许对上述运动矢量进行空间缩放。
[0113]
如图9的示例所示,对于空间缩放的情况,以与时间缩放类似的方式缩放相邻pu的运动矢量。一个区别是将参考图片列表和当前pu的索引作为输入给出;实际缩放过程与时
间缩放过程相同。
[0114]
1.2.3建构时间运动矢量候选
[0115]
除了参考图片索引推导之外,用于推导时间merge候选的所有过程与用于推导空间运动矢量候选的过程相同(如图6的示例所示)。在一些实施例中,将参考图片索引用信令通知给解码器。
[0116]
2.联合探索模型(jem)中的帧间预测方法示例
[0117]
在一些实施例中,使用称为联合探索模型(jem)的参考软件来探索未来的视频编码技术。在jem中,在若干编码工具中采用基于子块的预测,诸如仿射预测、可选时间运动矢量预测(atmvp)、空-时运动矢量预测(stmvp)、双向光流(bio)、帧速率上转换(fruc、局部自适应运动矢量分辨率(lamvr)、重叠块运动补偿(obmc)、局部照明补偿(lic)和解码器侧运动矢量细化(dmvr)。
[0118]
2.1基于子cu的运动矢量预测的示例
[0119]
在具有四叉树加二叉树(qtbt)的jem中,每个cu可以针对每个预测方向具有至多一组运动参数。在一些实施例中,通过将大cu划分成子cu并且推导大cu的所有子cu的运动信息,在编码器中考虑两个子cu级运动矢量预测方法。可选时间运动矢量预测(alternative temporal motion vector prediction,atmvp)方法允许每个cu从比并置参考图片中的当前cu小的多个块中提取多组运动信息。在空-时运动矢量预测(spatial-temporal motion vector prediction,stmvp)方法中,通过使用时间运动矢量预测值和空间相邻运动矢量来递归地推导子cu的运动矢量。在一些实施例中,为了保留用于子cu运动预测的更准确的运动场,可能禁用参考帧的运动压缩。
[0120]
2.1.1可选时间运动矢量预测(atmvp)的示例
[0121]
在atmvp方法中,通过从小于当前cu的块中提取多组运动信息(包括运动矢量和参考索引)来修改时间运动矢量预测(tmvp)方法。
[0122]
图10示出了cu 1000的atmvp运动预测过程的示例。该atmvp 1000方法以两个步骤预测cu 1000内的子cu 1001的运动矢量。第一步是利用时间矢量识别参考图片1050中的对应块1051。参考图片1050也被称为运动源图片。第二步是将当前cu 1000划分成子cu 1001,并从对应于每个子cu的块中获得运动矢量以及每个子cu的参考索引。
[0123]
在第一步骤中,由当前cu 1000的空间相邻块的运动信息确定参考图片1050和对应块。为了避免相邻块的重复扫描过程,使用当前cu 1000的merge候选列表中的第一merge候选。第一可用运动矢量及其相关联的参考索引被设置为时间矢量和运动源图片的索引。这样,与tmvp相比,可以更准确地识别对应块,其中对应块(有时称为并置块)总是相对于当前cu位于右下或中心位置。
[0124]
在第二步骤中,通过向当前cu的坐标添加时间矢量,通过运动源图片1050中的时间矢量来识别子cu 1051的对应块。对于每个子cu,其对应块(例如,覆盖中心样本的最小运动网格)的运动信息用于推导子cu的运动信息。在识别出对应的n
×
n块的运动信息之后,以与hevc的tmvp相同的方式将其转换为当前子cu的参考索引和运动矢量,其中运动缩放和其他过程也适用。例如,解码器校验是否满足低延迟条件(例如,当前图片的所有参考图片的poc小于当前图片的poc)并且可能使用运动矢量mv
x
(例如,对应于参考图片列表x的运动矢量)来预测每个子cu的运动矢量mvy(例如,其中x等于0或1并且y等于1-x)。
[0125]
2.1.2空-时运动矢量预测(stmvp)的示例
[0126]
在stmvp方法中,按照光栅扫描顺序递归地推导子cu的运动矢量。图11示出了具有四个子块和相邻块的一个cu的示例。考虑包含四个4
×
4子cu a(1101),b(1102),c(1103)和d(1104)的8
×
8cu1100。当前帧中的相邻4
×
4块被标记为a(1111),b(1112),c(1113)和d(1114)。
[0127]
子cu a的运动推导通过识别其两个空间邻居开始。第一邻居是子cu a1101上方的n
×
n块(块c 1103)。如果该块c(1113)不可用或者是帧内编码,则(从块c 1113开始,从左到右)校验子cu a(1101)上方的其他n
×
n个块。第二邻居是子cu a 1101左侧的块(块b 1112)。如果块b(1112)不可用或者是帧内编码,则(从块b 1112开始,从上到下)校验子cu a 1101左侧的其他块。从每个列表的相邻块获得的运动信息被缩放到给定列表的第一参考帧。接下来,通过遵循与hevc中指定的tmvp推导相同的过程来推导子块a1101的时间运动矢量预测(temporal motion vector predictor,tmvp)。提取d 1104处的并置块的运动信息并对应地缩放。最后,在检索和缩放运动信息之后,对于每个参考列表,所有可用的运动矢量被分别平均。平均运动矢量被指定为当前子cu的运动矢量。
[0128]
2.1.3子cu运动预测模式信令的示例
[0129]
在一些实施例中,子cu模式被启用为额外的merge候选,并且不需要额外的语法元素来信令通知该模式。将两个额外的merge候选添加到每个cu的merge候选列表以表示atmvp模式和stmvp模式。在一些实施例中,如果序列参数集指示启用了atmvp和stmvp,则可以最多使用七个merge候选。额外的merge候选的编码逻辑与hm中的merge候选相同,这意味着,对于p或b条带中的每个cu,两个额外的merge候选可能需要另外两个rd校验。在一些实施例中,例如,在jem中,所有merge索引的二进位(bin)都由cabac(基于上下文的自适应二进制算术编码)进行上下文编码。在其他实施例中,例如,在hevc中,仅第一个二进位是上下文编码的,而剩余的二进位是上下文旁路编码的。
[0130]
2.2自适应运动矢量差分分辨率
[0131]
在一些实施例中,当条带报头中的use_integer_mv_flag等于0时,以四分之一亮度样本为单位信令通知(pu的运动矢量和预测运动矢量之间的)运动矢量差(motion vector difference,mvd)。在jem中,引入了局部自适应运动矢量分辨率(locally adaptive motion vector resolution,lamvr)。在jem中,mvd可以以四分之一亮度样本、整数亮度样本或四亮度样本为单位进行编码。在编码单元(cu)级控制mvd分辨率,并且对于具有至少一个非零mvd分量的每个cu有条件地信令通知mvd分辨率标志。
[0132]
对于具有至少一个非零mvd分量的cu,信令通知第一标记以指示在cu中是否使用四分之一亮度样本mv精度。当第一标志(等于1)指示不使用四分之一亮度样本mv精度时,信令通知另一标志以指示是使用整数亮度样本mv精度还是四亮度样本mv精度。
[0133]
当cu的第一mvd分辨率标志为零或未针对cu编码(意味着cu中的所有mvd均为零)时,对于cu使用四分之一亮度样本mv分辨率。当cu使用整数亮度样本mv精度或四亮度样本mv精度时,cu的amvp候选列表中的mvp被取整到对应的精度。
[0134]
在编码器中,cu级rd校验用于确定将哪个mvd分辨率用于cu。即,对于每个mvd分辨率,执行三次cu级rd校验。为了加快编码器速度,在jem中应用以下编码方案。
[0135]
·
在具有正常四分之一亮度样本mvd分辨率的cu的rd校验期间,存储当前cu的运
动信息(整数亮度样本准确度)。存储的运动信息(在取整之后)被用作在rd校验期间针对具有整数亮度样本和4亮度样本mvd分辨率的相同cu的进一步小范围运动矢量细化的起点,使得耗时的运动估计过程不重复三次。
[0136]
·
有条件地调用具有4亮度样本mvd分辨率的cu的rd校验。对于cu,当rd成本整数亮度样本mvd分辨率远大于四分之一亮度样本mvd分辨率时,跳过针对cu的4亮度样本mvd分辨率的rd校验。
[0137]
2.3更高的运动矢量存储准确度的示例
[0138]
在hevc中,运动矢量准确度是四分之一像素(4:2:0视频的四分之一亮度样本和八分之一度样本)。在jem中,内部运动矢量存储和merge候选的准确度增加到1/16像素。更高的运动矢量准确度(1/16像素)用于以跳过/merge模式编码的cu的运动补偿帧间预测。对于使用正常amvp模式编码的cu,使用整数像素或四分之一像素运动。
[0139]
具有与hevc运动补偿插值滤波器相同的滤波器长度和归一化因子的shvc上采样插值滤波器被用作额外的分数像素位置的运动补偿插值滤波器。在jem中度分量运动矢量准确度是1/32样本,通过使用两个相邻的1/16像素分数位置的滤波器的平均来推导1/32像素分数位置的额外的插值滤波器。
[0140]
2.4重叠块运动补偿obmc(overlapped block motion compensation)的示例
[0141]
在jem中,可以使用cu级的语法来打开和关闭obmc。当在jem中使用obmc时,除了cu的右边界和下边界之外,对所有运动补偿(motion compensation,mc)块边界执行obmc。此外,它还应用于亮度和度分量。在jem中,mc块对应于编码块。当用子cu模式(包括子cu merge、仿射和fruc模式)编码cu时,cu的每个子块是mc块。为了以统一的方式处理cu边界,针对所有mc块边界以子块级执行obmc,其中子块尺寸被设置为等于4
×
4,如图12a和12b所示。
[0142]
图12a示出了cu/pu边界处的子块,阴影子块是obmc应用的位置。类似地,图12b示出了atmvp模式中的子块。
[0143]
当obmc应用于当前子块时,除了当前运动矢量之外,四个连接的相邻子块的运动矢量(如果可用且与当前运动矢量不同)也用于推导当前子块的预测块。组合基于多个运动矢量的这些多个预测块以生成当前子块的最终预测信号。
[0144]
将基于相邻子块的运动矢量的预测块表示为pn,其中n指示相邻的上、下、左和右子块的索引,并且将基于当前子块的运动矢量的预测块表示为pc。当pn是基于包含与当前子块相同的运动信息的相邻子块的运动信息时,不从pn执行obmc。否则,将每个pn样本添加到pc中的相同样本中,即将pn的四行/列添加到pc。将加权因子{1/4,1/8,1/16,1/32}用于pn,并且将加权因子{3/4,7/8,15/16,31/32}用于pc。例外是小mc块(即,当编码块的高度或宽度等于4或用子cu模式编码cu时),对其仅将pn的两行/列添加到pc。在这种情况下,将加权因子{1/4,1/8}用于pn,并且将加权因子{3/4,7/8}用于pc。对于基于垂直(水平)相邻子块的运动矢量生成的pn,将pn的相同行(列)中的样本添加到具有相同加权因子的pc。
[0145]
在jem中,对于尺寸小于或等于256个亮度样本的cu,信令通知cu级标志以指示是否对当前cu应用obmc。对于尺寸超过256个亮度样本或未使用amvp模式进行编码的cu,默认应用obmc。在编码器处,当将obmc应用于cu时,在运动估计阶段期间考虑其影响。由obmc使用上侧相邻块和左侧相邻块的运动信息形成的预测信号用于补偿当前cu的原始信号的上
边界和左边界,然后应用正常运动估计处理。
[0146]
2.5局部照明补偿(lic)的示例
[0147]
照明补偿lic是基于用于光照变化的线性模型,使用缩放因子a和偏移b。并且针对每个帧间模式编码的编码单元(cu)自适应地启用或禁用它。
[0148]
当lic应用于cu时,采用最小平方误差方法来通过使用当前cu的相邻样本及其对应的参考样本来推导参数a和b。图13示出了用于推导ic算法的参数的相邻样本的示例。更具体地,如图13所示,使用cu的子采样(2:1子采样)的相邻样本和参考图片中的(由当前cu或子cu的运动信息识别的)对应样本。推导ic参数并将其分别应用于每个预测方向。
[0149]
当用merge模式编码cu时,以类似于merge模式中的运动信息复制的方式从相邻块复制lic标志;否则,向cu信令通知lic标志以指示是否应用lic。
[0150]
当针对图片启用lic时,需要额外的cu级rd校验以确定是否将lic应用于cu。当为cu启用lic时,分别针对整数像素运动搜索和分数像素运动搜索,使用去均值绝对差之和(mean-removed sum of absolute difference,mr-sad)和去均值绝对哈达玛变换差之和(mean-removed sum of absolute hadamard-transformed difference,mr-satd),而不是sad和satd。
[0151]
为了降低编码复杂度,在jem中应用以下编码方案。
[0152]
当当前图片与其参考图片之间没有明显的光照变化时,对于整个图片禁用lic。为了识别这种情况,在编码器处计算当前图片和当前图片的每个参考图片的直方图。如果当前图片与当前图片的每个参考图片之间的直方图差小于给定阈值,则对当前图片禁用lic;否则,对当前图片启用lic。
[0153]
2.6仿射运动补偿预测的示例
[0154]
在hevc中,仅将平移运动模型应用于运动补偿预测(motion compensation prediction,mcp)。然而,相机和对象可能存在多种运动,例如放大/缩小、旋转、透视运动和/或其他不规则运动。另一方面,在jem中,应用简化的仿射变换运动补偿预测。图14示出了块1400的仿射运动场由两个控制点运动矢量v0和v1描述的示例。块1400的运动矢量场(motion vector field,mvf)由以下等式描述:
[0155][0156]
如图14所示,(v
0x
,v
0y
)是左上角控制点的运动矢量,(v
1x
,v
1y
)是右上角控制点的运动矢量。
[0157]
为了进一步简化运动补偿预测,可以应用基于子块的仿射变换预测。子块尺寸m
×
n如以下推导:
[0158][0159]
这里,mvpre是运动矢量分数准确度(例如,在jem中是1/16),(v
2x
,v
2y
)是根据等式
1计算的左下控制点的运动矢量。如果需要,可以向下调整m和n,以使其分别为w和h的除数。
[0160]
图15示出了块1500的每个子块的仿射mvf的示例。为了推导每个m
×
n子块的运动矢量,根据等式1计算每个子块的中心样本的运动矢量,并取整到运动矢量分数准确度(例如,jem中的1/16)。然后,应用运动补偿插值滤波器,以利用所推导的运动矢量生成每个子块的预测。
[0161]
在mcp之后,对每个子块的高准确度运动矢量进行取整,并将其以与正常运动矢量相同的准确度保存。
[0162]
在jem中,存在两种仿射运动模式:af_inter模式和af_merge模式。对于宽度和高度都大于8的cu,可以应用af_inter模式。在比特流中用信令通知cu级的仿射标志以指示是否使用af_inter模式。在af_inter模式中,使用相邻块构造具有运动矢量对{(v0,v1)|v0={va,vb,vc},v1={vd,ve}}的候选列表。
[0163]
图16示出了af_inter模式中的块1600的运动矢量预测(mvp)的示例。如图16所示,从子块a、b或c的运动矢量中选择v0。可以根据参考列表来缩放来自相邻块的运动矢量。还可以根据用于相邻块的参考的图片顺序计数(poc)、用于当前cu的参考的poc和当前cu的poc之间的关系来缩放来自相邻块的运动矢量。从相邻子块d和e中选择v1的方法是类似的。如果候选列表的数量小于2,则可以由通过复制每个amvp候选而组成的运动矢量对来填充列表。当候选列表大于2时,可以首先根据相邻运动矢量(例如,基于候选对中的两个运动矢量的相似性)对候选进行排序。在一些实施例中,保留前两个候选。在一些实施例中,用速率失真(rd)成本校验来确定将哪个运动矢量对候选选择为当前cu的控制点运动矢量预测(control point motion vector prediction,cpmvp)。在比特流中可以用信令通知指示候选列表中的cpmvp的位置的索引。在确定当前仿射cu的cpmvp之后,应用仿射运动估计并到控制点运动矢量(control point motion vector,cpmv)。然后在比特流中用信令通知cpmv和cpmvp的差。
[0164]
当在af_merge模式中应用cu时,它从有效的相邻重建块获得用仿射模式编码的第一个块。图17a示出了当前cu 1700的候选块的选择顺序的示例。如图17a所示,选择顺序可以是从当前cu 1700的左(1701)、上(1702)、右上(1703)、左下(1704)到左上(1705)。图17b示出了af_merge模式中的当前cu 1700的候选块的另一示例。如果相邻左下块1701以仿射模式进行编码,如图17b所示,推导包含块a的cu的左上角、右上角和左下角的运动矢量v2、v3和v4。并且根据v2、v3和v4计算当前cu 1700左上角的运动矢量v0。可以相应地计算当前cu的右上方的运动矢量v1。
[0165]
在根据等式(1)中的仿射运动模型计算当前cu的cpmv v0和v1之后,可以生成当前cu的mvf。为了识别当前cu是否以af_merge模式进行编码,当至少有一个相邻块以仿射模式进行编码时,可以在比特流中用信令通知仿射标志。
[0166]
2.7模式匹配的运动矢量推导(pmmvd)的示例
[0167]
pmmvd模式是基于帧速率上转换(frame-rate up conversion,fruc)方法的特殊merge模式。利用该模式,在解码器侧推导块的运动信息,而不是发信令通知块的运动信息。
[0168]
当cu的merge标志为真时,可以向cu信令通知fruc标志。当fruc标志为假时,可以信令通知merge索引并使用常规merge模式。当fruc标志为真时,可以信令通知额外的fruc模式标志以指示将使用哪种方法(例如,双边匹配或模板匹配)来推导该块的运动信息。
[0169]
在编码器侧,关于是否对cu使用fruc merge模式的决定是基于对正常merge候选所做的rd成本选择。例如,通过使用rd成本选择来校验cu的多种匹配模式(例如,双边匹配和模板匹配)。引起最小成本的匹配模式与其他cu模式进一步比较。如果fruc匹配模式是最有效的模式,则对于cu将fruc标志设置为真,并且使用相关的匹配模式。
[0170]
典型地,fruc merge模式中的运动推导过程具有两个步骤:首先执行cu级运动搜索,然后进行子cu级运动细化。在cu级,基于双边匹配或模板匹配,推导整个cu的原始运动矢量。首先,生成mv候选列表,并且选择引起最小匹配成本的候选作为进一步cu级细化的起点。然后,在起点附近执行基于的双边匹配或模板匹配的局部搜索。将最小匹配成本的mv结果作为整个cu的mv。随后,以推导的cu运动矢量作为起点,进一步在子cu级细化运动信息。
[0171]
例如,对于w
×
hcu运动信息推导执行以下推导过程。在第一阶段,推导整个w
×
hcu的mv。在第二阶段,该cu进一步被划分成m
×
m个子cu。m的值的计算方法如(3)所示,d是预定义的划分深度,在jem中默认设置为3。然后推导每个子cu的mv。
[0172][0173]
图18示出了在帧速率上转换(fruc)方法中使用的双边匹配的示例。,通过在两个不同参考图片(1810,1811)中沿当前cu(1800)的运动轨迹到两个块之间的最接近匹配,使用双边匹配来推导当前cu的运动信息。在连续运动轨迹的假设下,指向两个参考块的运动矢量mv0(1801)和mv1(1802)与当前图片和两个参考图片之间的时间距离(例如,td0(1803)和td1(1804))成比例。在一些实施例中,当当前图片1800在时间上在两个参考图片(1810,1811)之间并且从当前图片到两个参考图片的时间距离相同时,双边匹配成为基于镜像的双向mv。
[0174]
图19示出了在帧速率上转换(fruc)方法中使用的模板匹配的示例。模板匹配用于通过到当前图片1910中的模板(当前cu的顶部和/或左侧相邻块)与参考图片中的块(例如,与模板的尺寸相同)之间的最接近匹配来推导当前cu 1900的运动信息。除了上述fruc merge模式之外,模板匹配也可以应用于amvp模式。在jem和hevc两者中所做的那样,amvp有两个候选。通过模板匹配方法,推导新的候选。如果由模板匹配新推导的候选与第一现有amvp候选不同,则将其插入amvp候选列表的最开始处,然后将列表尺寸设置为2(例如,通过移除第二现有amvp候选)。当应用于amvp模式时,仅应用cu级搜索。
[0175]
在cu级处设置的mv候选可以包括以下:(1)如果当前cu处于amvp模式,则为原始amvp候选,(2)所有merge候选,(3)插值mv场中的几个mv(稍后描述),以及顶部和左侧相邻运动矢量。
[0176]
当使用双边匹配时,可以将merge候选的每个有效mv用作输入,以生成假设双边匹配的情况下的mv对。例如,在参考列表a中,merge候选的一个有效mv是(mva,refa)。然后,在其他参考列表b中到其配对的双边mv的参考图片refb,使得refa和refb在时间上位于当前图片的不同侧。如果这样的refb在参考列表b中不可用,则refb被确定为与refa不同的参考,并且其到当前图片的时间距离是列表b中的最小值。在确定refb之后,通过基于当前图片refa和refb之间的时间距离来缩放mva来推导mvb。
[0177]
在一些实施例中,来自插值mv场的四个mv也可以被添加到cu级候选列表。更具体地,添加当前cu的位置(0,0)、(w/2,0)、(0,h/2)和(w/2,h/2)处的插值mv。当fruc应用于
amvp模式时,原始amvp候选也被添加到cu级mv候选集。在一些实施例中,在cu级,对于amvp cu,将15个mv添加到候选列表,对于mergecu,将13个mv添加到候选列表。
[0178]
在子cu级处设置的mv候选包括:(1)从cu级搜索确定的mv,(2)顶部、左侧、左上角和右上角的相邻mv,(3)来自参考图片的并置mv的缩放版本,(4)一个或多个4个atmvp候选(最多4个),(5)一个或多个stmvp候选(例如,最多4个)。来自参考图片的缩放mv如下推导。遍历两个列表中的参考图片。参考图片中的子cu的并置位置处的mv被缩放到起始cu级mv的参考。atmvp和stmvp候选可以仅限于前四个。在子cu级,一个或多个mv(例如,最多17个)被添加到候选列表中。
[0179]
插值mv场的生成。在对帧进行编码之前,基于单边me为整个图片生成插值运动场。然后,运动场可以稍后用作cu级或子cu级mv候选。
[0180]
在一些实施例中,两个参考列表中的每个参考图片的运动场以4
×
4块级遍历。图20示出了fruc方法中的单边运动估计(me)2000的示例。对于每个4
×
4块,如果与块相关联的运动通过当前图片中的4
×
4块并且块未被分配任何插值运动,则参考块的运动根据时间距离td0和td1(以与hevc中的tmvp的mv缩放的方式相同的方式)被缩放到当前图片,并且将缩放的运动分配给当前帧中的块。如果没有缩放的mv被分配给4
×
4块,则在插值运动场中将块的运动标记为不可用。
[0181]
插值和匹配成本。当运动矢量指向分数样本位置时,需要运动补偿插值。为了降低复杂度,替代常规8抽头hevc插值,可以将双线性插值用于双边匹配和模板匹配。
[0182]
匹配成本的计算在不同步骤处有点不同。当从cu级的候选集中选择候选时,匹配成本可以是双边匹配或模板匹配的绝对和差(absolute sum difference,sad)。在确定起始mv之后,子cu级搜索的双边匹配的匹配成本c计算如下:
[0183][0184]
这里,w是加权因子。在一些实施例中,w可以设置为4。mv和mvs分别指示当前mv和起始mv。sad仍可以用作子cu级搜索的模板匹配的匹配成本。
[0185]
在fruc模式中,仅通过使用亮度样本来推导mv。推导的运动将用于mc帧间预测的亮度和度两者。在确定mv之后,使用用于亮度的8抽头插值滤波器和用于度的4抽头插值滤波器来执行最终mc。
[0186]
mv细化是基于模式的mv搜索,以双边匹配成本或模板匹配成本为标准。在jem中,支持两种搜索模式—无限制中心偏置菱形搜索(unrestricted center-biased diamond search,ucbds)和自适应交叉搜索,分别在cu级和子cu级进行mv细化。对于cu和子cu级mv细化两者,以四分之一亮度样本mv精度直接搜索mv,并且接着是八分之一亮度样本mv细化。将用于cu和子cu步骤的mv细化的搜索范围设置为等于8个亮度样本。
[0187]
在双边匹配merge模式中,应用双向预测,因为cu的运动信息是基于在两个不同的参考图片中沿当前cu的运动轨迹的两个块之间的最近匹配推导的。在模板匹配merge模式中,编码器可以从列表0中的单向预测、列表1中的单向预测或双向预测当中为cu选择。可以选择基于如下的模板匹配成本:
[0188]
如果costbi《=factor*min(cost0,cost1)
[0189]
则使用双向预测;
[0190]
否则,如果cost0《=cost1
[0191]
则使用列表0中的单向预测;
[0192]
否则,
[0193]
使用列表1中的单向预测;
[0194]
其中cost0是列表0模板匹配的sad,cost1是列表1模板匹配的sad,costbi是双向预测模板匹配的sad。例如,当factor的值等于1.25时,这意味着选择过程偏向于双向预测。帧间预测方向选择可以应用于cu级模板匹配过程。
[0195]
2.8双向光流(bio)的示例
[0196]
在bio中,首先执行运动补偿以生成当前块的第一预测(在每个预测方向上)。第一预测用于推导块内每个子块/像素的空间梯度、时间梯度和光流,然后使用其生成第二预测,例如,子块/像素的最终预测。细节描述如下。
[0197]
双向光流(bi-directional optical flow,bio)方法是样本方式的运动细化,其在用于双向预测的逐块运动补偿之上执行。在一些实施例中,样本级运动细化不使用信令。
[0198]
设i
(k)
为块运动补偿之后参考k(k=0,1)的亮度值,并且分别为i
(k)
梯度的水平分量和垂直分量。假设光流是有效的,则运动矢量场(v
x
,vy)由下式给出:
[0199][0200]
将此光流等式与每个样本运动轨迹的埃尔米特插值相结合,得到唯一的三阶多项式,该三阶多项式最后匹配函数值i
(k)
和其导数两者。该三阶多项式在t=0时的值是bio预测:
[0201][0202]
图21示出了双向光流(bio)方法中的示例光流轨迹。这里,τ0和τ1表示到参考帧的距离,如图21所示。基于ref0和ref1的poc计算距离τ0和τ1:τ0=poc(当前)-poc(ref0),τ1=poc(ref1)-poc(当前)。如果两个预测都来自相同的时间方向(两者都来自过去或都来自未来),则sign是不同的即,τ0·
τ1《0。在这种情况下,仅当预测不是来自相同的时刻(即,τ0≠τ1)时才应用bio,两个参考区域都具有非零运动(mvx0,mvy0,mvx1,mvy1≠0)并且块运动矢量与时间距离成比例(mvx0/mvx1=mvy0/mvy1=-τ0/τ1)。
[0203]
通过最小化点a和b中的值之间的差δ来确定运动矢量场(v
x
,vy)。第一线性项:
[0204][0205]
上述等式中的所有值都取决于样本位置,表示为(i
′
,j
′
)。假设运动在局部周围区域是一致的,在以当前预测点为中心的(2m+1)
×
(2m+1)的方形窗口ω内最小化δ,其中m等于2:
[0206][0207]
对于该优化问题,jem使用简化方法,首先在垂直方向上进行最小化,然后在水平方向上进行最小化。由此产生以下:
[0208]
[0209][0210]
其中,
[0211][0212]
为了避免除以零或非常小的值,在等式9和10中可以引入正则化参数r和m。
[0213]
r=500
·4d-8
(12)
[0214]
m=700
·4d-8
(13)
[0215]
这里d是视频样本的比特深度。
[0216]
为了使bio的存储器访问与常规双向预测运动补偿保持相同,仅针对当前块内的位置计算所有预测和梯度值i
(k)
,图22a示出了块2200外部的访问位置的示例。如图22a所示,在等式(9)中,以在预测块的边界上的当前预测点为中心的(2m+1)
×
(2m+1)方形窗口ω需要访问块外部的位置。在jem中,将块外部的i
(k)
,的值设置为等于块内最近的可用值。例如,这可以实施为填充区域2201,如图22b所示。
[0217]
利用bio,可以针对每个样本细化运动场。为了降低计算复杂度,在jem中使用基于块的bio设计。可以基于4
×
4的块计算运动细化。在基于块的bio中,可以聚合4
×
4的块中的所有样本的等式9中的sn的值,然后将sn的聚合值用于推导4
×
4块的bio运动矢量偏移。更具体地,以下公式可以用于基于块的bio推导:
[0218][0219]
这里bk表示属于预测块的第k个4
×
4块的样本集。将等式9和10中的sn替换为((s
n,bk
)》》4),以推导相关联的运动矢量偏移。
[0220]
在一些情景下,由于噪音或不规则运动,bio的mv团(mvregiment)可能不可靠。因此,在bio中,mv团的尺寸被阈值裁剪。基于当前图片的参考图片是否都来自一个方向来确定阈值。例如,如果当前图片的所有参考图片都来自一个方向,则将阈值的值设置为12
×214-d
;否则,将其设置为12
×213-d
。
[0221]
可以利用使用与hevc运动补偿过程(例如,2d可分离有限脉冲响应(fir))一致的操作的运动补偿插值来同时计算bio的梯度。在一些实施例中,根据块运动矢量的分数部分,该2d可分离fir的输入是与运动补偿过程和分数位置(fracx,fracy)相同的参考帧样本。对于水平梯度首先使用与具有去缩放偏移d-8的分数位置fracy相对应的biofilters垂直插值信号。然后在水平方向上应用梯度滤波器biofilterg,该biofilterg
与具有去缩放偏移18-d的分数位置fracx相对应。对于垂直梯度首先使用与具有去缩放偏移d-8的分数位置fracy相对应的biofilterg垂直应用梯度滤波器。然后在水平方向上使用biofilters执行信号位移,该biofilters与具有去缩放偏移18-d的分数位置fracx相对应。用于梯度计算的插值滤波器biofilterg和用于信号位移的插值滤波器biofilters的长度可以较短(例如,6抽头),以保持合理的复杂度。表1示出了可以用于bio中块运动矢量的不同分数位置的梯度计算的滤波器的示例。表2示出了可以用于bio中预测信号生成的插值滤波器的示例。
[0222]
表1:用于bio中梯度计算的示例性滤波器
[0223]
分数像素位置梯度的插值滤波器(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}
[0224]
表2:用于bio中预测信号生成的示例性插值滤波器
[0225]
分数像素位置预测信号的插值滤波器(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}
[0226]
在jem中,当两个预测来自不同的参考图片时,bio可以应用于所有双预测块。当为cu启用局部照明补偿(lic)时,可以禁用bio。
[0227]
在一些实施例中,obmc在正常mc过程之后应用于块。为了降低计算复杂性,在obmc过程中可以不应用bio。这意味着bio仅在使用其自身的mv时才应用于块的mc过程,并且在obmc过程中使用相邻块的mv时不应用于mc过程。
[0228]
2.9解码器侧运动矢量细化(dmvr)的示例
[0229]
在双向预测操作中,对于一个块区域的预测,将分别使用list0的运动矢量(mv)和list1的mv形成的两个预测块进行组合以形成单个预测信号。在解码器侧运动矢量细化(decoder-side motion vector refinement,dmvr)方法中,通过双边模板匹配过程进一步
细化双向预测的两个运动矢量。双边模板匹配应用在解码器中,以在双边模板和参考图片中的重建样本之间执行基于失真的搜索,以便获得细化的mv而无需传输附加的运动信息。
[0230]
在dmvr中,分别从列表0的原始mv0和列表1的mv1,将双边模板生成为两个预测块的加权组合(即平均),如图23所示。模板匹配操作包括计算所生成的模板与参考图片中的(在原始预测块周围的)样本区域之间的成本度量。对于两个参考图片中的每个,将产生最小模板成本的mv考虑为该列表的更新mv以替换原始mv。在jem中,对每个列表搜索九个mv候选。该九个mv候选包括原始mv和8个与原始mv在水平或垂直方向上或两个方向上具有一个亮度样本偏移的环绕的mv。最后,将两个新的mv,即如图23中所示的mv0'和mv1',用于生成最终的双向预测结果。将绝对差之和(sad)用作成本度量。
[0231]
将dmvr应用于双向预测的merge模式,其中一个mv来自过去的参考图片,另一mv来自未来的参考图片,而无需传输额外的语法元素。在jem中,当对cu启用lic、仿射运动、fruc或子cu merge候选时,不应用dmvr。
[0232]
3cabac修改的示例
[0233]
在jem中,与hevc中的设计相比,cabac包含以下三个主要变化:
[0234]
用于变换系数的修改的上下文建模;
[0235]
具有依赖于上下文的更新速度的多假设概率估计;
[0236]
用于上下文模型的自适应原始化。
[0237]
3.1用于变换系数的上下文建模的示例
[0238]
在hevc中,使用非重叠系数组(cg)对编码块的变换系数进行编码,并且每个cg包含编码块的4
×
4块的系数。编码块内的cg和cg内的变换系数根据预定义的扫描顺序进行编码。具有至少一个非零变换系数的cg的变换系数级的编码可以被分成多个扫描通道。在第一通道中,对第一个二进制符号(由bin0表示,也称为significant_coeff_flag,其指示系数的尺寸大于0)进行编码。接下来,可以应用用于上下文编码第二/第三二进制符号(bin)的两个扫描通道(分别由bin1和bin2表示,也称为coeff_abs_greater1_flag和coeff_abs_greater2_flag)。最后,如果需要,再调用多于两次用于编码符号信息的扫描通道以及系数级的剩余值(也称为coeff_abs_level_remaining)。只有前三个扫描通道中的二进制符号以常规模式进行编码,并且这些二进制符号在下面的描述中称为常规二进制符号。
[0239]
在jem中,改变常规二进制符号的上下文建模。当在第i扫描通道(i为0、1、2)中对二进制符号i进行编码时,上下文索引取决于由局部模板覆盖的邻域中的先前编码系数的第i个二进制符号的值。具体地,基于相邻系数的第i个二进制符号的总和来确定上下文索引。
[0240]
如图24所示,局部模板包含多达五个空间相邻变换系数,其中x表示当前变换系数的位置,xi(i为0到4)指示其五个邻居。为了捕获不同频率处的变换系数的特性,可以将一个编码块划分成多达三个区域,并且无论编码块尺寸如何,划分方法都是固定的。例如,当对亮度变换系数的bin0进行编码时,如图24所示,将一个编码块划分成用不同颜标记的三个区域,并列出分配给每个区域的上下文索引。亮度和度分量以类似的方式处理,但具有单独的上下文模型集。此外,亮度分量的bin0(例如,有效标记)的上下文模型选择还取决于变换尺寸。
[0241]
3.2多假设概率估计的示例
[0242]
二进制算术编码器基于与每个上下文模型相关联的两个概率估计p0和p1应用“多假设”概率更新模型,并且以不同的自适应速率独立地更新如下:
[0243][0244]
其中和分别表示解码二元位之前和之后的概率。变量mi(为4、5、6、7)是控制索引等于i的上下文模型的概率更新速度的参数;并且k表示概率的精度(这里等于15)。
[0245]
用于二进制算术编码器中的区间细分的概率估计p是来自两个假设的估计的均值:
[0246]
p=(p
0new
+p
1new
)/2(16)
[0247]
在jem中,如下分配控制每个上下文模型的概率更新速度的等式(15)中使用的参数mi的值。
[0248]
在编码器侧,记录与每个上下文模型相关联的编码二元位。在对一个条带进行编码之后,对于每个索引等于i的上下文模型,计算使用不同的mi值(为4,5,6,7)的速率成本,并选择提供最小速率成本的一个。为简单起见,仅在遇到条带类型和条带级量化参数的新组合时才执行该选择过程。
[0249]
针对每个上下文模型i发信令通知1比特标记以指示mi是否不同于默认值4。当标志为1时,使用两个比特来指示mi是否等于5、6或7。
[0250]
3.3上下文模型的初始化
[0251]
代替在hevc中使用固定表用于上下文模型初始化,可以通过从先前编码的图片复制状态来初始化用于帧间编码的条带的上下文模型的初始概率状态。更具体地,在对每个图片的中心定位的ctu进行编码之后,存储所有上下文模型的概率状态以用作后续图片上的对应上下文模型的初始状态。在jem中,从具有与当前条带相同的条带类型和相同条带级qp的先前编码图片的存储状态中复制每个帧间编码条带的初始状态集。这缺乏损失鲁棒性,但在当前的jem方案中用于编码效率实验目的。
[0252]
4相关实施例和方法的示例
[0253]
与所公开的技术相关的方法包括扩展的lamvr其中支持的运动矢量分辨率范围从1/4像素到4像素(1/4像素、1/2像素、1-像素、2-像素和4像素)。当用信令通知mvd信息时,在cu级用信令通知关于运动矢量分辨率的信息。
[0254]
取决于cu的分辨率,调整cu的运动矢量(mv)和运动矢量预测(mvp)。如果应用的运动矢量分辨率表示为r(r可以是1/4、1/2、1、2、4),则mv(mv
x
、mvy)和mvp(mvp
x
、mvpy)表示如下:
[0255]
(mv
x
,mvy)=(round(mv
x
/(r*4))*(r*4),round(mvy/(r*4))*(r*4))(17)
[0256]
(mvp
x
,mvpy)=(round(mvp
x
/(r*4))*(r*4),round(mvpy/(r*4))*(r*4))(18)
[0257]
由于运动矢量预测和mv都通过自适应分辨率调整,因此mvd(mvd
x
、mvdy)也与分辨率对准,并且根据分辨率用信令通知如下:
[0258]
(mvd
x
,mvdy)=((mv
x
–
mvp
x
)/(r*4),(mvy–
mvpy)/r*4))(19)
[0259]
在该提议中,运动矢量分辨率索引(mvr索引)指示mvp索引以及运动矢量分辨率。结果,所提出的方法没有mvp索引信令。下表显示了mvr索引的每个值所表示的内容。
[0260]
表3:mvr索引表示的示例
[0261]
mvr索引01234像素分辨率(r)1/41/2124第n个mvp1
st
mvp2
nd
mvp3
rd
mvp4
th
mvp5
th
mvp
[0262]
在双向预测的情况下,amvr针对每种分辨率具有3种模式。amvr双向索引(bi-index)指示是否发信令通知每个参考列表(列表0或列表1)的mvdx,mvdy。amvr双向索引的示例定义如下表。
[0263]
表4:amvp双向索引的示例
[0264]
amvr双向索引列表0的(mvd
x
,mvdy)列表1的(mvd
x
,mvdy)0信令通知信令通知1没有信令通知信令通知2信令通知没有信令通知
[0265]
5.现有实施方式的缺点
[0266]
在使用bio的一个现有实施方式中,列表0中的参考块/子块(由refblk0表示)和列表1中的参考块/子块(refblk1)之间计算的mv,由(v
x
,vy)表示,仅用于当前块/子块的运动补偿,而不用于未来编码块的运动预测、去方块、obmc等,这可能是低效的。例如,可以为块的每个子块/像素生成(v
x
,vy),并且公式(7)可以用于生成子块/像素的第二预测。然而,(v
x
,vy)不用于子块/像素的运动补偿,这可能也是低效的。
[0267]
在将dmvr和bio用于双向预测pu的另一现有实施方式中,首先,执行dmvr。之后,更新pu的运动信息。然后,利用更新的运动信息执行bio。也就是说,bio的输入取决于dmvr的输出。
[0268]
在使用obmc的又一现有实施方式中,对于amvp模式,对于小块(宽度*高度《=256),在编码器处确定是否启用obmc,并且用信令通知解码器。这增加了编码器的复杂度。同时,对于给定的块/子块,当启用obmc时,它总是应用于亮度和度二者,这可能导致编码效率下降。
[0269]
在使用af_inter模式的又一现有实施方式中,需要对mvd进行编码,然而,它只能以1/4像素精度进行编码,这可能是低效的。
[0270]
6.用于视觉媒体编码的两步帧间预测的示例方法
[0271]
当前公开的技术的实施例克服了现有实施方式的缺点,并提供了附加解决方案,从而提供具有更高编码效率的视频编码。基于所公开的技术,两步帧间预测可以增强现有和未来的视频编码标准,在以下针对各种实施方式所描述的示例中阐明。以下提供的所公开技术的示例解释了一般概念,并不意味着被解释为限制。在示例中,除非明确地指示为相反,否则可以组合这些示例中描述的各种特征。
[0272]
关于术语,来自列表0和列表1的当前图片的参考图片分别表示为ref0和ref1。表示τ0=poc(当前)-poc(ref0),τ1=poc(ref1)-poc(当前),并将来自ref0和ref1的当前块的参考块分别表示为refblk0和refblk1。对于当前块中的子块,refblk0中指向refblk1的其
对应子块的原始mv表示为(v
x
,vy)。ref0和ref1中的子块的mv分别由(mvl0
x
,mvl0y)和(mvl1
x
,mvl1y)表示。由(v
x
,vy)表示bio中从原始mv推导的推导的mv。如本专利文档中
所述,可以将用于运动预测的基于更新的运动矢量的方法扩展到现有和未来的视频编码标准。
[0273]
示例1.mv(v
x
,vy)和mv(mvlx
x
,mvlxy),其中x=0或1,应在加法操作之前缩放到相同的精度,诸如在执行示例1(e)和/或示例2中的技术之前。
[0274]
(a)在一个示例中,将目标精度(要缩放到的)设置为mv(v
x
,vy)和mv(mvlx
x
,mvlxy)之间的较高(针对更好的性能)/较低(针对更低的复杂度)的精度。可替代地,无论这两个mv的精度如何,都将目标精度(要缩放到的)设置为固定值(例如,1/32像素精度)。
[0275]
(b)在一个示例中,可以将原始mv(mvlx
x
,mvlxy)在加法操作之前缩放到更高的精度,例如,它可以从1/4像素精度缩放到1/16像素精度。在这种情况下,mvlx
x
=sign(mvlx
x
)*(abs(mvlx
x
)《《n),mvlxy=sign(mvlxy)*(abs(mvlxy)《《n),其中函数sign(
·
)返回输入参数的符号(如下所示),并且函数abs(
·
)返回输入参数的绝对值,并且n=log2(curr_mv_precision/targ_mv_precision),并且curr_mv_precision和targ_mv_precision分别是当前mv精度和目标mv精度。例如,如果将mv从1/4像素精度缩放到1/16像素精度,则n=log2((1/4)/(1/16))=2。
[0276][0277]
(i)可替代地,mvlx
x
=mvlx
x
《《n,mvlxy=mvlxy《《n。
[0278]
(ii)可替代地,mvlx
x
=mvlx
x
《《(n+k),mvlxy=mvlxy《《(n+k)。
[0279]
(iii)可替代地,mvlx
x
=sign(mvlx
x
)*(abs(mvlx
x
)《《(n+k)),mvlxy=sign(mvlxy)*(abs(mvlxy)《《(n+k))。
[0280]
(iv)类似地,如果需要将mv(v
x
,vy)缩放到较低精度,则可以应用如示例1(d)中所指定的缩放过程。
[0281]
(c)在一个示例中,如果mv(v
x
,vy)的精度低于/高于mv(mvlx
x
,mvlxy)的精度,则应将mv(v
x
,vy)缩放到更精细/更粗略的精度。例如,mv(mvlx
x
,mvlxy)具有1/16像素精度,则将mv(v
x
,vy)也缩放到1/16像素精度。
[0282]
(d)如果需要将(v
x
,vy)右移(即缩放到较低精度)n位以获得与(mvlx
x
,mvlxy)相同的精度,则v
x
=(v
x
+offset)》》n,vy=(vy+offset)》》n,其中,例如,offset=1《《(n
–
1)。
[0283]
(i)可替代地,v
x
=sign(v
x
)*((abs(v
x
)+offset)》》n),vy=sign(vy)*((abs(vy)+offset)》》n)。
[0284]
(ii)类似地,如果需要将mv(mvlx
x
,mvlxy)缩放到较高的精度,则可以应用如示例1(b)中所指定的上述缩放过程。
[0285]
(e)在一个示例中,建议将在bio中推导的mv(v
x
,vy)进行缩放并将其加到当前块/子块的原始mv(mvlx
x
,mvlxy)(x=0或1)上。更新的mv计算为:mvl0’x
=-v
x
*(τ0/(τ0+τ1))+mvl0
x
,mvl0’y
=-vy*(τ0/(τ0+τ1))+mvl0y,并且mvl1’x
=v
x
*(τ1/(τ0+τ1))+mvl1
x
,mvl1’y
=vy*(τ1/(τ0+τ1))+mvl1y。
[0286]
(i)在一个示例中,更新的mv用于未来运动预测(如在amvp、merge和仿射模式中)、去方块、obmc等。
[0287]
(ii)可替代地,更新的mv仅可以用于按照解码顺序其非紧随的cu/pu的运动预测。
[0288]
(iii)可替代地,更新的mv仅可以在amvp、merge或仿射模式中用作tmvp。
[0289]
(f)如果需要将(v
x
,vy)右移(即缩放到较低精度)n位以获得与(mvlx
x
,mvlxy)相同的精度,则v
x
=(v
x
+offset)>>(n+k),vy=(vy+offset)>>(n+k),其中,例如,offset=1<<(n+k-1)。k是整数,例如,k等于1、2、3、-2、-1或0。
[0290]
(i)可替代地,v
x
=sign(v
x
)*((abs(v
x
)+offset)》>(n+k)),vy=sign(vy)*((abs(vy)+offset)>>(n+k)),其中,例如,offset=1<<(n+k-1)。
[0291]
示例2.代替于考虑poc距离(例如,在如上所述的τ0和τ1的计算中),可以简化在bio过程中调用的mv的缩放方法。
[0292]
(a)mvl0’x
=-v
x
/s0+mvl0
x
,,mvl0’y
=-vy/s0+mvl0y,和/或mvl1’x
=v
x
/s1+mvl1
x
,mvl1’y
=vy/s1+mvl1y。在一个示例中,将s0和/或s1设置为2。在一个示例中,在某些条件下(诸如τ0>0且τ1>0)调用它。
[0293]
(i)可替代地,可以在分割过程期间添加偏移。例如,mvl0’x
=(-v
x
+offset0)/s0+mvl0
x
,mvl0’y
=-(vy+offset0)/s0+mvl0y,和/或mvl1’x
=(v
x
+offset1)/s1+mvl1
x
,mvl1’y
=(vy+offset1)/s1+mvl1y。在一个示例中,将offset0设置为s0/2,并将offset1被设置为s1/2。
[0294]
(ii)在一个示例中,mvl0’x
=((-v
x
+1)>>1)+mvl0
x
,mvl0’y
=(-(vy+1)>>1)+mvl0y,和/或mvl1’x
=((v
x
+1)>>1)+mvl1
x
,mvl1’y
=((vy+1)>>1)+mvl1y。
[0295]
(b)mvl0’x
=-sf0*v
x
+mvl0
x
,mvl0’y
=-vy*sf0+mvl0y,和/或mvl1’x
=-sf1*v
x
+mvl1
x
,mvl1’y
=-sf1*vy+mvl1y。在一个示例中,将sf0设置为2,和/或将sf1设置为1。在一个示例中,在某些条件下(诸如τ0>0且τ1<0且τ0>|τ1|)调用它,如图25(b)所示。
[0296]
(c)mvl0’x
=sfact0*v
x
+mvl0
x
,mvl0’y
=sfact0*vy+mvl0y,和/或mvl1’x
=sfact1*v
x
+mvl1
x
,mvl1’y
=sfact1*vy+mvl1y。在一个示例中,将sfact0设置为1,和/或将sfact1设置为2。在一个示例中,在某些条件下(诸如τ0>0且τ1<0且τ0<|τ1|)调用它,如图25(c)所示。
[0297]
示例3.当τ0>0且τ1>0时,(v
x
,vy)的推导和(mvlx
x
,mvlxy)的更新可以一起完成以保持高精度。
[0298]
(a)在一个示例中,如果需要将(v
x
,vy)右移(即缩放到较低精度)n位以获得与(mvlx
x
,mvlxy)相同的精度,则mvl0’x
=((-v
x
+offset)>>(n+1))+mvl0
x
,mvl0’y
=((-vy+offset)>>(n+1))+mvl0y,mvl1’x
=((v
x
+offset)>>(n+1))+mvl1
x
,mvl1’y
=((vy+offset)>>(n+1))+mvl1y,其中,例如,offset=1<<n.
[0299]
(b)在一个示例中,如果需要将(v
x
,vy)右移(即缩放到较低精度)n位以获得与(mvlx
x
,mvlxy)相同的精度,则mvl0’x
=((-v
x
+offset)>>(n+k+1))+mvl0
x
,mvl0’y
=((-vy+offset)>>(n+k+1))+mvl0y,mvl1’x
=((v
x
+offset)>>(n+k+1))+mvl1
x
,mvl1’y
=((vy+offset)>>(n+k+1))+mvl1y,其中,例如,offset=1<<(n+k)。k是整数,例如,k等于1、2、3、-2、-1或0。
[0300]
(c)可替代地,mvl0’x
=-sign(v
x
)*((abs(v
x
)+offset)>>(n+1))+mvl0
x
,mvl0’y
=-sign(vy)*((abs(vy)+offset)>>(n+1))+mvl0y,mvl1’x
=sign(v
x
)*((abs(v
x
)+offset)>>(n+1))+mvl1
x
,mvl1’y
=sign(vy)*((abs(vy)+offset)>>(n+1))+mvl1y。
[0301]
(d)可替代地,mvl0’x
=-sign(v
x
)*((abs(v
x
)+offset)>>(n+k+1))+mvl0
x
,mvl0’y
=-sign(vy)*((abs(vy)+offset)>>(n+k+1))+mvl0y,mvl1’x
=sign(v
x
)*((abs(v
x
)+offset)>>(n+k+1))+mvl1
x
,mvl1’y
=sign(vy)*((abs(vy)+offset)>>(n+k+1))+
mvl1y,其中,例如,offset=1《《(n+k)。k是整数,例如,k等于1、2、3、-2、-1或0。
[0302]
示例4.裁剪操作可以进一步应用于bio和/或dmvr中采用的更新的mv或可能需要更新mv的其他种类的编码方法。
[0303]
(a)在一个示例中,以其他传统mv相同的方式裁剪更新的mv,例如裁剪在与图片边界相比的特定范围内。
[0304]
(b)可替代地,与mc过程中使用的mv相比,更新的mv被裁剪在特定范围(或针对不同子块的多个范围)内。也就是说,mc中使用的mv与更新的mv之间的差异被裁剪在一定范围(或针对不同子块的多个范围)内。
[0305]
示例5.可以约束在bio和/或可能需要更新mv的其他种类的编码方法中调用的更新的mv的使用。
[0306]
(a)在一个示例中,更新的mv用于未来运动预测(如在amvp、merge和/或仿射模式中)、去方块、obmc等。可替代地,更新的mv可以用于第一模块,而原始的mv可以用于第二模块。例如,第一模块是运动预测,且第二模块是去方块。
[0307]
(i)在一个示例中,未来运动预测指的是在当前图片或条带中的当前块之后要被编码/解码的块中的运动预测。
[0308]
(ii)可替代地,未来运动预测指的是在当前图片或条带之后要被编码/解码的图片或条带中的运动预测。
[0309]
(b)可替代地,更新的mv仅可以用于按照解码顺序其非紧随的cu/pu的运动预测。
[0310]
(c)更新的mv不应用于按照解码顺序其下一cu/pu的运动预测。
[0311]
(d)可替代地,更新的mv仅可以用作用于对后续图片/片/条带进行编码的预测器,诸如amvp中的tmvp,和/或merge和/或仿射模式。
[0312]
(e)可替代地,更新的mv仅可以用作用于对后续图片/片/条带进行编码的预测器,例如atmvp和/或stmvp等。
[0313]
示例6.在一个示例中,提出了两步帧间预测过程,其中执行第一步骤以基于与当前块相关联的用信令通知/推导的运动信息来生成一些中间预测(第一预测),并且执行第二步骤以基于可能依赖于中间预测的更新的运动信息来推导当前块的最终预测(第二预测)。
[0314]
(a)在一个示例中,bio过程(即,使用用信令通知/推导的运动信息,其用于生成第一预测和块内的每个子块/像素的空间梯度、时间梯度和光流)仅用于推导如示例1中所指定的更新的mv(并且不应用公式(7)来生成第二预测),然后使用更新的mv来执行运动补偿并生成块内的每个子块/像素的第二预测(即最终预测)。
[0315]
(b)在一个示例中,可以在第一或/和第二步骤中使用与不用这种方法进行编码的帧间编码块的插值滤波器不同的插值滤波器来减小存储器带宽。
[0316]
(i)在一个示例中,可以使用较短抽头滤波器(如6抽头滤波器,4抽头滤波器或双线性滤波器)。
[0317]
(ii)可替代地,可以预定义在第一/第二步骤中利用的滤波器(诸如滤波器抽头,滤波器系数)。
[0318]
(iii)可替代地,此外,为第一和/或第二步骤所选择的滤波器抽头可取决于编码信息,例如块尺寸/块形状(正方形,非正方形等)/条带类型/预测方向(单向或双向预测或
多假设,向前或向后)。
[0319]
(iv)可替代地,此外,不同的块可以为第一/第二步骤选择不同的滤波器。在一个示例中,可以预定义或用信令通知多个滤波器的一个或多个候选集。块可以从候选集中进行选择。所选择的滤波器可以由用信令通知的索引指示,或者可以在不用信令通知的情况下即时推导。
[0320]
(c)在一个示例中,当生成第一预测时仅使用整数mv,并且在第一步骤中不应用插值滤波过程。
[0321]
(i)在一个示例中,将分数mv舍入到最接近的整数mv。
[0322]
(1)如果存在多于一个的最接近的整数mv,则将分数mv舍入到较小的最接近的整数mv。
[0323]
(2)如果存在多于一个的最接近的整数mv,则将分数mv舍入到较大的最接近的整数mv。
[0324]
(3)如果存在多于一个的最接近的整数mv,则将分数mv舍入到更接近零的最接近的mv。
[0325]
(ii)在一个示例中,将分数mv舍入到不小于分数mv的最接近的整数mv。
[0326]
(iii)在一个示例中,将分数mv舍入到不大于分数mv的最接近的整数mv。
[0327]
(d)可以在sps、pps、条带报头、ctu或cu或ctu组中用信令通知这种方法的使用。
[0328]
(e)这种方法的使用还可以取决于编码信息,诸如块尺寸/块形状(正方形,非正方形等)/条带类型/预测方向(单向或双向预测或多假设,向前或向后)。
[0329]
(i)在一个示例中,可以在某些条件下自动禁止这种方法,例如,当用仿射模式对当前块进行编码时,可以禁用这种方法。
[0330]
(ii)在一个示例中,可以在某些条件下自动应用这种方法,诸如当用双预测对块进行编码并且块尺寸大于阈值(例如,多于16个样本)时。
[0331]
示例7.在一个示例中,提出在计算bio中的时间梯度之前,可以首先修改参考块(或预测块),并且时间梯度的计算基于修改的参考块。
[0332]
(a)在一个示例中,对于所有参考块移除均值。
[0333]
(i)例如,对于参考块x(x=0或1),首先,对块计算均值(由meanx表示),然后将参考块中的每个像素减去meanx。
[0334]
(ii)可替代地,对于不同的参考图片列表,可以决定是否移除均值。例如,对于一个参考块/子块,在计算时间梯度之前移除均值,而对于另一个参考块/子块,不移除均值。
[0335]
(iii)可替代地,不同的参考块(例如,在多假设预测中利用的3或4个参考块)可以选择是否先进行修改。
[0336]
(b)在一个示例中,均值定义为参考块中所选择的样本的平均。
[0337]
(c)在一个示例中,参考块x或参考块x的子块中的所有像素用于计算meanx。
[0338]
(d)在一个示例中,参考块x或参考块的子块中的仅部分像素用于计算meanx。例如,仅使用每第二行/列的像素。
[0339]
(i)可替代地,在示例中,仅使用每第四行/列的像素来计算meanx。
[0340]
(ii)可替代地,仅使用四个角像素来计算meanx。
[0341]
(iii)可替代地,仅使用四个角像素和中心像素,例如,位置(w/2,h/2)处的像素
(其中w
×
h是参考块尺寸),来计算meanx。
[0342]
(e)在一个示例中,可以在用于推导时间梯度之前首先对参考块进行滤波。
[0343]
(i)在一个示例中,可以首先对参考块应用平滑滤波方法。
[0344]
(ii)在一个示例中,首先对块边界处的像素进行滤波。
[0345]
(iii)在一个示例中,在推导时间梯度之前首先应用重叠块运动补偿(obmc)。
[0346]
(iv)在一个示例中,在推导时间梯度之前首先应用光照补偿(ic)。
[0347]
(v)在一个示例中,在推导时间梯度之前首先应用加权预测。
[0348]
(f)在一个示例中,首先计算时间梯度然后被修改。例如,进一步将时间梯度减去mean0和mean1之间的差。
[0349]
示例8.在一个示例中,可以诸如在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带、ctu或cu中从编码器向解码器发信令通知是否更新用于bio编码块的mv和/或使用更新的mv用于未来运动预测和/或如何将更新的mv用于未来运动预测。
[0350]
示例9.在一个示例中,提出对bio过程中利用的运动矢量添加约束。
[0351]
(a)在一个示例中,将(v
x
,vy)约束到给定范围,-m
x
<v
x
<n
x
,和/或-my<vy<ny,其中m
x
,n
x
,my,ny为非负整数,并且例如可以等于32。
[0352]
(b)在一个示例中,将bio编码子块/bio编码块的更新的mv约束到给定范围,诸如-m
l0x
<mvl0’x
<n
l0x
和/或-m
l1x
<mvl1’x
<n
l1x
,-m
l0y
<mvl0’y
<n
l0y
和/或-m
l1y
<mvl1’y
<n
l1y
,其中m
l0x
,n
l0x
,m
l1x
,n
l1x
,m
l0y
,n
l0y
,m
l1y
,n
l1y
是非负整数,并且例如可以等于1024、2048等。
[0353]
示例10.提出对于bio、dmvr、fruc、模板匹配或需要从比特流中推导的内容更新mv(或包括mv和/或参考图片的运动信息)的其他方法,更新的运动信息的使用可能受到约束。
[0354]
(a)在一个示例中,即使在块级更新运动信息,也可以针对不同的子块不同地存储更新的和未更新的运动信息。在一个示例中,可以存储一些子块的更新的运动信息,并且对于其他剩余的子块,存储未更新的运动信息。
[0355]
(b)在一个示例中,如果在子块/块级更新mv(或运动信息),则仅针对内部子块(即不在pu/cu/ctu边界处的子块)存储更新的mv,并且然后,如图26a和26b所示,将其用于运动预测、去方块、obmc等。可替代地,仅针对边界子块存储更新的mv。
[0356]
(c)在一个示例中,如果相邻块和当前块不在相同的ctu或具有诸如64
×
64或32
×
32的尺寸的相同区域中,则不使用来自相邻块的更新的运动信息。
[0357]
(i)在一个示例中,如果相邻块和当前块不在相同的ctu或具有诸如64
×
64或32
×
32的尺寸的相同区域中,则将相邻块视为“不可用”。
[0358]
(ii)可替代地,如果相邻块和当前块不在相同的ctu或具有诸如64
×
64或32
×
32的尺寸的相同区域中,则当前块使用没有更新过程的运动信息。
[0359]
(d)在一个示例中,如果相邻块和当前块不在相同的ctu行或具有诸如64
×
64或32
×
32的尺寸的区域的相同行中,则不使用来自相邻块的更新的mv。
[0360]
(i)在一个示例中,如果相邻块和当前块不在相同的ctu行或具有诸如64
×
64或32
×
32的尺寸的区域的相同行中,则将相邻块视为“不可用”。
[0361]
(ii)可替代地,如果相邻块和当前块不在相同的ctu行或具有诸如64
×
64或32
×
32的尺寸的区域的相同行中,则当前块使用没有更新过程的运动信息。
[0362]
(e)在一个示例中,如果块的最底行是ctu或者具有诸如64
×
64或32
×
32的尺寸的区域的最底行,则不更新块的运动信息。
[0363]
(f)在一个示例中,如果块的最右列是ctu或者具有诸如64
×
64或32
×
32的尺寸的区域的最右列,则不更新块的运动信息。
[0364]
(g)在一个示例中,将来自一些相邻ctu或区域的细化的运动信息用于当前ctu,并且将来自其他相邻ctu或区域的未细化的运动信息用于当前ctu。
[0365]
(i)在一个示例中,将来自左ctu或左区域的细化的运动信息用于当前ctu。
[0366]
(ii)可替代地,另外,将来自左上ctu或左上区域的细化的运动信息用于当前ctu。
[0367]
(iii)可替代地,另外,将来自上ctu或上区域的细化的运动信息用于当前ctu。
[0368]
(iv)可替代地,另外,将来自右上ctu或右上区域的细化的运动信息用于当前ctu。
[0369]
(v)在一个示例中,区域具有诸如64
×
64或32
×
32的尺寸。
[0370]
示例11.在一个示例中,提出可以在af_inter模式中使用不同的mvd精度,并且可以用信令通知语法元素以指示每个块/cu/pu的mvd精度。允许包括构成等比序列的多个不同的mvd精度的精度集。
[0371]
(a)在一个示例中,允许{1/4,1,4}像素mvd精度。
[0372]
(b)在一个示例中,允许{1/4,1/2,1,2,4}像素mvd精度。
[0373]
(c)在一个示例中,允许{1/16,1/8,1/4}像素mvd精度。
[0374]
(d)语法元素在诸如当存在块/cu/pu的非零mvd分量时的进一步的条件下存在。
[0375]
(e)在一个示例中,不管是否存在任何非零mvd分量,总是用信令通知mvd精度信息。
[0376]
(f)可替代地,对于4/6参数af_inter模式,其中2/3mvd被编码的,可以将不同的mvd精度用于2/3mvd(单向预测中每个控制点1个mvd,双向预测中每个控制点2个mvd,即每个预测方向上每个控制点1个mvd),并且2/3个控制点与不同的mvd精度相关联。在这种情况下,此外,可以用信令通知2/3语法元素以指示mvd精度。
[0377]
(g)在一个示例中,pct/cn2018/091792中描述的方法可以用于在af_inter模式中对mvd精度进行编码。
[0378]
示例12.在一个示例中,提出如果对块(例如pu)执行多于一个dmvd方法,则如bio、dmvr、fruc和模板匹配等的不同的解码器侧运动矢量推导(dmvd)方法独立地工作,即dmvd方法的输入不取决于另一dmvd方法的输出。
[0379]
(a)在一个示例中,此外,从由多个dmvd方法推导的多组运动信息生成一个预测块和/或一组更新的运动信息(例如,每个预测方向的运动矢量和参考图片)。
[0380]
(b)在一个示例中,使用每个dmvd方法的推导的运动信息来执行运动补偿,并且对它们进行平均或加权平均或滤波(如通过中值滤波器)以生成最终预测。
[0381]
(c)在一个示例中,对所有dmvd方法推导的运动信息进行平均或加权平均或滤波(如通过中值滤波器)以生成最终运动信息。可替代地,将不同的优先级分配给不同的dmvd方法,并且选择具有最高优先级的方法推导的运动信息作为最终运动信息。例如,当对pu执行bio和dmvr时,则由dmvr生成的运动信息被用作最终运动信息。
[0382]
(d)在一个示例中,对于pu,允许不超过n个dmvd方法,其中n》=1。
[0383]
(i)将不同的优先级分配给不同的dmvd方法,并且执行有效且具有最高的n个优先
级的方法。
[0384]
(e)dmvd方法以同时的方式执行。一个dmvd方法的更新的mv不作为下一个dmvd方法的起点输入。对于所有dmvd方法,输入未更新的mv作为搜索起点。可替代地,dmvd方法以级联方式执行。一个dmvd方法的更新的mv作为下一个dmvd方法的搜索起点输入。
[0385]
其他实施方案
[0386]
该部分描述了mv细化并且存储用于bio编码块的进一步使用的方法。经细化的mv可用于当前条带/ctu行/片内的后续块的运动矢量预测、和/或用于位于不同图片处的块的滤波处理(例如,去方块滤波器处理)和/或运动矢量预测。
[0387]
如图32所示,从参考块0中的子块指向参考块1中的子块(由(dmv
x
,dmvy)表示)的推导的运动矢量用于进一步改进当前子块的预测。
[0388]
建议通过使用bio中的推导的运动矢量来进一步细化每个子块的运动矢量。将lx参考图片与当前图片之间的poc距离(例如,绝对poc差)表示为deltapocx,并且将(mvlx
x
,mvlxy)和(mvlx
x’,mvlx
y’)表示为当前子块的信令通知的和细化的运动矢量,其中x=0或1。然后(mvlx
x’,mvlx
y’)计算如下:
[0389][0390][0391][0392][0393]
然而,在上述等式中需要乘法和除法。为了解决这个问题,细化的运动矢量的推导简化如下:
[0394]
mvlo
′
x
=mvlo
x-((dmv
x
+1)》》1)
[0395]
mvlo
′y=mvlo
y-((dmvy+1)》》1)
[0396]
mvl1
′
x
=mvl1
x
+((dmv
x
+1)》》1)
[0397]
mvl1
′y=mvl1y+((dmvy+1)》》1)
[0398]
在一些实施例中,仅当从前一图片和后一图片预测当前cu时才采用该方法,因此其仅在随机接入(ra)配置中操作。
[0399]
示例13.可以在某些条件下应用所提出的方法,诸如块尺寸、条带/图片/片类型。
[0400]
(a)在一个示例中,当块尺寸包含小于m*h的样本,例如16或32或64个亮度样本时,不允许上述方法。
[0401]
(b)可替代地,当块的宽度或高度的最小尺寸小于或不大于x时,不允许上述方法。在一个示例中,将x设置为8。
[0402]
(c)可替代地,当块的宽度》th1或》=th1和/或块的高度》th2或》=th2时,不允许上述方法。在一个示例中,将x设置为8。
[0403]
(d)可替代地,当块的宽度《th1或《=th1和/或块的高度《th2或《=th2时,不允许
上述方法。在一个示例中,将x设置为8。
[0404]
示例14.可以在子块级应用上述方法。
[0405]
(a)在一个示例中,可以针对每个子块调用bio更新过程、或两步帧间预测过程或示例7中描述的时间梯度推导方法。
[0406]
(b)在一个示例中,当块的宽度或高度或宽度和高度两者都大于(或等于)阈值l时,可以将块分割为多个子块。以与具有子块尺寸的正常编码块相同的方式处理每个子块。
[0407]
示例15.可以以sps/pps/图片/条带/片级预定义或用信令通知阈值。
[0408]
(a)可替代地,阈值可以取决于某些编码信息,诸如块尺寸、图片类型,时间层索引等。
[0409]
以上描述的示例可以结合在下面描述的方法的上下文中,例如,方法2700-3100、3300-3600和3800-4200,其可以在视频解码器处实现。
[0410]
图27示出了用于视频解码的示例方法的流程图。方法2700包括,在步骤2710,接收视频数据的当前块的比特流表示。
[0411]
方法2700包括,在步骤2720,分别基于第一缩放运动矢量与第一和第二缩放参考运动矢量的加权和来生成更新的第一和第二参考运动矢量。在一些实施例中,通过将第一运动矢量缩放到目标精度来生成第一缩放运动矢量,并且其中通过分别将第一和第二参考运动矢量缩放到目标精度来生成第一和第二缩放参考运动矢量。在一些实施例中,基于来自第一参考块的第一参考运动矢量和来自第二参考块的第二参考运动矢量来推导第一运动矢量,并且其中当前块与第一和第二参考块相关联。
[0412]
在一些实施例中,在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带报头、编码树单元(ctu)或编码单元(cu)中用信令通知目标精度的指示。
[0413]
在一些实施例中,第一运动矢量具有第一精度,并且第一和第二参考运动矢量具有参考精度。在其他实施例中,第一精度可以高于或低于参考精度。在其他实施例中,可以将目标精度设置为第一精度、参考精度或与第一精度和参考精度无关的固定(或预定)精度。
[0414]
在一些实施例中,基于使用第一和第二参考运动矢量的双向光流(bio)细化来推导第一运动矢量。
[0415]
方法2700包括,在步骤2730,基于更新的第一和第二参考运动矢量处理比特流表示以生成当前块。在一些实施例中,处理基于双向光流(bio)细化或解码器侧运动矢量细化(dmvr),并且其中在处理之前对更新的第一和第二参考运动矢量进行裁剪。
[0416]
在一些实施例中,处理基于双向光流(bio)细化,并且在处理之前将更新的第一和第二参考运动矢量约束到预定值范围。
[0417]
在一些实施例中,处理基于双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术或模板匹配技术。在一个示例中,针对不在当前块的边界上的内部子块生成更新的第一和第二参考运动矢量。在另一示例中,针对当前块的子块的子集生成更新的第一和第二参考运动矢量。
[0418]
在一些实施例中,该处理基于至少两种技术,其可以包括双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术或模板匹配技术。在一个示例中,针对至少两种技术中的每一种执行处理以生成多个结果集,可以对该多个结果集进行平均或
滤波以生成当前块。在另一示例中,针对至少两种技术中的每一种以级联方式执行处理以生成当前块。
[0419]
图28示出了用于视频解码的示例方法的流程图。方法2800包括,在步骤2810,基于与当前块相关联的第一运动信息,为当前块生成中间预测。
[0420]
在一些实施例中,生成中间预测包括第一插值滤波过程。在一些实施例中,生成中间预测还基于序列参数集(sps)、图片参数集(pps)、编码树单元(ctu)、条带报头、编码单元(cu)或ctu组中的信令。
[0421]
方法2800包括,在步骤2820,将第一运动信息更新为第二运动信息。
[0422]
在一些实施例中,更新第一运动信息包括使用双向光流(bio)细化。
[0423]
方法2800包括,在步骤2830,基于中间预测或第二运动信息生成当前块的最终预测。在一些实施例中,生成最终预测包括第二插值滤波过程。
[0424]
在一些实施例中,第一插值滤波过程使用第一滤波器集,其不同于第二插值滤波过程所使用的第二滤波器集。在一些实施例中,第一或第二插值滤波过程的至少一个滤波器抽头基于当前块的维度、预测方向或预测类型。
[0425]
图29示出了用于视频解码的另一示例方法的流程图。该示例包括与图28所示并且如上所述类似的一些特征和/或步骤。这些特征和/或组件的至少一些可以不在该部分中单独描述。
[0426]
方法2900包括,在步骤2910,接收视频数据的当前块的比特流表示。在一些实施例中,步骤2910包括从视频编码器或解码器中的存储器位置或缓冲器接收比特流表示。在其他实施例中,步骤2910包括在视频解码器处通过无线或有线信道接收比特流表示。在其他实施例中,步骤2910包括从不同的模块、单元或处理器接收比特流表示,其可以实现如在本文档中的实施例中描述的一个或多个方法,但不限于此。
[0427]
方法2900包括,在步骤2920,基于与当前块相关联的运动信息生成中间运动信息。
[0428]
方法2900包括,在步骤2930,分别基于第一和第二参考运动矢量生成更新的第一和第二参考运动矢量。在一些实施例中,当前块与第一和第二参考块相关联。在一些实施例中,第一和第二参考运动矢量分别与第一和第二参考块相关联。
[0429]
方法2900包括,在步骤2940,基于中间运动信息或更新的第一和第二参考运动矢量处理比特流表示以生成当前块。
[0430]
在方法2900的一些实施例中,生成更新的第一和第二参考运动矢量分别基于第一缩放运动矢量与第一和第二缩放参考运动矢量的加权和。在一些实施例中,基于第一参考运动矢量和第二参考运动矢量来推导第一运动矢量,通过将第一运动矢量缩放到目标精度来生成第一缩放运动矢量,并且通过将第一和第二参考运动矢量分别缩放到目标精度来生成第一和第二缩放参考运动矢量。
[0431]
在一些实施例中,在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带报头、编码树单元(ctu)或编码单元(cu)中用信令通知目标精度的指示。
[0432]
在一些实施例中,第一运动矢量具有第一精度,并且第一和第二参考运动矢量具有参考精度。在其他实施例中,第一精度可以高于或低于参考精度。在其他实施例中,可以将目标精度设置为第一精度、参考精度或与第一精度和参考精度无关的固定(或预定)精度。
[0433]
在一些实施例中,基于使用第一和第二参考运动矢量的双向光流(bio)细化来推导第一运动矢量。
[0434]
在一些实施例中,处理基于双向光流(bio)细化,并且在处理之前将更新的第一和第二参考运动矢量约束到预定值范围。
[0435]
在一些实施例中,处理基于双向光流(bio)细化或解码器侧运动矢量细化(dmvr),并且其中在处理之前对更新的第一和第二参考运动矢量进行裁剪。
[0436]
在一些实施例中,处理基于双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术或模板匹配技术。在一个示例中,针对不在当前块的边界上的内部子块生成更新的第一和第二参考运动矢量。在另一示例中,针对当前块的子块的子集生成更新的第一和第二参考运动矢量。
[0437]
在一些实施例中,处理基于至少两种技术,其可以包括双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术或模板匹配技术。在一个示例中,针对至少两种技术中的每一种执行处理以生成多个结果集,可以对该多个结果集进行平均或滤波以生成当前块。在另一示例中,针对至少两种技术中的每一种以级联方式执行处理以生成当前块。
[0438]
图30示出了用于视频解码的示例方法的流程图。方法3000包括,在步骤3010,基于与当前块相关联的第一运动信息,为当前块生成中间预测。在一些实施例中,生成中间预测包括第一插值滤波过程。在一些实施例中,生成中间预测还基于序列参数集(sps)、图片参数集(pps)、编码树单元(ctu)、条带报头、编码单元(cu)或ctu组中的信令。
[0439]
方法3000包括,在步骤3020,将第一运动信息更新为第二运动信息。在一些实施例中,更新第一运动信息包括使用双向光流(bio)细化。
[0440]
方法3000包括,在步骤3030,基于中间预测或第二运动信息生成当前块的最终预测。在一些实施例中,生成最终预测包括第二插值滤波过程。
[0441]
在一些实施例中,第一插值滤波过程使用第一滤波器集,其不同于第二插值滤波过程所使用的第二滤波器集。在一些实施例中,第一或第二插值滤波过程的至少一个滤波器抽头基于当前块的维度、预测方向或预测类型。
[0442]
图31示出了用于视频解码的另一示例方法的流程图。该示例包括与上述图30中所示的特征和/或步骤类似的一些特征和/或步骤。本节中可能未单独描述这些特征和/或组件中的至少一些。
[0443]
方法3100包括,在步骤3110,接收视频数据的当前块的比特流表示。在一些实施例中,步骤3110包括从视频编码器或解码器中的存储器位置或缓冲器接收比特流表示。在其他实施例中,步骤3110包括在视频解码器处通过无线或有线信道接收比特流表示。在其他实施例中,步骤3110包括从不同的模块、单元或处理器接收比特流表示,该模块、单元或处理器可以实现如在本文中的实施例中描述的一个或多个方法,但不限于此。
[0444]
方法3100包括,在步骤3120,基于与当前块相关联的运动信息生成中间运动信息。
[0445]
方法3100包括,在步骤3130,分别基于第一和第二参考运动矢量生成更新的第一和第二参考运动矢量。在一些实施例中,当前块与第一和第二参考块相关联。在一些实施例中,第一和第二参考运动矢量分别与第一和第二参考块相关联。
[0446]
方法3100包括,在步骤3140,基于中间运动信息或更新的第一和第二参考运动矢
量处理比特流表示以生成当前块。
[0447]
在方法3100的一些实施例中,生成更新的第一和第二参考运动矢量分别基于第一缩放运动矢量与第一和第二缩放参考运动矢量的加权和。在一些实施例中,基于第一参考运动矢量和第二参考运动矢量来推导第一运动矢量,通过将第一运动矢量缩放到目标精度来生成第一缩放运动矢量,并且通过分别将第一和第二参考运动矢量分别缩放到目标精度来生成第一和第二缩放参考运动矢量。
[0448]
在一些实施例中,在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带报头、编码树单元(ctu)或编码单元(cu)中用信令通知目标精度的指示。
[0449]
在一些实施例中,第一运动矢量具有第一精度,并且第一和第二参考运动矢量具有参考精度。在其他实施例中,第一精度可以高于或低于参考精度。在其他实施例中,可以将目标精度设置为第一精度、参考精度或与第一精度和参考精度无关的固定(或预定)精度。
[0450]
在一些实施例中,基于使用第一和第二参考运动矢量的双向光流(bio)细化来推导第一运动矢量。
[0451]
在一些实施例中,处理基于双向光流(bio)细化,并且在处理之前将更新的第一和第二参考运动矢量约束到预定值范围。
[0452]
在一些实施例中,处理基于双向光流(bio)细化或解码器侧运动矢量细化(dmvr),并且其中在处理之前对更新的第一和第二参考运动矢量进行裁剪。
[0453]
在一些实施例中,处理基于双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术或模板匹配技术。在一个示例中,针对不在当前块的边界上的内部子块生成更新的第一和第二参考运动矢量。在另一示例中,针对当前块的子块的子集生成更新的第一和第二参考运动矢量。
[0454]
在一些实施例中,处理基于至少两种技术,其可以包括双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术或模板匹配技术。在一个示例中,针对至少两种技术中的每一种执行处理以生成多个结果集,可以对该多个结果集进行平均或滤波以生成当前块。在另一示例中,针对至少两种技术中的每一种以级联方式执行处理以生成当前块。
[0455]
图33示出了用于视频解码的示例方法的流程图。方法3300包括,在步骤3310,基于与当前块相关联的第一运动信息,为当前块生成中间预测。在一些实施例中,生成中间预测包括第一内插滤波过程。在一些实施例中,生成中间预测还基于序列参数集(sps)、图片参数集(pps)、编码树单元(ctu)、条带报头、编码单元(cu)或ctu组中的信令。
[0456]
方法3300包括,在步骤3320,将第一运动信息更新为第二运动信息。在一些实施例中,更新第一运动信息包括使用双向光流(bio)细化。
[0457]
方法3300包括,在步骤3330,基于中间预测或第二运动信息生成当前块的最终预测。在一些实施例中,生成最终预测包括第二插值滤波过程。
[0458]
在一些实施例中,第一插值滤波过程使用第一滤波器集,其不同于第二插值滤波过程所使用的第二滤波器集。在一些实施例中,第一或第二插值滤波过程的至少一个滤波器抽头基于当前块的维度、预测方向或预测类型。
[0459]
图34示出了用于视频解码的另一示例方法的流程图。该示例包括与如上所述图33
中所示的特征和/或步骤类似的一些特征和/或步骤。本部分中可能未单独描述这些特征和/或组件中的至少一些。
[0460]
方法3400包括,在步骤3410,接收视频数据的当前块的比特流表示。在一些实施例中,步骤3410包括从视频编码器或解码器中的存储器位置或缓冲器接收比特流表示。在其他实施例中,步骤3410包括在视频解码器处通过无线或有线信道接收比特流表示。在其他实施例中,步骤3410包括从不同的模块,单元或处理器接收比特流表示,其可以实现如在本文档中的实施例中描述的一个或多个方法,但不限于此。
[0461]
方法3400包括,在步骤3420,基于与当前块相关联的运动信息生成中间运动信息。
[0462]
方法3400包括,在步骤3430,分别基于第一和第二参考运动矢量生成更新的第一和第二参考运动矢量。在一些实施例中,当前块与第一和第二参考块相关联。在一些实施例中,第一和第二参考运动矢量分别与第一和第二参考块相关联。
[0463]
方法3400包括,在步骤3440,基于中间运动信息或更新的第一和第二参考运动矢量处理比特流表示以生成当前块。
[0464]
在方法3400的一些实施例中,生成更新的第一和第二参考运动矢量分别基于第一缩放运动矢量与第一和第二缩放参考运动矢量的加权和。在一些实施例中,基于第一参考运动矢量和第二参考运动矢量来推导第一运动矢量,通过将第一运动矢量缩放到目标精度来生成第一缩放运动矢量,并且通过将第一和第二参考运动矢量分别缩放到目标精度来生成第一和第二缩放参考运动矢量。
[0465]
在一些实施例中,在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带报头、编码树单元(ctu)或编码单元(cu)中用信令通知目标精度的指示。
[0466]
在一些实施例中,第一运动矢量具有第一精度,并且第一和第二参考运动矢量具有参考精度。在其他实施例中,第一精度可以高于或低于参考精度。在其他实施例中,可以将目标精度设置为第一精度、参考精度或与第一精度和参考精度无关的固定(或预定)精度。
[0467]
在一些实施例中,基于使用第一和第二参考运动矢量的双向光流(bio)细化来推导第一运动矢量。
[0468]
在一些实施例中,处理基于双向光流(bio)细化,并且在处理之前将更新的第一和第二参考运动矢量约束到预定值范围。
[0469]
在一些实施例中,处理基于双向光流(bio)细化或解码器侧运动矢量细化(dmvr),并且其中在处理之前对更新的第一和第二参考运动矢量进行裁剪。
[0470]
在一些实施例中,处理基于双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术或模板匹配技术。在一个示例中,针对不在当前块的边界上的内部子块生成更新的第一和第二参考运动矢量。在另一示例中,针对当前块的子块的子集生成更新的第一和第二参考运动矢量。
[0471]
在一些实施例中,处理基于至少两种技术,其可以包括双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术或模板匹配技术。在一个示例中,针对至少两种技术中的每一种执行处理以生成多个结果集,可以对该多个结果集进行平均或滤波以生成当前块。在另一示例中,针对至少两种技术中的每一种以级联方式执行处理以生成当前块。
[0472]
图35示出了用于视频解码的示例方法的流程图。方法3500包括,在步骤3510,通过修改与当前块相关联的参考块,对于当前块的比特流表示生成更新的参考块。
[0473]
在一些实施例中,方法3500还包括使用平滑滤波器对参考块进行滤波的步骤。
[0474]
在一些实施例中,方法3500还包括对参考块的块边界处的像素进行滤波的步骤。
[0475]
在一些实施例中,方法3500还包括对参考块应用重叠块运动补偿(obmc)的步骤。
[0476]
在一些实施例中,方法3500还包括对参考块应用照明补偿(ic)的步骤。
[0477]
在一些实施例中,方法3500还包括对参考块应用加权预测的步骤。
[0478]
方法3500包括,在步骤3520,基于更新的参考块,计算用于双向光流(bio)运动细化的时间梯度。
[0479]
方法3500包括,在步骤3530,基于时间梯度在比特流表示和当前块之间执行包括bio运动细化的转换。在一些实施例中,转换从比特流表示生成当前块(例如,可以在视频解码器中实现)。在其他实施例中,转换从当前块生成比特流表示(例如,可以在视频编码器中实现)。
[0480]
在一些实施例中,方法3500还包括计算参考块的均值;以及从参考块的每个像素中减去均值的步骤。在一个示例中,计算均值基于参考块的所有像素。在另一示例中,计算均值基于参考块的子块中的所有像素。
[0481]
在一些实施例中,计算均值是基于参考块的像素(换句话说,不是所有像素)的子集。在一个示例中,像素子集包括参考块的每第四行或列中的像素。在另一示例中,像素子集包括四个角像素。在又一示例中,像素子集包括四个角像素和中心像素。
[0482]
图36示出了用于视频解码的另一示例方法的流程图。该示例包括与如上所述的图35中所示的特征和/或步骤类似的一些特征和/或步骤。本部分中可能未单独描述这些特征和/或组件中的至少一些。
[0483]
方法3600包括,在步骤3610,对于当前块的比特流表示,生成用于双向光流(bio)运动细化的时间梯度。
[0484]
方法3600包括,在步骤3620,通过从时间梯度中减去第一均值和第二均值的差来生成更新的时间梯度,其中第一均值是第一参考块的均值,第二均值是第二参考块的均值,并且第一和第二参考块与当前块相关联。
[0485]
在一些实施例中,均值基于对应参考块的所有像素(例如,第一均值被计算为第一参考块的所有像素的均值)。在另一示例中,基于对应参考块的子块中的所有像素计算均值。
[0486]
在一些实施例中,均值基于对应参考块的像素(换句话说,不是所有像素)的子集。在一个示例中,像素子集包括对应参考块的每第四行或列中的像素。在另一示例中,像素子集包括四个角像素。在又一示例中,像素子集包括四个角像素和中心像素。
[0487]
方法3600包括,在步骤3630,基于更新的时间梯度在比特流表示和当前块之间执行包括bio运动细化的转换。在一些实施例中,转换从比特流表示生成当前块(例如,可以在视频解码器中实现)。在其他实施例中,转换从当前块生成比特流表示(例如,可以在视频编码器中实现)。
[0488]
图38示出了用于视频处理的示例方法的流程图。该方法3800包括:在步骤3810,确定当前块的原始运动信息;在步骤3820,将原始运动信息的原始运动矢量和基于原始运动
矢量推导的推导运动矢量缩放到相同的目标精度;在步骤3830,从缩放的原始和推导的运动矢量生成更新的运动矢量;以及在步骤3840,基于更新的运动矢量,执行当前块和包括当前块的视频的比特流表示之间的转换。
[0489]
图39示出了用于视频处理的示例方法的流程图。该方法3900包括:在步骤3910,确定当前块的原始运动信息;在步骤3920,基于细化方法更新当前块的原始运动信息的原始运动矢量;在步骤3930,将更新的运动矢量裁剪到一个范围内;以及在步骤3940,基于裁剪的更新的运动矢量,执行当前块和包括当前块的视频的比特流表示之间的转换。
[0490]
图40示出了用于视频处理的示例方法的流程图。该方法4000包括:在步骤4010,确定与当前块相关联的原始运动信息;在步骤4020,基于特定预测模式生成更新的运动信息;以及在步骤4030,基于更新的运动信息,执行当前块与包括当前块的视频数据的比特流表示之间的转换,其中,特定预测模式包括双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术或模板匹配技术中的一个或多个。
[0491]
图41示出了用于视频处理的示例方法的流程图。该方法4100包括:在步骤4110,从运动矢量差(mvd)精度集确定用仿射模式处理的当前块的mvd精度;在步骤4120,基于所确定的mvd精度,执行当前块与包括当前块的视频的比特流表示之间的转换。
[0492]
图42示出了用于视频处理的示例方法的流程图。该方法4200包括:在步骤4210,确定与当前块相关联的未更新的运动信息;在步骤4220,基于多个解码器侧运动矢量推导(dmvd)方法更新未更新的运动信息,以生成当前块的更新的运动信息;以及在步骤4230,基于更新的运动信息,执行当前块与包括当前块的视频的比特流表示之间的转换。
[0493]
7.所公开技术的示例实现
[0494]
图37是视频处理装置3700的框图。装置3700可用于实现这里描述的一个或多个方法。装置3700可以体现在智能手机、平板电脑、计算机、物联网(iot)接收器等中。装置3700可以包括一个或多个处理器3702、一个或多个存储器3704和视频处理硬件3706。处理器3702可以被配置为实现在本文中描述的一种或多种方法(包括但不限于方法27003100、3300-3600和3800-4200)。(一个或多个)存储器3704可以用于存储用于实现这里描述的方法和技术的数据和代码。视频处理硬件3706可用于在硬件电路中实现本文档中描述的一些技术。
[0495]
在一些实施例中,视频编码方法可以使用如关于图37所描述的在硬件平台上实现的装置来实现。
[0496]
可以使用以下基于条款的格式来描述贯穿本文档描述的各种实施例和技术。
[0497]
1.1一种视频处理方法,包括:
[0498]
确定当前块的原始运动信息;
[0499]
将原始运动信息的原始运动矢量和基于原始运动矢量推导的推导运动矢量缩放到相同的目标精度;
[0500]
从缩放的原始和推导的运动矢量生成更新的运动矢量;以及
[0501]
基于更新的运动矢量,执行当前块和包括当前块的视频的比特流表示之间的转换。
[0502]
1.2.如示例1.1的方法,其中,原始运动矢量具有第一精度,推导的运动矢量具有与第一精度不同的第二精度,并且目标精度被设置为在第一精度和第二个精度中的更高精
度或更低精度。
[0503]
1.3.如示例1.1的方法,其中,目标精度被设置为固定精度。
[0504]
1.4.如示例1.1的方法,其中,目标精度高于原始运动矢量的精度。
[0505]
1.5.如示例1.4的方法,其中,将原始运动矢量缩放为:
[0506]
mvlx’x
=sign(mvlx
x
)*(abs(mvlx
x
)<<n),
[0507]
mvlx’y
=sign(mvlxy)*(abs(mvlxy)<<n),
[0508]
其中(mvlx
x
,mvlxy)是原始运动矢量,(mvlx’x
,mvlx’y
)是缩放的原始运动矢量,函数sign(.)返回输入参数的符号,函数abs(.)返回输入参数的绝对值,n=log2(curr_mv_precision/targ_mv_precision),并且其中curr_mv_precision是原始运动矢量的精度,并且targ_mv_precision是推导的运动矢量的精度,其被作为目标精度。
[0509]
1.6.如示例1.1的方法,其中,目标精度与原始运动矢量的精度相同。
[0510]
1.7.如示例1.1的方法,其中,原始运动矢量具有第一精度,推导的运动矢量具有与第一精度不同的第二精度,并且目标精度被设置为第一精度。
[0511]
1.8.如示例1.7的方法,其中,当推导的运动矢量被右移n以实现目标精度时,推导的运动矢量被缩放为:
[0512]
v’x
=(v
x
+offset)>>n,v’y
=(vy+offset)>>n;或
[0513]
v’x
=sign(v
x
)*((abs(v
x
)+offset)>>n),v’y
=sign(vy)*((abs(vy)+offset)>>n)
[0514]
其中(v
x
,vy)是推导的运动矢量,(v’x
,v’y
)是缩放的推导运动矢量,
[0515]
offset是应用于推导运动矢量以实现目标精度的偏移,
[0516]
函数sign(.)返回输入参数的符号,函数abs(.)返回输入参数的绝对值,
[0517]
n=log2(curr_mv_precision/targ_mv_precision),其中curr_mv_precision是第一精度,targ_mv_precision是第二精度。
[0518]
1.9.如示例1.1的方法,其中,所述缩放和更新的运动矢量的生成被执行为:
[0519]
mvl0’x
=-v
x
/s0+mvl0
x
,mvl0’y
=-vy/s0+mvl0y;和/或
[0520]
mvl1’x
=v
x
/s1+mvl1
x
,mvl1’y
=vy/s1+mvl1y[0521]
其中,(mvl0
x
,mvl0y)和(mvl1
x
,mvl1y)是原始运动矢量,(mvl0’x
,mvl0’y
)和(mvl1’x
,mvl1’y
)是更新的运动矢量,(v
x
,vy)是推导的运动矢量,以及s0和s1是缩放因子。
[0522]
1.10.如示例1.1的方法,其中,所述缩放和更新的运动矢量的生成被执行为:
[0523]
mvl0’x
=(-v
x
+offset0)/s0+mvl0
x
,mvl0’y
=-(vy+offset0)/s0+mvl0y,和/或
[0524]
mvl1’x
=(v
x
+offset1)/s1+mvl1
x
,mvl1’y
=(vy+offset1)/s1+mvl1y[0525]
其中,(mvl0
x
,mvl0y)和(mvl1
x
,mvl1y)是原始运动矢量,(mvl0’x
,mvl0’y
)和(mvl1’x
,mvl1’y
)是更新的运动矢量,(v
x
,vy)是推导的运动矢量,offset0和offset1是偏移,并且s0和s1是缩放因子。
[0526]
1.11.如示例1.1的方法,其中,所述缩放和更新的运动矢量的生成被执行为:
[0527]
mvl0’x
=((-v
x
+1)>>1)+mvl0
x
,mvl0’y
=(-(vy+1)>>1)+mvl0y;和/或
[0528]
mvl1’x
=((v
x
+1)>>1)+mvl1
x
,mvl1’y
=((vy+1)>>1)+mvl1y[0529]
其中,(mvl0
x
,mvl0y)和(mvl1
x
,mvl1y)是原始运动矢量,(mvl0’x
,mvl0’y
)和(mvl1’x
,mvl1’y
)是更新的运动矢量,并且(v
x
,vy)是推导的运动矢量。
[0530]
1.12.如示例1.9-1.11中任一个的方法,其中,当τ0>0且τ1》0时执行所述缩放和更新的运动矢量的生成,其中,τ0=poc(当前)-poc(ref0),τ1=poc(ref1)-poc(当前),并且其中poc(当前)、poc(ref0)和poc(ref1)分别是当前块、第一参考块和第二参考块的图片顺序计数。
[0531]
1.13.如示例1.1的方法,其中,所述缩放和更新的运动矢量的生成被执行为:
[0532]
mvl0’x
=-sf0*v
x
+mvl0
x
,mvl0’y
=-vy*sf0+mvl0y;和/或
[0533]
mvl1’x
=-sf1*v
x
+mvl1
x
,mvl1’y
=-sf1*vy+mvl1y[0534]
其中,(mvl0
x
,mvl0y)和(mvl1
x
,mvl1y)是原始运动矢量,(mvl0’x
,mvl0’y
)和(mvl1’x
,mvl1’y
)是更新的运动矢量,(v
x
,vy)是推导的运动矢量,以及sf0和sf1是缩放因子。
[0535]
1.14.如示例1.13的方法,其中,当τ0>0、τ1<0且τ0>|τ1|时,执行所述缩放和更新的运动矢量的生成,其中τ0=poc(当前)-poc(ref0),τ1=poc(ref1)-poc(当前),并且其中poc(当前)、poc(ref0)和poc(ref1)分别是当前块、第一参考块和第二参考块的图片顺序计数。
[0536]
1.15.如示例1.1的方法,其中,所述缩放和更新的运动矢量的生成被执行为:
[0537]
mvl0’x
=sfact0*v
x
+mvl0
x
,mvl0’y
=sfact0*vy+mvl0y,和/或
[0538]
mvl1’x
=sfact1*v
x
+mvl1
x
,mvl1’y
=sfact1*vy+mvl1y[0539]
其中,(mvl0
x
,mvl0y)和(mvl1
x
,mvl1y)是原始运动矢量,(mvl0’x
,mvl0’y
)和(mvl1’x
,mvl1’y
)是更新的运动矢量,(v
x
,vy)是推导的运动矢量,以及sfact0和sfact1是缩放因子。
[0540]
1.16.如示例1.15的方法,其中,当τ0>0、τ1<0且τ0<|τ1|时,执行所述缩放和更新的运动矢量的生成,其中τ0=poc(当前)-poc(ref0),τ1=poc(ref1)-poc(当前),并且其中poc(当前)、poc(ref0)和poc(ref1)分别是当前块、第一参考块和第二参考块的图片顺序计数。
[0541]
1.17.如示例1.1的方法,其中,当τ0>0、τ1>0且τ0>|τ1|时,一起执行推导的运动矢量的推导和更新的运动矢量的生成,其中,τ0=poc(当前)-poc(ref0),τ1=poc(ref1)-poc(当前),并且其中poc(当前)、poc(ref0)和poc(ref1)分别是当前块、第一参考块和第二参考块的图片顺序计数。
[0542]
1.18.如示例1.17的方法,其中,当推导的运动矢量被右移n以实现目标精度时,所述缩放和更新的运动矢量的生成被执行为:
[0543]
mvl0’x
=((-v
x
+offset)>>(n+1))+mvl0
x
,mvl0’y
=((-vy+offset1)>>(n+1))+mvl0y,mvl1’x
=((v
x
+offset)>>(n+1))+mvl1
x
,mvl1’y
=((vy+offset2)>>(n+1))+mvl1y,
[0544]
其中,(mvl0
x
,mvl0y)和(mvl1
x
,mvl1y)是原始运动矢量,(mvl0’x
,mvl0’y
)和(mvl1’x
,mvl1’y
)是更新的运动矢量,(v
x
,vy)是推导的运动矢量,offset1和offset2是偏移,n=log2(curr_mv_precision/targ_mv_precision),并且其中curr_mv_precision是原始运动矢量的精度,并且targ_mv_precision是推导的运动矢量的精度。
[0545]
1.19.如示例1.17的方法,其中,原始运动矢量具有第一精度,推导的运动矢量具有与第一精度不同的第二精度,并且原始运动矢量被左移n以实现目标精度作为第二精度。
[0546]
1.20.如示例1.17的方法,其中,将原始运动矢量左移k,并且将推导的运动矢量右
移n-k,以实现目标精度。
[0547]
1.21.如示例1.17的方法,其中,所述缩放和更新的运动矢量的生成被执行为:
[0548]
mvl0’x
=-sign(v
x
)*((abs(v
x
)+offset0)>>(n+1))+mvl0
x
,
[0549]
mvl0’y
=-sign(vy)*((abs(vy)+offset0)>>(n+1))+mvl0y,
[0550]
mvl1’x
=sign(v
x
)*((abs(v
x
)+offset1)>>(n+1))+mvl1
x
,
[0551]
mvl1’y
=sign(vy)*((abs(vy)+offset1)>>(n+1))+mvl1y[0552]
其中,(mvl0
x
,mvl0y)和(mvl1
x
,mvl1y)是原始运动矢量,(mvl0’x
,mvl0’y
)和(mvl1’x
,mvl1’y
)是更新的运动矢量,(v
x
,vy)是推导的运动矢量,offset0和offset1是偏移,函数sign(.)返回输入参数的符号,函数abs(.)返回输入参数的绝对值,n=log2(curr_mv_precision/targ_mv_precision),curr_mv_precision是原始运动矢量的精度,并且targ_mv_precision是推导的运动矢量的精度。
[0553]
1.22.如示例1.1的方法,其中,第一和第二参考运动矢量的更新包括使用双向光流(bio)细化。
[0554]
1.23.如示例1.1-1.22中任一个的方法,其中,在当前块满足特定条件的情况下不应用方法。
[0555]
1.24.如示例1.23的方法,其中,特定条件规定以下中的至少一个:当前块的尺寸、当前块的条带类型、当前块的图片类型和当前块的片类型。
[0556]
1.25.如示例1.23的方法,其中,特定条件规定当前块包含的样本数小于第一阈值。
[0557]
1.26.如示例1.23的方法,其中,特定条件规定当前块的宽度和高度的最小尺寸小于或不大于第二阈值。
[0558]
1.27.如示例1.23的方法,其中,特定条件规定当前块的宽度小于或不大于第三阈值,和/或当前块的高度小于或不大于第四阈值。
[0559]
1.28.如示例1.23的方法,其中,特定条件规定当前块的宽度大于或不小于第三阈值,和/或当前块的高度大于或不小于第四阈值。
[0560]
1.29.如示例1.23的方法,其中,在子块所属的块的宽度和/或高度等于或大于第五阈值的情况下,以子块级应用方法。
[0561]
1.30.如示例1.29的方法,其中,将当前块分割为多个子块,并且多个子块中的每一个进一步以与具有等于子块尺寸的尺寸的普通编码块相同的方式经历双向光流(bio)过程。
[0562]
1.31.如示例1.25-1.29中任一个的方法,其中,在序列参数集(sps)级、或图片参数集(pps)级、或图片级、或条带级、或片级中预定义或用信号通知所述第一至第五阈值中的每一个。
[0563]
1.32.如示例1.31的方法,其中,根据包括块尺寸、图片类型和时间层索引中的至少一个的编码信息来定义第一至第五阈值中的每一个。
[0564]
1.33.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中指令在由处理器运行时使处理器实现示例1.1至1.32中任一个的方法。
[0565]
1.34.一种存储在非暂时性计算机可读介质上的计算机程序产品,计算机程序产品包括用于进行如示例1.1至1.32中任一个的方法的程序代码。
[0566]
2.1.一种视频处理方法,包括:
[0567]
确定当前块的原始运动信息;
[0568]
基于细化方法更新所述当前块的所述原始运动信息的原始运动矢量;
[0569]
将更新的运动矢量裁剪到一个范围内;以及
[0570]
基于裁剪的更新的运动矢量,执行所述当前块和包括所述当前块的视频的所述比特流表示之间的转换。
[0571]
2.2.如示例2.1所述的方法,其中,所述细化方法包括双向光流bio细化、解码器侧运动矢量细化dmvr、帧速率上转换fruc或模板匹配。
[0572]
2.3.如示例2.1所述的方法,其中,将所述更新的运动矢量裁剪到与所述原始运动矢量允许的范围相同的范围内。
[0573]
2.4.如示例2.1所述的方法,其中,将所述更新的运动矢量和所述原始运动矢量之间的差裁剪到相同范围或对不同子块裁剪到不同范围内。
[0574]
2.5.如示例2.1所述的方法,其中,所述细化方法包括双向光流bio细化,并且将在所述bio细化中从所述原始运动矢量推导的运动矢量约束到第一范围,如下:
[0575]-m
x
《v
x
《n
x
,和/或-my《vy《ny,
[0576]
其中(v
x
,vy)是推导的运动矢量,并且m
x
、n
x
、my、ny是非负整数。
[0577]
2.6.如示例2.1的方法,其中细化方法包括双向光流(bio)细化,并且将更新的运动矢量约束到第二范围,如下:
[0578]-m
l0x
《mvl0’x
《n
l0x
,和/或
[0579]-m
l2.1x
《mvl2.1’x
《n
l2.1x
,和/或
[0580]-m
l0x
《mvl0’x
《n
l0x
,和/或
[0581]-m
l2.1y
《mvl2.1’y
《n
l2.1y
[0582]
其中(mvl0’x
,mvl0’y
)和(mvl2.1’x
,mvl2.1’y
)是不同参考列表的更新的运动矢量,并且m
l0x
、n
l0x
、m
l2.1x
、n
l2.1x
、m
l0y
、n
l0y
、m
l2.1y
、n
l2.1y
是非负的整数。
[0583]
2.7.如示例2.1-2.6中任一项所述的方法,其中在所述当前块满足特定条件的情况下不应用所述方法。
[0584]
2.8.如示例2.7所述的方法,其中,所述特定条件规定以下中的至少一个:所述当前块的尺寸、所述当前块的条带类型、所述当前块的图片类型和所述当前块的片类型。
[0585]
2.9.如示例2.7所述的方法,其中,所述特定条件规定所述当前块包含的样本数小于第一阈值。
[0586]
2.10.如示例2.7所述的方法,其中,所述特定条件规定所述当前块的宽度和高度的最小尺寸小于或不大于第二阈值。
[0587]
2.11.如示例2.7所述的方法,其中,所述特定条件规定所述当前块的宽度小于或不大于第三阈值,和/或所述当前块的高度小于或不大于第四阈值。
[0588]
2.12.如示例2.7所述的方法,其中,所述特定条件指定所述当前块的宽度大于或不小于第三阈值,和/或所述当前块的高度大于或不小于第四阈值。
[0589]
2.13.如示例2.7所述的方法,其中,在所述子块所属的块的宽度和/或高度等于或大于第五阈值的情况下,以子块级应用所述方法。
[0590]
2.14.如示例2.13所述的方法,其中,将所述当前块分割为多个子块,并且所述多
个子块中的每一个进一步以与具有等于所述子块尺寸的尺寸的普通编码块相同的方式经历双向光流bio过程。
[0591]
2.15.如示例2.9-2.13中任一项所述的方法,其中,在序列参数集sps级、或图片参数集pps级、或图片级、或条带级或片级预定义或用信号通知所述第一至第五阈值中的每一个。
[0592]
2.16.如示例2.15所述的方法,其中,根据包括块尺寸、图片类型和时域层索引中的至少一个的编码的信息来定义所述第一至第五阈值中的每个。
[0593]
2.17.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中所述指令在由所述处理器运行时使所述处理器实现示例2.1至2.16中任一项所述的方法。
[0594]
2.18.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于进行如示例2.1至2.16中任一项所述的方法的程序代码。
[0595]
3.1.一种视频处理方法,包括:
[0596]
确定与当前块相关联的原始运动信息;
[0597]
基于特定预测模式生成更新的运动信息;以及
[0598]
基于所述更新的运动信息,执行所述当前块与包括所述当前块的视频数据的比特流表示之间的转换,其中,所述特定预测模式包括双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术或模板匹配技术中的一个或多个。
[0599]
3.2.如示例3.1所述的方法,其中,所述更新的运动信息包括更新的运动矢量。
[0600]
3.3.如示例3.1所述的方法,其中,所述更新的运动矢量用于运动预测,以用于对后续视频块进行编码;或者所述更新的运动矢量用于滤波或重叠块运动补偿(obmc)。
[0601]
3.4.如示例3.3所述的方法,其中,所述更新的运动矢量用于高级运动矢量预测(amvp)模式、merge模式和/或仿射模式中的运动预测。
[0602]
3.5.如示例3.3所述的方法,其中,所述滤波包括去方块滤波。
[0603]
3.6.如示例3.1-3.5中任一项所述的方法,其中,所述更新的运动信息用于第一模块,并且原始运动信息用于第二模块。
[0604]
3.7.如示例3.6所述的方法,其中,所述第一模块是运动预测模块,并且所述第二模块是去方块模块。
[0605]
3.8.如示例3.2-3.7中任一项所述的方法,其中,所述运动预测用于处理当前图片或条带中的所述当前块之后的块。
[0606]
3.9.如示例3.2-3.7中任一项所述的方法,其中,所述运动预测用于处理在包括所述当前块的当前图片或条带之后要处理的图片或条带。
[0607]
3.10.如示例3.1-3.9中任一项所述的方法,其中,所述更新的运动矢量仅用于按处理顺序不紧随在所述当前块之后的编码单元(cu)或预测单元(pu)的运动信息预测。
[0608]
3.11.如示例3.1至3.10中任一项所述的方法,其中,所述更新的运动矢量不用于按处理顺序紧随所述当前块的cu/pu的运动预测。
[0609]
3.12.如示例3.1-3.11中任一项所述的方法,其中,所述更新的运动矢量仅用作用于处理后续图片/片/条带的预测器。
[0610]
3.13.如示例3.12所述的方法,其中,所述更新的运动矢量用作高级运动矢量预测
(amvp)模式、merge模式或仿射模式中的时域运动矢量预测(tmvp)。
[0611]
3.14.如示例3.12所述的方法,其中,所述更新的运动矢量仅用作用于在可选时间运动矢量预测(atmvp)模式和/或空-时运动矢量预测(stmvp)模式中处理后续图片/片/条带的预测器。
[0612]
3.15.如示例3.1-3.14中任一项所述的方法,其中,从编码器用信号向解码器通知包括是否更新用于bio编码块的mv和/或是否将所述更新的mv用于运动预测和/或如何将所述更新的mv用于运动预测的信息。
[0613]
3.16.如示例3.15所述的方法,还包括:在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带报头、编码树单元(ctu)或cu中信令通知所述信息。
[0614]
3.17.如示例3.1所述的方法,还包括:更新运动信息,其包括在块级更新每个预测方向的运动矢量和参考图片。
[0615]
3.18.如示例3.1或3.17所述的方法,其中,在一个块内,对于一些子块,存储所述更新的运动信息,并且对于其他剩余的子块,存储未更新的运动信息。
[0616]
3.19.如示例3.1或3.17所述的方法,仅针对不在pu/cu/ctu边界处的内部子块存储所述更新的运动矢量
[0617]
3.20.如示例3.19所述的方法,还包括:将内部子块的所述更新的运动矢量用于运动预测、去方块或obmc。
[0618]
3.21.如示例3.1或3.17所述的方法,仅针对在pu/cu/ctu边界处的边界子块存储所述更新的运动矢量。
[0619]
3.22.如示例3.1或3.17所述的方法,其中,如果相邻块和所述当前块不在相同的ctu中或具有64
×
64或32
×
32尺寸的相同区域中,则不使用来自所述相邻块的更新的运动信息。
[0620]
3.23.如示例3.22所述的方法,其中,如果所述相邻块和所述当前块不在相同的ctu中或具有64
×
64或32
×
32尺寸的相同区域中,则将所述相邻块标记为不可用。
[0621]
3.24.如示例3.22所述的方法,其中,如果所述相邻块和所述当前块不在相同的ctu中或具有64
×
64或32
×
32尺寸的相同区域中,则所述当前块使用未更新的运动信息。
[0622]
3.25.如示例3.17所述的方法,其中,如果相邻块和所述当前块不在相同的ctu行中或具有64
×
64或32
×
32尺寸的区域的相同行中,则不使用来自所述相邻块的更新的运动矢量。
[0623]
3.26.如示例3.25所述的方法,其中,如果所述相邻块和所述当前块不在相同的ctu行中或具有64
×
64或32
×
32尺寸的区域的相同行中,则将所述相邻块标记为不可用。
[0624]
3.27.如示例3.25所述的方法,其中,如果所述相邻块和所述当前块不在相同的ctu行中或具有64
×
64或32
×
32尺寸的区域的相同行中,则所述当前块使用来自所述相邻块的未更新的运动信息。
[0625]
3.28.如示例3.17所述的方法,其中,如果块的最底行是ctu或者具有64
×
64或32
×
32尺寸的区域的最底行,则不更新所述块的运动信息。
[0626]
3.29.如示例3.17所述的方法,其中,如果块的最右列是ctu或者具有64
×
64或32
×
32尺寸的区域的最右列,则不更新所述块的运动信息。
[0627]
3.30.如示例3.1或3.17所述的方法,还包括基于相邻ctu或区域的更新的运动信
息或未更新运动信息来预测当前ctu内的块/cu的运动信息。
[0628]
3.31.如示例3.30所述的方法,其中,将来自左ctu或左区域的所述更新的运动信息用于所述当前ctu。
[0629]
3.32.如示例3.30或3.31所述的方法,其中,将来自左上ctu或左上区域的所述更新的运动信息用于所述当前ctu。
[0630]
3.33.如示例3.30-3.32中任一项所述的方法,其中,将来自上ctu或上区域的所述更新的运动信息用于所述当前ctu。
[0631]
3.34.如示例3.30-3.33中任一项所述的方法,其中,将来自右上ctu或右上区域的所述更新的运动信息用于所述当前ctu。
[0632]
3.35.如示例3.30-3.34中任一项所述的方法,其中,一个或多个区域中的每一个具有64
×
64或32
×
32的尺寸。
[0633]
3.36.如示例3.1-3.35中任一项所述的方法,其中,在所述当前块满足特定条件的情况下,不应用所述方法。
[0634]
3.37.如示例3.36所述的方法,其中,所述特定条件规定以下中的至少一方面:所述当前块的尺寸、所述当前块的条带类型、所述当前块的图片类型和所述当前块的片类型。
[0635]
3.38.如示例3.36所述的方法,其中,所述特定条件规定所述当前块包含的样本数小于第一阈值。
[0636]
3.39.如示例3.36所述的方法,其中,所述特定条件规定所述当前块的宽度和高度的最小尺寸小于或不大于第二阈值。
[0637]
3.40.如示例3.36所述的方法,其中,所述特定条件规定所述当前块的宽度小于或不大于第三阈值,和/或所述当前块的高度小于或不大于第四阈值。
[0638]
3.41.如示例3.36所述的方法,其中,所述特定条件规定所述当前块的宽度大于或不小于第三阈值,和/或所述当前块的高度大于或不小于第四阈值。
[0639]
3.42.如示例3.36所述的方法,其中,在子块所属的块的宽度和/或高度等于或大于第五阈值的情况下,所述方法被应用到子块级。
[0640]
3.43.如示例3.42所述的方法,其中,将所述当前块分割为多个子块,并且所述多个子块中的每一个进一步以与具有与所述子块尺寸相等尺寸的正常编码块相同的方式进行双向光流(bio)处理。
[0641]
3.44.如示例3.38-3.42中任一项所述的方法,其中,所述第一至第五阈值中的每一个在序列参数集(sps)级、或图片参数集(pps)级、或图片级、或条带级或片级中预定义或信令通知。
[0642]
3.45.如示例3.44所述的方法,其中,根据包括块尺寸、图片类型和时域层索引中的至少一个的编码的信息来定义所述第一至第五阈值中的每一个。
[0643]
3.46.一种视频系统中的装置,包括处理器和其上具有指令的非易失性存储器,其中,所述指令在由所述处理器运行时使所述处理器实现示例3.1至3.45中任一项所述的方法。
[0644]
3.47.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于执行示例3.1至3.45中任一项所述的方法的程序代码。
[0645]
4.1.一种视频处理方法,包括:
[0646]
从运动矢量差(mvd)精度集确定用于以仿射模式处理的当前块的mvd精度;
[0647]
基于所确定的mvd精度,执行所述当前块与包括所述当前块的视频的比特流表示之间的转换。
[0648]
4.2.如示例4.1所述的方法,其中,所述mvd表示预测运动矢量和在运动补偿处理期间使用的实际运动矢量之间的差。
[0649]
4.3.如示例4.2所述的方法,其中,所述mvd精度集包括构成等比序列的多个不同的mvd精度。
[0650]
4.4.如示例4.3所述的方法,其中,所述mvd精度集包括1/4、1和4像素mvd精度。
[0651]
4.5.如示例4.3所述的方法,其中,所述mvd精度集包括1/4、1/2、1、2和4像素mvd精度。
[0652]
4.6.如示例4.3所述的方法,其中,所述mvd精度集包括1/16、1/8和1/4像素mvd精度。
[0653]
4.7.如示例4.1所述的方法,其中,所述当前块是编码单元或预测单元。
[0654]
4.8.如示例4.1-4.7中任一项所述的方法,其中确定所述mvd精度还包括:
[0655]
基于指示所述mvd精度的语法元素确定所述当前块的mvd精度。
[0656]
4.9.如示例4.8所述的方法,其中,当存在所述当前块的非零mvd分量时,存在所述语法元素。
[0657]
4.10.如示例4.8所述的方法,其中,当不存在所述当前块的非零mvd分量时,不存在所述语法元素。
[0658]
4.11.如示例4.8所述的方法,其中,无论是否存在所述当前块的任何非零mvd分量,都存在所述语法元素。
[0659]
4.12.如示例4.1所述的方法,其中,利用仿射帧间模式或仿射高级运动矢量预测(amvp)模式处理所述当前块。
[0660]
4.13.如示例4.12所述的方法,其中,所述当前块的不同mvd与不同的mvd精度相关联。
[0661]
4.14.如示例4.13所述的方法,其中,所述仿射帧间模式是具有2个控制点的4参数仿射帧间模式,并且对每个预测方向上的每个控制点使用一个mvd。
[0662]
4.15.如示例4.14所述的方法,其中,所述2个控制点与不同的mvd精度相关联。
[0663]
4.16.如示例4.13所述的方法,其中,所述仿射帧间模式是具有3个控制点的6参数仿射帧间模式,并且对每个预测方向上的每个控制点使用一个mvd。
[0664]
4.17.如示例4.16所述的方法,其中,所述3个控制点与不同的mvd精度相关联。
[0665]
4.18.如示例4.15所述的方法,其中存在两个语法元素以指示所述2个控制点的不同mvd精度。
[0666]
4.19.如示例4.17所述的方法,其中存在三个语法元素以指示所述3个控制点的不同mvd精度。
[0667]
4.20.如示例4.1所述的方法,其中,基于所述当前块的编码信息确定所述mvd精度集。
[0668]
4.21.如示例4.20所述的方法,其中,所述编码信息包括所述当前块的量化级。
[0669]
4.22.如示例4.21所述的方法,其中,为较大的量化级选择较粗略的mvd精度集。
[0670]
4.23.如示例4.21所述的方法,其中,为较小的量化级选择较精细的mvd精度集。
[0671]
4.24.如示例4.1-4.23中任一项所述的方法,其中,在所述当前块满足特定条件的情况下不应用所述方法。
[0672]
4.25.如示例4.24所述的方法,其中,所述特定条件指定以下中的至少一个:所述当前块的尺寸、所述当前块的条带类型、所述当前块的图片类型和所述当前块的片类型。
[0673]
4.26.如示例4.24所述的方法,其中,所述特定条件指定所述当前块包含的样本数小于第一阈值。
[0674]
4.27.如示例4.24所述的方法,其中,所述特定条件指定所述当前块的宽度和高度的最小尺寸小于或不大于第二阈值。
[0675]
4.28.如示例4.24所述的方法,其中,所述特定条件指定所述当前块的宽度小于或不大于第三阈值,和/或所述当前块的高度小于或不大于第四阈值。
[0676]
4.29.如示例4.24所述的方法,其中,所述特定条件指定所述当前块的宽度大于或不小于第三阈值,和/或所述当前块的高度大于或不小于第四阈值。
[0677]
4.30.如示例4.24所述的方法,其中,在子块所属的块的宽度和/或高度等于或大于第五阈值的情况下,在子块级应用所述方法。
[0678]
4.31.如示例4.30所述的方法,其中,将所述当前块分割为多个子块,并且所述多个子块中的每个子块进一步以与具有等于所述子块尺寸的尺寸的普通编码块相同的方式经历双向光流(bio)过程。
[0679]
4.32.如示例4.26-4.30中任一项所述的方法,其中,所述第一至第五阈值中的每一个在序列参数集(sps)级、或图片参数集(pps)级、或图片级、或条带级或片级中预定义或用信号通知。
[0680]
4.33.如示例4.32所述的方法,其中,根据包括块尺寸、图片类型和时域层索引中的至少一个的编码信息来定义所述第一至第五阈值中的每一个。
[0681]
4.34.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中所述指令在由所述处理器运行时使所述处理器实现示例4.1至4.33中任一项所述的方法。
[0682]
4.35.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于进行示例4.1至4.33中任一项所述的方法的程序代码。
[0683]
5.1.一种视频处理方法,包括:
[0684]
确定与当前块相关联的未更新的运动信息;
[0685]
基于多个解码器侧运动矢量推导(dmvd)方法更新所述未更新的运动信息,以生成所述当前块的更新的运动信息;以及
[0686]
基于所述更新的运动信息,执行所述当前块与包括所述当前块的视频的比特流表示之间的转换。
[0687]
5.2.如示例5.1所述的方法,其中所述多个dmvd方法包括以下中的至少两个:双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术、和模板匹配技术。
[0688]
5.3.如示例5.2所述的方法,其中,以同时的方式对所述当前块的所述未更新的运动信息执行所述多个dmvd方法,并且输入所述未更新的运动信息的未更新的运动矢量作为
所述多个dmvd方法中每一个的搜索起点。
[0689]
5.4.如示例5.2所述的方法,其中,以级联方式对所述当前块的所述未更新的运动信息执行所述多个dmvd方法,并且输入由一个dmvd方法生成的更新的运动信息的更新的运动矢量作为下一个dmvd方法的搜索起点。
[0690]
5.5.如示例5.4所述的方法,其中,所述一个dmvd方法是dmvr,并且所述下一个dmvd方法是bio,其中,对所述当前块的所述未更新的运动信息执行dmvr以生成所述更新的运动信息,并且输入所述更新的运动信息的所述更新的运动矢量作为bio的搜索起点。
[0691]
5.6.如示例5.1至5.5中任一项所述的方法,其中,所述基于多个解码器侧运动矢量推导(dmvd)方法更新所述未更新的运动信息,以生成所述当前块的更新的运动信息还包括:
[0692]
通过所述多个dmvd方法推导多组更新的运动信息,
[0693]
从所述多组更新的运动信息生成最终组的更新的运动信息。
[0694]
5.7.如示例5.6所述的方法,其中,所述从所述多组更新的运动信息生成最终组的更新的运动信息还包括:
[0695]
基于所述多组更新的运动信息的平均或加权平均生成最终组的更新的运动信息。
[0696]
5.8.如示例5.6所述的方法,其中,所述从所述多组更新的运动信息生成最终组的更新的运动信息还包括:
[0697]
通过使用中值滤波器对所述多组更新的运动信息进行滤波来生成所述最终组的更新的运动信息。
[0698]
5.9.如示例5.6所述的方法,其中,所述从所述多组更新的运动信息生成最终组的更新的运动信息还包括:
[0699]
为所述多个dmvd方法分配不同的优先级,
[0700]
选择由具有最高优先级的dmvd方法推导的一组更新的运动信息作为最终组的更新的运动信息。
[0701]
5.10.如示例5.9所述的方法,其中,为所述解码器侧运动矢量细化(dmvr)分配所述最高优先级。
[0702]
5.11.如示例5.1至5.5中任一项所述的方法,其中,所述基于所述更新的运动信息,执行所述当前块与包括所述当前块的视频的比特流表示之间的转换进一步包括:
[0703]
使用由所述多个dmvd方法推导的多组更新的运动信息分别执行运动补偿,以获得多组运动补偿结果,
[0704]
基于所述多组运动补偿结果的平均或加权平均生成所述当前块。
[0705]
5.12.如示例5.1至5.5中任一项所述的方法,其中,所述基于所述更新的运动信息,执行所述当前块与包括所述当前块的视频的比特流表示之间的转换进一步包括:
[0706]
使用由所述多个dmvd方法推导的多组更新的运动信息分别执行运动补偿,以获得多组运动补偿结果,
[0707]
通过使用中值滤波器对所述多组运动补偿结果进行滤波来生成所述当前块。
[0708]
5.13.如示例5.1至5.5中任一项所述的方法,其中,所述基于多个解码器侧运动矢量推导(dmvd)方法更新所述未更新的运动信息,以生成所述当前块的更新的运动信息还包括:
[0709]
为所述多个dmvd方法分配不同的优先级,
[0710]
从所述多个dmvd方法中选择具有最高n个优先级、并且有效的dmvd方法,n是整数且n》=1,
[0711]
基于n个dmvd方法为所述当前块生成更新的运动信息。
[0712]
5.14.如示例5.1至5.13中任一项所述的方法,其中,所述当前块是预测单元。
[0713]
5.15.如示例5.1至5.14中任一项所述的方法,其中,所述未更新的运动信息包括针对每个预测方向的未更新的运动矢量和参考图片。
[0714]
5.16.如示例5.1-5.15中任一项所述的方法,其中,在所述当前块满足特定条件的情况下不应用所述方法。
[0715]
5.17.如示例5.16所述的方法,其中,所述特定条件指定以下中的至少一个:所述当前块的尺寸、所述当前块的条带类型、所述当前块的图片类型和所述当前块的片类型。
[0716]
5.18.如示例5.16所述的方法,其中,所述特定条件指定所述当前块包含的样本数小于第一阈值。
[0717]
5.19.如示例5.16所述的方法,其中,所述特定条件指定所述当前块的宽度和高度的最小尺寸小于或不大于第二阈值。
[0718]
5.20.如示例5.16所述的方法,其中,所述特定条件指定所述当前块的宽度小于或不大于第三阈值,和/或所述当前块的高度小于或不大于第四阈值。
[0719]
5.21.如示例5.16所述的方法,其中,所述特定条件指定所述当前块的宽度大于或不小于第三阈值,和/或所述当前块的高度大于或不小于第四阈值。
[0720]
5.22.如示例5.16所述的方法,其中,在子块所属的块的宽度和/或高度等于或大于第五阈值的情况下,在子块级应用所述方法。
[0721]
5.23.如示例5.22所述的方法,其中,将所述当前块分割为多个子块,并且所述多个子块中的每一个进一步以与具有等于所述子块尺寸的尺寸的普通编码块相同的方式经历双向光流(bio)过程。
[0722]
5.24.如示例5.18-5.22中任一项所述的方法,其中,所述第一至第五阈值中的每一个在序列参数集(sps)级、或图片参数集(pps)级、或图片级、或条带级或片级中预定义或用信号通知。
[0723]
5.25.如示例5.24所述的方法,其中,根据包括块尺寸、图片类型和时域层索引中的至少一个的编码的信息来定义所述第一至第五阈值中的每一个。
[0724]
5.26.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中所述指令在由所述处理器运行时使所述处理器实现示例5.1至5.25中任一项所述的方法。
[0725]
5.27.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于进行示例5.1至5.25中任一项所述的方法的程序代码。
[0726]
从前述内容可以理解,本文已经出于说明的目的描述了当前所公开的技术的具体实施例,但是在不脱离本发明的范围的情况下可以做出各种修改。因此,除了所附权利要求之外,当前所公开的技术不受限制。
[0727]
本专利文档中描述的主题的实现方式和功能性操作可以在各种系统、数字电子电路中实施,或者在计算机软件、固件或硬件中实施,包括本说明书中公开的结构及其结构等
同物,或者以他们的一个或多个的组合实施。本说明书中描述的主题的视线方式可以被实施为一个或多个计算机程序产品,即,在计算机可读介质上编码的一个或多个暂时性和非暂时性计算机程序指令模块,用于由数据处理装置运行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的合成、或者它们中的一个或多个的组合。术语“数据处理单元”和“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或者多个处理器或计算机。除了硬件之外,装置可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统及其一个或多个的组合的代码。
[0728]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件相对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于所讨论的程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点或分布在多个站点并通过通信网络互连。
[0729]
本说明书中描述的处理和逻辑流可以由一个或多个可编程处理器执行,该一个或多个处理器运行一个或多个计算机程序,通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流也可以由专用逻辑电路来执行,并且装置也可以实施为专用逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。
[0730]
例如,适用于运行计算机程序的处理器包括通用和专用微处理器、以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或可操作地耦合到一个或多个大容量存储设备,以从其接收数据或向其传送数据,或两者兼有。然而,计算机不一定需要具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
[0731]
旨在将说明书与附图一起仅视为示例性的,其中示例性意味着示例。如这里所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。另外,除非上下文另有明确说明,否则“或”的使用旨在包括“和/或”。
[0732]
虽然本专利文档包含许多细节,但不应将其解释为对任何发明或要求保护的范围的限制,而应解释为特定于特定发明的特定实施例的特征的描述。本专利文档在分离的实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独地实施,或在任何合适的子组合中实施。此外,虽然特征可以被描述为在某些组合中起作用,甚至最初这样要求保护,但在某些情况下,可以从要求保护的组合中删除组合中的一个或多个特征,并且要求保护的组合可以指向子组合或子组合的变体。
[0733]
同样,尽管在附图中以特定顺序描述了操作,但这不应理解为要获得期望的结果必须按照所示的特定顺序或次序顺序来执行这些操作,或执行所有示出的操作。此外,本专利文档所述实施例中的各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。
[0734]
仅描述了一些实施方式和示例,其他实施方式、增强和变体可以基于本专利文档中描述和说明的内容做出。
技术特征:
1.一种视频处理方法,包括:确定与当前块相关联的未更新的运动信息;基于多个解码器侧运动矢量推导(dmvd)方法更新所述未更新的运动信息,以生成所述当前块的更新的运动信息;以及基于所述更新的运动信息,执行所述当前块与包括所述当前块的视频的比特流表示之间的转换,其中所述多个dmvd方法包括以下中的至少两个:双向光流(bio)细化、解码器侧运动矢量细化(dmvr)、帧速率上转换(fruc)技术、和模板匹配技术,并且其中,以级联方式对所述当前块的所述未更新的运动信息执行所述多个dmvd方法,并且输入由一个dmvd方法生成的更新的运动信息的更新的运动矢量作为下一个dmvd方法的搜索起点。2.如权利要求1所述的方法,其中,以同时的方式对所述当前块的所述未更新的运动信息执行所述多个dmvd方法,并且输入所述未更新的运动信息的未更新的运动矢量作为所述多个dmvd方法中每一个的搜索起点。3.如权利要求1所述的方法,其中,所述一个dmvd方法是dmvr,并且所述下一个dmvd方法是bio,其中,对所述当前块的所述未更新的运动信息执行dmvr以生成所述更新的运动信息,并且输入所述更新的运动信息的所述更新的运动矢量作为bio的搜索起点。4.如权利要求1至3中任一项所述的方法,其中,所述基于多个解码器侧运动矢量推导(dmvd)方法更新所述未更新的运动信息,以生成所述当前块的更新的运动信息还包括:通过所述多个dmvd方法推导多组更新的运动信息,从所述多组更新的运动信息生成最终组的更新的运动信息。5.如权利要求4所述的方法,其中,所述从所述多组更新的运动信息生成最终组的更新的运动信息还包括:基于所述多组更新的运动信息的平均或加权平均生成最终组的更新的运动信息。6.如权利要求4所述的方法,其中,所述从所述多组更新的运动信息生成最终组的更新的运动信息还包括:通过使用中值滤波器对所述多组更新的运动信息进行滤波来生成所述最终组的更新的运动信息。7.如权利要求4所述的方法,其中,所述从所述多组更新的运动信息生成最终组的更新的运动信息还包括:为所述多个dmvd方法分配不同的优先级,选择由具有最高优先级的dmvd方法推导的一组更新的运动信息作为最终组的更新的运动信息。8.如权利要求7所述的方法,其中,为所述解码器侧运动矢量细化(dmvr)分配所述最高优先级。9.如权利要求1至4中任一项所述的方法,其中,所述基于所述更新的运动信息,执行所述当前块与包括所述当前块的视频的比特流表示之间的转换进一步包括:使用由所述多个dmvd方法推导的多组更新的运动信息分别执行运动补偿,以获得多组运动补偿结果,
基于所述多组运动补偿结果的平均或加权平均生成所述当前块。10.如权利要求1至4中任一项所述的方法,其中,所述基于所述更新的运动信息,执行所述当前块与包括所述当前块的视频的比特流表示之间的转换进一步包括:使用由所述多个dmvd方法推导的多组更新的运动信息分别执行运动补偿,以获得多组运动补偿结果,通过使用中值滤波器对所述多组运动补偿结果进行滤波来生成所述当前块。11.如权利要求1至4中任一项所述的方法,其中,所述基于多个解码器侧运动矢量推导(dmvd)方法更新所述未更新的运动信息,以生成所述当前块的更新的运动信息还包括:为所述多个dmvd方法分配不同的优先级,从所述多个dmvd方法中选择具有最高n个优先级、并且有效的dmvd方法,n是整数且n>=1,基于n个dmvd方法为所述当前块生成更新的运动信息。12.如权利要求1至4中任一项所述的方法,其中,所述当前块是预测单元。13.如权利要求1至4中任一项所述的方法,其中,所述未更新的运动信息包括针对每个预测方向的未更新的运动矢量和参考图片。14.如权利要求1所述的方法,其中,在所述当前块满足特定条件的情况下不应用所述方法。15.如权利要求14所述的方法,其中,所述特定条件指定以下中的至少一个:所述当前块的尺寸、所述当前块的条带类型、所述当前块的图片类型和所述当前块的片类型。16.如权利要求14所述的方法,其中,所述特定条件指定所述当前块包含的样本数小于第一阈值。17.如权利要求14所述的方法,其中,所述特定条件指定所述当前块的宽度和高度的最小尺寸小于或不大于第二阈值。18.如权利要求14所述的方法,其中,所述特定条件指定所述当前块的宽度小于或不大于第三阈值,和/或所述当前块的高度小于或不大于第四阈值。19.如权利要求14所述的方法,其中,所述特定条件指定所述当前块的宽度大于或不小于第三阈值,和/或所述当前块的高度大于或不小于第四阈值。20.如权利要求14所述的方法,其中,在子块所属的块的宽度和/或高度等于或大于第五阈值的情况下,在子块级应用所述方法。21.如权利要求20所述的方法,其中,将所述当前块分割为多个子块,并且所述多个子块中的每一个进一步以与具有等于所述子块尺寸的尺寸的普通编码块相同的方式经历双向光流(bio)过程。22.如权利要求16-20中任一项所述的方法,其中,所述第一至第五阈值中的每一个在序列参数集(sps)级、或图片参数集(pps)级、或图片级、或条带级或片级中预定义或用信号通知。23.如权利要求22所述的方法,其中,根据包括块尺寸、图片类型和时域层索引中的至少一个的编码的信息来定义所述第一至第五阈值中的每一个。24.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中所述指令在由所述处理器运行时使所述处理器实现权利要求1至23中任一项所述的方法。
25.一种其上存储有指令的非暂时性计算机可读介质,当所述指令被处理器执行时,使所述处理器执行权利要求1至23中任一项所述的方法。
技术总结
描述了涉及不同解码器侧运动矢量推导模式之间的交互的视频处理的装置和方法。一种视频处理的示例方法包括:确定与当前块相关联的未更新的运动信息;基于多个解码器侧运动矢量推导方法更新所述未更新的运动信息,以生成所述当前块的更新的运动信息;以及基于所述更新的运动信息,执行所述当前块与包括所述当前块的视频的比特流表示之间的转换。的视频的比特流表示之间的转换。的视频的比特流表示之间的转换。
技术研发人员:
刘鸿彬 张莉 张凯 王悦
受保护的技术使用者:
字节跳动有限公司
技术研发日:
2019.08.05
技术公布日:
2023/3/24