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

利用光流的预测细化过程的适用性的制作方法

2021-11-29 19:44:00 来源:中国专利 TAG:

利用光流的预测细化过程的适用性
1.相关申请的交叉引用
2.根据适用的专利法和/或依据巴黎公约的规则,本技术旨在及时要求于2019年4月19日提交的第pct/cn2019/083434号国际专利申请和2019年6月5日提交的第pct/cn2019/090201号国际专利申请的优先权和利益。前述申请的全部公开通过引用而并入作为本技术的公开的一部分。
技术领域
3.本专利文档涉及视频处理技术、设备和系统。


背景技术:

4.尽管视频压缩技术有所进步,但数字视频仍然在互联网和其它数字通信网络上占据最大的带宽使用。随着能够接收和显示视频的联网用户设备数量的增加,预计对数字视频使用的带宽需求将继续增长。


技术实现要素:

5.与数字视频处理相关,并且具体地,与用于视频处理的利用光流的预测细化(prediction refinement with optical flow,prof)相关的设备、系统和方法。所描述的方法可以被应用于现有的视频编解码标准(例如,高效视频编解码(high efficiency video coding,hevc))和未来的视频编解码标准或视频编解码器。
6.在一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:确定当前视频块的编解码模式是仿射模式;根据指定用于应用预测细化光流(prof)过程的条件的规则,为当前视频块确定prof过程以仿射模式的适用性模式;以及基于该确定来执行当前视频块和视频的编解码表示之间的转换,其中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
7.在另一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:由于对视频的视频块启用预测细化光流(prof)过程,确定不允许编解码模式用于将视频块编解码为视频的编解码表示;以及基于该确定来执行当前视频块和视频的编解码表示之间的转换,其中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
8.在又一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:确定视频的当前视频块的编解码模式;以及基于该确定来执行当前视频块和视频的编解码表示之间的转换,其中,由于使用编解码模式,预测细化光流(prof)过程针对当前视频块被禁用,其中在该prof过程中当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
9.在又一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:基于视频的编解码特性,为视频的当前视频块和视频的编解码表示之间的转换
确定预测细化光流(prof)过程的适用性模式;以及基于该确定来执行该转换,其中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
10.在又一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:基于视频的当前视频块的色彩分量,确定由于使用编解码模式,与预测细化光流(prof)过程相关的过程细节针对当前视频块被禁用,其中在该prof过程中当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化;以及使用参数执行当前视频块和视频的编解码表示之间的转换。
11.在又一个代表性方面,上述方法以处理器可执行代码的形式被体现并且被存储在计算机可读程序介质中。
12.在又一个代表性方面,公开了一种被配置为或可操作来执行上述方法的设备。该设备可以包括被编程来实施该方法的处理器。
13.在又一个代表性方面,视频解码器装置可以实施如本文所描述的方法。
14.在附图、说明书和权利要求书中更详细地描述了所公开的技术的以上以及其它方面和特征。
附图说明
15.图1示出了构建merge候选列表的示例。
16.图2示出了空域候选的位置的示例。
17.图3示出了对其进行空域merge候选的冗余检查的候选对的示例。
18.图4a和图4b示出了基于当前块的尺寸和形状的第二预测单元(prediction unit,pu)的位置的示例。
19.图5示出了用于时域merge候选的运动矢量缩放的示例。
20.图6示出了时域merge候选的候选位置的示例。
21.图7示出了生成组合的双向预测merge候选的示例。
22.图8示出了构建运动矢量预测候选的示例。
23.图9示出了用于空域运动矢量候选的运动矢量缩放的示例。
24.图10示出了使用用于编解码单元(coding unit,cu)的可选时域运动矢量预测(alternative temporal motion vector prediction,atmvp)算法的运动预测的示例。
25.图11示出了由空时运动矢量预测(spatial

temporal motion vector prediction,stmvp)算法使用的具有子块的编解码单元(cu)和邻近块的示例。
26.图12a和12b示出了当使用重叠块运动补偿(obmc)算法时子块的示例快照(snapshot)。
27.图13示出了用于推导用于局部照明补偿(lic)算法的参数的邻近样点的示例。
28.图14示出了简化的仿射运动模型的示例。
29.图15示出了每个子块的仿射运动矢量场(mvf)的示例。
30.图16示出了用于af_inter仿射运动模式的运动矢量预测(mvp)的示例。
31.图17a和图17b示出了af_merge仿射运动模式的示例候选。
32.图18示出了模式匹配的运动矢量推导(pmmvd)模式中的双边匹配的示例,该模式
是基于帧速率上转换(fruc)算法的特殊merge模式。
33.图19示出了fruc算法中的模板匹配的示例。
34.图20示出了fruc算法中的单边运动估计的示例。
35.图21示出了由双向光流(bio)算法使用的光流轨迹的示例。
36.图22a和图22b示出了在没有块扩展的情况下使用双向光流(bio)算法的示例快照。
37.图23示出了在bio中使用的插值样点的示例。
38.图24示出了基于双边模板匹配的解码器侧运动矢量细化(dmvr)算法的示例。
39.图25示出了子块mv vsb和像素δv(i,j)的示例。
40.图26示出了相位变化水平滤波的示例。
41.图27示出了应用8抽头水平滤波的一个实例的示例。
42.图28示出了非均匀相位垂直滤波的示例。
43.图29a至图29e示出了用于视频处理的示例方法的流程图。
44.图30a和图30b是用于实施在本文档中描述的可视媒体解码或可视媒体编码技术的硬件平台的示例的框图。
具体实施方式
45.由于对更高分辨率视频日益增长的需求,视频处理方法和技术在现代技术中无处不在。视频编解码器通常包括压缩或解压缩数字视频的电子电路或软件,并且正在不断改进以提供更高的编解码效率。视频编解码器将未压缩的视频转换为压缩格式,反之亦然。视频质量、用于表示视频的数据量(由比特率确定)、编码和解码算法的复杂度、对数据丢失和误差的敏感性、编辑的简易性、随机访问和端到端延迟(时延)之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如高效视频编解码(hevc)标准(也被称为h.265或mpeg

h part 2)、待完成的通用视频编解码标准或其它当前和/或将来的视频编解码标准。
46.所公开的技术的实施例可以应用于现有的视频编解码标准(例如,hevc、h.265)和将来的标准,以提高压缩性能。在本文档中使用章节标题来提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实施方式)仅限制于相应章节。
47.1.hevc/h.265中的帧间预测的示例
48.近年来,视频编解码标准有了显著的改进,并且现在部分地提供了高编解码效率和对更高分辨率的支持。最近的标准(诸如hevc和h.265)是基于混合视频编解码结构的,其中利用了时域预测加变换编解码。
49.1.1预测模式的示例
50.每个帧间预测pu(预测单元)具有一个或两个参考图片列表的运动参数。在一些实施例中,运动参数包括运动矢量和参考图片索引。在其它实施例中,对两个参考图片列表之一的使用也可以使用inter_pred_idc进行信令通知。在另一些实施例中,运动矢量可以被显示地编解码为相对于预测值的增量。
51.当以跳过模式对cu进行编解码时,一个pu与cu相关联,并且没有显著的残差系数,没有编解码的运动矢量增量或参考图片索引。指定了merge模式,由此从包括空域和时域候选的邻近pu获得当前pu的运动参数。merge模式可以被应用于任何帧间预测pu,而不仅是针
对跳过模式。merge模式的替代方案是运动参数的显式传输,其中,运动矢量、每个参考图片列表的对应参考图片索引和参考图片列表使用按每pu被显式地信令通知。
52.当信令指示要使用两个参考图片列表之一时,从一个样点块产生pu。这被称为“单向预测”。单向预测适用于p条带和b条带两者。
53.当信令指示要使用两个参考图片列表时,从两个样点块产生pu。这被称为“双向预测”。双向预测仅适用于b条带。
54.1.1.1构建merge模式的候选的实施例
55.当使用merge模式预测pu时,从比特流中解析指向merge候选列表中的条目的索引,并将其用于检索运动信息。该列表的构建可以根据以下步骤序列进行总结:
56.步骤1:初始候选推导
57.步骤1.1:空域候选推导
58.步骤1.2:空域候选的冗余检查
59.步骤1.3:时域候选推导
60.步骤2:附加候选插入
61.步骤2.1:创建双向预测候选
62.步骤2.2:插入零运动候选
63.图1示出了基于上面总结的步骤序列来构建merge候选列表的示例。对于空域merge候选推导,从位于五个不同位置的候选当中选择最多四个merge候选。对于时域merge候选推导,在两个候选当中选择最多一个merge候选。由于在解码器处假设每个pu的候选数量是恒定的,所以在候选数量没有达到在条带头中信令通知的merge候选的最大数量(maxnummergecand)时生成附加候选。由于候选数量是恒定的,所以最佳merge候选的索引使用截断一元二值化(truncated unary,tu)进行编码。如果cu的尺寸等于8,则当前cu的所有pu共享单个merge候选列表,这与2n
×
2n预测单元的merge候选列表相同。
64.1.1.2构建空域merge候选
65.在空域merge候选的推导中,从位于图2中描绘的位置的候选当中选择最多四个merge候选。推导的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任一pu不可用(例如,因为它属于另一条带或片)或是帧内编解码的时,才考虑位置b2。在位置a1处的候选被添加之后,对剩余候选的添加进行冗余检查,该冗余检查确保具有相同运动信息的候选被排除在列表之外,从而提高编解码效率。
66.为了降低计算复杂度,在提到的冗余检查中不考虑所有可能的候选对。相反,仅考虑在图3中用箭头链接的对,并且仅当用于冗余检查的候选没有相同的运动信息时,才向列表添加对应候选。重复运动信息的另一源是与不同于2n
×
2n的分区相关联的“第二pu”。作为示例,图4a和图4b分别描绘了n
×
2n和2n
×
n的情况的第二pu。当当前pu被分割为n
×
2n时,位置a1处的候选不被考虑用于列表构建。在一些实施例中,添加该候选可能导致两个预测单元具有相同的运动信息,这对于在编解码单元中仅具有一个pu是冗余的。类似地,当当前pu被分割为2n
×
n时,不考虑位置b1。
67.1.1.3构建时域merge候选
68.在该步骤中,只有一个候选被添加到列表中。具体地,在该时域merge候选的推导中,基于属于与给定参考图片列表内的当前图片具有最小poc差的图片的并置pu来推导缩
放的运动矢量。在条带头中显示地信令通知将用于并置pu的推导的参考图片列表。
69.图5示出了时域merge候选的缩放运动矢量的推导的示例(如虚线所示),该运动矢量是使用poc距离tb和td从并置pu的运动矢量缩放的,其中tb被定义为当前图片的参考图片和当前图片之间的poc差,td被定义为并置图片的参考图片和并置图片之间的poc差。时域merge候选的参考图片索引被设置为零。对于b条带,获得两个运动矢量,一个用于参考图片列表0,另一个用于参考图片列表1,并将其组合以形成双向预测merge候选。
70.如图6所描绘的,在属于参考帧的并置pu(y)中,在候选c0和c1之间选择时域候选的位置。如果位置c0处的pu不可用、是帧内编解码的或在当前ctu之外,则使用位置c1。否则,在时域merge候选的推导中使用位置c0。
71.1.1.4构建附加类型的merge候选
72.除了空时merge候选之外,还有两种附加类型的merge候选:组合的双向预测merge候选和零merge候选。组合的双向预测merge候选通过利用空时merge候选而生成。组合的双向预测merge候选仅用于b条带。组合的双向预测候选通过将初始候选的第一参考图片列表运动参数与另一个的第二参考图片列表运动参数进行组合而生成。如果这两个元组提供不同的运动假设,它们将形成新的双向预测候选。
73.图7示出了该过程的示例,其中原始列表(710,在左侧)中的具有mvl0和refidxl0或mvl1和refidxl1的两个候选用于创建添加到最终列表(720,在右侧)的组合的双向预测merge候选。
74.零运动候选被插入以填充merge候选列表中的剩余条目,并因此达到maxnummergecand容量。这些候选具有零空域位移和参考图片索引,该参考图片索引从零开始,并且每当新的零运动候选被添加到该列表时就增加。这些候选使用的参考帧的数量分别是单向预测一个和双向预测两个。在一些实施例中,不对这些候选执行冗余检查。
75.1.1.5用于并行处理的运动估计区域的示例
76.为了加速编码过程,可以并行执行运动估计,从而同时推导给定区域内部所有预测单元的运动矢量。从空域邻域推导merge候选可能干扰并行处理,因为一个预测单元不能从相邻pu推导运动参数直到其相关联的运动估计被完成。为了缓和编解码效率和处理时延之间的权衡,可以定义运动估计区域(mer)。可以使用“log2_parallel_merge_level_minus2”语法元素在图片参数集(pps)中信令通知mer的尺寸。当定义mer时,落入相同区域的merge候选被标记为不可用,并因此不在列表构建中考虑。
77.1.2高级运动矢量预测(amvp)的实施例
78.amvp利用运动矢量与邻近pu的空时相关性,其用于运动参数的显式传输。通过首先检查左侧、上侧时域邻近pu位置的可用性、移除冗余候选、以及添加零矢量以使候选列表长度恒定,来构建运动矢量候选列表。然后,编码器可以从候选列表选择最佳预测值,并发送指示所选择的候选的对应索引。类似于merge索引信令,最佳运动矢量候选的索引使用截断一元编码。在这种情况下,要编码的最大值是2(参见图8)。在以下章节中,提供了关于运动矢量预测候选的推导过程的细节。
79.1.2.1构建运动矢量预测候选的示例
80.图8总结了运动矢量预测候选的推导过程,并且可以针对以refidx作为输入的每个参考图片列表而实施。
illumination compensation,lic)和解码器侧运动矢量细化(decoder

side motion vector refinement,dmvr)。
97.2.1基于子cu的运动矢量预测的示例
98.在具有四叉树加二叉树(quadtrees plus binary trees,qtbt)的jem中,每个cu对于每个预测方向可以具有最多一个运动参数集。在一些实施例中,通过将大cu划分为子cu并推导大cu的所有子cu的运动信息,在编码器中考虑了两种子cu级别运动矢量预测方法。可选时域运动矢量预测(atmvp)方法允许每个cu从比并置参考图片中的当前cu小的多个块获取多个运动信息集合。在空时运动矢量预测(stmvp)方法中,通过使用时域运动矢量预测值和空域邻近运动矢量递归地推导子cu的运动矢量。在一些实施例中,为了为子cu运动预测保留更准确的运动场,可以禁用参考帧的运动压缩。
99.2.1.1可选时域运动矢量预测(atmvp)的示例
100.在atmvp方法中,时域运动矢量预测(tmvp)方法通过从小于当前cu的块获取多个运动信息集合(包括运动矢量和参考索引)而修改。
101.图10示出了用于cu 1000的atmvp运动预测过程的示例。atmvp方法分两个步骤预测cu 1000内的子cu 1001的运动矢量。第一步骤是用时域矢量标识参考图片1050中的对应块1051。参考图片1050也被称为运动源图片。第二步骤是将当前cu 1000划分为子cu 1001,并从对应于每个子cu的块获得每个子cu的运动矢量和参考索引。
102.在第一步骤中,参考图片1050和对应块由当前cu 1000的空域邻近块的运动信息确定。为了避免邻近块的重复扫描过程,使用当前cu 1000的merge候选列表中的第一个merge候选。第一个可用运动矢量及其相关联的参考索引被设置为运动源图片的时域矢量和索引。这样,与tmvp相比,可以更准确地标识对应块,其中对应块(有时被称为并置块)总是在相对于当前cu的右下方或中心位置。
103.在第二步骤中,通过将时域矢量添加到当前cu的坐标,子cu 1051的对应块由运动源图片1050中的时域矢量标识。对于每个子cu,其对应块的运动信息(例如,覆盖中心样点的最小运动网格)用于推导子cu的运动信息。在对应的n
×
n块的运动信息被标识之后,它被转换为当前子cu的运动矢量和参考索引,其方式与hevc的tmvp相同,其中应用了运动缩放和其它流程。例如,解码器检查是否满足低延迟条件(例如,当前图片的所有参考图片的poc小于当前图片的poc),并且可能使用运动矢量mvx(例如,对应于参考图片列表x的运动矢量)来预测每个子cu的运动矢量mvy(例如,其中x等于0或1,并且y等于1

x)。
104.2.1.2空时运动矢量预测(stmvp)的示例
105.在stmvp方法中,子cu的运动矢量按照光栅扫描顺序被递归地推导。图11示出了具有四个子块的一个cu和邻近块的示例。考虑8
×
8cu 1100,其包括四个4
×
4子cu a(1101)、b(1102)、c(1103)和d(1104)。当前帧中的邻近4
×
4块被标记为a(1111)、b(1112)、c(1113)和d(1114)。
106.子cu a的运动推导从标识其两个空域邻居开始。第一个邻居是子cu a 1101上侧的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处开始)。从每个列表的邻近块获得的运动信息被缩放到给定列表的第一
参考帧。接下来,子块a 1101的时域运动矢量预测值(tmvp)通过遵循与hevc中指定的tmvp推导相同的流程而推导。块d 1104处的并置块的运动信息被相应地获取和缩放。最后,在检索和缩放运动信息之后,针对每个参考列表分开对所有可用运动矢量进行平均。平均运动矢量被指定为当前子cu的运动矢量。
107.2.1.3子cu运动预测模式信令的示例
108.在一些实施例中,子cu模式被启用作为附加merge候选,并且不需要附加的语法元素来信令通知这些模式。两个附加merge候选被添加到每个cu的merge候选列表中,以表示atmvp模式和stmvp模式。在其它实施例中,如果序列参数集指示atmvp和stmvp被启用,则可以使用多达七个merge候选。附加merge候选的编码逻辑与hm中的merge候选的编码逻辑相同,这意味着,对于p条带或b条带中的每个cu,两个附加merge候选可能还需要两次rd检查。在一些实施例中,例如jem,merge索引的所有二进制位(bin)通过cabac(context

based adaptive binary arithmetic coding,基于上下文的自适应二进制算术编解码)进行上下文编解码。在其它实施例中,例如hevc,只有第一个二进制位被上下文编解码,而剩余的二进制位被上下文旁路编解码。
109.2.2自适应运动矢量差分辨率的示例
110.在一些实施例中,当在条带头中use_integer_mv_flag等于0时,以四分之一(quarter)亮度样点为单位信令通知(pu的运动矢量和预测运动矢量之间的)运动矢量差(motion vector difference,mvd)。在jem中,引入了局部自适应运动矢量分辨率(lamvr)。在jem中,可以以四分之一亮度样点、整数亮度样点或四亮度样点为单位对mvd进行编解码。以编解码单元(cu)级别控制mvd分辨率,并且对于具有至少一个非零mvd分量的每个cu,有条件地信令通知mvd分辨率标志。
111.对于具有至少一个非零mvd分量的cu,信令通知第一标志以指示在cu中是否使用四分之一亮度样点mv精度。当第一标志(等于1)指示未使用四分之一亮度样点mv精度时,信令通知另一个标志以指示使用整数亮度样点mv精度还是四亮度样点mv精度。
112.当cu的第一mvd分辨率标志为零或未针对cu进行编解码(意味着cu中的所有mvd均为零)时,四分之一亮度样点mv分辨率用于cu。当cu使用整数亮度样点mv精度或四亮度样点mv精度时,cu的amvp候选列表中的mvp被取整到对应精度。
113.在编码器中,cu级别的rd检查用于确定哪个mvd分辨率要用于cu。也就是说,对于每个mvd分辨率,执行三次cu级别的rd检查。为了加快编码器速度,在jem中应用以下编码方案:
114.‑‑
在具有正常四分之一亮度样点mvd分辨率的cu的rd检查期间,存储当前cu(整数亮度样点准度)的运动信息。存储的运动信息(取整之后)被用作在针对具有整数亮度样点和4亮度样点mvd分辨率的相同cu的rd检查期间的进一步的小范围运动矢量细化的起始点,使得耗时的运动估计过程不会重复三次。
115.‑‑
有条件地调用具有4亮度样点mvd分辨率的cu的rd检查。对于cu,当整数亮度样点mvd分辨率的rd代价远大于四分之一亮度样点mvd分辨率的rd代价时,跳过对于cu的4亮度样点mvd分辨率的rd检查。
116.2.3更高的运动矢量存储精度的示例
117.在hevc中,运动矢量精度是四分之一像素(对于4:2:0视频,四分之一亮度样点和
八分之一色度样点)。在jem中,内部运动矢量存储和merge候选的精度增加到1/16像素。更高的运动矢量精度(1/16像素)被用于用跳过/merge模式编解码的cu的运动补偿帧间预测。对于用正常amvp模式编解码的cu,使用整数像素或四分之一像素运动。
118.具有与hevc运动补偿插值滤波器相同的滤波器长度和归一化因子的shvc上采样插值滤波器被用作附加分数像素位置的运动补偿插值滤波器。色度分量运动矢量精度在jem中是1/32样点,通过使用两个邻近的1/16像素分数位置的滤波器的平均来推导1/32像素分数位置的附加插值滤波器。
119.2.4重叠块运动补偿(obmc)的示例
120.在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所示。
121.图12a示出了cu/pu边界处的子块,并且有阴影线的子块是obmc应用的地方。类似地,图12b示出了在atmvp模式下的子块。
122.当obmc应用于当前子块时,除了当前运动矢量之外,四个相连的邻近子块的运动矢量(如果可用并且与当前运动矢量不相同)还用于推导当前子块的预测块。基于多个运动矢量的这些多个预测块被组合以生成当前子块的最终预测信号。
123.基于邻近子块的运动矢量的预测块被表示为p
n
,其中n表示用于邻近的上侧、下侧、左侧和右侧的子块的索引,并且基于当前子块的运动矢量的预测块被表示为p
c
。当p
n
基于包含邻近子块的与当前子块相同的运动信息的运动信息时,obmc不是从p
n
执行的。否则,将p
n
的每个样点添加到p
c
中的相同样点中,即p
n
的四行/列被添加到p
c
中。加权因子{1/4,1/8,1/16,1/32}用于p
n
,并且加权因子{5/16,31/32}用于p
c
。例外情况是小的mc块(即当编解码块的高度或宽度等于4或者cu用子cu模式进行编解码时),对于这样的块,只有p
n
的两行/列被添加到p
c
中。在这种情况下,加权因子{1/4,1/8}用于p
n
,并且加权因子{3/4,7/8}用于p
c
。对于基于垂直(水平)邻近子块的运动矢量生成的p
n
,将p
n
的相同的行(列)中的样点以相同的加权因子添加到p
c

124.在jem中,对于尺寸小于或等于256个亮度样点的cu,信令通知cu级别标志,以指示对于当前cu是否应用了obmc。对于尺寸大于256个亮度样点或未用amvp模式编解码的cu,默认应用obmc。在编码器处,当obmc应用于cu时,其影响在运动估计阶段期间被考虑在内。使用上邻近块和左邻近块的运动信息由obmc形成的预测信号用于补偿当前cu的原始信号的上边界和左边界,然后应用正常运动估计过程。
125.2.5局部照明补偿(lic)的示例
126.lic基于照明变化的线性模型,使用缩放因子a和偏移b。并且对于每个帧间模式编解码的编解码单元(cu)自适应地启用或禁用它。
127.当lic应用于cu时,采用最小平方误差法以通过使用当前cu的邻近样点及其对应的参考样点来推导参数a和b。图13是示出了用于推导ic算法的参数的邻近样点的示例。具体地,并且如图13所示,使用参考图片中的cu的子采样(2:1子采样)邻近样点和对应的样点
(由当前cu或子cu的运动信息识别)。ic参数被单独地推导并应用于每个预测方向。
128.当用merge模式对cu进行编解码时,以类似于merge模式下的运动信息复制的方式,从邻近块复制lic标志;否则,为cu信令通知lic标志,指示lic是否适用。
129.当对于图片启用lic时,需要附加的cu级别rd检查来确定是否将lic应用于cu。当对于cu启用lic时,绝对差的均值移除和(mean

removed sum of absolute difference,mr

sad)和绝对哈达玛(hadamard)变换差的均值移除和(mean

removed sum of absolute hadamard

transformed difference,mr

satd)(而不是sad和satd)分别用于整数像素运动搜索和分数像素运动搜索。
130.为了降低编码复杂度,在jem中应用以下编码方案:
131.‑‑
当当前图片及其参考图片之间没有明显的照明变化时,对于整个图片禁用lic。为了识别这种情况,在编码器处计算当前图片和当前图片的每个参考图片的直方图。如果当前图片和当前图片的每个参考图片之间的直方图差小于给定阈值,则对于当前图片禁用lic;否则,对于当前图片启用lic。
132.2.6仿射运动补偿预测的示例
133.在hevc中,只有平移运动模型被应用于运动补偿预测(motion compensation prediction,mcp)。然而,相机和物体可能具有许多种类的运动,例如,放大/缩小、旋转、透视运动和/或其它不规则运动。另一方面,jem应用简化的仿射变换运动补偿预测。图14示出了由两个控制点运动矢量v0和v1描述的块1400的仿射运动场的示例。块1400的运动矢量场(motion vector field,mvf)可以由以下等式描述:
[0134][0135]
如图14所示,(v
0x
,v
0y
)是左上角控制点的运动矢量,并且(v
1x
,v
1y
)是右上角控制点的运动矢量。为了简化运动补偿预测,可以应用基于子块的仿射变换预测。子块尺寸m
×
n被推导如下:
[0136][0137]
这里,mvpre是运动矢量分数精度(例如,在jem中为1/16),(v
2x
,v
2y
)是根据等式(1)计算的左下方控制点的运动矢量。如果需要,可以向下调整m和n,使其分别为w和h的因数(divisor)。
[0138]
图15示出了块1500的每个子块的仿射mvf的示例。为了推导每个m
×
n子块的运动矢量,可以根据等式(1)计算每个子块的中心样点的运动矢量,并取整到运动矢量分数精度(例如,在jem中为1/16)。然后,运动补偿插值滤波器可以被应用于用推导出的运动矢量生成每个子块的预测。在mcp之后,每个子块的高精度运动矢量被取整并保存为与正常运动矢量相同的精度。
[0139]
2.6.1 af_inter模式的实施例
[0140]
在jem中,有两种仿射运动模式:af_inter模式和af_merge模式。对于宽度和高度
都大于8的cu,可以应用af_inter模式。在比特流中信令通知cu级别的仿射标志,以指示是否使用af_inter模式。在af_inter模式下,使用邻近块构建具有运动矢量对{(v0,v1)|v0={v
a
,v
b
,v
c
},v1={v
d
,v
e
}}的候选列表。
[0141]
图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的差。
[0142]
2.6.3.af_merge模式的实施例
[0143]
当在af_merge模式下应用cu时,它从有效的邻近重构块得到以仿射模式编解码的第一块。图17a示出了当前cu 1700的候选块的选择顺序的示例。如图17a所示,选择顺序可以是从当前cu 1700的左侧(1701)、上侧(1702)、右上方(1703)、左下方(1704)到左上方(1705)。图17b示出了af_merge模式下的当前cu 1700的候选块的另一示例。如果邻近的左下方块1801以仿射模式进行编解码,如图17b所示,则包含子块1701的cu的左上角、右上角和左下角的运动矢量v2、v3和v4被推导。基于v2、v3和v4计算当前cu 1700上左上角的运动矢量v0。可以相应地计算当前cu的右上方的运动矢量v1。
[0144]
在根据等式(1)中的仿射运动模型计算当前cu的cpmv v0和v1之后,可以生成当前cu的mvf。为了识别当前cu是否以af_merge模式进行编解码,当有至少一个邻近块在仿射模式下进行编解码时,在比特流中信令通知仿射标志。
[0145]
2.7模式匹配的运动矢量推导(pmmvd)的示例
[0146]
pmmvd模式是基于帧速率上转换(fruc)方法的特殊merge模式。利用该模式,在解码器侧推导块的运动信息,而不是信令通知块的运动信息。
[0147]
当cu的merge标志为真时,可以针对cu信令通知fruc标志。当fruc标志为假时,可以信令通知merge索引,并且使用常规merge模式。当fruc标志为真时,可以信令通知的附加的fruc模式标志以指示将使用哪种方法(例如,双边匹配或模板匹配)来推导该块的运动信息。
[0148]
在编码器侧,关于是否对cu使用fruc merge模式的决定是基于对正常merge候选所做的rd代价选择。例如,通过使用rd代价选择来针对cu检查多种匹配模式(例如,双边匹配和模板匹配)。引起最小成本的匹配模式与其他cu模式进一步比较。如果fruc匹配模式是最有效的模式,则对于cu将fruc标志设置为真,并且使用相关的匹配模式。
[0149]
通常,fruc merge模式下的运动推导过程具有两个步骤:首先执行cu级别运动搜索,然后进行子cu级别运动细化。在cu级别,基于双边匹配或模板匹配,推导整个cu的初始运动矢量。首先,生成mv候选列表,并且选择引起最小匹配成本的候选作为进一步cu级别细
化的起点。然后,在起点附近执行基于双边匹配或模板匹配的局部搜索。将最小匹配成本的mv结果作为整个cu的mv。随后,以推导出的cu运动矢量作为起点,进一步在子cu级别细化运动信息。
[0150]
例如,对于w
×
hcu运动信息推导执行以下推导过程。在第一阶段,推导整个w
×
hcu的mv。在第二阶段,该cu进一步被划分为m
×
m个子cu。如等式(3)计算m的值,d是预定义的划分深度,在jem中默认设置为3。然后推导每个子cu的mv。
[0151][0152]
图18示出了在帧速率上转换(fruc)方法中使用的双边匹配的示例。通过在两个不同参考图片(1810、1811)中沿当前cu(1800)的运动轨迹找到两个块之间的最接近匹配,使用双边匹配来推导当前cu的运动信息。在连续运动轨迹的假设下,指向两个参考块的运动矢量mv0(1801)和mv1(1802)与当前图片和两个参考图片之间的时域距离(例如,td0(1803)和td1(1804))成比例。在一些实施例中,当当前图片1800在时域上在两个参考图片(1810、1811)之间并且从当前图片到两个参考图片的时域距离相同时,双边匹配成为基于镜像的双向mv。
[0153]
图19示出了在帧速率上转换(fruc)方法中使用的模板匹配的示例。模板匹配可以用于通过找到当前图片中的模板(例如,当前cu的顶部和/或左侧邻近块)与参考图片1910中的块(与模板的尺寸相同)之间的最接近匹配来推导当前cu 1900的运动信息。除了上述fruc merge模式之外,模板匹配还可以被应用于amvp模式。在jem和hevc中,amvp具有两个候选。利用模板匹配方法,可以推导新的候选。如果由模板匹配新推导的候选与第一现有amvp候选不同,则将其插入amvp候选列表的最开始处,然后将列表尺寸设置为2(例如,通过移除第二现有amvp候选)。当应用于amvp模式时,仅应用cu级别搜索。cu级别的mv候选集可以包括以下:(1)如果当前cu处于amvp模式,则原始amvp候选,(2)所有merge候选,(3)插值mv场(稍后描述)中的几个mv,以及顶部和左侧邻近运动矢量。
[0154]
当使用双边匹配时,将merge候选的每个有效mv用作输入,以生成假设双边匹配的情况下的mv对。例如,在参考列表a中,merge候选的一个有效mv是(mva,refa)。然后,在其他参考列表b中找到其配对的双边mv的参考图片refb,使得refa和refb在时域上位于当前图片的不同侧。如果这样的refb在参考列表b中不可用,则refb被确定为与refa不同的参考,并且其到当前图片的时域距离是列表b中的最小值。在确定refb之后,通过基于当前图片refa和refb之间的时域距离来缩放mva来推导mvb。
[0155]
在一些实施方式中,来自插值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可以被添加到候选列表。
[0156]
子cu级别的mv候选集包括:(1)从cu级别搜索确定的mv,(2)顶部、左侧、左上方和右上方邻近mv,(3)来自参考图片的并置mv的缩放版本,(4)一个或多个atmvp候选(例如,最多四个),以及(5)一个或多个stmvp候选(例如,最多四个)。来自参考图片的缩放mv如下推导。遍历两个列表中的参考图片。参考图片中的子cu的并置位置处的mv被缩放到起始cu级
别mv的参考。atmvp和stmvp候选可以是前四个。在子cu级别,一个或多个mv(例如,最多17个)被添加到候选列表。
[0157]
插值mv场的生成。在对帧进行编解码之前,基于单边me为整个图片生成插值运动场。然后,运动场可以稍后用作cu级别或子cu级别mv候选。
[0158]
在一些实施方式中,两个参考列表中的每个参考图片的运动场以4
×
4块级别进行遍历。图20示出了fruc方法中的单边运动估计(me)2000的示例。对于每个4
×
4块,如果与块相关联的运动通过当前图片中的4
×
4块并且块未被分配任何插值运动,则参考块的运动根据时域距离td0和td1(以与hevc中的tmvp的mv缩放的方式相同的方式)被缩放到当前图片,并且将缩放的运动分配给当前帧中的块。如果没有缩放的mv被分配给4
×
4块,则在插值运动场中将块的运动标记为不可用。
[0159]
插值和匹配成本。当运动矢量指向分数样点位置时,需要运动补偿插值。为了降低复杂度,代替常规8抽头hevc插值,双线性插值可以用于双边匹配和模板匹配。
[0160]
匹配成本的计算在不同步骤处有点不同。当从cu级别的候选集中选择候选时,匹配成本可以是双边匹配或模板匹配的绝对和差(absolute sum difference,sad)。在确定起始mv之后,子cu级别搜索的双边匹配的匹配成本c计算如下:
[0161][0162]
这里,w是加权因子。在一些实施例中,w可以被经验设置为4。mv和mv
s
分别指示当前mv和起始mv。sad仍可以用作子cu级别搜索的模板匹配的匹配成本。
[0163]
在fruc模式下,仅通过使用亮度样点来推导mv。推导的运动将用于mc帧间预测的亮度和色度两者。在确定mv之后,使用用于亮度的8抽头插值滤波器和用于色度的4抽头插值滤波器来执行最终mc。
[0164]
mv细化是基于模式的mv搜索,以双边匹配成本或模板匹配成本为标准。在jem中,支持两种搜索模式—无限制中心偏置菱形搜索(unrestricted center

biased diamond search,ucbds)和自适应交叉搜索,分别在cu级别和子cu级别进行mv细化。对于cu和子cu级别mv细化两者,以四分之一亮度样点mv精度直接搜索mv,并且接着是八分之一亮度样点mv细化。将用于cu和子cu步骤的mv细化的搜索范围设置为等于8个亮度样点。
[0165]
在双边匹配merge模式下,应用双向预测,因为cu的运动信息是基于在两个不同的参考图片中沿当前cu的运动轨迹的两个块之间的最近匹配推导的。在模板匹配merge模式下,编码器可以针对cu在根据列表0的单向预测、根据列表1的单向预测或者双向预测当中进行选择。选择可以基于如下的模板匹配成本:
[0166]
如果costbi<=factor*min(cost0,cost1)
[0167]
则使用双向预测;
[0168]
否则,如果cost0<=cost1
[0169]
则使用列表0中的单向预测;
[0170]
否则,
[0171]
使用列表1中的单向预测;
[0172]
这里,cost0是列表0模板匹配的sad,cost1是列表1模板匹配的sad,costbi是双向预测模板匹配的sad。例如,当factor的值等于1.25时,这意味着选择过程偏向于双向预测。
帧间预测方向选择可以被应用于cu级别模板匹配过程。
[0173]
2.8广义双向预测改进(gbi)的示例
[0174]
vtm

3.0中采用了在jvet

l0646中提出的广义双向预测改进(gbi)。在双向预测模式下,gbi对来自l0和l1的预测值应用不相等的权重。在帧间预测模式下,基于率失真优化(rate

distortion optimization,rdo)来评估包括相等权重对(1/2,1/2)的多个权重对,并且将所选择的权重对的gbi索引信令通知给解码器。在merge模式下,gbi索引从邻近cu继承。预测值生成公式如等式(5)所示。
[0175]
p
gbi
=(w0
×
p
l0
w1
×
p
l1
roundingoffset)>>shiftnum
gbi
ꢀꢀ
等式(5)
[0176]
在本文中,p
gbi
是gbi的最终预测值,w0和w1是分别应用于列表0(l0)和列表1(l1)的预测值(p
l0
和p
l1
)的所选择的gbi权重。roundingoffset
gbi
和shiftnum
gbi
用于归一化gbi中的最终预测值。支持的w1权重集为{

1/4,3/8,1/2,5/8,5/4},其中五个权重对应于一个相等权重对和四个不相等权重对。混合增益,即w1和w0之和,被固定为1.0。因此,对应的w0权重集为{5/4,5/8,1/2,3/8,

1/4}。权重对选择在cu级别。
[0177]
对于非低延迟图片,权重集尺寸从5减小到3,其中w1权重集为{3/8,1/2,5/8},并且w0权重集为{5/8,1/2,3/8}。非低延迟图片的权重集尺寸减小被应用于bms2.1 gbi和本稿中的所有gbi测试。
[0178]
2.8.1 gbi编码器错误修复
[0179]
为了减少gbi编码时间,在当前编码器设计中,编码器将存储从等于4/8的gbi权重估计的单向预测运动矢量,并将其重用于其他gbi权重的单向预测搜索。该快速编码方法被应用于平移运动模型和仿射运动模型。在vtm2.0中,采用6参数仿射模型以及4参数仿射模型。当gbi权重等于4/8时,当存储单向预测仿射mv时,bms2.1编码器不区分4参数仿射模型和6参数仿射模型。因此,在用gbi权重4/8编码之后,4参数仿射mv可以被6参数仿射mv覆盖。存储的6参数仿射mv可以用于其他gbi权重的4参数仿射mv,或者存储的4参数仿射mv可以用于6参数仿射mv。提出的gbi编码器错误修复是为了分开4参数和6参数仿射mv存储。当gbi权重等于4/8时,编码器基于仿射模型类型来存储那些仿射mv,并且将基于仿射模型类型的对应仿射mv重用于其他gbi权重。
[0180]
2.8.2 gbi编码器加速
[0181]
在该现有的实施方式中,提出了五种编码器加速方法,以在启用gbi时减少编码时间。
[0182]
(1)有条件地跳过一些gbi权重的仿射运动估计
[0183]
在bms2.1中,对所有gbi权重执行包括4参数和6参数仿射me的仿射me。提出对那些不相等的gbi权重(不等于4/8的权重)有条件地跳过仿射me。具体地,当且仅当仿射模式被选择为当前最佳模式并且在评估4/8的gbi权重之后它不是仿射merge模式时,将对其他gbi权重执行仿射me。如果当前图片是非低延迟图片,当执行仿射运动估计时,对于不相等的gbi权重,将跳过平移模型的双向预测运动估计。如果仿射模式未被选择为当前最佳模式,或者如果仿射merge被选择为当前最佳模式,则对于所有其他gbi权重,将跳过仿射me。
[0184]
(2)在1像素和4像素mvd精度的编码中,减少用于低延迟图片的rd代价检查的权重数量
[0185]
对于低延迟图片,有包括1/4像素、1像素和4像素的所有mvd精度的rd代价检查的
五个权重。编码器将首先检查1/4像素mvd精度的rd代价。提出跳过1像素和4像素mvd精度的rd代价检查的gbi权重中的一部分。根据那些不相等的权重的、1/4像素mvd精度的rd代价对该不相等的权重进行排序。在1像素和4像素mvd精度的编码期间,将仅评估具有最小rd代价的前两个权重以及gbi权重4/8。因此,对于低延迟图片的1像素和4像素mvd精度,将最多评估三个权重。
[0186]
(3)当l0和l1参考图片相同时,有条件地跳过双向预测搜索
[0187]
对于ra中的一些图片,相同的图片可能出现在两个参考图片列表(列表0和列表1)中。例如,对于ctc中的随机访问编解码配置,第一组图片(gop)的参考图片结构列出如下。
[0188]
poc:16,tl:0,[l0:0]
ꢀꢀꢀꢀꢀ
[l1:0]
[0189]
poc:8,tl:1,[l0:0 16]
ꢀꢀꢀ
[l1:16 0]
[0190]
poc:4,tl:2,[l0:0 8]
ꢀꢀꢀꢀ
[l1:8 16]
[0191]
poc:2,tl:3,[l0:0 4]
ꢀꢀꢀꢀ
[l1:4 8]
[0192]
poc:1,tl:4,[l0:0 2]
ꢀꢀꢀꢀ
[l1:2 4]
[0193]
poc:3,tl:4,[l0:2 0]
ꢀꢀꢀꢀ
[l1:4 8]
[0194]
poc:6,tl:3,[l0:4 0]
ꢀꢀꢀꢀ
[l1:8 16]
[0195]
poc:5,tl:4,[l0:4 0]
ꢀꢀꢀꢀ
[l1:6 8]
[0196]
poc:7,tl:4,[l0:6 4]
ꢀꢀꢀꢀ
[l1:8 16]
[0197]
poc:12,tl:2,[l0:8 0]
ꢀꢀꢀ
[l1:16 8]
[0198]
poc:10,tl:3,[l0:8 0]
ꢀꢀꢀ
[l1:12 16]
[0199]
poc:9,tl:4,[l0:8 0]
ꢀꢀꢀꢀ
[l1:10 12]
[0200]
poc:11,tl:4,[l0:10 8]
ꢀꢀ
[l1:12 16]
[0201]
poc:14,tl:3,[l0:12 8]
ꢀꢀ
[l1:12 16]
[0202]
poc:13,tl:4,[l0:12 8]
ꢀꢀ
[l1:14 16]
[0203]
poc:15,tl:4,[l0:14 12] [l1:16 14]
[0204]
请注意,图片16、8、4、2、1、12、14和15在两个列表中具有(多个)相同的参考图片。对于这些图片的双向预测,l0和l1参考图片可能是相同的。我们提出,当1)双向预测中的两个参考图片相同,并且2)时域层大于1,以及3)mvd精度为1/4像素时,编码器对不相等的gbi权重跳过双向预测me。对于仿射双向预测me,该快速跳过方法仅被应用于4参数仿射me。
[0205]
(4)基于时域层以及参考图片和当前图片之间的poc距离,跳过对不相等的gbi权重的rd代价检查
[0206]
提出当时域层等于4(ra中的最高时域层)或者参考图片(列表0或列表1)和当前图片之间的poc距离等于1并且编解码qp大于32时,跳过对那些不相等的gbi权重的那些rd代价评估。
[0207]
(5)在me期间,对于不相等的gbi,将浮点计算改为定点计算
[0208]
对于现有的双向预测搜索,编码器将固定一个列表的mv,并在另一个列表中细化mv。目标在me之前被修改以降低计算复杂度。例如,如果列表1的mv是固定的,并且编码器要细化列表0的mv,则用等式(6)修改列表0mv细化的目标。o是原始信号,并且p1是列表1的预测信号。w是列表1的gbi权重。
[0209]
t=((o<<3)

w*p1)*(1/(8

w))
ꢀꢀ
等式(6)
[0210]
在本文中,项(1/(8

w))以浮点精度被存储,这增加了计算复杂度。提出将等式(6)改变为如等式(7)中的定点。
[0211]
t=(o*a1‑
p1*a2 round)>>n
ꢀꢀ
等式(7)
[0212]
其中a1和a2是缩放因子,并且它们被计算如下:
[0213]
γ=(1<<n)/(8

w);a1=γ<<3;a2=γ*w;round=1<<(n

1)
[0214]
2.8.3 gbi的cu尺寸约束
[0215]
在该方法中,对小的cu禁用gbi。在帧间预测模式下,如果使用双向预测,并且cu区域小于128个亮度样点,则在没有任何信令的情况下禁用gbi。
[0216]
2.9双向光流(bdof或bio)的示例
[0217]
2.9.1 bdof的概述
[0218]
在bio中,首先执行运动补偿以生成当前块的第一预测(在每个预测方向上)。第一预测用于推导块内的每个子块或像素的空域梯度、时域梯度和光流,然后用于生成第二预测,例如子块或像素的最终预测。细节描述如下。
[0219]
双向光流(bio)方法是在双向预测的逐块运动补偿的基础上执行的逐样点运动细化。在一些实施方式中,样点级别运动细化不使用信令。
[0220]
假设i
(k)
为块运动补偿之后的来自参考k(k=0,1)的亮度值,并且分别将和表示为i
(k)
梯度的水平和垂直分量。假设光流有效,运动矢量场(v
x
,v
y
)由下式给出:
[0221][0222]
将该光流等式与用于每个样点的运动轨迹的hermite插值组合,最终产生与函数值i
(k)
以及导数和相匹配的唯一的三阶多项式。t=0时,该多项式的值为bio预测:
[0223][0224]
图24示出了双向光流(bio)方法中的示例光流轨迹。这里,τ0和τ1表示到参考帧的距离。距离τ0和τ1基于ref0和ref1的poc进行计算:
[0225]
τ0=poc(当前)

poc(ref0),τ1=poc(ref1)

poc(当前)。如果两个预测来自相同的时间方向(都来自过去或者都来自未来),那么符号是不同的(例如,τ0·
τ1<0)。在这种情况下,如果预测不是来自相同时刻(例如,τ0≠τ1)。两个参考区域具有非零运动(例如,mvx0,mvy0,mvx1,mvy1≠0),并且块运动矢量与时间距离成比例(例如,mvx0/mvx1=mvy0/mvy1=

τ0/τ1)。
[0226]
运动矢量场(vx,vy)是通过最小化点a和b中的值之间的差δ而确定的。图9a

图9b示出了运动轨迹和参考帧平面的相交的示例。模型仅使用δ的局部泰勒展开的第一线性项:
[0227][0228]
上述等式中的所有值取决于样点位置,表示为(i

,j

)。假设运动在局部周围区域是一致的,可以在以当前预测点(i,j)为中心的(2m 1)
×
(2m 1)正方形窗口ω内部被最小化,其中m等于2:
[0229][0230]
对于该优化问题,jem使用简化的方法,首先在垂直方向上最小化,然后在水平方向上最小化。这将导致下式:
[0231][0232][0233]
其中,
[0234][0235]
为了避免被零除或被非常小的值除,正则化参数r和m可以在等式(12)和等式(13)中被引入,其中:
[0236]
r=500
·4d
‑8ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
等式(15)
[0237]
m=700
·4d
‑8ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
等式(16)
[0238]
这里,d是视频样点的比特深度。
[0239]
为了保持对bio的内存访问与常规双向预测运动补偿相同,所有预测和梯度值i
(k)
,是针对当前块内部的位置而计算的。图22a示出了块2200外部的访问位置的示例。如图22a所示,在等式(12)中,以预测块的边界上的当前预测点为中心的(2m 1)
×
(2m 1)正方形窗口ω需要访问块外部的位置。在jem,块外部的值i
(k)
,被设置为等于块内部的最近可用值。例如,这可以被实施为填充区域2201,如图22b所示。
[0240]
利用bio,可以为每个样点细化运动场是可能的。为了降低计算复杂度,在jem中使用bio的基于块的设计。可以基于4
×
4块来计算运动细化。在基于块的bio中,可以聚合4
×
4块中的所有样点的、等式(12)中的s
n
的值,然后s
n
的聚合值用于4
×
4块的推导的bio运动矢量偏移。更具体地,以下公式可以用于基于块的bio推导:
[0241][0242]
这里,b
k
表示属于预测块的第k个4
×
4块的样点集合。等式(12)和等式(13)中的s
n
被替换为((s
n
,b
k
)>>4)以推导相关联的运动矢量偏移。
[0243]
在一些场景中,由于噪音或不规则运动,bio的mv细化可能不可靠。因此,在bio中,mv细化的幅度被裁剪到阈值。基于当前图片的参考图片是否都来自一个方向来确定阈值。
例如,如果当前图片的所有参考图片都来自一个方向,则阈值的值被设置为12
×214

d
;否则,它被设置为12
×213

d

[0244]
可以使用与hevc运动补偿过程(例如,2d可分离有限脉冲响应(fir))一致的操作利用运动补偿插值来同时计算bio的梯度。在一些实施例中,2d可分离fir的输入是与运动补偿过程和根据块运动矢量的分数部分的分数位置(fracx,fracy)相同的参考帧样点。对于水平梯度首先使用与具有去缩放(de

scaling)移位d

8的分数位置fracy相对应的biofilters对信号进行垂直插值。然后在与具有去缩放移位18

d的分数位置fracx相对应的水平方向上应用梯度滤波器biofilterg。对于垂直梯度使用与具有去缩放移位d

8的分数位置fracy相对应的biofilterg来垂直应用梯度滤波器。然后在与具有去缩放移位18

d的分数位置fracx相对应的水平方向上使用biofilters来执行信号位移。用于梯度计算的插值滤波器biofilterg和用于信号位移的插值滤波器biofilterf的长度可以更短(例如,6抽头),以便保持合理的复杂度。表1示出了可以用于bio中的块运动矢量的不同分数位置的梯度计算的示例滤波器。表2示出了可以用于bio中的预测信号生成的示例插值滤波器。
[0245]
表1:用于bio中的梯度计算的示例性滤波器
[0246]
分数精度位置梯度的插值滤波器(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}
[0247]
表2:用于bio中的预测信号生成的示例性插值滤波器
[0248]
分数精度位置预测信号的插值滤波器(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}
[0249]
在jem,当两个预测来自不同的参考图片时,bio可以被应用于所有双向预测块。当对cu启用局部照明补偿(lic)时,可以禁用bio。
[0250]
在一些实施例中,在正常的mc过程之后,obmc被应用于块。为了降低计算复杂度,在obmc过程期间可能不应用bio。这意味着bio在使用块自身的mv时被应用于块的mc过程中,而在obmc过程期间使用邻近块的mv时不应用于mc过程中。
[0251]
2.9.2如jvet

l0256中提出的vtm

3.0中的bio的示例
[0252]
步骤1:判断bio是否适用(w/h是当前块的宽/高)
[0253]
如果出现以下情况,则bio不适用
[0254]
ο当前视频块是仿射编解码的或atmvp编解码的
[0255]
ο(ipoc

ipoc0)
×
(ipoc

ipoc1)≥0
[0256]
οh==4或(w==4且h==8)
[0257]
ο带加权预测
[0258]
οgbi权重不为(1,1)
[0259]
如果两个参考块(表示为r0和r1)之间的总sad小于阈值,则不使用bio,其中
[0260][0261]
步骤2:数据准备
[0262]
对于wxh块,对(w 2)x(h 2)个样点进行插值。
[0263]
如正常运动补偿中,内部wxh个样点用8抽头插值滤波器进行插值。
[0264]
样点的四条外侧线(图23中的黑色圆圈)用双向线性滤波器进行插值。
[0265]
对于每个位置,在两个参考块(r0和r1)上计算梯度。
[0266]
gx0(x,y)=(r0(x 1,y)

r0(x

1,y))>>4
[0267]
gy0(x,y)=(r0(x,y 1)

r0(x,y

1))>>4
[0268]
gx1(x,y)=(r1(x 1,y)

r1(x

1,y))>>4
[0269]
gy1(x,y)=(r1(x,y 1)

r1(x,y

1))>>4
[0270]
对于每个位置,内部值被计算为:
[0271]
t1=(r0(x,y)>>6)

(r1(x,y)>>6),t2=(gx0(x,y) gx1(x,y))>>3,t3=(gy0(x,y) gy1(x,y))>>3;以及
[0272]
b1(x,y)=t2*t2,b2(x,y)=t2*t3,b3(x,y)=

t1*t2,b5(x,y)=t3*t3,b6(x,y)=

t1*t3
[0273]
步骤3:计算每个块的预测
[0274]
如果两个4
×
4参考块之间的sad小于阈值,则针对4
×
4块跳过bio。
[0275]
计算vx和vy。
[0276]
计算4
×
4块中的每个位置的最终预测:
[0277]
b(x,y)=(vx(gx0(x,y)

gx1(x,y)) vy(gy0(x,y)

gy1(x,y)) 1)>>1
[0278]
p(x,y)=(r0(x,y) r1(x,y) b(x,y) offset)>>shift
[0279]
在本文中,b(x,y)被称为校正项。
[0280]
2.9.3 vtm

4.0中的bio
[0281]
在vtm

4.0中,采用了提出了根据比特深度对bdof中的计算结果进行取整的jvet

m0063。
[0282]
在vtm

4.0中,采用了jvet

m0487,其移除了双向线性滤波并提取参考块的最近整数像素以填充样点的四条外侧线(图23中的黑色圆圈)。
[0283]
vtm

4.0中与bio相关的工作草案如下所示(来自jvet

m1001)
[0284]
2.9.4分数样点插值过程
[0285]
通用
[0286]
该过程的输入是:
[0287]

亮度位置(xsb,ysb),指定当前编解码子块相对于当前图片的左上方亮度样点的左上方样点,
[0288]

变量sbwidth,指定当前编解码子块宽度的,
[0289]

变量sbheight,指定当前编解码子块高度的,
[0290]

运动矢量偏移mvoffset,
[0291]

细化的运动矢量refmvlx,
[0292]

所选择的参考图片样点阵列refpiclx,
[0293]

双向光流标志bdofflag,
[0294]

变量cidx,指定当前块的色彩分量索引。
[0295]
该过程的输出是:
[0296]

预测样点值的(sbwidth bdofoffset)x(sbheight bdofoffset)阵列predsampleslx。
[0297]
双向光流边界偏移bdofoffset被推导如下:
[0298]
bdofoffset=bdofflag?2:0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

811)
[0299]

如果cidx等于0,则以下适用:
[0300]

假设(xintl,yintl)为以全采样单位给出的亮度位置,并且(xfracl,yfracl)为以1/16采样单位给出的偏移。这些变量仅用于该条款中,以用于指定参考样点阵列refpiclx内部的分数样点位置。
[0301]

对于预测亮度样点阵列predsampleslx内部的每个亮度样点位置(x
l
=0..sbwidth

1 bdofoffset,y
l
=0..sbheight

1 bdofoffset),对应的预测亮度样点值predsampleslx[x
l
][y
l
]被推导如下:
[0302]

变量xint
l
、yint
l
、xfrac
l
和yfrac
l
被推导如下:
[0303]
xint
l
=xsb (refmvlx[0]>>4) x
l
ꢀꢀꢀꢀꢀꢀ
(8

812)
[0304]
yint
l
=ysb (refmvlx[1]>>4) y
l
ꢀꢀꢀꢀꢀꢀ
(8

813)
[0305]
xfrac
l
=refmvlx[0]&15
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

814)
[0306]
yfrac
l
=refmvlx[1]&15
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

815)
[0307]

如果bdofflag等于true(真),并且以下条件中的一个或多个为真,则预测亮度样点值predsampleslx[x
l
][y
l
]通过调用如条款8.5.7.3.3所指定的亮度整数样点提取过程进行推导,以(xint
l
,yint
l
)、(xfrac
l
,yfrac
l
)和refpiclx为输出:
[0308]

bdofflag等于true。
[0309]

x
l
等于0。
[0310]

x
l
等于sbwidth 1。
[0311]

y
l
等于0。
[0312]

y
l
等于sbheight 1。
[0313]

否则,以下适用:
[0314]

运动矢量mvlx被设置为(refmvlx

mvoffset)。
[0315]
预测亮度样点值predsampleslx[xl][yl]通过调用如条款8.5.7.3.2所指定的亮度采样8抽头插值滤波过程进行推导,以(xintl,yintl)、(xfracl,yfracl)、refpiclx和padval为输入。
[0316]
……
[0317]
亮度整数样点提取过程
[0318]
该过程的输入是:
[0319]

以全采样单位的亮度位置(xint
l
,yint
l
),
[0320]

亮度参考样点阵列refpiclx
l

[0321]
该过程的输出是预测亮度样点值predsamplelx
l
[0322]
变量shift被设置为max(2,14

bitdepth
y
)。
[0323]
变量picw被设置为等于pic_width_in_luma_samples,并且变量pich被设置为等于pic_height_in_luma_samples。
[0324]
全采样单位的亮度位置(xint、ynt)被推导如下:
[0325]
xint=clip3(0,picw

1,sps_ref_wraparound_enabled_flag?(8

838)cliph((sps_ref_wraparound_offset_minus1 1)*mincbsizey,picw,xint
l
):xint
l
)
[0326]
yint=clip3(0,pich

1,yint
l
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

839)
[0327]
预测亮度样点值predsamplelx
l
被推导如下:
[0328]
predsamplelx
l
=refpiclx
l
[xint][yint]<<shift3
ꢀꢀꢀꢀꢀꢀ
(8

840)
[0329]
双向光流预测过程
[0330]
该过程的输入是:
[0331]

两个变量ncbw和ncbh,指定当前编解码块的宽度和高度,
[0332]

两个(ncbw 2)x(ncbh 2)亮度预测样点阵列predsamplesl0和predsamplesl1,
[0333]

预测列表利用标志predflagl0和predflagl1,
[0334]

参考索引refidxl0和refidxl1,
[0335]

双向光流利用标志bdofutilizationflag[xidx][yidx],其中xidx=0..(ncbw>>2)

1,yidx=0..(ncbh>>2)

1。
[0336]
该过程的输出是亮度预测样点值的(ncbw)x(ncbh)阵列pbsamples。
[0337]
变量bitdepth、shift1、shift2、shift3、shift4、offset4和mvrefinethres被推导如下:
[0338]

变量bitdepth被设置为等于bitdepth
y

[0339]

变量shift1被设置为等于max(2,14

bitdepth)。
[0340]

变量shift2被设置为等于max(8,bitdepth

4)。
[0341]

变量shift3被设置为等于max(5,bitdepth

7)。
[0342]

变量shift4被设置为等于max(3,15

bitdepth),并且变量offset4被设置为等于1<<(shift4

1)。
[0343]

变量mvrefinethres被设置为等于max(2,1<<(13

bitdepth))。
[0344]
对于xidx=0..(ncbw>>2)

1和yidx=0..(ncbh>>2)

1,以下适用:
[0345]

变量xsb被设置为等于(xidx<<2) 1,并且ysb被设置为等于(yidx<<2) 1。
[0346]

如果bdofutilizationflag[xsbidx][yidx]等于false(假),则对于x=xsb

1..xsb 2,y=ysb

1..ysb 2,当前子块的预测样点值被推导如下:
[0347]
pbsamples[x][y]=clip3(0,(2
bitdepth
)

1,(predsamplesl0[x 1][y 1] offset2 predsamplesl1[x 1][y 1])>>shift2)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

852)
[0348]

否则(bdofutilizationflag[xsbidx][yidx]等于true),当前子块的预测样点值被推导如下:
[0349]

对于x=xsb

1..xsb 4,y=ysb

1..ysb 4,以下有序步骤适用:
[0350]
1.预测样点阵列内部的每个对应样点位置(x,y)的位置(h
x
,v
y
)被推导如下:
[0351]
h
x
=clip3(1,ncbw,x)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

853)
[0352]
v
y
=clip3(1,ncbh,y)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

854)
[0353]
2.变量gradienthl0[x][y]、gradientvl0[x][y]、gradienthl1[x][y]和gradientvl1[x][y]被推导如下:
[0354]
gradienthl0[x][y]=(predsamplesl0[h
x
1][v
y
]

predsamplel0[h
x

1][v
y
])>>shift1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

855)
[0355]
gradientvl0[x][y]=(predsamplel0[h
x
][v
y
1]

predsamplel0[h
x
][v
y

1])>>shift1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

856)
[0356]
gradienthl1[x][y]=(predsamplesl1[h
x
1][v
y
]

predsamplel1[h
x

1][v
y
])>>shift1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

857)
[0357]
gradientvl1[x][y]=(predsamplel1[h
x
][v
y
1]

predsamplel1[h
x
][v
y

1])>>shift1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

858)
[0358]
3.变量temp[x][y]、temph[x][y]和tempv[x][y]被推导如下:
[0359]
diff[x][y]=(predsamplesl0[h
x
][v
y
]>>shift2)

(predsamplesl1[h
x
][v
y
]>>shift2)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

859)
[0360]
temph[x][y]=(gradienthl0[x][y] gradienthl1[x][y])>>shift3
[0361]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

860)
[0362]
tempv[x][y]=(gradientvl0[x][y] gradientvl1[x][y])>>shift3
[0363]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

861)
[0364]

变量sgx2、sgy2、sgxgy、sgxdi和sgydi被推导如下:
[0365]
sgx2=σ
i
σ
j
(temph[xsb i][ysb j]*temph[xsb i][ysb j]),其中i,j=

1..4
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

862)
[0366]
sgy2=σ
i
σ
j
(tempv[xsb i][ysb j]*tempv[xsb i][ysb j]),其中i,j=

1..4
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

863)
[0367]
sgxgy=σ
i
σ
j
(temph[xsb i][ysb j]*tempv[xsb i][ysb j]),其中i,j

1..4
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

864)
[0368]
sgxdi=σ
i
σ
j
(

temph[xsb i][ysb j]*diff[xsb i][ysb j]),其中i,j=

1..4
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

865)
[0369]
sgydi=σ
i
σ
j
(

tempv[xsb i][ysb j]*diff[xsb i][ysb j]),其中i,j=

1..4
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

866)
[0370]

当前子块的水平和垂直运动偏移被推导如下:
[0371]
v
x
=sgx2>0?clip3(

mvrefinethres,mvrefinethres,

(sgxdi<<3)>>floor(log2(sgx2))):0
ꢀꢀ
(8

867)
[0372]
v
y
=sgy2>0?clip3(

mvrefinethres,mvrefinethres,((sgydi<<3)

((v
x
*sgxgy
m
)<<12 v
x
*sgxgy
s
)>>1)>>floor(log2(sgx2))):0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

868)
[0373]

对于x=xsb

1..xsb 2,y=ysb

1..ysb 2,当前子块的预测样点值被推导如下:
[0374]
bdofoffset=round((v
x
*(gradienthl1[x 1][y 1]

gradienthl0[x 1][y 1]))>>1) round((v
y
*(gradientvl1[x 1][y 1]

gradientvl0[x 1][y 1]))>>1)
ꢀꢀꢀꢀ
(8

869)
[0375]
[ed.(jc):round()操作是针对浮点输入而定义的。round()操作在这里似乎是冗余的,因为输入是整数值。待提出者确认]
[0376]
pbsamples[x][y]=clip3(0,(2
bitdepth
)

1,(predsamplesl0[x 1][y 1] offset4 predsamplesl1[x 1][y 1] bdofoffset)>>shift4)
[0377]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

870)
[0378]
2.10解码器侧运动矢量细化(dmvr)的示例
[0379]
在双向预测操作中,对于一个块区域的预测,分别使用列表0的运动矢量(mv)和列表1的mv形成的两个预测块被组合以形成单个预测信号。在解码器侧运动矢量细化(dmvr)方法中,双向预测的两个运动矢量通过双边模板匹配过程而进一步细化。双边模板匹配应用于解码器中,以执行双边模板和参考图片中的重构样点之间的基于失真的搜索,以便在不传输附加运动信息的情况下获得细化的mv。
[0380]
在dmvr,如图24所示,分别从列表0的初始mv0和列表1的mv1生成双边模板作为两个预测块的加权组合(即,平均)。模板匹配操作由计算生成的模板和参考图片中的样点区域(初始预测块周围)之间的成本度量构成。对于两个参考图片中的每一个,产生最小模板成本的mv被认为是用以替换原始mv的、该列表的更新的mv。在jem中,为每个列表搜索九个mv候选。九个候选mv包括原始mv和具有水平或垂直方向或两个方向上的到原始mv的一个亮度样点偏移的8个周围mv。最后,如图24所示的两个新的mv,即mv0

和mv1

,用于生成最终的双向预测结果。绝对差值之和(sad)用作成本度量。请注意,当计算由一个周围mv生成的预测块的成本时,取整的mv(到整数像素)实际用于获得预测块,而不是真实mv。
[0381]
dmvr被应用于双向预测的merge模式,其中一个mv来自过去的参考图片,而另一个来自未来的参考图片,而不传输附加的语法元素。在jem中,当为cu启用lic、仿射运动、fruc或子cu merge候选时,不应用dmvr。
[0382]
2.11 jvet

n0236
[0383]
该文献提出了一种利用光流细化基于子块的仿射运动补偿预测的方法。在执行基于子块的仿射运动补偿之后,通过添加由光流等式推导的差来细化预测样点,这被称为利用光流的预测细化(prof)。该方法可以在不增加内存访问带宽的情况下实现像素级别粒度的帧间预测。
[0384]
为了获得更精细的运动补偿粒度,该文献提出了一种利用光流细化基于子块的仿射运动补偿预测的方法。在执行基于子块的仿射运动补偿之后,通过添加由光流等式推导的差来细化亮度预测样点。提出的prof(利用光流的预测细化)被描述为以下四个步骤。
[0385]
步骤1)执行基于子块的仿射运动补偿以生成子块预测i(i,j)。
[0386]
步骤2)使用3抽头滤波器[

1,0,1]在每个样点位置处计算子块预测的空域梯度g
x
(i,j)和g
y
(i,j)。
[0387]
g
x
(i,j)=i(i 1,j)

i(i

1,j)
[0388]
g
y
(i,j)=i(i,j 1)

i(i,j

1)
[0389]
对于梯度计算,子块预测在每侧上被扩展一个像素。为了减少内存带宽和复杂度,扩展边界上的像素从参考图片中的最近整数像素位置进行复制。因此,避免了填充区域的附加插值。
[0390]
步骤3)由光流等式计算亮度预测细化(表示为δi)。
[0391]
δi(i,j)=g
x
(i,j)*δv
x
(i,j) g
y
(i,j)*δv
y
(i,j)
[0392]
其中增量mv(表示为δv(i,j))是为样点位置(i,j)计算的像素mv(表示为v(i,j))和像素(i,j)所属的子块的子块mv之间的差,如图25所示。
[0393]
由于仿射模型参数和相对于子块中心的像素位置不在子块之间被改变,所以可以为第一子块计算δv(i,j),并将其重用于相同cu中的其他子块。假设x和y是从像素位置到子块中心的水平和垂直偏移,可以通过以下等式推导δv(x,y),
[0394][0395]
对于4参数仿射模型,
[0396][0397]
对于6参数仿射模型,
[0398][0399]
其中,(v
0x
,v
0y
)、(v
1x
,v
1y
)、(v
2x
,v
2y
)是左上方、右上方和左下方控制点运动矢量,w和h是cu的宽度和高度。
[0400]
步骤4)最后,亮度预测细化被添加到子块预测i(i,j)。最终的预测i’如以下等式被生成。
[0401]
i

(i,j)=i(i,j) δi(i,j)
[0402]
jvet

n0236中的一些细节
[0403]
a)如何推导prof的梯度
[0404]
在jvet

n0263中,为每个参考列表的每个子块(vtm

4.0中的4
×
4子块)计算梯度。对于每个子块,获取参考块的最近整数样点以填充样点的四条外侧线(图23中的黑色圆
圈)。
[0405]
假设当前子块的mv为(mvx,mvy)。然后分数部分被计算为(fracx,fracy)=(mvx&15,mvy&15)。整数部分被计算为(intx,inty)=(mvx>>4,mvy>>4)。偏移(offsetx,offsety)被推导为:
[0406]
offsetx=fracx>7?1:0;
[0407]
offsety=fracy>7?1:0;
[0408]
假设当前子块的左上方坐标为(xcur,ycur),并且当前子块的大小为w
×
h。
[0409]
然后(xcor0,ycor0)、(xcor1,ycor1)、(xcor2,ycor2)和(xcor3,ycor3)被计算为:
[0410]
(xcor0,ycor0)=(xcur intx offsetx

1,ycur inty offsety

1);
[0411]
(xcor1,ycor1)=(xcur intx offsetx

1,ycur inty offsety h);
[0412]
(xcor2,ycor2)=(xcur intx offsetx

1,ycur inty offsety);
[0413]
(xcor3,ycor3)=(xcur intx offsetx w,ycur inty offsety);
[0414]
假设predsample[x][y](其中x=0..w

1,y=0..h

1)存储子块的预测样点。
[0415]
那么填充样点被推导为
[0416]
predsample[x][

1]=(ref(xcor0 x,ycor0)<<shift0)

rounding,对于x=

1..w;
[0417]
predsample[x][h]=(ref(xcor1 x,ycor1)<<shift0)

rounding,对于x=

1..w;
[0418]
predsample[

1][y]=(ref(xcor2,ycor2 y)<<shift0)

rounding,对于y=0..h

1;
[0419]
predsample[w][y]=(ref(xcor3,ycor3 y)<<shift0)

rounding,对于y=0..h

1;
[0420]
其中rec表示参考图片。rounding是整数,在示例性prof实施方式中等于2
13
。shift0=max(2,(14

bitdepth));
[0421]
prof试图提高梯度的精度,这与vtm

4.0中的bio不同,在bio中,梯度以与输入亮度样点相同的精度被输出。
[0422]
prof中的梯度被计算如下:
[0423]
shift1=shift0

4。
[0424]
gradienth[x][y]=(predsamples[x 1][y]

predsample[x

1][y])>>shift1
[0425]
gradientv[x][y]=(predsample[x][y 1]

predsample[x][y

1])>>shift1
[0426]
应该注意的是,predsamples[x][y]在插值之后保持精度。
[0427]
b)如何推导prof的δv
[0428]
δv(表示为dmvh[posx][posy]和dmvv[posx][posy],其中posx=0..w

1,posy=0..h

1)的推导可以被描述如下:
[0429]
假设当前块的大小为cbwidth
×
cbheight,控制点运动矢量的数量为numcpmv,并且控制点运动矢量为cpmvlx[cpidx],其中cpidx=0..numcpmv

1,并且x为0或1,表示两个参考列表。
[0430]
变量log2cbw和log2cbh被推导如下:
[0431]
log2cbw=log2(cbwidth)
[0432]
log2cbh=log2(cbheight)
[0433]
变量mvscalehor、mvscalever、dhorx和dverx被推导如下:
[0434]
mvscalehor=cpmvlx[0][0]<<7
[0435]
mvscalever=cpmvlx[0][1]<<7
[0436]
dhorx=(cpmvlx[1][0]

cpmvlx[0][0])<<(7

log2cbw)
[0437]
dverx=(cpmvlx[1][1]

cpmvlx[0][1])<<(7

log2cbw)
[0438]
变量dhory和dvery被推导如下:
[0439]

如果numcpmv等于3,则以下适用:
[0440]
dhory=(cpmvlx[2][0]

cpmvlx[0][0])<<(7

log2cbh)
[0441]
dvery=(cpmvlx[2][1]

cpmvlx[0][1])<<(7

log2cbh)
[0442]

否则(numcpmv等于2),以下适用:
[0443]
dhory=

dverx
[0444]
dvery=dhorx
[0445]
变量qhorx、qverx、qhory和qvery被推导如下
[0446]
qhorx=dhorx<<2;
[0447]
qverx=dverx<<2;
[0448]
qhory=dhory<<2;
[0449]
qvery=dvery<<2;
[0450]
dmvh[0][0]和dmvv[0][0]被计算如下
[0451]
dmvh[0][0]=((dhorx dhory)<<1)

((qhorx qhory)<<1);
[0452]
dmvv[0][0]=((dverx dvery)<<1)

((qverx qvery)<<1);
[0453]
对于从1到w

1的xpos的dmvh[xpos][0]和dmvv[xpos][0]被推导如下:
[0454]
dmvh[xpos][0]=dmvh[xpos

1][0] qhorx;
[0455]
dmvv[xpos][0]=dmvv[xpos

1][0] qverx;
[0456]
对于从1到h

1的ypos,以下适用:
[0457]
dmvh[xpos][ypos]=dmvh[xpos][ypos

1] qhory,其中xpos=0..w
‑1[0458]
dmvv[xpos][ypos]=dmvv[xpos][ypos

1] qvery,其中xpos=0..w
‑1[0459]
最后,dmvh[xpos][ypos]和dmvv[xpos][ypos](其中posx=0..w

1,posy=0..h

1)被右移为
[0460]
dmvh[xpos][ypos]=satshift(dmvh[xpos][ypos],7 2

1);
[0461]
dmvv[xpos][ypos]=satshift(dmvv[xpos][ypos],7 2

1);
[0462]
其中,satshift(x,n)和shift(x,n)被定义为
[0463][0464]
shift(x,n)=(x offset0)>>n
[0465]
在一个示例中,offset0和/或offset1被设置为(1<<n)>>1。
[0466]
c)如何推导prof的δi
[0467]
对于子块内部的位置(posx,posy),其对应的δv(i,j)被表示为(dmvh[posx][posy],dmvv[posx][posy])。其对应的梯度被表示为(gradienth[posx][posy],gradientv[posx][posy])。
[0468]
那么δi(posx,posy)被推导如下。
[0469]
(dmvh[posx][posy],dmvv[posx][posy])被裁剪为
[0470]
dmvh[posx][posy]=clip3(

32768,32767,dmvh[posx][posy]);
[0471]
dmvv[posx][posy]=clip3(

32768,32767,dmvv[posx][posy]);
[0472]
δi(posx,posy)=dmvh[posx][posy]
×
gradienth[posx][posy] dmvv[posx][posy]
×
gradientv[posx][posy];
[0473]
δi(posx,posy)=shift(δi(posx,posy),1 1 4);
[0474]
δi(posx,posy)=clip3(

(2
13

1),2
13

1,δi(posx,posy));
[0475]
d)如何推导prof的i’[0476]
如果当前块没有被编解码为双向预测或加权预测,则
[0477]
i’(posx,posy)=shift((i(posx,posy) δi(posx,posy)),shift0),
[0478]
i’(posx,posy)=clipsample(i’(posx,posy)),
[0479]
其中clipsample将样点值裁剪为有效的输出样点值。
[0480]
然后,输出i’(posx,posy)作为帧间预测值。
[0481]
否则(当前块被编解码为双向预测或加权预测)
[0482]
i’(posx,posy)将被存储并用于根据其他预测值和/或加权值来生成帧间预测值。
[0483]
2.12 jvet

n 0510
[0484]
在jvet

n0510中,提出了相位变化仿射子块运动补偿(mv)方法。应用传统的两阶段水平

垂直插值。然而,与对所有样点行使用相同的水平滤波器和对所有样点列使用相同的垂直滤波器的基于相位不变块的mv不同,滤波器的不同相位可以被应用于仿射子块中的不同样点行和不同样点列。
[0485]
为了更好地近似仿射子块中的仿射运动模型,将相位变化mc应用于子块。在所提出的方法中,仿射编解码块也被分为4
×
4个子块,并且如在vtm4.0中所做的那样为每个子块推导子块mv。每个子块的mc被分为两个阶段。第一阶段是用(4 l

1)行水平滤波对(4 l

1)
×
(4 l

1)参考块窗口进行滤波,其中l是插值滤波器的滤波器抽头长度。然而,不同于平移mc,在所提出的相位变化仿射子块mc中,每个样点行的滤波相位是不同的。对于每个样点行,mvx被推导如下。
[0486]
mvx=(subblockmvx<<7 dmvverx
×
(rowidx

l/2

2))>>7
[0487]
每个样点行的滤波器相位是从mvx推导的。subblockmvx是推导的子块mv的mv的x分量,如在vtm4.0中所做的。rowidx是样点行索引。dmvverx为(cubottomleftcpmvx

cutopleftcpmvx)<<(7

log2lumacbheight),其中cubottomleftcpmvx是cu左下方控制点mv的x分量,cutopleftcpmvx是cu左上方控制点mv的x分量,并且lumacbheight是亮度编解码块(cb)的高度的log2。
[0488]
在水平滤波之后,生成4
×
(4 l

1)个水平滤波样点。图26示出了所提出的水平滤波的概念。灰色点是参考块窗口的样点,并且橙色点表示水平滤波样点。8
×
1个样点的蓝色管表示应用一次8抽头水平滤波,分别如图26和图27所示。每个样点行需要四次水平滤波。样点行上的滤波器相位是相同的。然而,不同行上的滤波器相位是不同的。生成偏斜的4
×
11个样点。
[0489]
在第二阶段,4
×
(4 l

1)个水平滤波样点(图26中的橙色样点)被进一步垂直滤
波。对于每个样点列,mvy被推导如下。
[0490]
mvy=(subblockmvy<<7 dmvhory
×
(columnidx

2))>>7(等式2)
[0491]
每个样点列的滤波器相位是从mvy推导的。subblockmvy是推导的子块mv的mv的y分量,如在vtm4.0中所做的。columnidx是样点列索引。dmvhory为(cutoprightcpmvy

cutopleftcpmvy)<<(7

log2lumacbwidth),其中cutoprightcpmvy是cu右上方控制点mv的y分量,cutopleftcpmvy是cu左上方控制点mv的y分量,并且log2lumacbwidth是亮度cb的宽度的log2。
[0492]
在垂直滤波之后,生成4
×
4个仿射子块预测样点。图28示出了所提出的垂直滤波的概念。浅橙色点是来自第一阶段的水平滤波样点。红点是作为最终预测样点的垂直滤波样点。
[0493]
在本提议中,使用的插值滤波器集与vtm4.0中的相同。唯一的区别是一个样点行上的水平滤波器相位不同,并且一个样点列上的垂直滤波器相位不同。对于所提出的方法中的每个仿射子块的滤波操作的数量,它与vtm4.0中的相同。
[0494]
3.现有实施方式的缺点
[0495]
一些现有实施方式存在以下缺点:
[0496]
(1)梯度计算方法在bdof和prof中不相同。
[0497]
(a)在bdof中,为整个块计算梯度,并且进行一次填充。在prof中,为每个子块计算梯度,并且进行n次填充(假设有n个子块)。
[0498]
(b)prof需要比bdof高的梯度精度。
[0499]
(2)prof和其他工具之间的相互作用不清楚。
[0500]
(3)不清楚如何对色度分量应用prof。
[0501]
(4)δv的推导过程可能不正确。
[0502]
(5)为了更高的编解码性能,可能有条件地进行prof。
[0503]
(6)不清楚如何组合jvet

n 0236和jvet

n0510中的方法。
[0504]
(7)dmvh和dmvv的比特宽度可能太大。
[0505]
4.用于利用光流的预测细化(prof)的示例方法
[0506]
当前公开的技术的实施例克服了现有实施方式的缺点,从而提供具有更高编解码效率的视频编解码。基于所公开的技术,用于利用光流的预测细化的方法可以增强现有和未来的视频编解码标准,在针对各种实施方式描述的以下示例中进行了阐述。下面提供的所公开的技术的示例解释了一般概念,并且不意味着被解释为限制。在示例中,除非明确相反指示,否则在这些示例中描述的各种特征可以被组合。
[0507]
分别由ref0和ref1表示来自列表0和列表1的当前图片的参考图片,表示τ0=poc(当前)

poc(ref0),τ1=poc(ref1)

poc(当前),并且分别由refblk0和refblk1表示来自ref0和ref1的当前块的参考块。对于当前块中的子块,其在refblk0中的对应子块的、指向refblk1的mv由(v
x
,v
y
)表示。ref0和ref1中的子块的mv分别由(mvl0
x
,mvl0
y
)和(mvl1
x
,mvl1
y
)表示。
[0508]
shift(x,s)被定义为shift(x,s)=(x off)>>s。
[0509]
signshift(x,s)被定义为
[0510][0511]
在示例中,offset0和/或offset1被设置为(1<<n)>>1或(1<<(n

1))。在另一示例中,offset0和/或offset1被设置为0。在又一示例中,offset0=offset1=((1<<n)>>1)

1或((1<<(n

1)))

1。
[0512]
clip3(x,min,max)被定义为
[0513][0514]
在本文中,max(a,b)=a>=b?a:b。
[0515]
在以下讨论中,两个运动矢量之间的运算意味着该运算将被应用于运动矢量的两个分量。例如,mv3=mv1 mv2相当于mv3
x
=mv1
x
mv2
x
并且mv3
y
=mv1
y
mv2
y
。替代地,该运算可以仅应用于两个运动矢量的水平或垂直分量。mv(mvx,mvy)的术语“绝对值”可以指abs(mvx)、或abs(mvy)、或max(abs(mvx),abs(mvy))、或abs(mvx) abs(mvy),其中,函数abs(x)返回x的绝对值,并且函数max(x,y)返回x和y中更大的一个。
[0516]
在以下讨论中,左侧邻近块、左下方邻近块、上侧邻近块、右上方邻近块和左上方邻近块被表示为如图2所示的块a1、a0、b1、b0和b2。
[0517]
1.提出了可以在与用于仿射模式下的运动补偿的子块尺寸不同的m
×
n区域级别中进行prof中的梯度计算。
[0518]
a.在一个示例中,可以对大于子块的m
×
n区域进行prof中的梯度计算。
[0519]
b.在一个示例中,m和n可以是某个预定义的数,例如,m=n=8或m=n=16。
[0520]
c.在一个示例中,m和n可以是根据子块尺寸的宽度/高度定义的某个数,例如,m=n=2*wmc,其中,wmc是在运动补偿中使用的子块尺寸的宽度/高度。
[0521]
2.可以在m
×
n区域级别中进行prof/bio中的梯度计算,并且可以自适应地改变m/n。
[0522]
a.在一个示例中,m和n可以取决于当前块的大小w
×
h。
[0523]
i.例如,区域可以是整个当前块,即,m=w并且n=h。
[0524]
ii.例如,m=w/t1并且n=h/t2,其中t1和t2是整数,例如t1=t2=2。
[0525]
3.对于上述方法,以下可以进一步适用:
[0526]
a.在一个示例中,m至少等于mmin,并且n至少等于nmin,例如mmin=nmin=8。
[0527]
b.在一个示例中,对每个m
×
n区域进行一次填充过程,以得到填充的(m dm)
×
(n dn)区域,例如dm=dn=2。
[0528]
i.在一个示例中,区域内部的样点(诸如图23中的白色圆圈)
[0529]
可以从具有插值滤波的运动补偿进行推导。
[0530]
(i)在一个示例中,区域内部的样点可以从用于区域中的几个子块的运动补偿进行推导。
[0531]
ii.在一个示例中,可以填充样点的四条外侧线(诸如图23中的黑色圆圈)。
[0532]
(i)在一个示例中,要被填充的样点可以复制参考块中的最近整数样点的强度。
[0533]
(ii)在一个示例中,要被填充的样点可以复制未被填充的区域中的最近样点的强度。
[0534]
4.对于应用prof/bio中梯度计算的每个区域,代替计算每个样点的梯度值,提出基于部分样点来计算梯度。
[0535]
a.在一个示例中,可以在prof/bio中使用与给定坐标处的样点相关联的梯度,例如在(2x,y)或(x,2y)或(2x 1,2y 1)或(2x,2y)处,其中,(m,n)是相对于当前块中左上方样点的坐标。
[0536]
b.在一个示例中,可以首先修改样点(例如,下采样),并且可以使用修改的样点来推导梯度。
[0537]
5.提出在bdof和prof中计算的梯度值的精度可以相同。
[0538]
a.在一个示例中,样点差可以用相同的值进行移位。
[0539]
i.在一个示例中,水平和/或垂直梯度(分别由gradienth、gradientv表示)可以通过以下方式进行计算:
[0540]
gradienth[x][y]=(predsamples[x 1][y]

predsample[x

1][y])>>shift0
[0541]
gradientv[x][y]=(predsample[x][y 1]

predsample[x][y

1])>>shift1
[0542]
替代地,
[0543]
gradienth[x][y]=shift((predsamples[x 1][y]

predsample[x

1][y]),shift0)
[0544]
gradientv[x][y]=shift((predsample[x][y 1]

predsample[x][y

1]),shift1)
[0545]
替代地,
[0546]
gradienth[x][y]=satshift((predsamples[x 1][y]

predsample[x

1][y]),shift0)
[0547]
gradientv[x][y]=satshift((predsample[x][y 1]

predsample[x][y

1]),shift1)
[0548]
ii.在一个示例中,水平和/或垂直梯度(分别由gradienth、gradientv表示)可以通过以下方式进行计算:
[0549]
gradienth[x][y]=(predsamples[x][y]*2

predsamples[x 1][y]

predsample[x

1][y])>>shift0
[0550]
gradientv[x][y]=(predsamples[x][y]*2

predsample[x][y 1]

predsample[x][y

1])>>shift1
[0551]
替代地,
[0552]
gradienth[x][y]=shift((predsamples[x][y]*2

predsamples[x 1][y]

predsample[x

1][y]),shift0)
[0553]
gradientv[x][y]=shift((predsamples[x][y]*2

predsample[x][y 1]

predsample[x][y

1]),shift1)
[0554]
替代地,
[0555]
gradienth[x][y]=satshift((predsamples[x][y]*2

predsamples[x 1][y]

predsample[x

1][y]),shift0)
[0556]
gradientv[x][y]=satshift((predsamples[x][y]*2

predsample[x][y 1]

predsample[x][y

1]),shift1)
[0557]
iii.在一个示例中,shift0和/或shift1可以被设置为max(2,(14

bitdepth)),其中,bitdepth是重构样点/输入样点的比特深度。
[0558]
6.填充样点的外部线(表示为填充样点,诸如图23中的黑色圆圈)的以下方法可以被应用于prof、或bio、或prof和bio两者。
[0559]
a.填充样点可以用与prof和/或bio相同的方法进行填充。“相同的方法”可以是下面公开的任何填充方法。
[0560]
b.在一个示例中,可以从prof和/或bio的参考图片中的整数样点推导(例如,复制)填充样点。
[0561]
i.在一个示例中,用于推导填充样点的整数样点可以通过填充样点的位置进行定位,添加可以在添加操作中被取整为整数mv的mv。
[0562]
(i)在一个示例中,mv(mvx,mvy)可以被取整为向下取整整数mv(intx,inty)。例如,intx=mvx>>p,inty=mvy>>p,其中p是mv精度。
[0563]
(ii)在一个示例中,mv(mvx,mvy)可以被取整为最近取整整数mv(intx,inty)。例如,设置fracx=mvx&((1<<p)

1),fracy=mvy&((1<<p)

1),offx=(fracx>=(1<<(p

1)))?1:0,offy=(fracy>=(1<<(p

1)))?1:0,其中p是mv精度,然后intx=(mvx>>p) offx,inty=(mvy>>p) offy。halffrac可以等于1<<(p

1),在其他示例中,它可以等于(1<<(p

1))

1或(1<<(p

1)) 1。
[0564]
(iii)在一个示例中,当intx=satshift(mvx,p),inty=satshift(mvy,p)时,mv(mvx,mvy)可以被取整为整数mv(intx,inty),其中p是mv精度。
[0565]
(iv)在以上项目符号中,mv精度p可以取决于色彩格式和/或色彩分量。
[0566]
a.例如,cb/cr分量的mv精度可以等于亮度分量的mv精度加上4:2:0色彩格式的k。例如,k可以等于1。
[0567]
7.提出当应用prof时,不能应用编解码工具x。
[0568]
a.替代地,当应用编解码工具x时,不能应用prof。
[0569]
b.在一个示例中,如果不能应用编解码工具x,则可以不信令通知用以指示编解码工具x的(多个)语法元素。
[0570]
c.在一个示例中,编解码工具x可以是广义双向预测(gbi)。
[0571]
i.例如,当gbiidx不等于0时,prof不被应用。
[0572]
ii.替代地,当应用prof时,gbiidx必须为0。
[0573]
iii.替代地,当应用prof时,gbiidx不被信令通知并被推断为0。
[0574]
iv.替代地,当应用prof时,无论gbiidx是否等于0,gbi都不被应用。
[0575]
d.在一个示例中,编解码工具x可以是局部照明补偿。
[0576]
e.在一个示例中,编解码工具x可以是多重变换集(mts)。
[0577]
i.例如,当应用prof时,只能应用默认变换。
[0578]
(i)例如,当应用prof时,语法元素相关的mts不被应用。
[0579]
f.在一个示例中,编解码工具x可以是加权预测。
[0580]
i.例如,当由于加权预测导致的不相等的权重和/或不相等的偏移被应用于一个
块时,prof不被应用。
[0581]
8.提出如何应用prof可以取决于色彩格式和/或单独平面编解码的使用。
[0582]
a.在一个示例中,如果色彩格式为4:0:0,则不能对色度分量应用prof。
[0583]
b.在一个示例中,如果色彩格式为4:4:4,则可以对色度分量应用prof。
[0584]
c.在一个示例中,如果色彩格式不等于4:0:0,则可以对色度分量应用prof。
[0585]
d.在一个示例中,如何推导增量(delta)mv(例如,第2.11节中的δv)可以取决于色彩格式。
[0586]
9.提出如何应用prof可以取决于色彩分量。
[0587]
a.在一个示例中,可以为每个色彩分量独立地计算梯度。
[0588]
i.替代地,为第一色彩分量计算的梯度可以由第二色彩分量使用。
[0589]
ii.替代地,梯度可以被计算两次,一次针对亮度/主色分量,并且另一次针对两个色度/相关色彩分量。
[0590]
b.在一个示例中,可以为每个色彩分量独立地计算增量mv(例如,第2.11节中的δv)。
[0591]
i.替代地,为第一色彩分量计算的增量mv可以由第二色彩分量使用。
[0592]
c.在一个示例中,可以为每个色彩分量独立地计算预测细化(例如,第2.11节中的δi)。
[0593]
i.替代地,为第一色彩分量计算的预测细化(例如,第2.11节中的δi)可以由第二色彩分量使用。
[0594]
d.在一个示例中,prof中梯度的精度可以取决于色彩分量。
[0595]
e.在一个示例中,prof中的增量mv(例如,第2.11节中的δv)的精度可以取决于色彩分量。
[0596]
f.在一个示例中,是否以及如何在prof中进行剪裁操作可以取决于色彩分量。
[0597]
g.在一个示例中,是否以及如何在prof中进行移位操作可以取决于色彩分量。
[0598]
h.在一个示例中,prof可以仅被应用于亮度分量。
[0599]
i.在一个示例中,prof可以被应用于不同子块尺寸的不同色彩分量。
[0600]
i.替代地,prof可以被应用于相同子块尺寸的不同色彩分量。
[0601]
j.在一个示例中,prof可以被应用于m*n子块尺寸的色度分量。
[0602]
i.例如,m和n被设置为等于4。
[0603]
k.以上方法(项目符号h

j)可以进一步取决于色彩格式(例如,4:2:0或4:4:4)。
[0604]
10.提出增量mv的推导(例如,第2.11节中的δv)可以取决于子块的宽度和/或高度。
[0605]
a.在一个示例中,dmvh[0][0]和dmvv[0][0]被计算为
[0606]
qhorx=dhorx*p0;
[0607]
qverx=dverx*p0;
[0608]
qhory=dhory*p0;
[0609]
qvery=dvery*p0;
[0610]
dmvh[0][0]=((idmvhorx idmvverx)*p1)

(quadhorx*(blockwidth>>1) quadverx*(blockheight*p1));
[0611]
dmvv[0][0]=((idmvhory idmvvery)*p1)

(quadhory*(blockwidth>>1) quadvery*(blockheight*p1));
[0612]
其中blockwidth和blockheight分别表示子块的宽度和高度。p0和
[0613]
p1是控制精度的两个数。
[0614]
i.例如,p0=4并且p1=2,则dmvh[0][0]和dmvv[0][0]被计算为:
[0615]
qhorx=dhorx<<2;
[0616]
qverx=dverx<<2;
[0617]
qhory=dhory<<2;
[0618]
qvery=dvery<<2;
[0619]
dmvh[0][0]=((idmvhorx idmvverx)<<1)

(quadhorx*(blockwidth>>1) quadverx*(blockheight>>1));
[0620]
dmvv[0][0]=((idmvhory idmvvery)<<1)

(quadhory*(blockwidth>>1) quadvery*(blockheight>>1));
[0621]
11.提出对于仿射编解码块,prof可以有条件地进行,而不是总是被应用。
[0622]
a.在一个示例中,是否以及如何进行prof可以取决于当前块的大小w
×
h。
[0623]
i.例如,如果w<=t1和/或h<=t2,则可以不应用prof,例如t1=t2=16;
[0624]
ii.例如,如果w<t1和/或h<t2,则可以不应用prof,例如t1=t2=16;
[0625]
iii.例如,如果w>=t1和/或h>=t2,则可以不应用prof,例如t1=t2=64;
[0626]
iv.例如,如果w>t1和/或h>t2,则可以不应用prof,例如t1=t2=64;
[0627]
v.例如,如果w*h>t1,则可以不应用prof,例如t1=64*64;
[0628]
vi.例如,如果w*h>=t1,则可以不应用prof,例如t1=64*64;
[0629]
vii.例如,如果w*h<t1,则可以不应用prof,例如t1=16*16;
[0630]
viii.例如,如果w*h<=t1,则可以不应用prof,例如t1=16*16;
[0631]
ix.例如,如果min(w,h)>=t1,则可以不应用prof,例如t1=64;
[0632]
x.例如,如果min(w,h)>t1,则可以不应用prof,例如t1=64;
[0633]
xi.例如,如果max(w,h)<=t1,则可以不应用prof,例如t1=16;
[0634]
xii.例如,如果max(w,h)<t1,则可以不应用prof,例如t1=16;
[0635]
b.在一个示例中,是否和/或如何进行prof可以取决于控制点运动矢量。
[0636]
c.在一个示例中,是否和/或如何进行prof可以取决于仿射参数和/或仿射参数的数量。
[0637]
i.对于4参数仿射模型,其中
[0638][0639]
是否以及如何进行prof可以取决于参数a和b。
[0640]
ii.对于4参数仿射模型,其中
[0641][0642]
是否以及如何进行prof可以取决于参数a、b、c和d。
[0643]
iii.在一个示例中,如果最大仿射参数小于(或不大于)阈值,
[0644]
则可以不应用prof。
[0645]
(i)替代地,如果所有(诸如四个或六个)仿射参数小于(或不大于)阈值,则可以不应用prof。
[0646]
(ii)替代地,如果至少一个仿射参数小于(或不大于)阈值,则可以不应用prof。
[0647]
iv.在一个示例中,如果仿射参数的绝对值的最大值小于(或不大于)阈值,则可以不应用prof。
[0648]
(i)替代地,如果所有仿射参数的绝对值小于(或不大于)阈值,则可以不应用prof。
[0649]
(ii)替代地,只有当所有仿射参数的绝对值中的至少一个大于(或不小于)阈值时,才能应用prof。
[0650]
v.在一个示例中,如果最小仿射参数大于(或不小于)阈值,则可以不应用prof。
[0651]
(i)替代地,如果所有(诸如四个或六个)仿射参数大于(或不小于)阈值,则可以不应用prof。
[0652]
(ii)替代地,如果至少一个仿射参数大于(或不小于)阈值,则可以不应用prof。
[0653]
vi.在一个示例中,如果仿射参数的绝对值的最小值大于(或不小于)阈值,则可以不应用prof。
[0654]
(i)替代地,如果所有仿射参数的绝对值大于(或不小于)阈值,则可以不应用prof。
[0655]
(ii)替代地,仅当仿射参数的绝对值中的至少一个小于(或不大于)阈值时,才能应用prof。
[0656]
vii.在一个示例中,如果如jvet

n0236公开的增量mv的“绝
[0657]
对值”的最大值小于(或不大于)阈值,则可以不应用prof。
[0658]
(i)替代地,如果所有增量mv的“绝对值”小于(或不大于)阈值,则可以不应用prof。
[0659]
(ii)替代地,只有当增量mv的“绝对值”中的至少一个大于(或不小于)阈值时,才能应用prof。
[0660]
viii.在一个示例中,如果增量mv的“绝对值”的最小值大于(或不小于)阈值,则可以不应用prof。
[0661]
(i)替代地,如果所有增量mv的“绝对值”大于(或不小于)阈值,则可以不应用prof。
[0662]
(ii)替代地,只有当增量mv的“绝对值”中的至少一个大于(或不小于)阈值时,才能应用prof。
[0663]
ix.在一个示例中,prof可以被应用于某些位置。
[0664]
(i)例如,如果位置的对应增量mv的“绝对值”小于(或不大于)阈值,则prof可以被应用于该位置。
[0665]
(ii)例如,如果位置的对应增量mv的“绝对值”大于(或不小于)阈值,则prof可以被应用于该位置。
[0666]
x.在一个示例中,仿射参数可以以如jvet

m1001所描述的特定精度表示为整数dhorx、dverx、dhory和dvery。
[0667]
xi.在一个示例中,阈值可以取决于比特深度。
[0668]
(i)在一个示例中,阈值可以被推导为1<<bitdepth。
[0669]
(ii)此外,替代地,阈值可以取决于是应用双向预测还是单向预测。
[0670]
a.例如,阈值可以被推导为(1<<bitdepth) (bi

prediction?1:0)。
[0671]
xii.在一个示例中,是否和/或如何应用项目符号11中的所公开的方法可以取决于参考图片结构。
[0672]
(i)例如,如果当前图片的所有参考图片在显示顺序上在当前图片之前,即所有参考图片的poc小于当前图片的poc,则可以不应用所公开的方法中的一种或多种。
[0673]
(ii)替代地,是否和/或如何应用项目符号11中的所公开的方法可以取决于条带/图片类型(诸如i条带或b条带)。
[0674]
(iii)替代地,是否和/或如何应用项目符号11中的所公开的方法可以取决于时域层。
[0675]
xiii.在项目符号11中,编解码方法“prof”可以被其他编解码方法替换以增强仿射预测编解码,诸如如jvet

n0216公开的交织预测或相位变化仿射子块运动补偿。
[0676]
12.提出可以首先应用诸如在jvet

n0510中提出的相位变化仿射子块运动补偿以得到预测值,然后应用prof
[0677]
13.提出用于推导针对任何有效x和y的dmvh[x][y]和/或dmvv[x][y]的任何变量的比特宽度不能超过特定数,诸如32。
[0678]
a.在一个示例中,dmvh[x][y]和/或dmvv[x][y]在用于推导其他dmvh[t][z]和/或dmvv[t][z]之前被裁剪,其中(t,z)不等于(x,y)。
[0679]
b.在一个示例中,dmvh[x][y]和/或dmvv[x][y]在用于推导其他dmvh[t][z]和/或dmvv[t][z]之前被右移,其中(t,z)不等于(x,y)。
[0680]
14.提出dmvh和/或dmvv可以具有与存储的运动矢量相同的精度。
[0681]
a.例如,
[0682]
dmvh[xpos][ypos]=satshift(dmvh[xpos][ypos],7 m);
[0683]
dmvv[xpos][ypos]=satshift(dmvv[xpos][ypos],7 m);
[0684]
其中m是用以推导dmvh和/或hmvv的附加精度,例如m=2。
[0685]
15.提出在用于推导预测细化δi之前对dmvh和/或dmvv的裁剪可以取决于dmvh和/或dmvv的精度。
[0686]
a.例如
[0687]
dmvh[posx][posy]=clip3(
‑2k
‑1,2
k
‑1‑
1,dmvh[posx][posy]);
[0688]
dmvv[posx][posy]=clip3(
‑2k
‑1,2
k
‑1‑
1,dmvv[posx][posy]);
[0689]
其中k取决于dmvh和/或dmvv的精度。
[0690]
b.替代地,dmvh[x][y]和/或dmvv[x][y]在用于推导预测细化之前不被裁剪。
[0691]
16.提出对预测细化δi(posx,posy)的右移可以取决于δi(posx,posy)的符号。
[0692]
a.例如,δi(posx,posy)=satshift(δi(posx,posy),n),其中n是整数。
[0693]
17.提出对预测细化δi(posx,posy)的裁剪可以取决于样点比特深度。
[0694]
a.例如,δi(posx,posy)=clip3(

(2
3 bitdepth

1),2
3 bitdpeth

1,δi(posx,posy));
[0695]
18.是否和/或如何在仿射模式块内的子块边界(例如,内部子块边界)上进行去方
块可以取决于如jvet

n0216公开的交织预测或/和prof或
[0696]
/和相位变化仿射子块运动补偿是否被应用于块。
[0697]
a.在一个示例中,当交织预测或/和prof或/和相位变化仿射子块运动补偿被应用于块时,可以禁用去方块。
[0698]
i.替代地,去方块滤波器在子块边界上可能更弱,其中在子块边界上交织预测或/和prof或/和相位变化仿射子块运动补偿被应用于块。例如,边界强度可以在这样的边界上被设置为更小。
[0699]
b.在一个示例中,当交织预测或/和prof或/和相位变化仿射子块运动补偿不被应用于块时,可以启用去方块。
[0700]
上面描述的示例可以被并入下面描述的可以在视频解码器或视频编码器处被实施的方法(例如,方法2910至2950)的上下文中。
[0701]
图29a示出了用于视频处理的示例性方法的流程图。方法2910包括,在步骤2912,确定当前视频块的编解码模式是仿射模式。确定当前视频块的编解码模式是仿射模式可以确定编解码模式被应用于编码当前视频块还是解码当前视频块。方法2910包括,在2914,根据指定用于应用预测细化光流(prof)过程的条件的规则,为当前视频块确定prof过程以仿射模式的适用性模式。方法2910包括,在2916,基于该确定来执行当前视频块和视频的编解码表示之间的转换。在一些实施方式中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
[0702]
图29b示出了用于视频处理的示例性方法的流程图。方法2920包括,在步骤2922,由于对视频的视频块启用预测细化光流(prof)过程,确定不允许编解码模式用于将视频块编解码为视频的编解码表示。方法2920包括,在步骤2924,基于该确定来执行当前视频块和视频的编解码表示之间的转换。在一些实施方式中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
[0703]
图29c示出了用于视频处理的示例性方法的流程图。方法2930包括,在步骤2932,确定视频的当前视频块的编解码模式。方法2930包括,在步骤2934,基于该确定来执行当前视频块和视频的编解码表示之间的转换。在一些实施方式中,由于使用编解码模式,预测细化光流(prof)过程针对当前视频块被禁用,其中在该prof过程中当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
[0704]
图29d示出了用于视频处理的示例性方法的流程图。方法2940包括,在步骤2942,基于视频的编解码特性,为视频的当前视频块和视频的编解码表示之间的转换确定预测细化光流(prof)过程的适用性模式。方法2940包括,在步骤2944,基于该确定来执行该转换。在一些实施方式中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
[0705]
图29e示出了用于视频处理的示例性方法的流程图。方法2950包括,在步骤2952,基于视频的当前视频块的色彩分量,确定由于使用编解码模式,与预测细化光流(prof)过程相关的过程细节针对当前视频块被禁用,其中在该prof过程中当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。方法2950包括,在步骤2954,使用参数执行当前视频块和视频的编解码表示之间的转换。
[0706]
5.所公开的技术的示例实施方式
[0707]
图30a是视频处理装置3000的框图。装置3000可以用于实施本文描述的方法中的一种或多种。装置3000可以体现在智能电话、平板电脑、计算机、物联网(internet of things,iot)接收器等中。装置3000可以包括一个或多个处理器3002、一个或多个存储器3004、以及视频处理硬件3006。(多个)处理器3002可以被配置为实施本文档中描述的一种或多种方法(包括但不限于方法2900)。存储器(多个存储器)3004可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件3006可以用于以硬件电路实施本文档中描述的一些技术。
[0708]
图30b是可以在其中实施所公开的技术的视频处理系统的框图的另一示例。图30b是示出可以在其中实施本文公开的各种技术的示例视频处理系统4100的框图。各种实施方式可以包括系统4100的一些或所有组件。系统4100可以包括用于接收视频内容的输入4102。视频内容可以以例如8或10比特多分量像素值的原始或未压缩格式而接收,或者可以是压缩或编码格式。输入4102可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(passive optical network,pon)等的有线接口和诸如wi

fi或蜂窝接口的无线接口。
[0709]
系统4100可以包括可以实施本文档中描述的各种编解码或编码方法的编解码组件4104。编解码组件4104可以将来自输入4102的视频的平均比特率减小到编解码组件4104的输出,以产生视频的编解码表示。编解码技术因此有时被称为视频压缩或视频转码技术。编解码组件4104的输出可以被存储,或者经由如由组件4106表示的通信连接而发送。在输入4102处接收的视频的存储或通信传送的比特流(或编解码)表示可以由组件4108用于生成像素值或传送到显示接口4110的可显示视频。从比特流表示生成用户可视视频的过程有时被称为视频解压缩。此外,虽然某些视频处理操作被称为“编解码”操作或工具,但是将理解,编解码工具或操作在编码器处被使用,并且反转编解码结果的对应的解码工具或操作将由解码器执行。
[0710]
外围总线接口或显示接口的示例可以包括通用串行总线(universal serial bus,usb)、或高清晰度多媒体接口(high definition multimedia interface,hdmi)、或显示端口(displayport)等。存储接口的示例包括sata(serial advanced technology attachment,串行高级技术附件)、pci、ide接口等。本文档中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型电脑、智能电话、或能够执行数字数据处理和/或视频显示的其他设备。
[0711]
所公开的技术的一些实施例包括做出启用视频处理工具或模式的决定或确定。在示例中,当视频处理工具或模式被启用时,编码器将在视频块的处理中使用或实施该工具或模式,但可能不一定基于该工具或模式的使用来修改产生的比特流。也就是说,当基于决定或确定来启用视频处理工具或模式时,从视频的块到视频的比特流表示的转换将使用该视频处理工具或模式。在另一示例中,当视频处理工具或模式被启用时,解码器将在知道比特流已经基于视频处理工具或模式进行修改的情况下处理比特流。也就是说,将使用基于决定或确定而启用的视频处理工具或模式来执行从视频的比特流表示到视频的块的转换。
[0712]
所公开的技术的一些实施例包括做出禁用视频处理工具或模式的决定或确定。在示例中,当视频处理工具或模式被禁用时,编码器将不在视频的块到视频的比特流表示的转换中使用该工具或模式。在另一示例中,当视频处理工具或模式被禁用时,解码器将在知
道比特流没有使用基于决定或确定而禁用的视频处理工具或模式进行修改的情况下处理比特流。
[0713]
在本文档中,术语“视频处理”可以指视频编码、视频解码、视频压缩或视频解压缩。例如,视频压缩算法可以在从视频的像素表示到对应的比特流表示的转换期间被应用,反之亦然。当前视频块的比特流表示可以例如对应于比特流内的并置或散布在不同位置的比特,如由语法定义的。例如,宏块可以根据变换和编解码的误差残差值并且还使用比特流中的头和其他字段中的比特进行编码。
[0714]
应当理解,通过允许使用在本文档中公开的技术,所公开的方法和技术将有益于并入视频处理设备(诸如智能电话、膝上型电脑、台式电脑和类似设备)内的视频编码器和/或解码器实施例。
[0715]
可以使用以下基于条款的格式来描述各种技术和实施例。
[0716]
条款的第一集合描述了先前章节中的所公开的技术的某些特征和方面。
[0717]
1.一种用于视频处理的方法,包括:在当前视频块的第一区域中执行梯度计算,其中,第一区域的尺寸(m
×
n)不同于用于仿射模式下的运动补偿的当前视频块的子块的尺寸,并且其中,m和n是正整数;以及基于梯度计算来执行当前视频块和包括该当前视频块的视频的比特流表示之间的转换。
[0718]
2.根据条款1所述的方法,其中,第一区域的尺寸大于子块的尺寸。
[0719]
3.根据条款1或2所述的方法,其中,m和n是预定义的正整数。
[0720]
4.根据条款1或2所述的方法,其中,第一区域的尺寸基于子块的尺寸。
[0721]
5.根据条款1所述的方法,其中,m/n被自适应地改变。
[0722]
6.根据条款1所述的方法,其中,m和n基于当前视频块的大小。
[0723]
7.根据条款1至6中任一项所述的方法,其中,m具有最小值mmin,并且其中,n具有最小值nmin。
[0724]
8.根据条款7所述的方法,其中,mmin=nmin=8。
[0725]
9.根据条款1至6中任一项所述的方法,其中,第一区域被填充,以生成尺寸为(m dm)
×
(n dn)的第一填充区域。
[0726]
10.根据条款9所述的方法,其中,第一区域或第一填充区域中的样点基于具有插值滤波的运动补偿进行推导。
[0727]
11.根据条款1所述的方法,其中,第一区域中的至少一个样点在执行梯度计算时被省略。
[0728]
12.根据条款1所述的方法,其中,梯度计算在双向光流(bdof)中以第一精度被执行,以及在利用光流的预测细化(prof)中以第二精度被执行,并且其中,第一精度和第二精度相等。
[0729]
13.一种用于视频处理的方法,包括:基于对当前视频块选择性应用利用光流的预测细化(prof),做出关于对当前视频块选择性应用编解码工具的决定,其中,编解码工具不同于prof;以及基于该决定来执行当前视频块和包括该当前视频块的视频的比特流表示之间的转换。
[0730]
14.根据条款13所述的方法,其中,prof不被应用,并且编解码工具被应用。
[0731]
15.根据条款13所述的方法,其中,编解码工具包括广义双向预测。
[0732]
16.根据条款15所述的方法,其中,prof不被应用,并且其中,与广义双向预测相关联的索引不为零。
[0733]
17.根据条款13所述的方法,其中,编解码工具是局部照明补偿。
[0734]
18.根据条款13所述的方法,其中,编解码工具是多重变换集(mts)。
[0735]
19.根据条款18所述的方法,其中,prof被应用,并且仅来自mts的默认变换被应用于当前视频块。
[0736]
20.根据条款13所述的方法,其中,编解码工具是加权预测。
[0737]
21.一种用于视频处理的方法,包括:在当前视频块和包括该当前视频块的视频的比特流表示之间的转换期间,做出关于选择性应用利用光流的预测细化(prof)操作的决定,其中,该决定基于当前视频块的色彩信息。
[0738]
22.根据条款21所述的方法,其中,prof操作不被应用于当前视频块的一个或多个色度分量,并且其中,色彩信息包括4:0:0色彩格式。
[0739]
23.根据条款21所述的方法,其中,prof操作被应用于当前视频块的一个或多个色度分量,并且其中,色彩信息包括4:4:4色彩格式。
[0740]
24.根据条款21所述的方法,其中,prof操作被应用于当前视频块的一个或多个色度分量,并且其中,色彩信息包括4:0:0色彩格式。
[0741]
25.根据条款21所述的方法,其中,prof操作被应用,并且其中,色彩信息包括多个色彩分量。
[0742]
26.根据条款25所述的方法,其中,prof操作的一个或多个梯度针对多个色彩分量中的每一个而独立地计算。
[0743]
27.根据条款25所述的方法,其中,prof操作的一个或多个梯度针对多个色彩分量中的第一色彩分量进行计算,并且针对多个色彩分量中的第二色彩分量被重用。
[0744]
28.根据条款26或27所述的方法,其中,梯度的精度基于多个色彩分量中的至少一个。
[0745]
29.一种用于视频处理的方法,包括:基于当前视频块的高度(h)或宽度(w),做出关于选择性应用利用光流的预测细化(prof)操作的决定;以及基于该决定来执行当前视频块和包括该当前视频块的视频的比特流表示之间的转换。
[0746]
30.根据条款29所述的方法,其中,prof操作被应用于当前视频块的亮度分量。
[0747]
31.根据条款29所述的方法,其中,当前视频块使用仿射模式进行编解码。
[0748]
32.根据条款31所述的方法,其中,prof操作不被应用,其中,w≤t1和/或h≤t2,并且其中,t1=t2=16。
[0749]
33.根据条款31所述的方法,其中,prof操作不被应用,其中,w≥t1和/或h≥t2,并且其中,t1=t2=64。
[0750]
34.根据条款31所述的方法,其中,prof操作不被应用,其中,w
×
h≤t或max(w,h)≤t,并且其中,t=16。
[0751]
35.根据条款31所述的方法,其中,prof操作不被应用,其中,w
×
h≥t或min(w,h)≥t,并且其中,t=64。
[0752]
36.根据条款1或2所述的方法,其中,当前视频块的尺寸为w
×
h,其中,m=min(k,w),并且其中,k是整数。
[0753]
37.根据条款1或2所述的方法,其中,当前视频块的尺寸为w
×
h,其中,n=min(k,h),并且其中,k是整数。
[0754]
38.根据条款36或37所述的方法,其中,k=16。
[0755]
39.根据条款1或2所述的方法,还包括:在执行梯度计算之前,在当前视频块的第一区域中执行填充过程。
[0756]
40.根据条款39所述的方法,其中,执行填充过程包括推导一个或多个运动矢量。
[0757]
41.根据条款40所述的方法,其中,一个或多个运动矢量包括从朝向第一区域的特定位置的仿射模型推导的运动矢量。
[0758]
42.根据条款40所述的方法,其中,一个或多个运动矢量包括从第一区域的至少一个子块的至少一个运动矢量推导的运动矢量。
[0759]
43.根据条款39所述的方法,其中,执行填充过程是基于当前视频块的高度或宽度的。
[0760]
44.根据条款39所述的方法,其中,执行填充过程是基于视频参数集(vps)、解码器参数集(dps)、序列参数集(sps)、图片参数集(pps)、自适应参数集(aps)、条带头、片、片组头、编解码树单元(ctu)或编解码单元(cu)中的信令通知的。
[0761]
45.根据条款5或6所述的方法,其中,m和n是在视频参数集(vps)、解码器参数集(dps)、序列参数集(sps)、图片参数集(pps)、自适应参数集(aps)、条带头、片、片组头、编解码树单元(ctu)或编解码单元(cu)中信令通知的。
[0762]
46.根据条款5或6所述的方法,其中,m和n是在视频编解码标准的简表、级别或层级中指定的。
[0763]
47.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中指令在由处理器执行时使处理器实施根据条款1至46中任一项所述的方法。
[0764]
48.一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于执行根据条款1至46中任一项所述的方法的程序代码。
[0765]
条款的第二集合描述了先前章节(包括例如,示例实施方式7至9和11)中的所公开的技术的某些特征和方面。
[0766]
1.一种视频处理方法,包括:确定当前视频块的编解码模式是仿射模式;根据指定用于应用预测细化光流(prof)过程的条件的规则,为当前视频块确定prof过程以仿射模式的适用性模式;以及基于该确定来执行当前视频块和视频的编解码表示之间的转换;其中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。确定当前视频块的编解码模式是仿射模式可以确定编解码模式被应用于编码当前视频块还是解码当前视频块。
[0767]
2.根据条款1所述的方法,其中,prof过程的适用性模式是基于当前视频块的宽度(w)和/或高度(h)而确定的。
[0768]
3.根据条款2所述的方法,其中,prof过程的适用性模式根据指定用于不应用prof过程的以下条件中的至少一个的规则而确定为不适用:i)w<=t1和/或h<=t2,ii)w<t1和/或h<t2,iii)w>=t1和/或h>=t2,iv)w>t1和/或h>t2,v)w*h>,vi)w*h>=t1,vii)w*h<t1,viii)w*h<=t1,ix)min(w,h)>=t1,x)min(w,h)>t1,xi)max(w,h)<=t1,或者xii)max(w,h)<t1,其中t1和t2是正整数。
[0769]
4.根据条款1所述的方法,其中,该规则基于控制点运动矢量来指定prof过程的适用性模式,其中该控制点运动矢量对应于控制点处的并针对当前视频块推导的运动矢量。
[0770]
5.根据条款1所述的方法,其中,该规则基于在对当前视频块的仿射运动补偿预测中使用的仿射参数和/或仿射参数的数量来指定prof过程的适用性模式。
[0771]
6.根据条款5所述的方法,其中,该规则根据阈值与以下中的一个的比较来指定适用性模式:i)最大仿射参数,ii)最小仿射参数,iii)所有仿射参数,或iv)至少一个仿射参数。
[0772]
7.根据条款5所述的方法,其中,仿射参数以特定精度被表示为整数。
[0773]
8.根据条款5所述的方法,其中,该规则根据阈值与以下中的一个的比较来指定适用性模式:i)仿射参数的绝对值的最小值,ii)仿射参数的绝对值的最大值,iii)所有仿射参数,或iv)至少一个仿射参数。
[0774]
9.根据条款1所述的方法,其中,增量运动矢量用于计算当前视频块的运动矢量,并且其中,该规则根据阈值与以下中的一个的比较来指定适用性模式:i)增量运动矢量的绝对值的最大值,ii)增量运动矢量的绝对值的最小值,iii)所有增量运动矢量,iv)增量运动矢量中的至少一个。
[0775]
10.根据条款1所述的方法,其中,该规则基于对应的增量运动矢量的绝对值和阈值之间的比较来指定prof过程被应用于样点的位置。
[0776]
11.根据条款6和8

10中任一项所述的方法,其中,阈值取决于为当前视频块生成的比特深度。
[0777]
12.根据条款1所述的方法,其中,该规则基于以下中的至少一个来指定条件:参考图片结构、包括当前视频块的条带或图片的类型、或时域层。
[0778]
13.根据条款1至12中任一项所述的方法,其中,执行该转换包括从当前视频块生成编解码表示。
[0779]
14.根据条款1至12中任一项所述的方法,其中,执行该转换包括从编解码表示生成当前视频块。
[0780]
15.一种视频处理方法,包括:由于对视频的视频块启用预测细化光流(prof)过程,确定不允许编解码模式用于将视频块编解码为视频的编解码表示;以及基于该确定来执行当前视频块和视频的编解码表示之间的转换,其中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
[0781]
16.根据条款15所述的方法,其中,用以指示编解码模式的语法元素不被信令通知。
[0782]
17.根据条款15所述的方法,其中,编解码模式是广义双向预测(gbi)模式,其中在该模式中不同的权重被应用于当前视频块的参考图片。
[0783]
18.根据条款17所述的方法,其中,在gbi模式的索引不等于0的情况下,prof过程被应用。
[0784]
19.根据条款17所述的方法,其中,在应用prof过程的情况下,gbi模式的索引为0,或者不被信令通知并被推断为0。
[0785]
20.根据条款17所述的方法,其中,在应用prof过程的情况下,不管gbi模式的索引如何,gbi模式都不被应用。
[0786]
21.根据条款15所述的方法,其中,编解码模式是使用该转换期间当前块中的照明变化的线性模型的局部照明补偿。
[0787]
22.根据条款15所述的方法,其中,编解码模式是包括用于选择的多重变换类型的多重变换集(mts)。
[0788]
23.根据条款22所述的方法,其中,在应用prof的情况下,仅来自mts的默认变换被应用于当前视频块。
[0789]
24.根据条款15所述的方法,其中,编解码模式是加权预测,其中在该加权预测中,使用不同预测模式的预测的组合在该转换期间被应用。
[0790]
25.根据条款15至24中任一项所述的方法,其中,执行该转换包括从当前视频块生成编解码表示。
[0791]
26.根据条款15至24中任一项所述的方法,其中,执行该转换包括从编解码表示生成当前视频块。
[0792]
27.一种视频处理方法,包括:确定视频的当前视频块的编解码模式;以及基于该确定来执行当前视频块和视频的编解码表示之间的转换,其中,由于使用编解码模式,预测细化光流(prof)过程针对当前视频块被禁用,其中在该prof过程中当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
[0793]
28.根据条款27中任一项所述的方法,其中,编解码模式是广义双向预测(gbi)模式,其中在该模式中不同的权重被应用于当前视频块的参考图片。
[0794]
29.根据条款28所述的方法,其中,在gbi模式的索引不等于0的情况下,prof过程被应用。
[0795]
30.根据条款28所述的方法,其中,在应用prof过程的情况下,gbi模式的索引为0,或者不被信令通知并被推断为0。
[0796]
31.根据条款28所述的方法,其中,在应用prof过程的情况下,不管gbi模式的索引如何,gbi模式都不被应用。
[0797]
32.根据条款27所述的方法,其中,编解码模式是使用该转换期间当前块中的照明变化的线性模型的局部照明补偿。
[0798]
33.根据条款27所述的方法,其中,编解码模式是包括用于选择的多重变换类型的多重变换集(mts)。
[0799]
34.根据条款33所述的方法,其中,在应用prof的情况下,仅来自mts的默认变换被应用于当前视频块。
[0800]
35.根据条款27所述的方法,其中,编解码模式是加权预测,其中在该加权预测中,使用不同预测模式的预测的组合在该转换期间被应用。
[0801]
36.根据条款27至35中任一项所述的方法,其中,执行该转换包括从当前视频块生成编解码表示。
[0802]
37.根据条款27至35中任一项所述的方法,其中,执行该转换包括从编解码表示生成当前视频块。
[0803]
38.一种视频处理方法,包括:基于视频的编解码特性,为视频的当前视频块和视频的编解码表示之间的转换确定预测细化光流(prof)过程的适用性模式;以及基于该确定来执行该转换,其中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计
算,并使用光流计算进行细化。
[0804]
39.根据条款38所述的方法,其中,适用性模式针对视频为4:0:0色度格式的编解码特性指定禁用prof过程。
[0805]
40.根据条款38所述的方法,其中,由于视频的编解码特性为4:4:4色度格式,适用性模式指定启用prof过程。
[0806]
41.根据条款38所述的方法,其中,由于视频的编解码特性不等于4:4:4色度格式,适用性模式指定启用prof过程。
[0807]
42.根据条款38所述的方法,其中,适用性模式基于当前视频块的色彩格式来指定用以推导运动矢量差的信息,该运动矢量差表示初始预测块和细化的预测块中的样点之间的运动矢量差。
[0808]
43.根据条款38至42中任一项所述的方法,其中,执行该转换包括从当前视频块生成编解码表示。
[0809]
44.根据条款38至42中任一项所述的方法,其中,执行该转换包括从编解码表示生成当前视频块。
[0810]
45.一种视频处理方法,包括:基于视频的当前视频块的色彩分量,确定由于使用编解码模式,与预测细化光流(prof)过程相关的过程细节针对当前视频块被禁用,其中在该prof过程中当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化;以及使用参数执行当前视频块和视频的编解码表示之间的转换。
[0811]
46.根据条款45所述的方法,其中,过程细节被确定,使得在prof过程期间为每个色彩分量独立计算梯度。
[0812]
47.根据条款45所述的方法,其中,过程细节被确定,使得在prof过程期间,为第一色彩分量计算梯度并且由第二色彩分量使用计算的梯度。
[0813]
48.根据条款45所述的方法,其中,过程细节被确定,使得在prof过程期间,对主色的亮度分量执行第一梯度计算,并且对一个或多个从属色的两个色度分量执行第二梯度计算。
[0814]
49.根据条款45所述的方法,其中,过程细节被确定,使得为每个色彩分量独立地计算运动矢量差,该运动矢量差表示初始预测块和细化的预测块中的样点之间的运动矢量差。
[0815]
50.根据条款45所述的方法,其中,过程细节被确定,使得为每个色彩分量独立地计算细化一个或多个初始预测的预测细化。
[0816]
51.根据条款45所述的方法,其中,过程细节被确定,使得prof过程中的梯度的精度取决于当前视频块的色彩分量。
[0817]
52.根据条款45所述的方法,其中,过程细节被确定,使得运动矢量差的精度取决于当前视频块的色彩分量,该运动矢量差表示初始预测块和细化的预测块中的样点之间的运动矢量差。
[0818]
53.根据条款45所述的方法,其中,prof过程包括取决于当前视频块的色彩分量的裁剪操作。
[0819]
54.根据条款45所述的方法,其中,prof过程包括取决于当前视频块的色彩分量的移位操作。
[0820]
55.根据条款45所述的方法,其中,过程细节被确定,使得prof过程仅被应用于亮度分量。
[0821]
56.根据条款45所述的方法,其中,过程细节被确定,使得prof被应用于不同的色彩分量。
[0822]
57.根据条款45所述的方法,其中,过程细节被确定,使得prof被应用于(mxn)子块尺寸的色度分量。
[0823]
58.根据条款55至57中任一项所述的方法,其中,过程细节取决于当前视频块的色彩格式。
[0824]
59.根据条款45至58中任一项所述的方法,其中,执行该转换包括从当前视频块生成编解码表示。
[0825]
60.根据条款45至58中任一项所述的方法,其中,执行该转换包括从编解码表示生成当前视频块。
[0826]
61.根据条款45至60中任一项所述的方法,其中,执行该转换包括从当前视频块生成编解码表示。
[0827]
62.根据条款45至60中任一项所述的方法,其中,执行该转换包括从编解码表示生成当前视频块。
[0828]
63.一种视频编码方法,包括:决定在仿射模式下将视频的当前视频块编码为视频的编解码表示;根据指定用于应用预测细化光流(prof)过程的条件的规则,为当前视频块确定prof过程以仿射模式的适用性模式;以及基于该确定来生成当前视频块的编解码表示,其中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
[0829]
64.一种视频解码方法,包括:解析视频的编解码表示,以确定视频的当前视频块是使用仿射模式进行编解码的;根据指定用于应用预测细化光流(prof)过程的条件的规则,为当前视频块确定prof过程以仿射模式的适用性模式;以及根据适用性模式从编解码表示生成当前视频块的解码表示,其中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
[0830]
65.一种视频编码方法,包括:由于对视频的视频块启用预测细化光流(prof)过程,确定不允许编解码模式用于将视频块编解码为视频的编解码表示;以及基于该确定来生成视频块的编解码表示,其中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
[0831]
66.一种视频解码方法,包括:由于对视频的视频块启用预测细化光流(prof),确定不允许使用用于在视频的编解码表示中表示视频块的编解码模式;以及基于该确定,通过解析编解码表示来生成解码视频块,其中,在prof过程期间,当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
[0832]
67.一种视频编码方法,包括:决定用于在视频的编解码表示中表示视频的当前视频块的编解码模式;以及根据编解码模式将当前视频块编解码为编解码表示,其中,由于使用编解码模式,预测细化光流(prof)过程针对当前视频块被禁用,其中在该prof过程中当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
[0833]
68.一种视频解码方法,包括:解析视频的编解码表示,以确定视频的当前视频块
是使用编解码模式进行编解码的;以及根据编解码模式从编解码表示生成当前视频块的解码表示,其中,由于使用编解码模式,预测细化光流(prof)过程针对当前视频块被禁用,其中在该prof过程中当前视频块的一个或多个初始预测在子块级别被计算,并使用光流计算进行细化。
[0834]
从前面可以理解,为了说明的目的,本文已经描述了当前公开的技术的特定实施例,但是在不脱离本发明的范围的情况下,可以进行各种修改。因此,当前公开的技术不受除了所附权利要求之外的限制。
[0835]
本专利文档中描述的主题和功能操作的实施方式可以在各种系统、数字电子电路中被实施,或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中被实施,或者在它们中的一个或多个的组合中被实施。本说明书中描述的主题的实施方式可以被实施为一个或多个计算机程序产品,即编码在有形和非暂时性计算机可读介质上的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组合、或它们中的一个或多个的组合。术语“数据处理单元”或“数据处理装置”包含用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。
[0836]
计算机程序(也已知为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言)编写,并且其可以以任何形式部署,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署以在一个计算机上或在位于一个站点上或跨多个站点分布并通过通信网络互连的多个计算机上执行。
[0837]
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实施为专用逻辑电路,例如,fpga(field programmable gate array,现场可编程门阵列)或asic(application specific integrated circuit,专用集成电路)。
[0838]
适合于执行计算机程序的处理器包括例如通用和专用微处理器、以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘),或可操作地耦合以从该一个或多个大容量存储设备接收数据或向该一个或多个大容量存储设备传递数据、或者从其接收数据并向其传递数据。然而,计算机不需要这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、
eeprom和闪存设备。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
[0839]
本说明书以及附图旨在被认为仅是示例性的,其中示例性意味着示例。如本文所使用的,“或”的使用旨在包括“和/或”,除非上下文另外清楚地指示。
[0840]
虽然本专利文档包含许多细节,但这些细节不应被解释为对任何发明或可能要求保护的范围的限制,而是作为特定于特定发明的特定实施例的特征的描述。在本专利文档中在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合实施。此外,尽管特征可以在上面描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合排除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变化。
[0841]
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示的特定顺序或以先后顺序执行这样的操作或者执行所有示出的操作以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离。
[0842]
仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容来进行其他实施方式、增强和变化。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献