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

子块Merge模式中的语法信令的制作方法

2022-02-20 04:50:22 来源:中国专利 TAG:

子块merge模式中的语法信令
1.相关申请的交叉引用
2.根据适用的《专利法》和/或《巴黎公约》的规定,本技术及时要求2019年5月21日提交的国际专利申请no.pct/cn2019/087805的优先权和权益。根据法律,将上述申请的全部公开以参考方式并入本文,作为本技术公开的一部分。
技术领域
3.本专利文件涉及视频编码/解码技术、设备和系统。


背景技术:

4.尽管在视频压缩方面取得了进步,但在互联网和其他数字通信网络中,数字视频仍然是使用带宽最多的。随着能够接收和显示视频的连接用户设备数量的增加,预计数字视频使用的带宽需求将继续增长。


技术实现要素:

5.本文描述使用基于子块的运动矢量细化来执行视频编码或解码的各种实施例和技术。在一个示例方面,公开了一种视觉媒体处理方法。该方法包括:依赖于视觉媒体数据的比特流表示中与仿射自适应运动矢量分辨率(amvr)技术相关的控制信息,确定是否对所述视觉媒体数据使用仿射amvr技术,其中,基于规则将所述控制信息包括在所述比特流表示中,或者从所述比特流表示中排除;以及执行所述视觉媒体数据和所述视觉媒体数据的所述比特流表示之间的转换。
6.在另一示例方面,公开了另一种视觉媒体处理方法。该方法包括:做出是否将基于子块的时域运动矢量预测(sbtmvp)技术应用于视觉媒体数据的确定;响应于所述确定,为包括在所述视觉媒体数据中的当前视频块生成子块merge候选列表;以及使用所述子块merge候选列表执行所述当前视频块和所述当前视频块的比特流表示之间的转换。
7.在又一示例方面,公开了另一种视觉媒体处理方法。该方法包括:在当前视频块和比特流表示之间的转换期间,将一个或多个默认merge候选附加到用于所述转换的子块merge候选列表;以及使用附加了一个或多个默认merge候选的所述子块merge候选列表来执行所述转换。
8.在又一示例方面,公开了另一种视觉媒体处理方法。该方法包括:在视频的当前视频块和比特流表示之间的转换期间,确定基于子块的时域运动矢量预测(sbtmvp)对所述转换的适用性,其中,比特流表示中的一个或多个比特对应于所述确定;以及基于所述确定执行所述转换。
9.在又一示例方面,公开了另一种视觉媒体处理方法。该方法包括:基于与时域运动矢量预测(tmvp)步骤或基于子块的时域运动矢量预测(sbtmvp)步骤相关联的条件选择性地构建子块merge候选列表;以及基于所述子块merge候选列表执行当前视频块和所述当前视频块的比特流表示之间的转换。
10.在又一示例方面,公开了另一种视觉媒体处理方法。该方法包括:在视觉媒体数据和所述视觉媒体数据的比特流表示之间的转换期间,确定与所述视觉媒体数据相关联的并置参考图片相关的信息,其中,基于是否启用访问时域运动信息的编解码模式,在所述比特流表示中包括或排除所述信息;根据所述指示确定所述并置参考图片;以及基于所述并置参考图片执行所述视觉媒体数据和所述视觉媒体数据的所述比特流表示之间的转换。
11.在又一示例方面,公开了另一种视觉媒体处理方法。该方法包括:执行视觉媒体数据的视频块和所述视觉媒体数据的比特流表示之间的转换;以及在所述转换期间,依赖于控制信息来确定是否应用使用光流的预测细化(prof),基于规则在所述比特流表示中包括或排除所述控制信息。
12.在又一示例性方面,公开了一种视频编码和/或解码装置,其包括配置为实现上述方法的处理器。
13.在又一示例方面,公开了一种计算机可读介质。该计算机可读介质存储实现上述方法中的一个的处理器可执行代码。
14.在本文中进一步描述了这些方面和其他方面。
附图说明
15.图1示出了merge候选列表构造的示例推导处理。
16.图2示出了空域merge候选的位置的示例。
17.图3示出了考虑空域merge候选的冗余检查的候选对的示例。
18.图4a-4b示出了n
×
2n和2n
×
n分割的第二pu的示例位置。
19.图5是时域merge候选的运动矢量缩放的图示。
20.图6示出了时域merge候选的候选位置的示例c0和c1。
21.图7示出了组合双向预测merge候选的示例。
22.图8总结了运动矢量预测候选的推导处理。
23.图9示出了用于空域运动矢量候选的运动矢量缩放的图示。
24.图10示出了cu的atmvp运动预测的示例。
25.图11示出了具有四个子块(a-d)及其临近块(a-d)的一个cu的示例。
26.图12是用不同mv精度编解码的示例流程图。
27.图13示出了:(a)135度分割类型(从左上角到右下角划分)(b)45度划分模式。
28.图14示出了临近块的示例位置。
29.图15示出了在tpm标志编解码中用于上下文选择的临近块(a和l)。
30.图16示出了(a)4参数仿射和(b)6参数仿射模型。
31.图17示出每个子块的仿射mvf的示例。
32.图18示出了:(a)4参数仿射模型(b)和6参数仿射模型。
33.图19示出了继承仿射候选的af_inter的mvp。
34.图20示出了构造仿射候选的af_inter的mvp。
35.图21示出了:(a)五个临近块,(b)cpmv预测器推导的示例。
36.图22示出了仿射merge模式的示例候选位置。
37.图23示出了atmvp使用的空域临近块的示例。
38.图24示出了通过应用来自空域邻居的运动移位和缩放来自对应并置子cu的运动信息来导出子cu运动场的示例。
39.图25示出了仿射merge模式的候选位置。
40.图26示出了修改的merge列表构造处理。
41.图27示出了子块mv vsb和像素δv(i,j)(红色箭头)。
42.图28是用于实现本文中描述的方法的硬件平台的示例的框图。
43.图29是视频处理的示例方法的流程图。
44.图30是可以实现所公开的技术的示例性视频处理系统的框图。
45.图31是视觉媒体处理的示例方法的流程图。
46.图32是视觉媒体处理的示例方法的流程图。
47.图33是视觉媒体处理的示例方法的流程图。
48.图34是视觉媒体处理的示例方法的流程图。
49.图35是视觉媒体处理的示例方法的流程图。
50.图36是视觉媒体处理的示例方法的流程图。
51.图37是视觉媒体处理的示例方法的流程图。
具体实施方式
52.在本文中使用章节标题是为了便于理解,并且不将在章节中公开的实施例限于该章节。此外,尽管参考多功能视频编码或其他特定视频编解码器描述了某些实施例,但是所公开的技术也适用于其他视频编解码技术。此外,尽管一些实施例详细描述了视频编码步骤,但是应当理解的是,将通过解码器来实现撤销编码的对应解码步骤。此外,术语视频处理涵盖视频编码或压缩、视频解码或解压缩以及视频转码,其中视频像素从一种压缩格式表示为另一种压缩格式或以不同的压缩比特率表示。
53.1.概述
54.本文涉及视频编解码技术。具体地,涉及视频编解码中的运动矢量编解码。其可应用于现有视频编解码标准(如hevc)或待定的标准(多功能视频编解码)。其也可适用于未来的视频编解码标准或视频编解码器。
55.2.初始讨论
56.视频编解码标准主要是通过开发众所周知的itu-t和iso/iec标准而发展起来的。itu-t制作了h.261和h.263,iso/iec制作了mpeg-1和mpeg-4视频,并且这两个组织共同制作了h.262/mpeg-2视频和h.264/mpeg-4高级视频编解码(avc)和h.265/hevc标准。自h.262开始,视频编解码标准基于混合视频编解码结构,其中利用了时域预测加变换编解码。为探索hevc之外的未来视频编解码技术,vceg和mpeg于2015年共同成立了联合视频探索团队(jvet)。从那时起,jvet采用了许多新的方法,并将其应用到了名为联合探索模型(jem)[3,4]的参考软件中。2018年4月,vceg(q6/16)和iso/iec jtc1 sc29/wg11(mpeg)之间的联合视频专家团队(jvet)成立,以致力于目标是与hevc相比其降低50%比特率的vvc标准。可以在以下位置找到vvc草案的最新版本(即,多功能视频编解码(草案5)):
[0057]
phenix.it-sudparis.eu/jvet/doc_end_user/documents/14_geneva/wg11/jvet-n1001-v5.zip
[0058]
可以在以下位置找到vvc的最新参考软件(名为vtm):
[0059]
vcgit.hhi.fraunhofer.de/jvet/vvcsoftware_vtm/tags/vtm-5.0
[0060]
2.1hevc/h.265中的帧间预测
[0061]
每个帧间预测的pu都有一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。两个参考图片列表之一的使用也可以使用inter_pred_idc信令通知。运动矢量可显式地编码为相对于预测器的增量。
[0062]
当cu采用跳过模式编解码时,一个pu与cu相关联,并且没有显著的残差系数,没有编解码运动矢量增量或参考图片索引。指定了一种merge模式,通过该模式,可以从临近的pu(包括空域和时域候选)中获取当前pu的运动参数。merge模式可以应用于任何帧间预测的pu,而不仅仅是跳过模式。merge模式的另一种选择是运动参数的显式传输,其中运动矢量(更精确地,与运动矢量预测器相比的运动矢量差(mvd))、每个参考图片列表的对应的参考图片索引、以及参考图片列表的使用都会根据每个pu显式地信令通知。在本公开中,这样的模式被命名为高级运动矢量预测(amvp)。
[0063]
当信令指示要使用两个参考图片列表中的一个时,从一个样本点块中生成pu。这被称为“单向预测”。单向预测对p条带和b条带都可用。
[0064]
当信令指示要使用两个参考图片列表时,从两个样本点块中生成pu。这被称为“双向预测”。双向预测仅对b条带可用。
[0065]
下文提供了在hevc中规定的关于帧间预测模式的细节。描述将从merge模式开始。
[0066]
2.1.1参考图片列表
[0067]
在hevc中,术语帧间预测用于表示从除了当前解码图片之外的参考图片的数据元素(例如,样本点值或运动矢量)导出的预测。如在h.264/avc中一样,可以从多个参考图片预测图片。用于帧间预测的参考图片被组织在一个或多个参考图片列表中。参考索引标识列表中的哪些参考图片应用于创建预测信号。
[0068]
单个参考图片列表(列表0)被用于p条带,并且两个参考图片列表(列表0和列表1)被用于b条带。需要注意的是,列表0/1中包含的参考图片就捕获/显示顺序而言可以来自过去和将来的图片。
[0069]
2.1.2 merge模式
[0070]
2.1.2.1 merge模式的候选的推导
[0071]
当使用merge模式预测pu时,从比特流中解析指向merge候选列表中条目的索引,并且使用该索引检索运动信息。在hevc标准中规定了此列表的构建,并且可按以下步骤顺序进行概括:
[0072]
步骤1:初始候选推导
[0073]
步骤1.1:空域候选推导
[0074]
步骤1.2:空域候选冗余检查
[0075]
步骤1.3:时域候选推导
[0076]
步骤2:附加候选插入
[0077]
步骤2.1:创建双向预测候选
[0078]
步骤2.2:插入零运动候选
[0079]
在图1中也示意性地示出了这些步骤。对于空域merge候选推导,在位于五个不同
位置的候选中最多选择四个merge候选。对于时域merge候选推导,在两个候选中最多选择一个merge候选。由于在解码器处假定每个pu的候选数为常量,因此当从步骤1获得的候选数未达到条带标头中信令通知的最大merge候选数(maxnummergecand)时,生成附加的候选。由于候选数是恒定的,所以最佳merge候选的索引使用截断的一元二值化(tu)进行编解码。如果cu的尺寸等于8,则当前cu的所有pu都共享一个merge候选列表,这与2n
×
2n预测单元的merge候选列表相同。
[0080]
在下文中,详细描述与前述步骤相关联的操作。
[0081]
图1示出了merge候选列表构造的示例推导处理。
[0082]
2.1.2.2空域候选推导
[0083]
在空域merge候选的推导中,在位于图2所示位置的候选中最多选择四个merge候选。推导顺序为a1,b1,b0,a0和b2。只有当位置a1,b1,b0,a0的任何pu不可用(例如,因为它属于另一个条带或片)或是帧内编解码时,才考虑位置b2。在增加a1位置的候选后,对剩余候选的增加进行冗余检查,其确保具有相同运动信息的候选被排除在列表之外,从而提高编解码效率。为了降低计算的复杂度,在所提到的冗余检查中并不考虑所有可能的候选对。相反,只有与图3中的箭头链接的对才会被考虑,并且只有当用于冗余检查的对应候选没有相同的运动信息时,才将候选添加到列表中。复制运动信息的另一个来源是与2nx2n不同的分割相关的“第二pu”。例如,图4分别描述了n
×
2n和2n
×
n情况下的第二pu。当当前的pu被划分为n
×
2n时,对于列表构建不考虑a1位置的候选。实际上,通过添加此候选可能导致两个具有相同运动信息的预测单元,这对于在编解码单元中仅具有一个pu是冗余的。同样地,当当前pu被划分为2n
×
n时,不考虑位置b1。
[0084]
2.1.2.3时域候选推导
[0085]
在此步骤中,只有一个候选添加到列表中。特别地,在这个时域merge候选的推导中,基于属于与给定参考图片列表中当前图片具有最小poc差的图片的并置pu导出了缩放运动矢量。用于推导并置pu的参考图片列表在条带标头中显式地信令通知。获取时域merge候选的缩放运动矢量(如图5中虚线所示),其使用poc距离tb和td从并置pu的运动矢量进行缩放,其中tb定义为当前图片的参考图片和当前图片之间的poc差,并且td定义为并置图片的参考图片与并置图片之间的poc差。时域merge候选的参考图片索引设置为零。hevc规范中描述了缩放处理的实际实现。对于b条带,得到两个运动矢量(一个是对于参考图片列表0,另一个是对于参考图片列表1)并将其组合使其成为双向预测merge候选。
[0086]
图5是时域merge候选的运动矢量缩放的图示。
[0087]
在属于参考帧的并置pu(y)中,在候选c0和c1之间选择时域候选的位置,如图6所示。如果位置c0处的pu不可用、帧内编解码或在当前编解码树单元(ctu也称为lcu,最大编解码单元)行之外,则使用位置c1。否则,位置c0被用于时域merge候选的推导。
[0088]
图6示出了时域merge候选的候选位置的示例c0和c1。
[0089]
2.1.2.4附加候选插入
[0090]
除了空域和时域merge候选,还有两种附加类型的merge候选:组合双向预测merge候选和零merge候选。组合双向预测merge候选是利用空域和时域merge候选生成的。组合双向预测merge候选仅用于b条带。通过将初始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数相结合,生成组合双向预测候选。如果这两个元组提供不同
的运动假设,它们将形成新的双向预测候选。作为示例,图7示出了该情形,其中原始列表(在左侧)中具有mvl0和refidxl0或mvl1和refidxl1的两个候选被用于创建添加到最终列表(在右侧)中的组合双向预测merge候选。定义了许多关于被认为生成这些附加merge候选的组合的规则。
[0091]
插入零运动候选以填充merge候选列表中的其余条目,从而达到maxnummergecand的容量。这些候选具有零空域位移和从零开始并且每次将新的零运动候选添加到列表中时都会增加的参考图片索引。
[0092]
更具体地,顺序执行以下步骤直到merge列表满为止:
[0093]
1.将变量numref设置为与p条带的列表0相关联的参考图片的数量,或b条带的两个列表中参考图片的最小数量;
[0094]
2.添加非重复的零运动候选:
[0095]
对于变量i为0

numref-1,对于列表0(如果为p条带)或两个列表(如果为b条带),将mv设置为(0,0),并将参考图片索引设置为i,添加默认运动候选。
[0096]
3.添加重复的零运动候选,其中将mv设置为(0,0),列表0的参考图片索引设置为0(如果是p条带),两个列表的参考图片索引都设置为0(如果是b条带)。
[0097]
最后,对这些候选不执行冗余检查。
[0098]
2.1.3 amvp
[0099]
amvp利用运动矢量与临近的pu的空时相关性,其用于运动参数的显式传输。对于每个参考图片列表,首先通过检查左上方的时域临近的pu位置的可用性、去掉多余的候选并且加上零矢量以使候选列表长度恒定来构建运动矢量候选列表。然后,编解码器可以从候选列表中选择最佳的预测器,并发送指示所选候选的对应索引。与merge索引信令类似,最佳运动矢量候选的索引使用截断的一元进行编解码。在这种情况下,要编解码的最大值是2(参见图8)。在以下各章节中,提供了关于运动矢量预测候选的推导处理的细节。
[0100]
2.1.3.1 amvp候选的推导
[0101]
图8概括了运动矢量预测候选的推导处理。
[0102]
在运动矢量预测中,考虑了两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选的推导,基于位于图2所示的五个不同位置的每个pu的运动矢量最终推导出两个运动矢量候选。
[0103]
对于时域运动矢量候选的推导,从两个候选中选择一个运动矢量候选,这两个候选是基于两个不同的并置位置推导出的。在做出第一个空时候选列表后,移除列表中重复的运动矢量候选。如果潜在候选的数量大于二,则从列表中移除相关联的参考图片列表中参考图片索引大于1的运动矢量候选。如果空时运动矢量候选数小于二,则会在列表中添加附加的零运动矢量候选。
[0104]
2.1.3.2空域运动矢量候选
[0105]
在推导空域运动矢量候选时,在五个潜在候选中最多考虑两个候选,这五个候选来自图2所示位置上的pu,这些位置与运动merge的位置相同。当前pu左侧的推导顺序定义为a0、a1、以及缩放的a0、缩放的a1。当前pu上侧的推导顺序定义为b0、b1,b2、缩放的b0、缩放的b1、缩放的b2。因此,每侧有四种情况可以用作运动矢量候选,其中两种情况不需要使用空域缩放,并且两种情况使用空域缩放。四种不同的情况概括如下:
[0106]
‑‑
无空域缩放
[0107]
(1)相同的参考图片列表,并且相同的参考图片索引(相同的poc)
[0108]
(2)不同的参考图片列表,但是相同的参考图片(相同的poc)
[0109]
‑‑
空域缩放
[0110]
(3)相同的参考图片列表,但是不同的参考图片(不同的poc)
[0111]
(4)不同的参考图片列表,并且不同的参考图片(不同的poc)
[0112]
首先检查无空域缩放的情况,然后检查允许空域缩放的情况。当poc在临近pu的参考图片与当前pu的参考图片之间不同时,都会考虑空域缩放,而不管参考图片列表如何。如果左侧候选的所有pu都不可用或是帧内编解码,则允许对上述运动矢量进行缩放,以帮助左侧和上方mv候选的平行推导。否则,不允许对上述运动矢量进行空域缩放。
[0113]
图9是空域运动矢量候选的运动矢量缩放的图示。
[0114]
在空域缩放处理中,以与时域缩放类似的方式缩放临近pu的运动矢量,如图9所示。主要区别是,给出当前pu的参考图片列表和索引作为输入;实际的缩放处理与时域缩放处理相同。
[0115]
2.1.3.3时域运动矢量候选
[0116]
除了参考图片索引的推导外,时域merge候选的所有推导处理与空域运动矢量候选的推导处理相同(参见图6)。将参考图片索引信令通知给解码器。
[0117]
2.2 jem中基于子cu的运动矢量预测方法
[0118]
在具有qtbt的jem中,每个cu对于每个预测方向最多可以具有一组运动参数。通过将大的cu分割成子cu并推导该大cu的所有子cu的运动信息,编解码器中考虑了两种子cu级的运动矢量预测方法。可可选时域运动矢量预测(atmvp)方法允许每个cu从并置参考图片中多个小于当前cu的块中提取多组运动信息。在空时运动矢量预测(stmvp)方法中,通过利用时域运动矢量预测值和空域邻接运动矢量递归地推导子cu的运动矢量。
[0119]
为了为子cu运动预测保留更精确的运动场,参考帧的运动压缩当前被禁用。
[0120]
图10示出了cu的atmvp运动预测的示例。
[0121]
2.2.1可选时域运动矢量预测
[0122]
在可选时域运动矢量预测(atmvp)方法中,运动矢量时域运动矢量预测(tmvp)是通过从小于当前cu的块中提取多组运动信息(包括运动矢量和参考索引)来修改的。子cu为方形n
×
n块(默认n设置为4)。
[0123]
atmvp分两步预测cu内的子cu的运动矢量。第一步是用所谓的时域矢量识别参考图片中的对应块。参考图片称为运动源图片。第二步是将当前cu划分成子cu,并从每个子cu对应的块中获取运动矢量以及每个子cu的参考索引。
[0124]
在第一步中,参考图片和对应的块由当前cu的空域临近块的运动信息确定。为了避免临近块的重复扫描处理,使用当前cu的merge候选列表中的第一个merge候选。第一个可用的运动矢量及其相关联的参考索引被设置为时域矢量和运动源图片的索引。这样,在atmvp中,与tmvp相比,可以更准确地识别对应的块,其中对应的块(有时称为并置块)始终位于相对于当前cu的右下角或中心位置。
[0125]
在第二步中,通过将时域矢量添加到当前cu的坐标中,通过运动源图片中的时域矢量识别子cu的对应块。对于每个子cu,使用其对应块的运动信息(覆盖中心样本点的最小
运动网格)来推导子cu的运动信息。在识别出对应n
×
n块的运动信息后,将其转换为当前子cu的运动矢量和参考索引,与hevc的tmvp方法相同,其中应用运动缩放和其它处理。例如,解码器检查是否满足低延迟条件(例如,当前图片的所有参考图片的poc都小于当前图片的poc),并可能使用运动矢量mvx(与参考图片列表x对应的运动矢量)来为每个子cu预测运动矢量mvy(x等于0或1且y等于1-x)。
[0126]
2.2.2空时运动矢量预测(stmvp)
[0127]
在这种方法中,子cu的运动矢量是按照光栅扫描顺序递归推导的。图11说明了该概念。考虑一个8
×
8的cu,它包含四个4
×
4的子cu a、b、c和d。当前帧中临近的4
×
4的块标记为a、b、c和d。
[0128]
子cu a的运动推导由识别其两个空域邻居开始。第一个邻居是子cu a上方的n
×
n块(块c)。如果该块c不可用或帧内编解码,则检查子cu a上方的其它n
×
n块(从左到右,从块c处开始)。第二个邻居是子cu a左侧的一个块(块b)。如果块b不可用或是帧内编解码,则检查子cu a左侧的其它块(从上到下,从块b处开始)。每个列表从临近块获得的运动信息被缩放到给定列表的第一个参考帧。接下来,按照hevc中规定的与tmvp推导相同的程序,推导子块a的时域运动矢量预测(tmvp)。提取位置d处的并置块的运动信息并进行对应的缩放。最后,在检索和缩放运动信息后,对每个参考列表分别平均所有可用的运动矢量(最多3个)。将平均运动矢量指定为当前子cu的运动矢量。
[0129]
2.2.3子cu运动预测模式信令
[0130]
子cu模式作为附加的merge候选启用,并且不需要附加的语法元素来对该模式信令通知。将另外两个merge候选添加到每个cu的merge候选列表中,以表示atmvp模式和stmvp模式。如果序列参数集指示启用了atmvp和stmvp,则最多使用七个merge候选。附加merge候选的编解码逻辑与hm中的merge候选的编解码逻辑相同,这意味着对于p条带或b条带中的每个cu,需要对两个附加merge候选进行两次更多rd检查。
[0131]
在jem中,merge索引的所有bin都由cabac进行上下文编解码。然而在hevc中,只有第一个bin是上下文编解码的,并且其余的bin是上下文旁路编解码的。
[0132]
2.3 vvc中的帧间预测方法
[0133]
存在几种新的用于帧间预测改进的编解码工具,诸如用于信令通知mvd的自适应运动矢量差分辨率(amvr)、仿射预测模式、三角预测模式(tpm)、atmvp、广义双向预测(gbi)、双向光流(bio)。
[0134]
2.3.1自适应运动矢量差分辨率
[0135]
在hevc中,当在条带标头中use_integer_mv_flag等于0时,运动矢量差(mvd)(在pu的运动矢量和预测运动矢量之间)以四分之一亮度样本点为单位信令通知。在vvc中,引入了局部自适应运动矢量分辨率(lamvr或简称为amvr)。在vvc中,mvd可以用四分之一亮度样本点、整数亮度样本点或四亮度样本点的单位(即1/4像素、1像素、4像素)进行编解码。mvd分辨率控制在编解码单元(cu)级别,并且mvd分辨率标志有条件地为每个至少有一个非零mvd分量的cu信令通知。
[0136]
对于具有至少一个非零mvd分量的cu,信令通知第一个标志以指示cu中是否使用四分之一亮度样本点mv精度。当第一个标志(等于1)指示不使用四分之一亮度样本点mv精度时,信令通知另一个标志以指示是使用整数亮度样本点mv精度还是使用四亮度样本点mv
精度。
[0137]
当cu的第一个mvd分辨率标志为零或没有为cu编解码(意味着cu中的所有mvd都为零)时,cu使用四分之一亮度样本点mv分辨率。当一个cu使用整数亮度样本点mv精度或四亮度样本点mv精度时,该cu的amvp候选列表中的mvp将取整到对应的精度。
[0138]
在编解码器中,cu级别的rd检查用于确定哪个mvd分辨率将用于cu。也就是说,对每个mvd分辨率执行三次cu级别的rd检查。为了加快编解码器速度,在jem中应用以下编解码方案。
[0139]-在对具有正常四分之一亮度样本点mvd分辨率的cu进行rd检查期间,存储当前cu(整数亮度样本点精度)的运动信息。在对具有整数亮度样本点和4亮度样本点mvd分辨率的相同个cu进行rd检查时,将存储的运动信息(取整后)用作进一步小范围运动矢量细化的起始点,从而使耗时的运动估计处理不会重复三次。
[0140]-有条件地调用具有4亮度样本点mvd分辨率的cu的rd检查。对于cu,当整数亮度样本点mvd分辨率的rd检查成本远大于四分之一亮度样本点mvd分辨率的rd检查成本时,将跳过对cu的4亮度样本点mvd分辨率的rd检查。
[0141]
编码处理如图12所示。首先,测试1/4像素mv,并且计算rd成本并表示为rdcost0,然后测试整数mv,并且将rd成本表示为rdcost1。如果rdcost1《th*rdcost0(其中th为正值),则测试4像素mv;否则,跳过4像素mv。基本上,在检查整数或4像素mv时,1/4像素mv的运动信息和rd成本等都是已知的,其可以被重用来加速整数或4像素mv的编码处理。
[0142]
在vvc中,amvr也可应用于仿射预测模式,其中可以从1/16像素、1/4像素和1像素中选择分辨率。
[0143]
图12是用不同mv精度编码的流程图。
[0144]
2.3.2三角预测模式
[0145]
三角预测模式(tpm)的概念是引入一种用于运动补偿预测的新的三角分割。如图13所示,在对角线方向或逆对角线方向上将cu划分成两个三角预测单元。cu中的每个三角预测单元是使用从单个单向预测候选列表导出的其自身的单向预测运动矢量和参考帧索引进行帧间预测的。在对三角预测单元进行预测后,对对角线边缘进行自适应加权处理。然后,将变换和量化处理应用到整个cu中。应当注意的是,此模式仅适用于merge模式(注意,将跳过模式视为特殊的merge模式)。
[0146]
2.3.2.1 tpm的单向预测候选列表
[0147]
单向预测候选列表(称为tpm运动候选列表)由五个单向预测运动矢量候选组成。它从七个临近块导出,包括五个空域临近块(1到5)和两个时域并置块(6到7),如图14所示。收集7个临近块的运动矢量,并将其按照单向预测运动矢量、双向预测运动矢量的l0运动矢量、双向预测运动矢量的l1运动矢量、以及双向预测运动矢量的l0和l1运动矢量的平均运动矢量的顺序放入单向预测候选列表中。如果候选数目小于5,则将零运动矢量添加到列表中。添加到该tpm列表中的运动候选被称为tpm候选,从空域/时域块导出的运动信息被称为常规运动候选。
[0148]
更具体地,涉及以下步骤:
[0149]
1)当添加来自空域临近块的常规运动候选时,使用完全修剪操作从a1,b1,b0,a0,b2,col和col2(对应于图14中的块1至7)中获取常规运动候选。
[0150]
2)设置变量numcurrmergecand=0。
[0151]
3)对于从a1,b1,b0,a0,b2,col和col2导出的每个常规运动候选,如果未修剪并且numcurrmergecand小于5,如果该运动候选是单向预测(来自列表0或列表1),则将其直接添加到merge列表中作为tpm候选,将numcurrmergecand增加1。这样的tpm候选被命名为“原始单向预测预测候选”。
[0152]
应用完全修剪。
[0153]
4)对于从a1,b1,b0,a0,b2,col和col2导出的每个运动候选,如果未修剪,并且numcurrmergecand小于5,如果该常规运动候选是双向预测,则将来自列表0的运动信息添加到tpm merge列表(即,修改为来自列表0的单向预测)作为新的tpm候选,并且numcurrmergecand增加1。这样的tpm候选被命名为“截断的列表0预测候选”。
[0154]
应用完全修剪。
[0155]
5)对于从a1,b1,b0,a0,b2,col和col2导出的每个运动候选,如果未修剪,并且numcurrmergecand小于5,如果该常规运动候选是双向预测,则将来自列表1的运动信息添加到tpm merge列表(即,修改为来自列表1的单向预测),并且numcurrmergecand增加1。这样的tpm候选被命名为“截断的列表1预测候选”。
[0156]
应用完全修剪。
[0157]
6)对于从a1,b1,b0,a0,b2,col和col2导出的每个运动候选,如果未修剪,并且numcurrmergecand小于5,如果该常规运动候选是双向预测,
[0158]-如果列表0参考图片的条带qp小于列表1参考图片的条带qp,则首先将列表1的运动信息缩放到列表0参考图片,并且将两个mv(一个来自原始列表0,并且另一个是来自列表1的缩放mv)的平均添加到tpmmerge列表,这样的候选被称为来自列表0运动候选的平均单向预测,并且numcurrmergecand增加1。
[0159]-否则,首先将列表0的运动信息缩放到列表1参考图片,并且将两个mv(一个来自原始列表1,并且另一个是来自列表0的缩放mv)的平均添加到tpm merge列表中,这样的tpm候选被称为来自列表1运动候选的平均单向预测,并且numcurrmergecand增加1。
[0160]
应用完全修剪。
[0161]
7)如果numcurrmergecand小于5,则添加零运动矢量候选。
[0162]
图14示出了临近块的示例位置。
[0163]
当将候选插入到列表中时,如果将其与所有先前添加的候选进行了比较以查看它是否和它们中的一个相同,则将这样的处理称为完全修剪。
[0164]
2.3.2.2自适应加权处理
[0165]
在对每个三角预测单元进行预测后,对两个三角预测单元之间的对角线边缘应用自适应加权处理,以导出整个cu的最终预测。两个加权因子组定义如下:
[0166]-第一加权因子组:分别将{7/8、6/8、4/8、2/8、1/8}和{7/8、4/8、1/8}用于亮度和色度样本点;
[0167]-第二加权因子组:分别将{7/8、6/8、5/8、4/8、3/8、2/8、1/8}和{6/8、4/8、2/8}用于亮度和色度样本点。
[0168]
在比较两个三角预测单元的运动矢量的基础上,选择一个加权因子组。当两个三角预测单元的参考图片彼此不同、或其运动矢量差大于16像素时,使用第二加权因子组。否
则,使用第一加权因子组。示例如图15所示。
[0169]
2.3.2.3三角预测模式(tpm)的信令
[0170]
首先可以信令通知指示是否使用tpm的一个比特标志。然后,进一步信令通知两个划分模式(如图13所示)的指示、以及两个分割的每一个的选定merge索引。
[0171]
2.3.2.3.1 tpm标志的信令
[0172]
让我们分别用w和h来表示一个亮度块的宽度和高度。如果w*h《64,则禁用三角预测模式。
[0173]
当一个块用仿射模式编解码时,三角预测模式也被禁用。
[0174]
当一个块用merge模式编解码时,可以信令通知一个比特标志,以指示对该块是启用还是禁用三角预测模式。
[0175]
基于以下公式,该标志由3个上下文编解码:
[0176]
ctx索引=((左侧块l可用&&l用tpm编解码?)1:0) ((上方块a可用&&a用tpm?编解码)1:0);
[0177]
图15示出了在tpm标志编解码中用于上下文选择的临近块(a和l)的示例。
[0178]
2.3.2.3.2两个划分模式(如图13所示)的指示、以及两个分割中的每个的选择的merge索引
[0179]
应当注意的是,划分模式、两个分割的merge索引是联合编解码的。在一些实现中,限制了两个分割不能使用相同的参考索引。因此,存在2(划分模式)*n(最大merge候选数)*(n-1)种可能性,其中n被设置为5。一个指示被编解码,并且从以下定义的阵列导出划分模式、两个merge索引和编解码指示之间的映射:
[0180]
const uint8_t g_trianglecombination[triangle_max_num_cands][3]={{0,1,0},{1,0,1},{1,0,2},{0,0,1},{0,2,0},{1,0,3},{1,0,4},{1,1,0},{0,3,0},{0,4,0},{0,0,2},{0,1,2},{1,1,2},{0,0,4},{0,0,3},{0,1,3},{0,1,4},{1,1,4},{1,1,3},{1,2,1},{1,2,0},{0,2,1},{0,4,3},{1,3,0},{1,3,2},{1,3,4},{1,4,0},{1,3,1},{1,2,3},{1,4,1},{0,4,1},{0,2,3},{1,4,2},{0,3,2},{1,4,3},{0,3,1},{0,2,4},{1,2,4},{0,4,2},{0,3,4}};
[0181]
划分模式(45度或135度)=g_trianglecombination[信令通知的指示][0];
[0182]
候选a的merge索引=g_trianglecombination[信令通知的指示][1];
[0183]
候选b的merge索引=g_trianglecombination[信令通知的指示][2];
[0184]
一旦导出两个运动候选a和b,就可以从a或b设置两个分割(pu1和pu2)的运动信息。pu1是否使用merge运动候选a或b的运动信息取决于两个运动候选的预测方向。表1示出了具有两个分割的两个导出的运动候选a和之间的关系。
[0185]
表1:从导出的两个merge候选(a,b)推导分割的运动信息
[0186]
a的预测方向b的预测方向pu1的运动信息pu2的运动信息l0l0a(l0)b(l0)l1l1b(l1)a(l1)l0l1a(l0)b(l1)l1l0b(l0)a(l1)
[0187]
2.3.2.3.3指示(用merge_triangle_idx表示)的熵编码
[0188]
merge_triangle_idx在[0,39]范围内,包括0和39。k阶指数哥伦布(eg)编码被用于merge_triangle_idx的二值化,其中k设为1。
[0189]
k阶eg
[0190]
为了用较少的比特编码较大的数字(以使用较多的比特来编码较小的数字为代价),可以使用非负整数参数k来进行归一化。要在k阶指数哥伦布编码中编码非负整数x:
[0191]
1.使用上述0阶指数哥伦布编码对进行编码,然后,
[0192]
2.在二进制中编码x mod 2k。
[0193]
表2 k阶指数哥伦布编码的示例
[0194][0195]
2.3.3仿射运动补偿预测的示例
[0196]
在hevc中,仅将平移运动模型应用于运动补偿预测(mcp)。然而,在真实世界中存在多种运动,例如放大/缩小、旋转、透视运动和其他不规则运动。在vvc中,采用4参数仿射模型和6参数仿射模型的简化仿射变换运动补偿预测。如图16所示,对于4参数仿射模型,块的仿射运动场由两个控制点运动矢量(cpmv)描述,对于6参数仿射模型,块的仿射运动场由三个cpmv描述。
[0197]
图16示出了简化仿射运动模型的示例。
[0198]
分别用以下等式来描述块的运动矢量场(mvf),等式(1)中是4参数仿射模型(其中4参数被定义为变量a、b、e和f)且等式(2)中是6参数仿射模型(其中4参数被定义为变量a、b、c、d、e和f):
[0199][0200]
[0201]
其中(mv
h0
,mv
h0
)为左上控制点(cp)的运动矢量,并且(mv
h1
,mv
h1
)为右上角控制点的运动矢量,并且(mv
h2
,mv
h2
)为左下角控制点的运动矢量,所有这三个运动矢量被称为控制点运动矢量(cpmv),(x,y)表示代表点相对于当前块内的左上样本点的代表点的坐标,并且(mvh(x,y),mvv(x,y))是为位于(x,y)处的样本点导出的运动矢量。cp运动矢量可以被信令通知(如在仿射amvp模式中)或者是动态地导出(如在仿射merge模式中)。w和h是当前块的宽度和高度。实际上,除法是通过带取整的右移操作来实现的。在vtm中,代表点被定义为子块的中心位置,例如,当子块的左上相对于当前块内的左上样本点的坐标为(xs,ys)时,代表点的坐标被定义为(xs 2,ys 2)。对于每个子块(即vtm中的4
×
4),代表点被用于导出整个子块的运动矢量。
[0202]
为了进一步简化运动补偿预测,应用基于子块的仿射变换预测。为了得到每个m
×
n(在当前vvc中m和n二者都被设置为4)子块的运动矢量,如图17所示,可以根据等式(1)和(2)计算每个子块的中心样本点的运动矢量,并取整到1/16分数精度。然后应用1/16像素的运动补偿插值滤波器,利用导出的运动矢量生成各子块的预测。通过仿射模式介绍了1/16像素的插值滤波器。
[0203]
在mcp之后,将每个子块的高精度运动矢量取整,并保存为与常规运动矢量相同的精度。
[0204]
2.3.3.1仿射预测的信令
[0205]
与平移运动模型类似,仿射预测也有两种模式用于信令通知侧面信息。它们是affine_inter模式和affine_merge模式。
[0206]
2.3.3.2 af_inter模式
[0207]
对于宽度和高度都大于8的cu,可以应用af_inter模式。在比特流中,cu级别的仿射标志被信令通知,以指示是否使用af_inter模式。
[0208]
在此模式中,对于每个参考图片列表(列表0或列表1),按照以下顺序用三种类型的仿射运动预测器构造仿射amvp候选列表,其中每个候选包括当前块的估计的cpmv。信令通知在编码器侧发现的最佳cpmv的差(例如图20中的mv
0 mv
1 mv2)、以及估计的cpmv。此外,进一步信令通知从中导出估计的cpmv的仿射amvp候选的索引。
[0209]
1)继承的仿射运动预测器
[0210]
检查顺序与在hevc amvp列表构造中空域mvp的检查顺序相似。首先,从{a1,a0}中的第一个块导出左继承的仿射运动预测器,该块是仿射编解码的,并且具有与当前块相同的参考图片。其次,从{b1,b0,b2}中的第一块导出上述继承的仿射运动预测器,该块是仿射编解码的,并且具有与当前块相同的参考图片。图19描绘了五个块a1、a0、b1、b0、b2。
[0211]
一旦发现临近块是仿射编解码的,则利用覆盖临近块的编解码单元的cpmv来推导当前块的cpmv的预测器。例如,如果a1用非仿射模式编解码,并且a0用4参数仿射模式编解码,则将从a0导出左侧继承的仿射mv预测器。在这种情况下,覆盖a0的cu的cpmv(如图21b中表示为的左上cpmv和表示为的右上cpmv)被用于导出当前块的估计的cpmv(表示为的当前块的左上(坐标为(x0,y0))、右上(坐标为(x1,y1))和右下(坐标为(x2,y2))位置)。
[0212]
2)构造的仿射运动预测器
[0213]
如图20所示,构造的仿射运动预测器由从具有相同参考图片的临近帧间编解码块导出的控制点运动矢量(cpmv)组成。如果当前仿射运动模型为4参数仿射,则cpmv的数量为2;否则,如果当前仿射运动模型为6参数仿射,则cpmv的数量为3。左上cpmv由组{a,b,c}中的第一个块处的mv导出,该块帧间编解码的,并且具有与当前块相同的参考图片。右上cpmv由组{d,e}中的第一个块处的mv导出,该块是帧间编解码的,并且具有与当前块相同的参考图片。左下由组{f,g}中第一个块处的mv导出,该是帧间编解码的,并且具有与当前块相同的参考图片。
[0214]

如果当前仿射运动模型是4参数仿射,则只有当和两者都被找到(也就是说,和被用作当前块的左上(坐标为(x0,y0))和右上(坐标为(x1,y1))位置的估计的cpmv)时,将构造的仿射运动预测器插入候选列表。
[0215]

如果当前仿射运动模型是6参数仿射,则只有当和都被找到(也就是说,和被用作当前块的左上(坐标为(x0,y0))、右上(坐标为(x1,y1))和右下(坐标为(x2,y2))位置的估计的cpmv)时,将构造的仿射运动预测器插入候选列表。
[0216]
在将构造的仿射运动预测器插入候选列表中时,不应用剪切处理。
[0217]
3)常规amvp运动预测器
[0218]
以下适用,直到仿射运动预测器的数量达到最大值。
[0219]
1)如果可用,通过将所有cpmv设置为等于来导出仿射运动预测器。
[0220]
2)如果可用,通过将所有cpmv设置为等于来导出仿射运动预测器。
[0221]
3)如果可用,通过将所有cpmv设置为等于来导出仿射运动预测器。
[0222]
4)如果可用,通过将所有cpmv设置为等于hevc tmvp来导出仿射运动预测器。
[0223]
5)通过将所有cpmv设置为等于零mv来导出仿射运动预测器。
[0224]
注意,已在构造的仿射运动预测器中导出
[0225]
在af_inter模式中,当使用4/6参数仿射模式时,需要2/3个控制点,并且因而需要对这些控制点编解码2/3个mvd,如图18所示。在jvet-k0337中,提出如下推导mv,即从mvd0预测mvd1和mvd2。
[0226][0227][0228][0229]
其中,mvdi和mv1分别是左上像素(i=0)、右上像素(i=1)或左下像素(i=2)的预测运动矢量、运动矢量差和运动矢量,如图18(b)所示。应当注意的是,两个运动矢量的相加(例如,mva(xa,ya)和mvb(xb,yb))分别等于两个分量的总和。也就是说,newmv=mva mvb,并且newmv的两个分量分别设置为(xa xb)和(ya yb)。
[0230]
2.3.3.3 af_merge模式
[0231]
当在af_merge模式中应用cu时,它从有效的临近重构块中获得以仿射模式编解码
的第一个块。并且候选块的选择顺序是从左、上、右上、左下到左上,如图21(a)所示(依次表示为a、b、c、d、e)。例如,如果临近左下块用仿射模式编解码(如图21(b)中a0表示的),则提取包含块a的临近cu/pu的左上、右上和左下的控制点(cp)运动矢量mv
0n
,mv
1n
和mv
2n
。并且基于mv
0n
,mv
1n
和mv
2n
计算当前cu/pu左上/右上/左下的运动矢量mv
0c
,mv
1c
和mv
2c
(仅用于6参数仿射模型),需要注意的是,在vtm-2.0中,如果当前块是仿射编解码的,则位于左上角的子块(例如,vtm中的4
×
4块)存储mv0,位于右上角的子块存储mv1。如果当前块用6参数仿射模型编解码,则位于左下角的子块存储mv2;否则(用4参数仿射模型),lb存储mv2'。其他子块存储用于mc的mv。
[0232]
在推导出当前cu的cpmv mv
0c
,mv
1c
和mv
2c
之后,根据等式(1)和(2)中的简化的仿射运动模型,生成当前cu的mvf。为了识别当前cu是否以af_merge模式编解码,当至少一个临近块以仿射模式编解码时,在比特流中信令通知仿射标志。
[0233]
在jvet-l0142和jvet-l0632中,用以下步骤来构造仿射merge候选:
[0234]
1)插入继承的仿射候选
[0235]
继承仿射候选是指该候选是从其有效临近仿射编解码块的仿射运动模型导出的。从临近块的仿射运动模型中导出最大的两个仿射候选并插入候选列表中。对于左侧预测器,扫描顺序是{a0,a1};对于上方预测,扫描顺序是{b0,b1,b2}。
[0236]
2)插入构造的仿射候选
[0237]
如果仿射merge候选列表中的候选数量小于maxnumaffinecand(例如,5),则将构造仿射候选插入候选列表中。构造仿射候选是指该候选是通过组合每个控制点的临近运动信息构造的。
[0238]
a)首先从图22所示的规定的空域邻居和时域邻居导出控制点的运动信息。cpk(k=1,2,3,4)表示第k个控制点。a0,a1,a2,b0,b1,b2和b3是用于预测cpk(k=1,2,3)的空域位置;t是用于预测cp4的时域位置。
[0239]
cp1、cp2、cp3和cp4的坐标分别为(0,0),(w,0),(h,0)和(w,h),其中w和h是当前块的宽度和高度。
[0240]
按照以下优先顺序获得每个控制点的运动信息:
[0241]
对于cp1,检查优先级为b2-》b3-》a2。如果b2可用,则使用b2。否则,如果b2可用,则使用b3。如果b2和b3都不可用,则使用a2。如果三个候选都不可用,则无法获得cp1的运动信息。
[0242]
对于cp2,检查优先级为b1-》b0;
[0243]
对于cp3,检查优先级为a1-》a0;
[0244]
对于cp4,使用t。
[0245]
b)其次,使用控制点的组合来构造仿射merge候选。
[0246]
i.需要三个控制点的运动信息来构造6参数仿射候选。可以从以下四个组合中的一个来选择这三个控制点({cp1,cp2,cp4},{cp1,cp2,cp3},{cp2,cp3,cp4},{cp1,cp3,cp4})。组合{cp1,cp2,cp3},{cp2,cp3,cp4},{cp1,cp3,cp4}将被转换到由左上、右上和左下控制点表示的6参数运动模型。
[0247]
ii.需要两个控制点的运动信息来构造4参数仿射候选。可以从以下两个组合中的一个来选择这两个控制点({cp1,cp2},{cp1,cp3})。这两个组合将被转换到由左上和右上
控制点表示的4参数运动模型。
[0248]
iii.按以下顺序将构造仿射候选的组合插入到候选列表中:
[0249]
{cp1,cp2,cp3},{cp1,cp2,cp4},{cp1,cp3,cp4},{cp2,cp3,cp4},{cp1,cp2},{cp1,cp3}。
[0250]
i.对于每个组合,检查每个cp的列表x的参考索引,如果它们都相同,则该组合具有列表x有效的cpmv。如果该组合不具有列表0和列表1有效的cpmv,则该组合被标记为无效。否则,它是有效的,并且cpmv被放入子块merge列表中。
[0251]
3)填充零仿射运动矢量候选
[0252]
如果仿射merge候选列表中的候选数量小于5,则对于子块merge候选列表,4参数merge候选的mv设置为(0,0)且预测方向设置为来自列表0的单向预测(对于p条带)和双向预测(对于b条带)。
[0253]
2.3.4.vvc中的merge列表设计
[0254]
vvc中支持三种不同的merge列表构造处理:
[0255]
1)子块merge候选列表:它包括atmvp和仿射merge候选。仿射模式和atmvp模式共享一个merge列表构造处理。这里,可以按顺序添加atmvp和仿射merge候选。在条带标头中信令通知子块merge列表尺寸,并且最大值为5。
[0256]
2)单向预测tpm merge列表:对于三角预测模式,两个分割共享一个merge列表构造处理,即使两个分割可以选择自己的merge候选索引。在构造这个merge列表时,检查块的空域临近块和两个时域块。在我们的idf中,从空域邻居和时域块导出的运动信息被称为常规运动候选。这些常规运动候选被进一步用于导出多个tpm候选。请注意,变换是在整个块级别执行的,即使两个分割可以使用不同的运动矢量来生成它们自己的预测块。
[0257]
单向预测tpm merge列表尺寸被固定为5。
[0258]
3)常规merge列表:剩余的编解码块共享一个merge列表构造处理。这里,可以依次插入空域/时域/hmvp、成对组合双向预测merge候选和零运动候选。在条带标头中信令通知常规merge列表尺寸,并且最大值为6。
[0259]
2.3.4.1子块merge候选列表
[0260]
除了非子块merge候选的常规merge列表,建议将所有与子块相关的运动候选放在单独的merge列表中。
[0261]
将与子块相关的运动候选放在名为“子块merge候选列表”的单独的merge列表中,
[0262]
在一个示例中,子块merge候选列表包括仿射merge候选、以及atmvp候选、和/或基于子块的stmvp候选。
[0263]
2.3.4.1.1 jvet-l0278
[0264]
在该贡献中,将普通merge列表中的atmvp merge候选移动到仿射merge列表的第一个位置。使得新列表(即基于子块的merge候选列表)中的所有merge候选都基于子块编解码工具。
[0265]
2.3.4.1.2 jvet-n1001中的atmvp
[0266]
atmvp也称为基于子块的时域运动矢量预测(sbtmvp).
[0267]
在jvet-n1001中,除了常规merge候选列表外,还增加了特殊的merge候选列表,称为子块merge候选列表(又称为仿射merge候选列表)。按以下顺序填充子块merge候选列表
的候选:
[0268]
a.atmvp候选(可能可用或不可用);
[0269]
b.继承的仿射候选;
[0270]
c.构造的仿射候选,包括基于tmvp的仿射候选,该仿射候选使用并置参考图片中的mv;
[0271]
d.填充为零mv 4参数仿射模型
[0272]
vtm支持基于子块的时域运动矢量预测(sbtmvp)方法。与hevc中的时域运动矢量预测(tmvp)类似,sbtmvp使用并置图片中的运动场来改进当前图片中cu的运动矢量预测和merge模式。将tmvp使用的相同并置图片用于sbtvmp。sbtmvp与tmvp在以下两个主要方面有所不同:
[0273]
1.tmvp在cu级预测运动,而sbtmvp在子cu级预测运动;
[0274]
2.tmvp从并置图片中的并置块获取时域运动矢量(并置块是相对于当前cu的右下或中心块),而sbtmvp在从并置图片获取时域运动信息之前应用运动移位,其中,从当前cu的空域临近块中的一个的运动矢量获得运动移位。
[0275]
在图23和图24中示出了sbtvmp处理。sbtmvp分两步预测当前cu内子cu的运动矢量。在第一步中,检查图23中的空域邻居a1。如果a1具有使用并置图片作为其参考图片的运动矢量,则选择该运动矢量作为要应用的运动移位。如果未识别出此类运动,则将运动移位设置为(0,0)。
[0276]
在第二步中,应用在步骤1中识别的运动移位(即添加到当前块的坐标)以从如图24所示的并置图片中获得子cu级运动信息(运动矢量和参考索引)。图24中的示例假设将运动移位设置为块a1的运动。然后,对于每个子cu,使用并置图片中其对应块(覆盖中心样本点的最小运动网格)的运动信息来导出子cu的运动信息。在识别出并置子cu的运动信息后,以与hevc的tmvp处理类似的方式将其转换为当前子cu的运动矢量和参考索引,其中应用时域运动缩放将时域运动矢量的参考图片与当前cu的参考图片对齐。
[0277]
在vtm中,将包含sbtvmp候选和仿射merge候选的基于组合子块的merge列表用于基于子块的merge模式的信令。sbtvmp模式由序列参数集(sps)标志启用/禁用。如果启用了sbtmvp模式,则将sbtmvp预测器添加为基于子块的merge候选列表的第一个条目,然后是仿射merge候选。在sps中信令通知基于子块的merge列表的尺寸,并且在vtm4中,基于子块的merge列表的最大允许尺寸为5。
[0278]
将sbtmvp中使用的子cu尺寸固定为8x8,并且如仿射merge模式中一样,sbtmvp模式也仅适用于宽度和高度都大于或等于8的cu。
[0279]
附加sbtmvp merge候选的编解码逻辑与其他merge候选的编解码逻辑相同,即,对于p或b条带中的每个cu,执行附加rd检查以决定是否使用sbtmvp候选。
[0280]
图23-24示出了vvc中sbtmvp处理的示例。
[0281]
将子块merge候选列表中的最大候选数表示为maxnumsubblockmergecand。
[0282]
2.3.4.1.3与子块merge列表相关的语法/语义
[0283]
7.3.2.3序列参数集rbsp语法
[0284]
[0285]
[0286]
[0287][0288]
7.3.5.1通用条带标头语法
[0289]
[0290]
[0291]
[0292][0293]
7.3.7.7 merge数据语法
[0294]
[0295][0296]
five_minus_max_num_subblock_merge_cand指定从5减去条带中支持的基于子块的merge运动矢量预测(mvp)最大候选数目。当five_minus_max_num_subblock_merge_cand不存在时,推断它等于5-sps_sbtmvp_enabled_flag。基于子块的merge mvp最大候选数目maxnumsubblockmergecand导出如下:
[0297]
maxnumsubblockmergecand=5-five_minus_max_num_subblock_merge_cand
[0298]
maxnumsubblockmergecand的值应在0到5之间(包括0和5)。
[0299]
8.5.5.2子块merge模式下运动矢量和参考索引的推导处理
[0300]
该处理的输入是:
[0301]

当前亮度编解码块的左上样本点相对于当前图片的左上亮度样本点的亮度位置(xcb,ycb),
[0302]

两个变量cbwidth和cbheight,其指定亮度编解码块的宽度和高度。
[0303]
该处理的输出是:
[0304]

水平方向和垂直方向的亮度编解码子块数目numsbx和numsby,
[0305]

参考索引refidxl0和refidxl1,
[0306]

预测列表使用标志阵列predflagl0[xsbidx][ysbidx]和predflagl1[xsbidx][ysbidx],
[0307]

1/16分数采样精度的亮度子块运动矢量阵列mvl0[xsbidx][ysbidx]和mvl1[xsbidx][ysbidx],其中xsbidx=0..numsbx-1,ysbidx=0..numsby-1,
[0308]

1/32分数采样精度的色度子块运动矢量阵列mvcl0[xsbidx][ysbidx]和mvcl1[xsbidx][ysbidx],其中xsbidx=0..numsbx-1,ysbidx=0..numsby-1,
[0309]

双向预测权重索引bcwidx。
[0310]
按以下顺序步骤导出变量numsbx、numsby和子块merge候选列表
subblockmergecandlist:
[0311]
1.当sps_sbtmvp_enabled_flag等于1时,以下适用:
[0312]

对于availableflaga1,refidxlxa1,predflaglxa1和mvlxa1的推导,以下适用:
[0313]

将临近亮度编解码块内的亮度位置(xnba1,ynba1)设置为等于(xcb-1,ycb cbheight-1)。
[0314]

将设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)和临近亮度位置(xnba1,ynba1)作为输入,调用第6.4.x条[ed.(bb):临近块可用性检查处理(待定)]中指定的块的可用性推导处理,并将输出分配给块可用性标志availablea1。
[0315]

变量availableflaga1,refidxlxa1,predflaglxa1和mvlxa1导出如下:
[0316]

如果availablea1等于false,则将availableflaga1设置为等于0,将mvlxa1的两个分量都设置为等于0,将refidxlxa1设置为等于-1,并且将predflaglxa1设置为等于0,x为0或1,并且将bcwidxa1设置为等于0。
[0317]

否则,将availableflaga1设置为等于1,并进行以下分配:
[0318]
mvlxa1=mvlx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-485)
[0319]
refidxlxa1=refidxlx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-486)
[0320]
predflaglxa1=predflaglx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-487)
[0321]

将亮度位置(xcb,ycb)、亮度编解码块宽度cbwidth、亮度编解码块高度cbheight、可用性标志availableflaga1、参考索引refidxlxa1、预测列表使用标志predflaglxa1和运动矢量mvlxa1作为输入,调用第8.5.5.3条中规定的基于子块的时域merge候选的推导处理,并且输出为可用性标志availableflagsbcol、水平方向的亮度编解码子块数目numsbx和垂直方向的亮度编解码子块数目numsby、参考索引refidxlxsbcol、亮度运动矢量mvlxsbcol[xsbidx][ysbidx]和预测列表使用标志predflaglxsbcol[xsbidx][ysbidx],其中xsbidx=0..numbx-1,ysbidx=0..numsby-1,并且x为0或1。
[0322]
2.当sps_affine_enabled_flag等于1时,样本点位置(xnba0,ynba0),(xnba1,ynba1),(xnba2,ynba2),(xnbb0,ynbb0),(xnbb1,ynbb1),(xnbb2,ynbb2),(xnbb3,ynbb3)和变量numsbx和numsby导出如下:
[0323]
(xa0,ya0)=(xcb-1,ycb cbheight)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(8-488)
[0324]
(xa1,ya1)=(xcb-1,ycb cbheight-1)
ꢀꢀꢀꢀꢀꢀ
(8-489)
[0325]
(xa2,ya2)=(xcb-1,ycb)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-490)
[0326]
(xb0,yb0)=(xcb cbwidth,ycb-1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-491)
[0327]
(xb1,yb1)=(xcb cbwidth-1,ycb-1)
ꢀꢀꢀꢀꢀꢀꢀ
(8-492)
[0328]
(xb2,yb2)=(xcb-1,ycb-1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-493)
[0329]
(xb3,yb3)=(xcb,ycb-1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-494)
[0330]
numsbx=cbwidth》》2
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-495)
[0331]
numsby=cbheight》》2
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-496)
[0332]
3.当sps_affine_enabled_flag等于1时,将变量availableflaga设置为等于false,并且以下适用于(xnbak,ynbak),从(xnba0,ynba0)至(xnba1,ynba1):
[0333]

将设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)和临近亮度位置(xnbak,ynbak)作为输入,调用第6.4.x条[ed.(bb):临近块可用性检查处理(待定)]中指定
的块的可用性推导处理,并将输出分配给块可用性标志availableak。
[0334]

当availableak等于true且motionmodelidc[xnbak][ynbak]大于0且availableflaga等于false时,以下适用:
[0335]

将变量availableflaga设置为等于true,将motionmodelidca设置为等于motionmodelidc[xnbak][ynbak],将(xnb,ynb)设置为等于(cbposx[xnbak][ynbak],cbposy[xnbak][ynbak]),将nbw设置为等于cbwidth[xnbak][ynbak],将nbh设置为等于cbheight[xnbak][ynbak],将numcpmv设置为等于motionmodelidc[xnbak][ynbak] 1,并且将bcwidxa设置为等于bcwidx[xnbak][ynbak]。
[0336]

对于x被0或1替换,以下适用:
[0337]-当predflaglx[xnbak][ynbak]等于1时,以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度和高度(cbwidth,cbheight)、临近亮度编解码块位置(xnb,ynb)、临近亮度编解码块的宽度和高度(nbw,nbh)以及控制点运动矢量的数目numcpmv作为输入,调用第8.5.5.5条中指定的从临近块的亮度仿射控制点运动矢量的推导处理,将控制点运动矢量预测器候选cpmvlxa[cpidx](cpidx=0..numcpmv-1)作为输出。
[0338]

进行以下分配:
[0339]
predflaglxa=predflaglx[xnbak][ynbak]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-497)
[0340]
refidxlxa=refidxlx[xnbak][ynbak]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-498)
[0341]
4.当sps_affine_enabled_flag等于1时,将变量availableflagb设置为等于false,并且以下适用于(xnbbk,ynbbk),从(xnbb0,ynbb0)到(xnbb2,ynbb2):
[0342]

将设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)和临近亮度位置(xnbbk,ynbbk)作为输入,调用第6.4.x条[ed.(bb):临近块可用性检查处理(待定)]中指定的块的可用性推导处理,并将输出分配给块可用性标志availablebk。
[0343]

当availablebk等于true并且motionmodelidc[xnbbk][ynbbk]大于0并且availableflagb等于false时,以下适用:
[0344]-将变量availableflagb设置为等于true,将motionmodelidcb设置为等于motionmodelidc[xnbbk][ynbbk],将(xnb,ynb)设置为等于(cbposx[xnbab][ynbbk],cbposy[xnbbk][ynbbk]),将nbw设置为等于cbwidth[xnbbk][ynbbk],将nbh设置为等于cbheight[xnbbk][ynbbk],将numcpmv设置为等于motionmodelidc[xnbbk][ynbbk] 1,并且将bcwidxb设置为等于bcwidx[xnbbk][ynbbk]。
[0345]

对于x被0或1替换,以下适用:
[0346]-当predflaglx[xnbbk][ynbbk]等于1时,以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度和高度(cbwidth,cbheight)、临近亮度编解码块位置(xnb,ynb)、临近亮度编解码块的宽度和高度(nbw,nbh)以及控制点运动矢量的数目numcpmv作为输入,调用第8.5.5.5条中指定的从临近块的亮度仿射控制点运动矢量的推导处理,将控制点运动矢量预测器候选cpmvlxb[cpidx](cpidx=0..numcpmv-1)作为输出。
[0347]

进行以下分配:
[0348]
predflaglxb=predflaglx[xnbbk][ynbbk]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-499)
[0349]
refidxlxb=refidxlx[xnbbk][ynbbk]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-500)
[0350]
5.当sps_affine_enabled_flag等于1时,将亮度编解码块位置(xcb,ycb)、亮度编
解码块宽度和高度(cbwidth,cbheight)、可用性标志availablea0,availablea1,availablea2,availableb0,availableb1,availableb2,availableb3作为输入,调用第8.5.5.6条中指定的构造仿射控制点运动矢量merge候选的推导处理,并且将可用性标志availableflagconstk、参考索引refidxlxconstk、预测列表使用标志predflaglxconstk、运动模型索引motionmodelidcconstk、双向预测加权索引bcwidxconstk和cpmvplxconstk[cpidx](x为0或1,k=1..6,cpidx=0..2)作为输出。
[0351]
6.初始子块merge候选列表subblockmergecandlist构造如下:
[0352][0353][0354]
7.将变量numcurrmergecand和numorigmergecand设置为等于subblockmergecandlist中的merge候选数目。
[0355]
8.当numcurrmergecand小于maxnumsubblockmergecand时,重复以下操作直到numcurrmergecand等于maxnumsubblockmergecand,其中mvzero[0]和mvzero[1]都等于0:
[0356]

参考索引、预测列表使用标志和zerocandm(其中m等于(numcurrmergecand

numorigmergecand))的运动矢量导出如下:
[0357]
refidxl0zerocandm=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-502)
[0358]
predflagl0zerocandm=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-503)
[0359]
cpmvl0zerocandm[0]=mvzero
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-504)
[0360]
cpmvl0zerocandm[1]=mvzero
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-505)
[0361]
cpmvl0zerocandm[2]=mvzero
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-506)
[0362]
refidxl1zerocandm=(slice_type==b)?0:-1
ꢀꢀꢀꢀꢀ
(8-507)
[0363]
predflagl1zerocandm=(slice_type==b)?1:0
ꢀꢀꢀꢀ
(8-508)
[0364]
cpmvl1zerocandm[0]=mvzero
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-509)
[0365]
cpmvl1zerocandm[1]=mvzero
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-510)
[0366]
cpmvl1zerocandm[2]=mvzero
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-511)
[0367]
motionmodelidczerocandm=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-512)
[0368]
bcwidxzerocandm=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-513)
[0369]-将zerocandm(其中m等于(numcurrmergecand

numorigmergecand))添加到subblockmergecandlist的末尾,并且numcurrmergecand增加1,如下所示:
[0370]
subblockmergecandlist[numcurrmergecand ]=zerocandm(8-514)
[0371]
变量refidxl0、refidxl1、predflagl0[xsbidx][ysbidx]、predflagl1[xsbidx][ysbidx]、mvl0[xsbidx][ysbidx]、mvl1[xsbidx][ysbidx]、mvcl0[xsbidx][ysbidx]和mvcl1[xsbidx][ysbidx](其中xsbidx=0..numsbx-1,ysbidx=0..numsby-1)导出如下:
[0372]

如果subblockmergecandlist[merge_subblock_idx[xcb][ycb]]等于sbcol,则将双向预测权重索引bcwidx设置为等于0,并且对于x为0或1,以下适用:
[0373]
refidxlx=refidxlxsbcol
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-515)
[0374]

对于xsbidx=0..numsbx

1,ysbidx=0..numsby

1,以下适用:predflaglx[xsbidx][ysbidx]=predflaglxsbcol[xsbidx][ysbidx](8-516)mvlx[xsbidx][ysbidx][0]=mvlxsbcol[xsbidx][ysbidx][0](8-517)mvlx[xsbidx][ysbidx][1]=mvlxsbcol[xsbidx][ysbidx][1](8-518)
[0375]

当predflaglx[xsbidx][ysbidx]等于1时,以mvlx[xsbidx][ysbidx]和refidxlx作为输入,调用第8.5.2.13条中的色度运动矢量推导处理,并且输出为mvclx[xsbidx][ysbidx]。
[0376]

对于x=xcb..xcb cbwidth-1和y=ycb..ycb cbheight

1,进行以下分配:
[0377]
motionmodelidc[x][y]=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-519)
[0378]

否则(subblockmergecandlist[merge_subblock_idx[xcb][ycb]]不等于sbcol),则对于x为0或1,以下适用:
[0379]

进行以下分配,其中n是子块merge候选列表subblockmergecandlist中位置merge_subblock_idx[xcb][ycb]处的候选(n=subblockmergecandlist[merge_subblock_idx[xcb][ycb]])::
[0380]
refidxlx=refidxlxn
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-520)
[0381]
predflaglx[0][0]=predflaglxn
ꢀꢀꢀꢀꢀꢀ
(8-521)
[0382]
cpmvlx[0]=cpmvlxn[0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-522)
[0383]
cpmvlx[1]=cpmvlxn[1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-523)
[0384]
cpmvlx[2]=cpmvlxn[2]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-524)
[0385]
numcpmv=motionmodelidxn 1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-525)
[0386]
bcwidx=bcwidxn
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-526)
[0387]

对于xsbidx=0..numsbx-1,ysbidx=0..numsby-1,以下适用:
[0388]
predflaglx[xsbidx][ysbidx]=predflaglx[0][0](8-527)
[0389]

当predflaglx[0][0]等于1时,将亮度编解码块位置(xcb,ycb)、亮度编解码块宽度cbwidth、亮度预测块高度cbheight、控制点运动矢量的数目numcpmv、控制点运动矢量cpmvlx[cpidx](cpidx为0..2)、以及水平方向和垂直方向亮度编解码子块的数目numsbx和numsby作为输入,调用子条款8.5.5.9中指定的从仿射控制点运动矢量的运动矢量阵列的推导处理,将亮度子块运动矢量阵列mvlx[xsbidx][ysbidx]和色度子块运动矢量阵列mvclx[xsbidx][ysbidx](其中xsbidx=0..numsbx-1,ysbidx=0..numsby-1)作为输出。
[0390]

对于x=xcb..xcb cbwidth-1和y=ycb..ycb cbheight-1,进行以下分配:
[0391]
motionmodelidc[x][y]=numcpmv-1
ꢀꢀꢀꢀ
(8-528)
[0392]
8.5.5.6构造仿射控制点运动矢量merge候选的推导处理
[0393]
该处理的输入是:
[0394]

亮度位置(xcb,ycb),其指定当前亮度编解码块相对于当前图片的左上亮度样本点的左上样本点,
[0395]

两个变量cbwidth和cbheight,其指定当前亮度编解码块的宽度和高度,
[0396]

可用性标志availablea0,availablea1,availablea2,availableb0,availableb1,availableb2,availableb3,
[0397]

样本点位置(xnba0,ynba0),(xnba1,ynba1),(xnba2,ynba2),(xnbb0,ynbb0),(xnbb1,ynbb1),(xnbb2,ynbb2)and(xnbb3,ynbb3)。
[0398]
该处理的输出为:
[0399]

构造仿射控制点运动矢量merge候选的可用性标志availableflagconstk,其中k=1..6,
[0400]

参考索引refidxlxconstk,其中k=1..6,x为0或1,
[0401]

预测列表使用标志predflaglxconstk,其中k=1..6,x为0或1,
[0402]

仿射运动模型索引motionmodelidcconstk,其中k=1..6,
[0403]

双向预测权重索引bcwidxconstk,其中k=1..6,
[0404]

构造仿射控制点运动矢量cpmvlxconstk[cpidx],其中cpidx=0..2,k=1..6,x为0或1。
[0405]
第一个(左上)控制点运动矢量cpmvlxcorner[0],参考索引refidxlxcorner[0],预测列表使用标志predflaglxcorner[0],双向预测权重索引bcwidxcorner[0]和可用性标志availableflagcorner[0](其中x为0和1)导出如下:
[0406]

将可用性标志availableflagcorner[0]设置为等于false。
[0407]

以下适用于(xnbtl,ynbtl),其中tl替换为b2,b3,和a2:
[0408]

当availabletl等于true且availableflagcorner[0]等于false时,以下适用,其中x为0和1:
[0409]
refidxlxcorner[0]=refidxlx[xnbtl][ynbtl]
ꢀꢀꢀꢀꢀꢀꢀ
(8-572)
[0410]
predflaglxcorner[0]=predflaglx[xnbtl][ynbtl]
ꢀꢀꢀ
(8-573)
[0411]
cpmvlxcorner[0]=mvlx[xnbtl][ynbtl]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-574)
[0412]
bcwidxcorner[0]=bcwidx[xnbtl][ynbtl]
ꢀꢀꢀꢀꢀꢀꢀꢀ
(8-575)
[0413]
availableflagcorner[0]=true
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-576)
[0414]
第二个(右上)控制点运动矢量cpmvlxcorner[1],参考索引refidxlxcorner[1],预测列表使用标志predflaglxcorner[1],双向预测权重索引bcwidxcorner[1]和可用性标志availableflagcorner[1](其中x为0和1)导出如下:
[0415]

将可用性标志availableflagcorner[1]设置为等于false。
[0416]

以下适用于(xnbtr,ynbtr),其中tr替换为b1和b0:
[0417]

当availabletr等于true且availableflagcorner[1]等于false时,以下适用,其中x为0和1:
[0418]
refidxlxcorner[1]=refidxlx[xnbtr][ynbtr]
ꢀꢀꢀꢀꢀꢀꢀ
(8-577)
[0419]
predflaglxcorner[1]=predflaglx[xnbtr][ynbtr]
ꢀꢀꢀ
(8-578)
[0420]
cpmvlxcorner[1]=mvlx[xnbtr][ynbtr]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-579)
[0421]
bcwidxcorner[1]=bcwidx[xnbtr][ynbtr]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-580)
[0422]
availableflagcorner[1]=true
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-581)
[0423]
第三个(左下)控制点运动矢量cpmvlxcorner[2],参考索引refidxlxcorner[2],预测列表使用标志predflaglxcorner[2],双向预测权重索引bcwidxcorner[2]和可用性标志availableflagcorner[2](其中x为0和1)导出如下:
[0424]

将可用性标志availableflagcorner[2]设置为等于false。
[0425]

以下适用于(xnbbl,ynbbl),其中bl替换为a1和a0:
[0426]

当availablebl等于true且availableflagcorner[2]等于false时,以下适用,其中x为0和1:
[0427]
refidxlxcorner[2]=refidxlx[xnbbl][ynbbl]
ꢀꢀꢀꢀꢀꢀ
(8-582)
[0428]
predflaglxcorner[2]=predflaglx[xnbbl][ynbbl]
ꢀꢀ
(8-583)
[0429]
cpmvlxcorner[2]=mvlx[xnbbl][ynbbl]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-584)
[0430]
bcwidxcorner[2]=bcwidx[xnbbl][ynbbl]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-585)
[0431]
availableflagcorner[2]=true
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-586)
[0432]
第四个(并置右下)控制点运动矢量cpmvlxcorner[3],参考索引refidxlxcorner[3],预测列表使用标志predflaglxcorner[3],双向预测权重索引bcwidxcorner[3]和可用性标志availableflagcorner[3](其中x为0和1)导出如下:
[0433]-将时域merge候选的参考索引refidxlxcorner[3](lx为0或1)设置为等于0。
[0434]-变量mvlxcol和availableflaglxcol(其中x为0或1)导出如下:
[0435]-如果slice_temporal_mvp_enabled_flag等于0,则将mvlxcol的两个分量都设置为等于0,并且将availableflaglxcol设置为等于0。
[0436]-否则(slice_temporal_mvp_enabled_flag等于1),以下适用:
[0437]
xcolbr=xcb cbwidth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-587)
[0438]
ycolbr=ycb cbheight
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-588)
[0439]

如果ycb》》ctblog2sizey等于ycolbr》》ctblog2sizey,ycolbr小于pic_height_in_luma_samples并且xcolbr小于pic_width_in_luma_samples,则以下适用:
[0440]

变量colcb指定colpic指定的并置图片内覆盖由((xcolbr》》3)《《3,(ycolbr》》3)
《《3)给出的位置的亮度编解码块。
[0441]

将亮度位置(xcolcb,ycolcb)设置为等于由colcb指定的并置亮度编解码块相对于由colpic指定的并置图片的左上亮度样本点的左上亮度样本点。
[0442]

将currcb,colcb,(xcolcb,ycolcb),refidxlxcorner[3]和设置为0的sbflag作为输入,调用第8.5.2.12条中指定的并置运动矢量的推导处理,并将输出分配给mvlxcol和availableflaglxcol。
[0443]

否则,将mvlxcol的两个分量都设置为等于0并且将availableflaglxcol设置为等于0。
[0444]

变量availableflagcorner[3],predflagl0corner[3],cpmvl0corner[3]和predflagl1corner[3]导出如下:
[0445]
availableflagcorner[3]=availableflagl0col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-589)
[0446]
predflagl0corner[3]=availableflagl0col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-590)
[0447]
cpmvl0corner[3]=mvl0col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-591)
[0448]
predflagl1corner[3]=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-592)
[0449]

当slice_type等于b时,变量availableflagcorner[3],predflagl1corner[3]和cpmvl1corner[3]导出如下:
[0450]
availableflagcorner[3]=availableflagl0col||availableflagl1col (8-593)
[0451][0452]
predflagl1corner[3]=availableflagl1col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-594)
[0453]
cpmvl1corner[3]=mvl1col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-595)
[0454]
bcwidxcorner[3]=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-596)
[0455]
当sps_affine_type_flag等于1时,前四个构造仿射控制点运动矢量merge候选constk(k=1..4)(包括可用性标志availableflagconstk),参考索引refidxlxconstk,预测列表使用标志predflaglxconstk,仿射运动模型索引motionmodelidcconstk,以及构造仿射控制点运动矢量cpmvlxconstk[cpidx](cpidx=0..2并且x为0或1)导出如下:
[0456]
1.当availableflagcorner[0]等于true并且availableflagcorner[1]等于true并且availableflagcorner[2]等于true时,以下适用:
[0457]

对于x被0或1替换,以下适用:
[0458]

变量availableflaglx导出如下:
[0459]

如果以下条件都为true,则将availableflaglx设置为等于true:
[0460]

predflaglxcorner[0]等于1
[0461]

predflaglxcorner[1]等于1
[0462]

predflaglxcorner[2]等于1
[0463]

refidxlxcorner[0]等于refidxlxcorner[1]
[0464]

refidxlxcorner[0]等于refidxlxcorner[2]
[0465]

否则,将availableflaglx设置为等于false.
[0466]

当availableflaglx等于true时,进行以下分配:
[0467]
predflaglxconst1=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-597)
[0468]
refidxlxconst1=refidxlxcorner[0]
ꢀꢀꢀ
(8-598)
[0469]
cpmvlxconst1[0]=cpmvlxcorner[0]
ꢀꢀꢀꢀ
(8-599)
[0470]
cpmvlxconst1[1]=cpmvlxcorner[1]
ꢀꢀꢀꢀ
(8-600)
[0471]
cpmvlxconst1[2]=cpmvlxcorner[2]
ꢀꢀꢀꢀ
(8-601)
[0472]

双向权重索引bcwidxconst1导出如下:
[0473]

如果availableflagl0等于1并且availableflagl1等于1,则将双向预测权重索引bcwidxcorner[0],bcwidxcorner[1]和bcwidxcorner[2]作为输入,调用第8.5.5.10条中指定的构造仿射控制点运动矢量merge候选的推导处理,并将输出分配给双向预测权重索引bcwidxconst1。
[0474]

否则,将双向预测权重索引bcwidxconst1设置为等于0。
[0475]

变量availableflagconst1和motionmodelidcconst1导出如下:
[0476]

如果availableflagl0或availableflagl1等于1,则将availableflagconst1设置为等于true并且将motionmodelidcconst1设置为等于2。
[0477]

否则,将availableflagconst1设置为等于false并且将motionmodelidcconst1设置为等于0。
[0478]
2.当availableflagcorner[0]等于true并且availableflagcorner[1]
[0479]
等于true并且availableflagcorner[3]等于true时,以下适用:
[0480]

对于x被0或1替换,以下适用:
[0481]

变量availableflaglx导出如下:
[0482]

如果以下所有条件都为true,则将availableflaglx设置为等于true:
[0483]

predflaglxcorner[0]等于1
[0484]

predflaglxcorner[1]等于1
[0485]

predflaglxcorner[3]等于1
[0486]

refidxlxcorner[0]等于refidxlxcorner[1]
[0487]

refidxlxcorner[0]等于refidxlxcorner[3]
[0488]

否则,将availableflaglx设置为等于false。
[0489]

当availableflaglx等于true时,进行以下分配:
[0490]
predflaglxconst2=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-602)
[0491]
refidxlxconst2=refidxlxcorner[0]
ꢀꢀꢀꢀꢀꢀ
(8-603)
[0492]
cpmvlxconst2[0]=cpmvlxcorner[0]
ꢀꢀꢀꢀꢀꢀꢀ
(8-604)
[0493]
cpmvlxconst2[1]=cpmvlxcorner[1]
ꢀꢀꢀꢀꢀꢀꢀ
(8-605)
[0494]
cpmvlxconst2[2]=cpmvlxcorner[3] cpmvlxcorner[0]-cpmvlxcorner[1] (8-606)
[0495]
cpmvlxconst2[2][0]=clip3(-2
17
,2
17-1,cpmvlxconst2[2][0])
ꢀꢀꢀ
(8-607)
[0496]
cpmvlxconst2[2][1]=clip3(-2
17
,2
17-1,cpmvlxconst2[2][1])
ꢀꢀꢀ
(8-608)
[0497]

双向预测权重索引bcwidxconst2导出如下:
[0498]

如果availableflagl0等于1并且availableflagl1等于1,则将双向预测权重索引bcwidxcorner[0],bcwidxcorner[1]和bcwidxcorner[3]作为输入,调用第8.5.5.10条中指定的构造仿射控制点运动矢量merge候选的推导处理,并将输出分配给双向预测权重索引bcwidxconst2。
[0499]

否则,将双向预测权重索引bcwidxconst2设置为等于0。
[0500]

变量availableflagconst2和motionmodelidcconst2导出如下:
[0501]

如果availableflagl0或availableflagl1等于1,则将availableflagconst2设置为等于true并且将motionmodelidcconst2设置为等于2。
[0502]

否则,讲availableflagconst2设置为等于false并且将motionmodelidcconst2设置为等于0。
[0503]
3.当availableflagcorner[0]等于true并且availableflagcorner[2]等于true并且availableflagcorner[3]等于true时,以下适用:
[0504]

对于x被0或1替换,以下适用:
[0505]

变量availableflaglx导出如下:
[0506]

如果以下条件都为true,则将availableflaglx设置为等于true:
[0507]

predflaglxcorner[0]等于1
[0508]

predflaglxcorner[2]等于1
[0509]

predflaglxcorner[3]等于1
[0510]

refidxlxcorner[0]等于refidxlxcorner[2]
[0511]

refidxlxcorner[0]等于refidxlxcorner[3]
[0512]

否则,将availableflaglx设置为等于false。
[0513]

当availableflaglx等于true时,进行以下分配:
[0514]
predflaglxconst3=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-609)
[0515]
refidxlxconst3=refidxlxcorner[0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-610)
[0516]
cpmvlxconst3[0]=cpmvlxcorner[0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-611)
[0517]
cpmvlxconst3[1]=cpmvlxcorner[3] cpmvlxcorner[0]-cpmvlxcorner[2]
ꢀꢀ
(8-612)
[0518]
cpmvlxconst3[1][0]=clip3(-2
17
,2
17-1,cpmvlxconst3[1][0])
ꢀꢀ
(8-613)
[0519]
cpmvlxconst3[1][1]=clip3(-2
17
,2
17-1,cpmvlxconst3[1][1])
ꢀꢀ
(8-614)
[0520]
cpmvlxconst3[2]=cpmvlxcorner[2]
ꢀꢀꢀꢀ
(8-615)
[0521]

双向预测权重索引bcwidxconst3导出如下:
[0522]

如果availableflagl0等于1并且availableflagl1等于1,则将双向预测权重索引bcwidxcorner[0],bcwidxcorner[2]和bcwidxcorner[3]作为输入,调用第8.5.5.10条中指定的构造仿射控制点运动矢量merge候选的推导处理,并将输出分配给双向预测权重索引bcwidxconst3。
[0523]

否则,将双向预测权重索引bcwidxconst3设置为等于0。
[0524]

变量availableflagconst3和motionmodelidcconst3导出如下:
[0525]

如果availableflagl0或availableflagl1等于1,则将availableflagconst3设置为等于true并且将motionmodelidcconst3设置为等于2。
[0526]

否则,将availableflagconst3设置为等于false并且将motionmodelidcconst3设置为等于0。
[0527]
4.当availableflagcorner[1]等于true并且availableflagcorner[2]等于true并且availableflagcorner[3]等于true时,以下适用:
[0528]

对于x被0或1替换,以下适用:
[0529]

变量availableflaglx导出如下:
[0530]

如果以下条件都为true,则将availableflaglx设置为等于true:
[0531]

predflaglxcorner[1]等于1
[0532]

predflaglxcorner[2]等于1
[0533]

predflaglxcorner[3]等于1
[0534]

refidxlxcorner[1]等于refidxlxcorner[2]
[0535]

refidxlxcorner[1]等于refidxlxcorner[3]
[0536]

否则,将availableflaglx设置为等于false。
[0537]

当availableflaglx等于true时,进行以下分配:
[0538]
predflaglxconst4=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-616)
[0539]
refidxlxconst4=refidxlxcorner[1]
ꢀꢀꢀꢀꢀꢀꢀ
(8-617)
[0540]
cpmvlxconst4[0]=cpmvlxcorner[1] cpmvlxcorner[2]-cpmvlxcorner[3]
ꢀꢀ
(8-618)
[0541]
cpmvlxconst4[0][0]=clip3(-2
17
,2
17-1,cpmvlxconst4[0][0])
ꢀꢀ
(8-619)
[0542]
cpmvlxconst4[0][1]=clip3(-2
17
,2
17-1,cpmvlxconst4[0][1])
ꢀꢀ
(8-620)
[0543]
cpmvlxconst4[1]=cpmvlxcorner[1]
ꢀꢀꢀꢀ
(8-621)
[0544]
cpmvlxconst4[2]=cpmvlxcorner[2]
ꢀꢀꢀꢀ
(8-622)
[0545]

双向预测权重索引bcwidxconst4导出如下:
[0546]

如果availableflagl0等于1并且availableflagl1等于1,则将双向预测权重索引bcwidxcorner[1],bcwidxcorner[2]和bcwidxcorner[3]作为输入,调用第8.5.5.10条中指定的构造仿射控制点运动矢量merge候选的推导处理,并将输出分配给双向预测权重索引bcwidxconst4。
[0547]

否则,将双向预测权重索引bcwidxconst4设置为等于0。
[0548]

变量availableflagconst4和motionmodelidcconst4导出如下:
[0549]

如果availableflagl0或availableflagl1等于1,将availableflagconst4设置为等于true并且将motionmodelidcconst4设置为等于2。
[0550]

否则,将availableflagconst4设置为等于false并且将motionmodelidcconst4设置为等于0。
[0551]
最后两个构造仿射控制点运动矢量merge候选constk(k=5..6)(包括可用性标志availableflagconstk),参考索引refidxlxconstk,预测列表使用标志predflaglxconstk,仿射运动模型索引motionmodelidcconstk,以及构造仿射控制点运动矢量cpmvlxconstk[cpidx](cpidx=0..2并且x为0或1)导出如下:
[0552]
5.当availableflagcorner[0]等于true并且availableflagcorner[1]
[0553]
等于true时,以下适用:
[0554]

对于x被0或1替换,以下适用:
[0555]

变量availableflaglx导出如下:
[0556]

如果以下条件都为true,则将availableflaglx设置为等于true:
[0557]

predflaglxcorner[0]等于1
[0558]

predflaglxcorner[1]等于1
[0559]

refidxlxcorner[0]等于refidxlxcorner[1]
[0560]

否则,将availableflaglx设置为等于false。
[0561]

当availableflaglx等于true时,进行以下分配:
[0562]
predflaglxconst5=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-623)
[0563]
refidxlxconst5=refidxlxcorner[0]
ꢀꢀꢀ
(8-624)
[0564]
cpmvlxconst5[0]=cpmvlxcorner[0]
ꢀꢀꢀꢀ
(8-625)
[0565]
cpmvlxconst5[1]=cpmvlxcorner[1]
ꢀꢀꢀ
(8-626)
[0566]

双向预测权重索引bcwidxconst5导出如下:
[0567]

如果availableflagl0等于1,并且availableflagl1等于1,并且bcwidxcorner[0]等于bcwidxcorner[1],则将bcwidxconst5设置为等于bcwidxcorner[0]。
[0568]

否则,将双向预测权重索引bcwidxconst5设置为等于0。
[0569]

变量availableflagconst5和motionmodelidcconst5导出如下:
[0570]

如果availableflagl0或availableflagl1等于1,则将availableflagconst5设置为等于true并且将motionmodelidcconst5设置为等于1。
[0571]

否则,将availableflagconst5设置为等于false并且将motionmodelidcconst5设置为等于0。
[0572]
6.当availableflagcorner[0]等于true并且availableflagcorner[2]等于true时,以下适用:
[0573]

对于x被0或1替换,以下适用:
[0574]

变量availableflaglx导出如下:
[0575]

如果以下条件都为true,则将availableflaglx设置为等于true:
[0576]

predflaglxcorner[0]等于1
[0577]

predflaglxcorner[2]等于1
[0578]

refidxlxcorner[0]等于refidxlxcorner[2]
[0579]

否则,将availableflaglx设置为等于false。
[0580]

当availableflaglx等于true时,以下适用:
[0581]

第二控制点运动矢量cpmvlxcorner[1]导出如下:
[0582]
cpmvlxcorner[1][0]=(cpmvlxcorner[0][0]《《7) ((cpmvlxcorner[2][1]-cpmvlxcorner[0][1])
ꢀꢀꢀ
(8-627)
[0583]
《《(7 log2(cbheight/cbwidth)))
[0584]
cpmvlxcorner[1][1]=(cpmvlxcorner[0][1]《《7) ((cpmvlxcorner[2][0]-cpmvlxcorner[0][0])
ꢀꢀꢀ
(8-628)
[0585]
《《(7 log2(cbheight/cbwidth)))
[0586]

将mvx设置为等于cpmvlxcorner[1],rightshift设置为等于7,并且leftshift设置为等于0作为输入,调用第8.5.2.14条中指定的运动矢量的取整处理,并将取整的cpmvlxcorner[1]作为输出。
[0587]

进行以下分配:
[0588]
predflaglxconst6=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-629)
[0589]
refidxlxconst6=refidxlxcorner[0]
ꢀꢀꢀ
(8-630)
[0590]
cpmvlxconst6[0]=cpmvlxcorner[0]
ꢀꢀꢀꢀ
(8-631)
[0591]
cpmvlxconst6[1]=cpmvlxcorner[1]
ꢀꢀꢀꢀ
(8-632)
[0592]
cpmvlxconst6[0][0]=clip3(-2
17
,2
17-1,cpmvlxconst6[0][0])
ꢀꢀ
(8-633)
[0593]
cpmvlxconst6[0][1]=clip3(-2
17
,2
17-1,cpmvlxconst6[0][1])
ꢀꢀ
(8-634)
[0594]
cpmvlxconst6[1][0]=clip3(-2
17
,2
17-1,cpmvlxconst6[1][0])
ꢀꢀ
(8-635)
[0595]
cpmvlxconst6[1][1]=clip3(-2
17
,2
17-1,cpmvlxconst6[1][1])
ꢀꢀ
(8-636)
[0596]

双向预测权重索引bcwidxconst6导出如下:
[0597]

如果availableflagl0等于1并且availableflagl1等于1并且bcwidxcorner[0]等于bcwidxcorner[2],则将bcwidxconst6设置为等于bcwidxcorner[0]。
[0598]

否则,将双向预测权重索引bcwidxconst6设置为等于0。
[0599]

变量availableflagconst6和motionmodelidcconst6导出如下:
[0600]

如果availableflagl0或availableflagl1等于1,则将availableflagconst6设置为等于true并且将motionmodelidcconst6设置为等于1。
[0601]
否则,将availableflagconst6设置为等于false并且将motionmodelidcconst6设置为等于0。
[0602]
2.3.4.2常规merge列表
[0603]
与merge列表设计不同,vvc中采用基于历史的运动矢量预测(hmvp)方法。
[0604]
在hmvp中,存储先前编解码的运动信息。先前编解码块的运动信息被定义为hmvp候选。将多个hmvp候选存储在一个名为hmvp表的表中,并且在动态的编码/解码处理期间维护该表。当开始对新条带进行编码/解码时,hmvp表被清空。每当存在帧间编解码块时,将相关联的运动信息作为新的hmvp候选添加到表的最后一个条目中。图25描绘了整体编解码流程。
[0605]
可以在amvp和merge候选列表构造处理中使用hmvp候选。图26描绘了修改的merge候选列表构造处理。当tmvp候选插入后merge候选列表未满时,可以使用hmvp表中存储的hmvp候选来填充merge候选列表。考虑到一个块在运动信息方面通常与最临近块具有更高的相关性,将表中的hmvp候选按索引的降序插入。将表中的最后一个条目首先添加到列表中,而第一个条目则添加到最后。类似地,对hmvp候选应用冗余移除。一旦可用merge候选总数达到允许信令通知的最大merge候选数,则终止merge候选列表构造处理。
[0606]
图25示出了仿射merge模式的候选位置。
[0607]
图26示出了修改的merge列表构造处理。
[0608]
2.3.5jvet-n0236
[0609]
该贡献提出了一种用光流细化基于子块的仿射运动补偿预测的方法。在进行基于子块的仿射运动补偿后,通过加入由光流方程导出的差来细化预测样本点,称为使用光流的预测细化(prof)。所提出的方法可以在不增加存储器访问带宽的情况下,实现像素级粒度的帧间预测。
[0610]
为了获得更精细的运动补偿粒度,该贡献提出了一种使用光流细化基于子块的仿射运动补偿预测的方法。在进行基于子块的仿射运动补偿之后,通过加入由光流方程导出的差来细化亮度预测样本点。按以下四个步骤描述所提出的prof(使用光流的预测细化):
[0611]
步骤1)执行基于子块的仿射运动补偿以生成子块预测i(i,j)。
[0612]
步骤2)使用3抽头滤波器在每个样本点位置处计算子块预测的空域梯度g
x
(i,j)和gy(i,j)。
[0613]gx
(i,j)=i(i 1,j)-i(i-1,j)
[0614]gy
(i,j)=i(i,j 1)-i(i,j-1)
[0615]
将子块预测在每一侧扩展一个像素用于梯度计算。为了减少存储器带宽和复杂度,扩展边界上的像素是从参考图片中最近的整数像素位置复制的。因此,避免了对填充区域进行额外的插值。
[0616]
步骤3)利用光流方程计算亮度预测细化。
[0617]
δi(i,j)=g
x
(i,j)*δv
x
(i,j) gy(i,j)*δvy(i,j)
[0618]
其中δv(i,j)是为样本点位置(i,j)计算的像素mv(表示为v(i,j))和像素(i,j)所属的子块的子块mv之间的差,如图27所示。
[0619]
由于仿射模型参数和相对于子块中心的像素位置不会从子块到子块改变,因此可为第一个子块计算δv(i,j),并可重复用于同一cu中的其他子块。让x和y作为从像素位置到子块中心的水平和垂直偏移,则δv(i,j)可以由下面的方程导出,
[0620][0621]
对于4参数仿射模型,
[0622][0623]
对于6参数仿射模型,
[0624][0625]
其中(v
0x
,v
0y
),(v
1x
,v
1y
),(v
2x
,v
2y
)是左上、右上和左下控制点运动矢量,w和h是cu的宽度和高度。
[0626]
步骤4)最后,将亮度预测细化添加到子块预测(v
0x
,v
0y
),(v
1x
,v
1y
),(v
2x
,v
2y
)中。最终预测i'由下等式产生。
[0627]i′
(i,j)=i(i,j) δi(i,j)
[0628]
2.3.6 pct/cn2018/125420和pct/cn2018/116889关于atmvp的改进
[0629]
在这些贡献中,我们公开了使atmvp设计更加合理和高效的几种方法,将二者的全部以参考方式并入本文。
[0630]
3.实施例解决的问题的示例
[0631]
在vvc的当前设计中,基于子块的预测模式存在以下问题:
[0632]
1)当常规amvr关闭时,sps中的仿射amvr标志可能是打开的。
[0633]
2)当仿射模式关闭时,sps中的仿射amvr标志可能是打开的。
[0634]
3)当未应用atmvp时,未正确设置maxnumsubblockmergecand。
[0635]
4)当为条带禁用tmvp、并且为序列启用atmvp时,未识别b条带的并置图片,然而,在atmvp处理中需要并置图片。
[0636]
5)tmvp和atmvp二者都需要从参考图片中提取运动信息,在当前的设计中,假设两者是相同的,这可能是次优的。
[0637]
6)prof应该有一个控制其开/关的标志。
[0638]
4.实施例
[0639]
下面的详细发明应被视为解释一般概念的示例。不应对这些发明做出狭义的解释。此外,这些发明可以以任何方式组合在一起。尽管使用可选时域运动矢量预测(atmvp)技术的示例来描述一些实施例,但是在替代实施例中,基于子块的时域运动矢量预测(sbtmvp)技术也可以适用。
[0640]
下面描述的方法也可以适用于其他类型的运动候选列表(诸如amvp候选列表)。
[0641]
1.是否信令通知仿射amvr的控制信息可取决于是否应用仿射预测。
[0642]
a)在一个示例中,如果不应用仿射预测,则不信令通知仿射amvr的控制信息。
[0643]
b)在一个示例中,如果一致性比特流中未应用仿射预测,则应禁用仿射amvr(例如,仿射amvr的使用应被通知为假)。
[0644]
c)在一个示例中,如果不应用仿射预测,则可忽略仿射amvr的信令通知的控制信息并且推断为不应用。
[0645]
2.是否信令通知仿射amvr的控制信息可取决于是否应用常规amvr。
[0646]
a)在一个示例中,如果不应用常规amvr,则不信令通知仿射amvr的控制信息。
[0647]
b)在一个示例中,如果一致性比特流中未应用常规amvr,则应禁用仿射amvr(例如,仿射amvr标志的使用被信令通知为假)。
[0648]
c)在一个示例中,如果不应用常规amvr,则可以忽略仿射amvr的信令通知的控制信息并推断为不应用。
[0649]
d)在一个示例中,可以在序列/图片/条带/片组/片/砖/其它视频单元中信令通知自适应运动矢量分辨率的指示(例如,一个标志),以控制多种编解码方法对amvr的使用,多种编解码方法诸如常规amvr(即,应用于平移运动的amvr)和仿射amvr(即,应用于仿射运动的amvr)。
[0650]
i.在一个示例中,可以在sps/dps/vps/pps/图片标头/条带标头/片组标头中信令通知这样的指示。
[0651]
ii.此外,可选地,是否信令通知常规amvr和/或仿射amvr的使用指示可取决于该指示。
[0652]
1)在一个示例中,当这样的指示指示自适应运动矢量分辨率被禁用时,可以跳过常规amvr的使用指示的信令。
[0653]
2)在一个示例中,当这样的指示指示自适应运动矢量分辨率被禁用时,可以跳过
仿射amvr的使用指示的信令。
[0654]
iii.此外,可选地,是否信令通知仿射amvr的使用指示可取决于仿射预测模式的指示和使用。
[0655]
1)例如,如果仿射预测模式被禁用,则可以跳过这种指示。
[0656]
iv.在一个示例中,如果只能从先前的图片预测当前条带/片组/图片并且可以导出为假,则可以不信令通知这样的指示。
[0657]
v.在一个示例中,如果只能从后续的图片预测当前条带/片组/图片并且可以导出为假,则可以不信令通知这样的指示。
[0658]
vi.在一个示例中,如果可以从先前的图片和后续的图片二者预测当前的条带/片组/图片,则可以信令通知这样的指示。
[0659]
3.是否信令通知仿射amvr的控制信息可取决于是否应用常规amvr,以及是否应用仿射预测。
[0660]
a)在一个示例中,如果未应用仿射预测或未应用常规amvr,则不信令通知仿射amvr的控制信息。
[0661]
i.在一个示例中,如果一致性比特流中未应用仿射预测或未应用常规amvr,则仿射amvr应被禁用(例如,仿射amvr的使用应被信令通知为假)。
[0662]
ii.在一个示例中,如果未应用仿射预测或未应用常规amvr,则忽略仿射amvr的信令通知的控制信息并推断为不应用。
[0663]
b)在一个示例中,如果未应用仿射预测且未应用常规amvr,则不信令通知仿射amvr的控制信息。
[0664]
i.在一个示例中,如果一致性比特流中未应用仿射预测且未应用常规amvr,则仿射amvr应被禁用(例如,仿射amvr的使用应被信令通知为假)。
[0665]
ii.在一个示例中,如果未应用仿射预测且未应用常规amvr,则忽略仿射amvr的信令通知的控制信息并推断为不应用。
[0666]
4.子块merge候选列表中的最大候选数(表示为maxnumsubblockmergecand)可取决于是否启用atmvp。是否启用atmvp不能仅由sps中的sps_sbtmvp_enabled_flag指示。
[0667]
a)例如,是否启用atmvp可不仅取决于序列级中信令通知的标志(例如,sps中的sps_sbtmvp_enabled_flag)。它还可以取决于序列/图片/条带/片组/片级的任何其他视频单元(诸如vps、dps、aps、pps、条带标头、片组标头、图片标头等)中信令通知的一个或多个语法元素。
[0668]
i.可选地,是否启用atmvp可以在没有信令的情况下隐式地导出。
[0669]
ii.例如,如果没有为图片、条带或片组启用tmvp,则不会为图片、条带或片组启用atmvp。
[0670]
b)例如,是否和/或如何信令通知与maxnumsubblockmergecand相关的语法元素(诸如five_minus_max_num_subblock_merge_cand)可取决于是否启用atmvp。
[0671]
i.例如,如果未启用atmvp,则在一致性比特流中five_minus_max_num_subblock_merge_cand可以是受限的。
[0672]
1)例如,如果未启用atmvp,则不允许five_minus_max_num_subblock_merge_cand等于固定数。在两个示例中,固定数可以是0或5。
[0673]
2)例如,如果未启用atmvp,则不允许five_minus_max_num_subblock_merge_cand大于固定数。在一个示例中,固定数可以是4。
[0674]
3)例如,如果未启用atmvp,则不允许five_minus_max_num_subblock_merge_cand小于固定数。在一个示例中,固定数可以是1。
[0675]
ii.例如,当不存在时,可将five_minus_max_num_subblock_merge_cand设置为five_minus_max_num_subblock_merge_cand-(atmvp被启用?0:1),其中是否启用atmvp不仅仅取决于sps中的标志(诸如sps_sbtmvp_enabled_flag)。
[0676]
c)例如,可以取决于一个或多个语法元素(例如,five_minus_max_num_subblock_merge_cand)以及是否启用atmvp来导出maxnumsubblockmergecand。
[0677]
i.例如,可将maxnumsubblockmergecand导出为maxnumsubblockmergecand=5-five_minus_max_num_subblock_merge_cand

(atmvp被启用?0:1)。
[0678]
d)当启用atmvp且禁用仿射运动预测时,可将maxnumsubblockmergecand设置为等于1。
[0679]
5.可将默认候选(具有平移和/或仿射运动)附加在子块merge候选列表中。默认候选可以具有诸如子块预测的预测类型,也可以具有整块预测。
[0680]
a)在一个示例中,默认候选的整块预测可以遵循平移运动模型(诸如常规merge候选的整块预测)。
[0681]
b)在一个示例中,默认候选的子块预测可以遵循平移运动模型(诸如atmvp候选的子块预测)。
[0682]
c)在一个示例中,默认候选的子块预测可以遵循仿射运动模型(诸如仿射merge候选的子块预测)。
[0683]
d)在一个示例中,默认候选可以具有等于0的仿射标志。
[0684]
i.可选地,默认候选可以具有等于1的仿射标志。
[0685]
e)在一个示例中,对于块的后续处理可取决于块是否使用默认候选编解码。
[0686]
i.在一个示例中,块被视为用整块预测编解码(例如,所选择的默认候选使用整块预测),并且
[0687]
1)例如,可不将prof应用于块。
[0688]
2)例如,可以对块应用dmvr(解码侧运动矢量细化)。
[0689]
3)例如,可将bdof(双向光流)应用于块。
[0690]
4)例如,可不将去方块滤波应用于块中子块之间的边界。
[0691]
ii.在一个示例中,块被视为用子块预测编解码(例如,所选择的默认候选使用子块预测),并且
[0692]
1)例如,可将prof应用于块。
[0693]
2)例如,可以不对块应用dmvr(解码侧运动矢量细化)。
[0694]
3)例如,可不将bdof(双向光流)应用于块。
[0695]
4)例如,可将去方块滤波应用于块中子块之间的边界。
[0696]
iii.在一个示例中,块被视为用平移预测编解码,并且
[0697]
1)例如,可不将prof应用于块。
[0698]
2)例如,可以对块应用dmvr(解码侧运动矢量细化)。
[0699]
3)例如,可将bdof(双向光流)应用于块。
[0700]
4)例如,可不将去方块滤波应用于块中子块之间的边界。
[0701]
iv.在一个示例中,块被视为用仿射预测编解码,并且
[0702]
1)例如,可将prof应用于块。
[0703]
2)例如,可以不对块应用dmvr(解码侧运动矢量细化)。
[0704]
3)例如,可不将bdof(双向光流)应用于块。
[0705]
4)例如,可将去方块滤波应用于块中子块之间的边界。
[0706]
f)在一个示例中,可以将一种或多种默认候选放入子块merge候选列表中。
[0707]
i.例如,可将具有整块预测的第一种默认候选和具有子块预测的第二种默认候选都放入子块merge候选列表中。
[0708]
ii.例如,可将具有平移预测的第一种默认候选和具有仿射预测的第二种默认候选都放入子块merge候选列表中。
[0709]
iii.每种类型的默认候选的最大数量可取决于是否启用atmvp和/或是否启用仿射预测。
[0710]
g)在一个示例中,对于b条带,对于所有子块,默认候选都具有零运动矢量,则应用双向预测,并且将两个参考图片索引都设置为0。
[0711]
h)在一个示例中,对于p条带,对于所有子块,默认候选都具有零运动矢量,则应用单向预测,并且将参考图片索引设置为0。
[0712]
i)将哪种默认候选放入子块merge候选列表可取决于atmvp和/或仿射预测模式的使用。
[0713]
i.在一个示例中,当启用仿射预测模式时,可以添加仿射标志等于1的仿射运动模型的默认候选(例如,所有cpmv都等于0)。
[0714]
ii.在一个示例中,当仿射预测模式和atmvp都被启用时,可以添加仿射标志为0的平移运动模型的默认候选(例如,零mv)和/或仿射标志为1的仿射运动模型的默认候选(例如,所有cpmv都等于0)。
[0715]
1)在一个示例中,可以在仿射运动模型的默认候选之前添加平移运动模型的默认候选。
[0716]
iii.在一个示例中,当仿射预测被禁用并且atmvp被启用时,可以添加仿射标志等于0的平移运动模型的默认候选,而不添加仿射运动模型的默认候选。
[0717]
j)在检查了atmvp候选和/或空域/时域/构造仿射merge候选之后,当子块merge候选未填满时,可以应用上述方法,
[0718]
6.可以在条带标头、或片组标头、或条带标头中信令通知有关atmvp的信息(诸如是否为条带、或片组、或图片启用atmvp)。
[0719]
a)在一个示例中,atmvp的并置图片可与用于tmvp的并置图片不同。
[0720]
b)在一个示例中,可不对i条带、或i片组、或i图片信令通知关于atmvp的信息。
[0721]
c)在一个示例中,只有在序列级信令通知将启用atmvp时(例如,sps_sbtmvp_enabled_flag等于1)才信令通知有关atmvp的信息。
[0722]
d)在一个示例中,如果对条带、或片组、或图片禁用了tmvp,则不会为该条带、或片组、或图片信令通知有关atmvp的信息。
[0723]
i.例如,在这种情况下,可以推断atmvp被禁用。
[0724]
e)如果对条带(或片组、或图片)禁用tmvp,则可以推断对该条带(或片组、或图片)禁用atmvp,而不考虑atmvp的使用的信令通知的信息。
[0725]
7.是否添加基于子块的时域merge候选(例如,时域仿射运动候选)可取决于tmvp的使用。
[0726]
a)可选地,可取决于sps_temporal_mvp_enabled_flag的值。
[0727]
b)可选地,可取决于slice_temporal_mvp_enabled_flag的值。
[0728]
c)当sps_temporal_mvp_enabled_flag或slice_temporal_mvp_enabled_flag为真时,可以将基于子块的时域merge候选添加到子块merge候选中。
[0729]
i.可选地,当sps_temporal_mvp_enabled_flag和slice_temporal_mvp_enabled_flag都为真时,可以将基于子块的时域merge候选添加到子块merge候选中。
[0730]
ii.可选地,当sps_temporal_mvp_enabled_flag或slice_temporal_mvp_enabled_flag为假时,不应将基于子块的时域merge候选添加到子块merge候选中。
[0731]
d)可选地,可以在序列/图片/条带/片组/片/砖/其他视频单元中信令通知添加基于子块的时域merge候选的指示。
[0732]
i.另外,可选地,还可以根据时域运动矢量预测的使用(例如,sps_temporal_mvp_enabled_flag和/或slice_temporal_mvp_enabled_flag)有条件地将其信令通知。
[0733]
8.可以根据需要访问时域运动信息的多个编解码方法的使用来有条件地信令通知并置参考图片的指示,诸如并置参考图片是从哪个参考图片列表导出的(例如,collocated_from_l0_flag)和/或并置参考图片的参考索引。
[0734]
a)在一个示例中,所述条件是启用atmvp或tmvp中的一个。
[0735]
b)在一个示例中,所述条件是启用atmvp或tmvp或仿射运动信息预测中的一个。
[0736]
9.在一个示例中,只有当为当前图片/条带/片组同时启用atmvp和tmvp时,才可以将基于子块的时域merge候选放入子块merge候选列表中。
[0737]
a)可选地,只有当为当前图片/条带/片组启用atmvp时,才可以将基于子块的时域merge候选放入子块merge候选列表中。
[0738]
10.maxnumsubblockmergecand可取决于是否可以使用基于子块的时域merge候选。
[0739]
a)可选地,maxnumsubblockmergecand可取决于是否可以使用tmvp。
[0740]
b)例如,如果不能使用基于子块的时域merge候选(或tmvp),则maxnumsubblockmergecand不应大于4。
[0741]
i.例如,如果不能使用基于子块的时域merge候选(或tmvp)并且可以使用atmvp,则maxnumsubblockmergecand不应大于4。
[0742]
ii.例如,如果不能使用基于子块的时域merge候选(或tmvp)并且不能使用atmvp,则maxnumsubblockmergecand不应大于4。
[0743]
iii.例如,如果不能使用基于子块的时域merge候选(或tmvp)并且不能使用atmvp,则maxnumsubblockmergecand不应大于3。
[0744]
11.可以在序列/图片/条带/片组/片/ctu行/ctu/cu/pu/tu级的任何视频单元(如vps、dps、aps、pps、条带标头、片组标头、图片标头、ctu、cu、pu等)中信令通知指示是否和/
或如何进行prof的一个或多个语法元素。
[0745]
a)在一个示例中,可以取决于其他语法元素(诸如指示仿射预测是否启用的语法元素)有条件地信令通知一个或多个语法元素(诸如指示prof是否启用的标志)。
[0746]
i.例如,当仿射预测被禁用时,可不信令通知指示是否启用prof的语法元素,并且推断prof被禁用。
[0747]
b)在一个示例中,当一致性比特流中禁用仿射预测时,必须将指示是否启用prof的语法元素设置为禁用prof。
[0748]
c)在一个示例中,当一致性比特流中禁用仿射预测时,忽略指示是否启用prof的信令通知的语法元素,并且推断prof被禁用。
[0749]
d)在一个示例中,可以信令通知一个语法元素,以指示prof是否仅应用于单向预测。
[0750]
5.实施例
[0751]
对于以下所有实施例,可以在不同的级别上信令通知语法元素,诸如在sps/pps/条带标头/图片标头/片组标头/片或其它视频单元中。
[0752]
5.1实施例1:sps/pps/条带标头/片组标头中sps_affine_amvr_enabled_flag的语法设计示例
[0753][0754]
可选地,
[0755][0756]
可选地,
[0757][0758]
可选地,
[0759][0760]
5.2实施例2:five_minus_max_num_subblock_merge_cand的语义示例
[0761]
five_minus_max_num_subblock_merge_cand指定从5减去条带中支持的基于子块
的merge运动矢量预测(mvp)最大候选数目。当five_minus_max_num_subblock_merge_cand不存在时,推断它等于5

(sps_sbtmvp_enabled_flag&&slice_temporal_mvp_enabled_flag)。基于子块的merge mvp最大候选数目maxnumsubblockmergecand导出如下:
[0762]
maxnumsubblockmergecand=5-five_minus_max_num_subblock_merge_cand maxnumsubblockmergecand的值应在0到5之间(包括0和5)。
[0763]
可选地,以下也可适用:
[0764]
当启用atmvp且禁用仿射时,maxnumsubblockmergecand的值应在0到1的范围内(包括0和1)。当启用仿射时,maxnumsubblockmergecand的值应在0到5之间(包括0和5)。
[0765]
5.3实施例3:条带标头(或片组标头)中atmvp语法元素的示例
[0766][0767]
可选地,
[0768][0769]
5.4.实施例4:条带标头(或片组标头)中基于子块的时域merge候选的语法元素示例
[0770][0771][0772]
sub_block_tmvp_merge_candidate_enalbed_flag指定是否可以使用基于子块的时域merge候选。
[0773]
如果不存在,则sub_block_tmvp_merge_candidate_enalbed_flag被推断为0。
[0774]
8.5.5.6构造仿射控制点运动矢量merge候选的推导处理
[0775]

[0776]
第四个(并置右下)控制点运动矢量cpmvlxcorner[3],参考索引refidxlxcorner[3],预测列表使用标志predflaglxcorner[3],双向预测权重索引bcwidxcorner[3]和可用性标志availableflagcorner[3](其中x为0和1)导出如下:
[0777]-将时域merge候选的参考索引refidxlxcorner[3](lx为0或1)设置为等于0。
[0778]-变量mvlxcol和availableflaglxcol(其中x为0或1)导出如下:
[0779]-如果slice_temporal_mvp_enabled_flag sub_block_tmvp_merge_candidate_enalbed_flag等于0,或者mvlxcol的两个分量都设置为等于0,并且将availableflaglxcol设置为等于0。
[0780]-否则(slice_temporal_mvp_enabled_flag sub_block_tmvp_merge_candidate_enalbed_flag等于1),以下适用:
[0781]

[0782]
5.5实施例4:sps中控制prof的语法/语义示例
[0783]
sps_affine_enabled_flagu(1)if(sps_affine_enabled_flag) sps_prof_flagu(1)
[0784]
sps_prof_flag指定prof是否可用于帧间预测。如果sps_prof_flag等于0,则不应用prof。否则(sps_prof_flag等于1),应用prof。当不存在时,sps_prof_flag的值被推断为等于0。
[0785]
图28是视频处理装置1400的框图。装置1400可用于实现本文所述的一种或多种方法。装置1400可以被实现在智能手机、平板电脑、计算机、物联网(iot)接收器等中。装置1400可以包括一个或多个处理器1402、一个或多个存储器1404和视频处理硬件1406。处理器1402可以被配置成实现本文中描述的一个或多个方法。存储器1404可用于存储用于实现本文所述的方法和技术的数据和代码。视频处理硬件1406可用于在硬件电路中实现本文档中描述的一些技术。
[0786]
图29是视频处理的示例方法2900的流程图。方法2900包括:使用仿射自适应运动矢量分辨率技术执行(2902)视频的当前视频块和所述视频的比特流表示之间的转换,使得所述比特流表示基于规则选择性地包括与所述仿射自适应运动矢量分辨率技术相关的控制信息。
[0787]
下面的示例列表提供了可以解决本文中描述的技术问题以及其他问题的实施例。
[0788]
1.一种视频处理方法,包括:使用仿射自适应运动矢量分辨率技术执行视频的当前视频块和所述视频的比特流表示之间的转换,使得所述比特流表示基于规则选择性地包括与所述仿射自适应运动矢量分辨率技术相关的控制信息。
[0789]
2.根据示例1所述的方法,其中,所述规则指定:在所述转换期间使用仿射预测的情况下包括所述控制信息,并且在所述转换期间不使用仿射预测的情况下省略所述控制信息。
[0790]
3.根据示例1所述的方法,其中,所述规则还指定:在仿射预测未应用于所述转换的情况下,在所述转换期间排除使用自适应运动矢量分辨率步骤。
[0791]
在第4节第1项中提供了与上述示例相关的附加示例和实施例。
[0792]
4.根据示例1所述的方法,其中,所述规则指定:基于是否在所述转换期间使用常规自适应运动矢量分辨率步骤来包括或省略所述控制信息。
[0793]
5.根据示例4所述的方法,其中,所述规则指定:在所述转换期间不应用常规自适应运动矢量分辨率步骤的情况下省略所述控制信息。
[0794]
6.根据示例1所述的方法,其中,所述控制信息包括指示在所述转换期间使用多个自适应运动矢量分辨率技术的相同字段。
[0795]
在第4节第2项中提供了与上述示例相关的附加示例和实施例。
[0796]
7.根据示例1所述的方法,其中,所述规则指定:基于是否在所述转换期间使用常规自适应运动矢量分辨率和仿射预测来包括或省略所述控制信息。
[0797]
8.根据示例7所述的方法,其中,所述规则指定:在所述转换期间不应用常规自适应运动矢量分辨率和仿射预测的情况下省略所述控制信息。
[0798]
在第4节第3项中提供了与上述示例相关的附加示例和实施例。
[0799]
9.一种视频处理方法,包括:在当前视频块和比特流表示之间的转换期间,确定用于所述转换的子块merge候选列表,其中子块merge候选列表中的最大候选数目取决于是否将可选时域运动矢量预测(atmvp)应用于所述转换;以及使用所述子块merge候选列表执行所述转换。
[0800]
10.根据示例9所述的方法,其中,所述比特流表示中的字段指示是否将可选时域运动矢量预测应用于所述转换。
[0801]
11.根据示例10所述的方法,其中,所述字段位于序列级、或视频参数集级、或图片参数集级、或条带级、或片组级、或图片标头级。
[0802]
12.根据示例9所述的方法,其中,在将atmvp应用于所述转换并且对所述转换禁用仿射预测的情况下,将最大候选数目被设置为等于1。
[0803]
在第4节第4项中提供了与上述示例相关的附加示例和实施例。
[0804]
13.一种视频处理方法,包括:在当前视频块和比特流表示之间的转换期间,将一个或多个默认merge候选附加到用于所述转换的子块merge候选列表;以及使用具有附加的一个或多个默认merge候选的所述子块merge候选列表来执行所述转换。
[0805]
14.根据示例13所述的方法,其中,所述默认候选与子块预测类型相关联。
[0806]
15.根据示例14所述的方法,其中,所述子块预测类型包括基于平移运动模型或仿射运动模型的预测。
[0807]
16.根据示例13所述的方法,其中,所述默认候选与整块预测类型相关联。
[0808]
17.根据示例14所述的方法,其中,所述整块预测类型包括基于平移运动模型或仿射运动模型的预测。
[0809]
在第4节第5项中提供了与上述示例相关的附加示例和实施例。
[0810]
18.一种视频处理方法,包括:在视频的当前视频块和比特流表示之间的转换期间,确定可选时域运动矢量预测(atmvp)对所述转换的适用性,其中所述比特流表示中的一个或多个比特对应于所述确定;以及基于所述确定执行所述转换。
[0811]
19.根据示例18所述的方法,其中,所述一个或多个比特包括在图片标头、条带标头或片组标头。
[0812]
20.根据示例18-19所述的方法,其中,所述转换使用用于atmvp的并置图片,所述用于atmvp的并置图片与用于使用时域运动矢量预测(tmvp)的所述视频的所述转换的另一并置图片不同。
[0813]
第4节第6项中提供了与上述示例相关的附加示例和实施例。
[0814]
21.一种视频处理方法,包括:基于与时域运动矢量预测(tmvp)步骤或可选时域运动矢量预测(atmvp)相关联的条件选择性地建立子块merge候选列表;以及基于所述子块merge候选列表执行当前视频块和所述当前视频块的比特流表示之间的转换。
[0815]
22.根据示例21所述的方法,其中,所述条件对应于在比特流表示的序列参数集级、或条带级、或片级、或砖级中标志的存在。
[0816]
23.根据示例21所述的方法,其中,仅当对所述当前视频块所属的图片、或片、或片组同时启用了可选运动矢量预测和tmvp步骤时,才使用基于子块的时域merge候选来构建所述子块merge候选列表。
[0817]
24.根据示例21所述的方法,其中,仅当对所述当前视频块所属的图片、或片、或片组同时启用atmvp和tmvp步骤时,才使用基于子块的时域merge候选来构建所述子块merge候选列表。
[0818]
25.根据示例21所述的方法,其中,仅当对当前视频块所属的图片、或片、或片组启用atmvp并且禁用tmvp步骤时,才使用基于子块的时域merge候选来构建所述子块merge候选列表。
[0819]
在第4节第7项和第9项中提供了与上述示例相关的附加示例和实施例。
[0820]
26.根据示例21-25所述的方法,其中,基于在所述转换期间是否使用基于子块的时域merge候选来包括或省略所述比特流表示中的标志。
[0821]
在第4节第10项中提供了与上述示例相关的附加示例和实施例。
[0822]
27.一种视频处理方法,包括:基于规则,使用使用光流(prof)的预测细化选择性地执行视频的当前视频块和所述视频的比特流表示之间的转换,其中所述规则包括(1)在所述比特流表示中包含或省略字段,或(2)是否将仿射预测应用于所述转换。
[0823]
28.根据示例27所述的方法,其中,所述规则指定:由于对所述转换禁用仿射预测而禁用prof。
[0824]
29.根据示例27所述的方法,其中,在仿射预测被禁用的情况下,则推断对所述转换禁用prof。
[0825]
30.根据示例27所述的方法,其中,所述规则还指定:基于所述比特流表示中的对应标志,仅将prof用于单向预测。
[0826]
在第4节第11项中提供了与上述示例相关的附加示例和实施例。
[0827]
31.一种视频处理装置,其包括处理器,所述处理器被配置成实现示例1至30中的一个或多个。
[0828]
32.一种其上存储有代码的计算机可读介质,所述代码在由处理器执行时,使所述处理器实现示例1至30中任一个或多个中所述的方法。
[0829]
在本文的示例列表中,术语“转换”可指为当前视频块生成比特流表示或从比特流表示生成当前视频块。比特流表示不需要表示连续的比特组,并且可以被划分为包括在标头字段中的比特或包括在表示编解码像素值信息的码字中的比特。
[0830]
在上面的示例中,所述规则可以是预先定义的并且为编码器和解码器所知。
[0831]
图30是示出其中可以实现本文公开的各种技术的示例视频处理系统3000的框图。各种实现可以包括系统3000的部分或全部组件。系统3000可以包括用于接收视频内容的输入3002。视频内容可以原始或未压缩格式(例如,8或10比特多分量像素值)接收,或者可以压缩或编解码格式接收。输入3002可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(pon)等有线接口和诸如wi-fi或蜂窝接口的无线接口。
[0832]
系统3000可以包括编码分量3004,其可以实现本文所述的各种编码或编码方法。编码分量3004可以降低从输入3002到编码分量3004的输出的视频的平均比特率,以产生视频的编码表示。因此,编码技术有时被称为视频压缩或视频转码技术。编码分量3004的输出可以存储,或者通过由分量3006表示的连接的通信来发送。分量3008可以使用在输入3002处接收的视频的存储或通信的比特流(或编码)表示,用于生成发送到信令通知接口3010的像素值或可信令通知视频。从所述比特流表示生成用户可视视频的处理有时被称为视频解压缩。此外,虽然一些视频处理操作被称为“编码”操作或工具,但是应当理解的是,在编码器处使用编码工具或操作,并且将由解码器执行反转编码结果的对应的解码工具或操作。
[0833]
外围总线接口或信令通知接口的示例可以包括通用串行总线(usb)或高清晰度多媒体接口(hdmi)或信令通知端口等。存储接口的示例包括sata(串行高级技术附件)、pci、ide接口等。本文所述的技术可以实施在各种电子设备中,诸如移动电话、膝上型计算机、智能手机、或能够执行数字数据处理和/或视频信令通知的其他设备。
[0834]
图31是视觉媒体处理的示例方法的流程图。结合本文第4节中的实施例1对本流程图的步骤进行讨论。在步骤3102处,处理依赖于与视觉媒体数据的比特流表示中的仿射amvr技术相关的控制信息来确定是否对视觉媒体数据使用仿射自适应运动矢量分辨率(amvr)技术,其中基于规则将控制信息包括在比特流表示中或从比特流表示中排除。在步骤3104处,处理执行视觉媒体数据和视觉媒体数据的比特流表示之间的转换。
[0835]
图32是视觉媒体处理的示例方法的流程图。结合本文第4节中的实施例4对本流程图的步骤进行讨论。在步骤3202处,处理做出是否将基于子块的时域运动矢量预测(sbtmvp)技术应用于视觉媒体数据的确定。在步骤3204处,响应于所述确定,处理为包括在视觉媒体数据中的当前视频块生成子块merge候选列表。在步骤3206处,处理使用子块merge候选列表执行当前视频块和当前视频块的比特流表示之间的转换。
[0836]
图33是视觉媒体处理的示例方法的流程图。结合本文第4节中的实施例5对本流程图的步骤进行讨论。在步骤3302处,在当前视频块和比特流表示之间的转换期间,处理将一个或多个默认merge候选附加到用于转换的子块merge候选列表。在步骤3304处,处理使用附加了一个或多个默认merge候选的子块merge候选列表来执行所述转换。
[0837]
图34是视觉媒体处理的示例方法的流程图。结合本文第4节中的实施例6对本流程图的步骤进行讨论。在步骤3402处,在视频的当前视频块和比特流表示之间的转换期间,处理确定基于子块的时域运动矢量预测(sbtmvp)对所述转换的适用性,其中比特流表示中的一个或多个比特对应于所述确定。在步骤3404处,处理基于所述确定执行所述转换。
[0838]
图35是视觉媒体处理的示例方法的流程图。结合本文第4节中的实施例7对本流程图的步骤进行讨论。在步骤3502处,处理基于与时域运动矢量预测(tmvp)步骤或基于子块
的时域运动矢量预测(sbtmvp)步骤相关联的条件选择性地构建子块merge候选列表。在步骤3504处,处理基于子块merge候选列表执行当前视频块和当前视频块的比特流表示之间的转换。
[0839]
图36是视觉媒体处理的示例方法的流程图。结合本文第4节中的实施例8对本流程图的步骤进行讨论。在步骤3602处,在视觉媒体数据和视觉媒体数据的比特流表示之间的转换期间,处理确定与视觉媒体数据相关联的并置参考图片相关的信息,其中,基于是否启用访问时域运动信息的编解码模式,在比特流表示中包括或排除所述信息。在步骤3604处,处理根据指示确定并置参考图片。在步骤3606处,处理基于并置参考图片执行视觉媒体数据和视觉媒体数据的比特流表示之间的转换。
[0840]
图37是视觉媒体处理的示例方法的流程图。结合本文第4节中的实施例11对本流程图的步骤进行讨论。在步骤3702处,处理执行视觉媒体数据的视频块和视觉媒体数据的比特流表示之间的转换。在步骤3704处,在所述转换期间,处理依赖于控制信息来确定是否应用使用光流的预测细化(prof),基于规则在比特流表示中包括或排除控制信息。
[0841]
现在以基于条款的格式呈现本文的一些实施例。
[0842]
a1.一种视觉媒体处理方法,包括:
[0843]
依赖于视觉媒体数据的比特流表示中与仿射自适应运动矢量分辨率(amvr)技术相关的控制信息,确定是否对所述视觉媒体数据使用仿射amvr技术,其中,基于规则将所述控制信息包括在所述比特流表示中,或者从所述比特流表示中排除;以及
[0844]
执行所述视觉媒体数据和所述视觉媒体数据的所述比特流表示之间的转换。
[0845]
a2.根据条款a1所述的方法,其中,所述规则指定:基于以下中的至少一个在所述比特流表示中包括或排除所述控制信息:
[0846]
(1)所述转换期间是否使用仿射预测,
[0847]
(2)所述转换期间是否使用常规amvr技术,
[0848]
(3)与自适应运动矢量分辨率相关的信息是否指示启用或禁用所述amvr技术。
[0849]
a3.根据条款a1所述的方法,其中,所述规则指定:在所述转换期间不使用仿射预测的情况下排除所述控制信息。
[0850]
a4.根据条款a1所述的方法,其中,所述规则指定:在所述转换期间使用仿射预测的情况下包括所述控制信息。
[0851]
a5.根据条款a1所述的方法,其中,在不使用仿射预测的情况下,在所述转换期间禁止所述仿射amvr技术的使用。
[0852]
a6.根据条款a2所述的方法,其中,所述与自适应运动矢量分辨率相关的信息用于控制多个编解码技术对所述amvr技术的使用,其中所述多个编解码技术包括常规amvr技术和仿射amvr技术。
[0853]
a7.根据条款a2或a6中任一项或多项所述的方法,其中,所述规则指定:在所述与自适应运动矢量分辨率相关的信息指示所述amvr技术被禁用的情况下,排除与所述仿射amvr技术相关的所述控制信息。
[0854]
a8.根据条款a2或a6中任一项或多项所述的方法,其中所述规则指定:在所述与自适应运动矢量分辨率相关的信息指示所述amvr技术被启用的情况下,包括与所述仿射amvr技术相关的所述控制信息。
[0855]
a9.根据条款a2或a6-a8中的任一项或多项所述的方法,其中,在所述比特流表示的序列级中信令通知所述与自适应运动矢量分辨率相关的信息。
[0856]
a10.根据条款a1-a9中任一项或多项所述的方法,其中,所述规则还指定:在所述转换期间使用常规amvr技术的情况下,包括与所述仿射amvr技术相关的所述控制信息。
[0857]
a11.根据条款a1-a9中任一项或多项所述的方法,其中,所述规则还指定:在所述转换期间不应用常规amvr技术的情况下,排除与所述仿射amvr技术相关的所述控制信息。
[0858]
a12.根据条款a5所述的方法,其中,在所述转换期间不应用常规amvr技术的情况下,禁用所述仿射amvr技术。
[0859]
a13.根据条款a1-a4中任一项或多项所述的方法,其中,所述控制信息包括指示在所述转换期间使用多个自适应运动矢量分辨率技术的相同字段。
[0860]
a14.根据条款a1-a13中任一项或多项所述的方法,其中,在所述转换期间不使用仿射预测的情况下,还包括:
[0861]
忽略与所述仿射amvr技术相关的所述控制信息。
[0862]
a15.根据条款a1-a14中任一项或多项所述的方法,其中,所述规则指定:基于在所述转换期间是否使用常规自适应运动矢量分辨率和仿射预测,来包括或排除所述控制信息。
[0863]
a16.根据条款a15所述的方法,其中,所述规则指定:在所述转换期间不应用所述常规自适应运动矢量分辨率和仿射预测中的至少一个的情况下,排除所述控制信息。
[0864]
a17.根据条款a1-a16中任一项或多项所述的方法,其中,所述规则还指定:在所述比特流表示中包括或排除所述控制信息基于与仿射预测的使用相关联的一个或多个准则。
[0865]
a18.根据条款a17所述的方法,其中,所述规则还指定:在仿射预测的使用被禁用的情况下,在所述比特流表示中排除所述控制信息,并且进一步地,在所述比特流表示中缺少所述控制信息被用于推断仿射amvr的使用被禁用。
[0866]
a19.根据条款a1-a18中任一项或多项所述的方法,其中,在仅从与所述视觉媒体数据相关联的一个或多个先前图片预测当前条带、片组或图片的情况下,在所述比特流表示中排除所述控制信息。
[0867]
a20.根据条款a1-a18中任一项或多项所述的方法,其中,在仅从与所述视觉媒体数据相关联的一个或多个后续图片预测当前条带、片组或图片的情况下,在所述比特流表示中排除所述控制信息。
[0868]
a21.根据条款a1-a18中任一项或多项所述的方法,其中,在从与所述视觉媒体数据相关联的一个或多个后续或先前图片预测当前条带、片组或图片的情况下,在所述比特流表示中排除所述控制信息。
[0869]
a22.根据条款a1所述的方法,其中,在所述转换期间未使用仿射预测或常规amvr技术的情况下禁用所述仿射amvr技术。
[0870]
a23.根据条款a22所述的方法,其中,如果禁用仿射amvr,则在所述比特流表示中排除与所述仿射amvr技术相关的所述控制信息。
[0871]
a24.根据条款a1所述的方法,其中,所述规则还指定:在所述转换期间不应用仿射预测或所述常规amvr技术中的至少一种的情况下,排除与所述仿射amvr技术相关的所述控制信息。
[0872]
a25.根据条款a1所述的方法,其中,所述规则还指定:在所述转换期间既不应用仿射预测也不应用所述常规amvr技术的情况下,排除与所述仿射amvr技术相关的所述控制信息。
[0873]
a26.根据条款a1-a25所述的方法,其中,所述控制信息包含在以下的一个中:与当前视频块或所述视觉媒体数据的另一视频块相关联的序列、图片、条带、片组、片、砖。
[0874]
a27.根据条款a26所述的方法,其中,所述控制信息包含在以下的一个中:序列参数集(sps)、解码参数集(dps)、视频参数集(vps)、图片参数集(pps)、图片标头、条带标头或片组标头。
[0875]
b1.一种视觉媒体处理方法,包括:
[0876]
做出是否将基于子块的时域运动矢量预测(sbtmvp)技术应用于视觉媒体数据的确定;
[0877]
响应于所述确定,为包括在所述视觉媒体数据中的当前视频块生成子块merge候选列表;以及
[0878]
使用所述子块merge候选列表执行所述当前视频块和所述当前视频块的比特流表示之间的转换。
[0879]
b2.根据条款b1所述的方法,其中,所述子块merge候选列表中的最大候选数目取决于以下中的至少一个:是否将所述sbtmvp技术应用于所述转换,或者是否将时域运动矢量预测(tmvp)技术应用于所述转换。
[0880]
b3.根据条款b1所述的方法,其中,所述子块merge候选列表中的最大候选数目取决于是否使用基于子块的时域merge候选。
[0881]
b4.根据条款b3所述的方法,其中,如果将时域运动矢量预测(tmvp)技术和所述sbtmvp技术应用于所述转换,则使用所述基于子块的时域merge候选。
[0882]
b5.根据条款b1或b2中任一项或多项所述的方法,其中,所述比特流表示中的字段明确指示是否将所述sbtmvp技术应用于所述转换。
[0883]
b6.根据条款b5所述的方法,其中,所述字段处于序列级、或视频参数集级、或图片参数集级、或条带级、或片组级或图片标头级。
[0884]
b7.根据条款b1所述的方法,还包括:
[0885]
在检测到未将时域运动矢量预测(tmvp)技术应用于图片、或条带、或片组时,确定不将所述sbtmvp技术应用于所述图片、或所述条带、或所述片组。
[0886]
b8.根据条款b2所述的方法,其中,与所述子块merge候选列表中的所述最大候选数目有关的所述比特流表示中的一个或多个语法元素取决于是否将所述sbtmvp技术应用于所述转换。
[0887]
b9.根据条款b8所述的方法,还包括:
[0888]
在确定未将所述sbtmvp技术应用于所述转换时,约束所述一个或多个语法元素的值。
[0889]
b10.根据条款b6所述的方法,其中,在所述比特流表示中选择性地包括或排除与所述子块merge候选列表中的所述最大候选数目相关的所述一个或多个语法元素。
[0890]
b11.根据条款b2-b10中任一项或多项所述的方法,其中,所述子块merge候选列表中的所述最大候选数目为0、1或5。
[0891]
c1.一种视觉媒体处理方法,包括:
[0892]
在当前视频块和比特流表示之间的转换期间,将一个或多个默认merge候选附加到用于所述转换的子块merge候选列表;以及
[0893]
使用附加了一个或多个默认merge候选的所述子块merge候选列表来执行所述转换。
[0894]
c2.根据条款c1所述的方法,其中,所述默认候选与子块预测类型相关联。
[0895]
c3.根据条款c2所述的方法,其中,所述子块预测类型包括基于平移运动模型或仿射运动模型的预测。
[0896]
c4.根据条款c1所述的方法,其中,所述默认候选与整块预测类型相关联。
[0897]
c5.根据条款c2所述的方法,其中,所述整块预测类型包括基于平移运动模型或仿射运动模型的预测。
[0898]
d1.一种视觉媒体处理方法,包括:
[0899]
在视频的当前视频块和比特流表示之间的转换期间,确定基于子块的时域运动矢量预测(sbtmvp)对所述转换的适用性,其中,比特流表示中的一个或多个比特对应于所述确定;以及
[0900]
基于所述确定执行所述转换。
[0901]
d2.根据条款d1所述的方法,其中,将所述一个或多个比特包括在图片标头、条带标头或片组标头中。
[0902]
d3.根据条款d1-d2中任一项或多项所述的方法,其中,所述转换使用用于atmvp的并置图片,所述用于atmvp的并置图片与用于使用时域运动矢量预测(tmvp)的所述视频的所述转换的另一并置图片不同。
[0903]
d4.根据条款d1-d3中任一项或多项所述的方法,其中,所述一个或多个比特包括在i条带、或i片组、或i图片中。
[0904]
d5.根据条款d1-d3中任一项或多项所述的方法,其中,如果在序列级应用sbtmvp,则将所述一个或多个比特包括在所述比特流表示的所述序列级中。
[0905]
d6.根据条款d1-d3中任一项或多项所述的方法,其中,如果对条带级、或片组级、或图片级禁用tmvp,则在所述比特流表示的所述条带级、所述片组级、或所述图片级中排除所述一个或多个比特。
[0906]
d7.根据条款d6所述的方法,其中,sbtmvp被确定为不适用。
[0907]
d8.根据条款d1所述的方法,其中,对条带、或片组、或图片禁用tmvp,还包括:
[0908]
在不考虑所述比特流表示中的所述一个或多个比特的情况下,推断对所述条带、或所述片组、或所述图片禁用sbtmvp。
[0909]
e1.一种视觉媒体处理方法,包括:
[0910]
基于与时域运动矢量预测(tmvp)步骤或基于子块的时域运动矢量预测(sbtmvp)步骤相关联的条件选择性地构建子块merge候选列表;以及
[0911]
基于所述子块merge候选列表执行当前视频块和所述当前视频块的比特流表示之间的转换。
[0912]
e2.根据条款e1所述的方法,其中,所述条件对应于在比特流表示的序列参数集级、或条带级、或片级、或砖级中标志的存在和/或所述标志的值。
[0913]
e3.根据条款e1所述的方法,其中,仅当对所述当前视频块所属的图片、或片、或片组、或条带同时启用sbtmvp和tmvp步骤时,才使用基于子块的时域merge候选来构建所述子块merge候选列表。
[0914]
e4.根据条款1所述的方法,其中,仅当对所述当前视频块所属的图片、或片、或片组、或条带启用sbtmvp步骤时,才使用基于子块的时域merge候选来构建所述子块merge候选列表。
[0915]
e5.根据条款1所述的方法,其中,仅当对所述当前视频块所属的图片、或片、或片组、或条带启用sbtmvp并且禁用tmvp步骤时,才使用基于子块的时域merge候选来构建所述子块merge候选列表。
[0916]
e6.根据条款e1-e5中任一项或多项所述的方法,其中,基于是否在所述转换期间使用基于子块的时域merge候选,包括或排除所述比特流表示中的标志。
[0917]
e7.根据条款e2所述的方法,其中,所述标志包括sps_temporal_mvp_enabled_flag或sps_sbtmvp_enabled_flag中的至少一个。
[0918]
f1.一种视觉媒体处理方法,包括:
[0919]
在视觉媒体数据和所述视觉媒体数据的比特流表示之间的转换期间,确定与所述视觉媒体数据相关联的并置参考图片相关的信息,其中,基于是否启用访问时域运动信息的编解码模式,在所述比特流表示中包括或排除所述信息;
[0920]
根据所述指示确定所述并置参考图片;以及
[0921]
基于所述并置参考图片执行所述视觉媒体数据和所述视觉媒体数据的所述比特流表示之间的转换。
[0922]
f2.根据条款f1所述的方法,其中,所述信息指示用于导出所述并置参考图片的参考图片列表和/或所述并置参考图片的参考索引。
[0923]
f3.根据条款f1所述的方法,其中,所述编解码模式包括时域运动矢量预测(tmvp)编解码技术。
[0924]
g1.一种视觉媒体处理方法,包括:
[0925]
执行视觉媒体数据的视频块和所述视觉媒体数据的比特流表示之间的转换;以及
[0926]
在所述转换期间,依赖于控制信息来确定是否应用使用光流的预测细化(prof),基于规则在所述比特流表示中包括或排除所述控制信息。
[0927]
g2.根据条款g1所述的方法,其中,所述规则指定:基于是否对所述转换应用仿射预测,在所述比特流表示中包括或排除所述控制信息。
[0928]
g3.根据条款g1-g2中任一项或多项所述的方法,其中,基于对所述转换禁用仿射预测,禁止prof的应用。
[0929]
g4.根据条款g2所述的方法,其中,所述规则还指定:在仿射预测被禁用的情况下排除所述控制信息。
[0930]
g5.根据条款g4所述的方法,其中,仿射预测被禁用,还包括:
[0931]
推断对所述转换禁用prof。
[0932]
g6.根据条款g2所述的方法,其中,基于所述比特流表示中的对应标志,prof的应用仅与单向预测相关联。
[0933]
g7.根据条款g1-g6所述的方法,其中,所述控制信息包括在以下的一个中:与当前
视频块或所述视觉媒体数据的另一视频块相关联的序列、图片、条带、片组、片、砖。
[0934]
g8.根据条款g7所述的方法,其中,所述控制信息包括在以下的一个中:序列参数集(sps)、解码参数集(dps)、视频参数集(vps)、图片参数集(pps)、图片标头、条带标头、或片组标头。
[0935]
h1.根据条款a1-g8中任一项或多项所述的方法,其中,所述转换包括:从所述当前视频块生成所述比特流表示。
[0936]
h2.根据条款a1-g8中任一项或多项所述的方法,其中,所述转换包括:从所述比特流表示生成所述当前视频块的像素值。
[0937]
h3.一种视频编码器装置,其包括处理器,所述处理器被配置为实现条款a1-g8中任一项或多项所述的方法。
[0938]
h4.一种视频解码器装置,其包括处理器,所述处理器被配置为实现条款a1-g8中任一项或多项所述的方法。
[0939]
h5.一种其上存储有代的计算机可读介质,所述代码包含用于实现条款a1-g8中任一项或多项所述的方法的处理器可执行指令。
[0940]
在本文中,术语“视频处理”或“视觉媒体处理”可指视频编码、视频解码、视频压缩或视频解压缩。例如,可以在从视频的像素表示到对应的比特流表示的转换期间中应用视频压缩算法,反之亦然。例如,当前视频块的比特流表示可以对应于由语法定义的比特流中的并置位置或在不同位置传播的比特。例如,可以根据经过转换和编码的误差残差值、并且也可以使用比特流中的标头和其他字段中的比特对宏块进行编码。此外,在转换期间,解码器可以在知道某些字段可能存在或不存在的情况下,基于上述解决方案中描述的确定来解析比特流。类似地,编码器可以通过在编码表示中包括或排除语法字段来确定是否包括某些语法字段,并相应地生成编码表示。应当理解的是,所公开的技术可以实施在视频编码器或解码器中,以使用包括使用基于子块的运动矢量细化的技术来提高压缩效率。
[0941]
本文中描述的所公开的和其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路或计算机软件、固件或硬件中实现,包括本文中公开的结构及其结构等效物,或者一个或多个的组合。所公开的实施例和其他实施例可以实现为一个或多个计算机程序产品,即在计算机可读介质上编码以供数据处理设备执行或控制其操作的计算机程序指令的一个或多个模块。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质的组合,或者一个或多个它们的组合。术语“数据处理设备”包括用于处理数据的所有设备、装置和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除硬件外,设备还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或其中一个或多个的组合的代码。传播的信号是人为生成的信号,例如,机器生成的电、光或电磁信号,其被生成以编码信息以传输到合适的接收器设备。
[0942]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、分量、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标志语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个
或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
[0943]
本文中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。
[0944]
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如,帧内硬盘或可移动硬盘;磁光盘;以及cd rom和dvd rom盘。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
[0945]
虽然本专利文件包含许多细节,但不应将其解释为对任何主题或权利要求范围的限制,而应解释为对特定技术的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中移除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。
[0946]
同样,尽管附图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件实施例中各种系统分量的分离不应理解为在所有实施例中都需要这样的分离。
[0947]
仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中描述和说明的内容做出。
再多了解一些

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

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

相关文献