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

基于指定的候选的成对运动候选列的构造的制作方法

2021-10-29 21:24:00 来源:中国专利 TAG:专利申请 提交 候选 国际 公开

基于指定的候选的成对运动候选列的构造
1.根据适用的专利法和/或巴黎公约的规则,本技术旨在及时要求于2019年3月11日提交的国际专利申请pct/cn2019/077637、2019年3月14日提交的国际专利申请pct/cn2019/078147、2019年3月18日提交的国际专利申请pct/cn2019/078505的优先权和利益。前述申请的全部公开内容通过引用并入作为本技术的公开内容的一部分。
技术领域
2.本专利文档涉及视频编解码技术、设备和系统。


背景技术:

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


技术实现要素:

4.在一个示例方面,公开了一种视频处理的方法。该方法包括:从特定组的一个或多个子组获取至少一组运动信息,该特定组包括作为成员的n个空域或时域邻近块和/或基于历史的运动矢量预测(hmvp)表中的p个条目,n和p是整数;基于至少一组运动信息,构造要插入到与当前视频块相关联的候选列表中的至少一个成对平均merge候选;以及使用该候选列表执行当前视频块和当前视频块的比特流表示之间的转换。
5.在另一个示例方面,公开了一种视频系统中的装置。该装置包括处理器和其上具有指令的非暂时性存储器,其中指令在由处理器运行时使得处理器实施如上所述的方法。
6.在又一个示例方面,公开了一种其上存储有程序代码的非暂时性计算机可读介质,该程序代码在被运行时使得处理器实施如上所述的方法。
7.在又一个示例方面,公开了一种被配置为实施上述方法之一的视频编码器装置。
8.在又一个示例方面,公开了一种被配置为实施上述方法之一的视频解码器装置。
9.在又一方面,公开了一种计算机可读介质。用于实施上述方法之一的处理器可运行代码存储在该计算机可读介质上。
10.本文档中描述了这些和其他方面。
附图说明
11.图1示出了merge候选列表构造的示例推导过程。
12.图2示出了空域merge候选的位置的示例。
13.图3示出了考虑用于空域merge候选的冗余检查的候选对的示例。
14.图4示出了n
×
2n和2n
×
n分割的第二pu(prediction unit,预测单元)的位置的示例。
15.图5是时域merge候选的运动矢量缩放的示例图示。
motion vector prediction,amvp)。
31.当信令指示要使用两个参考图片列表中的一个时,从一个样点块产生pu。这被称为“单向预测”。单向预测可用于p条带和b条带两者。
32.当信令指示要使用两个参考图片列表时,从两个样点块产生pu。这被称为“双向预测”。双向预测仅可用于b条带。
33.以下文本提供了关于hevc中规定的帧间预测模式的详细信息。描述将从merge模式开始。
34.2.1.1参考图片列表
35.在hevc中,术语帧间预测被用来表示从除当前解码图片之外的参考图片的数据元素(例如,样点值或运动矢量)推导的预测。像在h.264/avc中一样,图片可以从多个参考图片中预测。用于帧间预测的参考图片被组织在一个或多个参考图片列表中。参考索引标识列表中的哪个参考图片应该用于创建预测信号。
36.单个参考图片列表,列表0,用于p条带,两个参考图片列表,列表0和列表1,用于b条带。应当注意,列表0/列表1中包括的参考图片在捕捉/显示顺序方面可以来自过去和未来的图片。
37.2.1.2 hevc中的merge模式
38.2.1.2.1merge模式的候选的推导
39.当使用merge模式预测pu时,从比特流中解析指向merge候选列表中的条目的索引并将其用于检索运动信息。在hevc标准中规定了该列表的构造,并且可以按照以下步骤的序列进行概述:
40.·
步骤1:初始候选推导
41.ο步骤1.1:空域候选推导
42.ο步骤1.2:空域候选的冗余检查
43.ο步骤1.3:时域候选推导
44.·
步骤2:附加候选插入
45.ο步骤2.1:创建双向预测候选
46.ο步骤2.2:插入零运动候选
47.这些步骤也示意性地描绘在图1中。对于空域merge候选推导,在位于五个不同位置的候选当中选择最多四个merge候选。对于时域merge候选推导,在两个候选当中选择最多一个merge候选。由于在解码器处假设每个pu的恒定数量的候选,因此当从步骤1获得的候选的数量未达到在条带头中信令通知的merge候选的最大数量(maxnummergecand)时,生成附加候选。由于候选的数量是恒定的,因此使用截断一元二值化(truncated unary binarization,tu)对最佳merge候选的索引进行编码。如果cu的尺寸等于8,则当前cu的所有pu共用单个merge候选列表,其与2n
×
2n预测单元的merge候选列表相同。
48.在下文中,将详细描述与上述步骤相关联的操作。
49.2.1.2.2空域候选推导
50.在空域merge候选的推导中,在位于图2中描绘的位置的候选当中选择最多四个merge候选。推导的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任何pu不可用(例如,因为它属于另一条带或片)或者是帧内编解码的时,才考虑位置b2。在添加位置a1处的候选之
后,对剩余候选的添加进行冗余检查,其确保具有相同运动信息的候选被排除在列表之外,从而提高编解码效率。为了降低计算复杂度,在所提到的冗余检查中并非所有可能的候选对都被考虑。相反,只考虑与图3中的箭头链接的对,并且仅在用于冗余检查的对应候选没有相同的运动信息,才将候选添加到列表中。重复运动信息的另一源是与不同于2n
×
2n的分割相关联的“第二pu”。作为示例,图4描绘了第二pu是n
×
2n和2n
×
n的情况。在当前pu被分割为n
×
2n时,位置a1处的候选不被考虑用于列表构造。事实上,通过添加该候选将导致两个预测单元具有相同的运动信息,这对于在编解码单元中只具有一个pu是冗余的。类似地,在当前pu被分割为2n
×
n时,不考虑位置b1。
51.2.1.2.3时域候选推导
52.在该步骤中,仅一个候选被添加到列表。具体地,在该时域merge候选的推导中,基于属于给定参考图片列表内与当前图片具有最小poc(picture order count,图片顺序计数)差的图片的共位(co

located)pu来推导缩放运动矢量。在条带头中显式地信令通知要用于推导共位pu的参考图片列表。如在图5中由虚线所示的,获得了对时域merge候选的缩放运动矢量,该缩放运动矢量是使用poc距离tb和td从共位pu的运动矢量缩放的,其中tb被定义为当前图片的参考图片与当前图片之间的poc差,并且td被定义为共位图片的参考图片与共位图片之间的poc差。时域merge候选的参考图片索引被设置为等于零。hevc规范中描述了缩放过程的实际实现。对于b条带,两个运动矢量(一个用于参考图片列表0,并且另一个用于参考图片列表1)被获得并组合,以生成双向预测merge候选。
53.在属于参考帧的共位pu(y)中,在候选c0和c1之间选择时域候选的位置,如图6所描绘的。如果位置c0处的pu不可用、是帧内编解码的、或者在当前编解码树单元(ctu,又称lcu,最大编解码单位)行(row)的外部,则使用位置c1。否则,在时域merge候选的推导中使用位置c0。
54.时域运动矢量预测也被称为“tmvp”。
55.2.1.2.4附加候选插入
56.除了空域和时域的merge候选之外,存在两种附加类型的merge候选:组合的双向预测merge候选和零merge候选。通过利用空域和时域的merge候选来生成组合的双向预测merge候选。组合的双向预测merge候选仅用于b条带。通过将初始候选的第一参考图片列表运动参数与另一个的第二参考图片列表运动参数组合来生成组合的双向预测候选。如果这两个元组提供不同的运动假设,则它们将形成新的双向预测候选。作为示例,图7示出了当原始列表(在左边)中的两个候选(其具有mvl0和refidxl0或mvl1和refidxl1)用于创建被添加到最终列表(在右边)的组合的双向预测merge候选。存在许多关于组合的规则,这些规则被考虑以生成这些附加merge候选。
57.插入零运动候选以填充merge候选列表中的剩余条目,并因此达到maxnummergecand容量。这些候选具有零空域位移和参考图片索引,该索引从零开始并且每次向列表中添加新的零运动候选时增加。最后,不对这些候选执行冗余检查。
58.2.1.3 amvp
59.amvp利用运动矢量与邻近pu的空时相关性,该空时相关性用于运动参数的显式传输。对于每个参考图片列表,通过首先检查左边、上边的时域邻近的pu位置的可用性,移除冗余候选并添加零矢量以使候选列表为恒定长度,来构造运动矢量候选列表。然后,编码器
可以从候选列表中选择最佳预测量,并发送指示所选候选的对应索引。与merge索引信令类似,使用截断一元对最佳运动矢量候选的索引进行编码。在这种情况下,要编码的最大值是2(见图8)。在接下来的章节中,将提供关于运动矢量预测候选的推导过程的细节。
60.2.1.3.1推导amvp候选
61.图8示出了运动矢量预测候选的示例推导过程。
62.在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选推导,最终基于位于如在图2中描绘的五个不同位置的每个pu的运动矢量来推导两个运动矢量候选。
63.对于时域运动矢量候选推导,从基于两个不同共位位置而推导的两个候选中选择一个运动矢量候选。在产生第一空时候选列表之后,移除列表中的重复运动矢量候选。如果潜在候选的数量大于二,则从列表中移除相关联的参考图片列表内其参考图片索引大于1的运动矢量候选。如果空时运动矢量候选的数量小于二,则将附加的零运动矢量候选添加到列表。
64.2.1.3.2空域运动矢量候选
65.在空域运动矢量候选的推导中,在从位于如在图2中描绘的位置的pu中推导的五个潜在候选当中考虑最多两个候选,那些位置与运动merge的位置相同。当前pu的左侧的推导顺序被定义为a0、a1、以及缩放a0、缩放a1。当前pu的上侧的推导顺序被定义为b0、b1、b2、缩放b0、缩放b1、缩放b2。因此对于每一侧,存在可以用作运动矢量候选的四种情况,其中两种情况不需要使用空域缩放,两种情况使用空域缩放。四种不同的情况概述如下:
66.·
没有空域缩放
67.‑
(1)相同的参考图片列表,以及相同的参考图片索引(相同的poc)
68.‑
(2)不同的参考图片列表,但是相同的参考图片(相同的poc)
69.·
空域缩放
70.‑
(3)相同的参考图片列表,但是不同的参考图片(不同的poc)
71.‑
(4)不同的参考图片列表,以及不同的参考图片(不同的poc)
72.首先检查非空域缩放情况,然后是允许空域缩放的情况。当不管参考图片列表如何,poc在邻近pu的参考图片与当前pu的参考图片之间都不同时,考虑空域缩放。如果左边候选的所有pu都不可用或者都是帧内编解码的,则允许针对上边运动矢量的缩放有助于对左边和上边mv候选的并行推导。否则,针对上边运动矢量不允许空域缩放。
73.在空域缩放过程中,以与时域缩放类似的方式来缩放邻近pu的运动矢量,如图9所描绘的。主要差异在于参考图片列表和当前pu的索引被给定作为输入;实际缩放过程与时域缩放的过程相同。
74.2.1.3.3时域运动矢量候选
75.除了参考图片索引推导之外,用于推导时域merge候选的所有过程与用于推导空域运动矢量候选的过程相同(见图6)。参考图片索引被信令通知给解码器。
76.2.2 vvc中的帧间预测方法
77.有几种用于帧间预测改进的新的编解码工具,诸如用于信令通知mvd的自适应运动矢量差分辨率(adaptive motion vector difference resolution,amvr)、仿射预测模式、三角形预测模式(tpm)、atmvp、广义双向预测(gbi)、双向光流(bio)。
78.2.2.1 vvc中的编解码块结构
79.在vvc中,采用四叉树/二叉树/多叉树(qt/bt/tt)结构将图片划分为正方形或矩形块。
80.除了qt/bt/tt,在vvc中对于i

帧还采用了分开的树(又称双重编解码树)。利用分开的树,针对亮度和色度分量分别信令通知编解码块结构。
81.2.2.2 vvc中的扩展merge预测
82.在vtm4中,merge候选列表是通过按顺序包括以下五种类型的候选来构造的:
83.来自空域邻近者cu的空域mvp
84.来自共位cu的时域mvp
85.来自fifo表中的基于历史的mvp
86.成对平均mvp
87.零mv。
88.merge列表的尺寸在条带头中信令通知,并且在vtm4中merge列表的最大允许尺寸是6。对于merge模式中的每个cu码,使用截断的一元二值化(tu)编码最佳merge候选的索引。merge索引的第一个位元用上下文编解码,旁路编解码用于其他位元。
89.merge候选的每个类别的生成过程都在此进程中提供。
90.2.2.1.1空域候选推导
91.vvc中的空域merge候选的推导与hevc中的相同。
92.2.2.2.2时域候选推导
93.vvc中的时域merge候选的推导与hevc中的相同。
94.2.2.2.3基于历史的merge候选推导
95.基于历史的mvp(history

based mvp,hmvp)merge候选被添加到merge列表中的空域mvp和tmvp之后。在该方法中,先前编解码的块的运动信息被存储在表中,并被用作当前cu的mvp。在编码/解码过程期间,维护具有多个hmvp候选的表。当遇到新的ctu行时,表被重置(清空)。每当有非子块帧间编解码的cu时,相关联的运动信息被添加到表的最后一个条目,作为新的hmvp候选。
96.在vtm4中,hmvp表的尺寸s设置为6,这表示可以向表中添加最多6个基于历史的mvp(hmvp)候选。当向表中插入新的候选运动时,利用受约束的先进先出(first

in

first

out,fifo)规则,其中首先应用冗余检查来发现表中是否存在相同的hmvp。如果找到,则从表中移除相同的hmvp,然后所有之后的hmvp候选向前移动。
97.hmvp候选可以用于merge候选列表构造过程。表中最新的若干个候选被按顺序检查并被插入到候选列表中的tmvp候选之后。冗余检查应用于空域或时域merge候选的hmvp候选。
98.为了减少冗余检查操作的数量,引入了以下简化:
99.用于merge列表生成的hmpv候选的数量设置为(n<=4)?m:(8

n),其中n表示merge列表中现有候选的数量,m表示表中可用的hmvp候选的数量。
100.一旦可用merge候选的总数量达到最大允许的merge候选减1,则根据hmvp的merge候选列表构造过程就终止。
101.2.2.2.4成对平均merge候选推导
102.成对平均候选是通过对现有merge候选列表中的预定的候选对进行平均而生成的,并且预定的对被定义为{(0,1)},其中,数字表示merge候选列表的merge索引。为每个参考列表单独计算平均运动矢量。如果两个运动矢量在一个列表中可用,则即使这两个运动矢量指向不同的参考图片,也会对它们进行平均;如果只有一个运动矢量可用,则直接使用该运动矢量;如果没有运动矢量可用,则保持该列表无效。
103.当添加成对平均merge候选后merge列表未满时,将在末尾插入零mvp,直到达到最大merge候选数量。
104.2.2.3 vvc中的共用merge列表
105.为了降低解码器的复杂度并支持并行编码,jvet

m0147提出为cu划分树中一个祖先节点的所有叶编解码单元(cu)共用相同的merge候选列表,以便能够并行处理小的跳过/merge编解码的cu。祖先节点被命名为merge共用节点。在merge共用节点处生成共用merge候选列表,假设merge共用节点是叶cu。
106.更具体地,以下可能适用:
107.如果块具有不大于32个的亮度样点,并且被划分成2个4
×
4子块,则在非常小的块(例如,两个相邻的4
×
4块)之间使用共用merge列表。
108.然而,如果块具有大于32个的亮度样点,在划分之后,至少一个子块小于阈值(32),则该划分的所有子块共用相同的merge列表(例如,16
×
4三叉树划分或8
×
8四叉树划分)。
109.这种限制仅应用于常规merge模式。
110.2.2.4 ibc merge列表
111.当按照jvet

m0483中的提议添加ibc时,hmvp候选也适用于ibc merge列表。
112.更具体地,可以存储另外5个ibc候选。在当前实施方式中,常规和ibc候选存储在相同的hmvp表中。但是,它们是独立使用和更新的。前m(m≤5)个候选用于常规merge/amvp列表;剩余的n个候选(n≤5)用于ibc模式。维护两个计数器以指示在hmvp表中有多少常规运动候选和多少ibc运动候选。因此,它相当于使用两个hmvp表,一个用于常规merge模式,另一个用于ibc模式。
113.共用与常规mv merge相同的过程,但不允许tmvp,零矢量表示不可用,因为其是无效的。注意,对于空域邻近块,仅当其以ibc模式编解码时,相关联的运动信息才可以被添加到ibc merge列表。同时,对于hmvp部分,在ibc merge列表中只有最后几个hmvp候选(存储的ibc运动候选)可以被考虑。
114.3.由实施例解决的问题的示例
115.在merge候选列表构造的当前设计中,只有在前两个merge候选已经在候选列表中时,才能构建成对平均merge候选。在最坏的情况下,在构建成对平均候选之前,必须遍历所有可能的merge候选。因此,成对平均候选不能与其他候选并行构建。
116.4.示例技术和实施例
117.下面列出的技术应被视为解释一般概念的示例。这些技术不应狭义地解释。此外,这些技术可以以任何方式组合。
118.在以下讨论中,satshift(x,n)定义为
[0119][0120]
shift(x,n)定义为shift(x,n)=(x offset0)>>n。
[0121]
在一个示例中,offset0和/或offset1被设置为(1<<n)>>1or(1<<(n

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

1or((1<<(n

1)))

1。
[0123]
clip3(min,max,x)定义为
[0124][0125]
在本文档中,两个运动矢量之间的运算意味着该运算将应用于运动矢量的两个分量。例如,mv3=mv1 mv2相当于mv3
x
=mv1
x
mv2
x and mv3
y
=mv1
y
mv2
y

[0126]
在本文档中,左侧邻近块、左下邻近块、上侧邻近块、右上邻近块和左上邻近块被表示为块a1、a0、b1、b0和b2,如图2所示。
[0127]
1.在一个示例中,如果只有一组运动信息(它可以从空域邻近块、或从时域邻近块、或从hmvp条目等获取)可用于构建成对平均merge候选,则不能构建成对平均merge候选。
[0128]
a.可替代地,可以用一组运动信息来构建成对平均merge候选。假设运动信息包括:表示为inter_dir的帧间预测方向、表示为ref_idx[0]和ref_idx[1]的两个列表的参考索引(ref_idx[l]l=0或1,如果没有运动矢量参考参考列表x,则其被标记为
“‑
1”)、表示为gbi_idx的gbi索引、表示为对参考列表0进行参考的运动矢量(mv
0x
,mv
0y
)以及表示为对参考列表1进行参考的运动矢量(mv
1x
,mv
1y
)。则可以遵循下面的一个或一些示例性规则来构建成对平均merge候选的运动信息:
[0129]
1)在一个示例中,inter_dir被复制到成对平均merge候选。
[0130]
2)在一个示例中,ref_idx[0],ref_idx[1]被复制到成对平均merge候选。
[0131]
3)在一个示例中,gbi_idx被复制到成对平均merge候选。
[0132]
a.可替代地,成对平均merge候选的gbi索引被设置为零或其他默认值,意味着gbi关闭。
[0133]
4)在一个示例中,如果(mv
lx
,mv
ly
)可用,其中l=0或1,则(f(mv
lx
),g(mv
ly
))被设置为对参考列表l进行参考的成对平均merge候选的运动矢量。f和g是两个函数。
[0134]
a.在一个示例中,f(m)=g(m)=m offset,其中offset是整数,诸如3。
[0135]
b.在一个示例中,f(m)=g(m)=m (offset<<precise),其中offset是整数,诸如3;precise定义mv精度,例如,precise=4。
[0136]
c.在一个示例中,f(m)=g(m)=satshift(m,k),其中k是整数,诸如1。
[0137]
d.在一个示例中,f(m)=g(m)=shift(m,k),其中k是整数,诸如1。
[0138]
e.在一个示例中,f(m)=g(m)=m<<k,其中k是整数,诸如1。
[0139]
b.可替代地,可以用一组可用的运动信息和一组构造的运动信息来构建成对平均merge候选。
[0140]
i.在一个示例中,所构造的该组运动信息的帧间预测方向被设置为等于该组可用的运动信息的帧间预测方向。
[0141]
ii.在一个示例中,所构造的该组运动信息的参考列表x的参考索引被设置为等于该组可用的运动信息的参考列表x的参考索引。x可以是0或1。
[0142]
iii.在一个示例中,所构造的该组运动信息的参考列表x的mv被设置为等于零。x可以是0或1。
[0143]
2.在一个示例中,在添加成对平均merge候选之前,当merge候选列表中只有一个可用merge候选时,可以应用项目1。
[0144]
3.在一个示例中,在使用第一组运动信息和第二组运动信息来构建成对平均merge候选之前,可以检查它们是否相同或相似。
[0145]
a.在一个示例中,如果两组运动信息相同或相似,则不能用它们来构建成对平均merge候选。
[0146]
b.在另一个示例中,如果两组运动信息相同或相似,则可以用它们构建成对平均merge候选。
[0147]
i.在一个示例中,第二组(或第一组)运动信息可以被视为不可用。
[0148]
ii.可以应用项目1。
[0149]
4.提出了总是用从两个预定的空域邻近块获取的运动信息来构建成对平均merge候选。
[0150]
a.在一个示例中,总是用从{块a1,块b1}获取的运动信息来构建成对平均merge候选。
[0151]
i.可替代地,总是用从{块a1,块a0}获取的运动信息来构建成对平均merge候选。
[0152]
ii.可替代地,总是用从{块b1,块b0}获取的运动信息来构建成对平均merge候选。
[0153]
iii.可替代地,总是用从{块a1,块b0}获取的运动信息来构建成对平均merge候选。
[0154]
iv.可替代地,总是用从{块b1,块a0}获取的运动信息来构建成对平均merge候选。
[0155]
v.可替代地,总是用从{块a1,块b2}获取的运动信息来构建成对平均merge候选。
[0156]
vi.可替代地,总是用从{块b1,块b2}获取的运动信息来构建成对平均merge候选。
[0157]
vii.可替代地,总是用从{块a0,块b2}获取的运动信息来构建成对平均merge候选。
[0158]
viii.可替代地,总是用从{块b0,块b2}获取的运动信息来构建成对平均merge候选。
[0159]
b.在一个示例中,如果不能从两个预定的空域邻近块获取运动信息(例如,邻近块不可用或是帧内编解码的),则不能构建成对平均merge候选。
[0160]
c.在一个示例中,如果只能从两个预定的空域邻近块中的一个获取运动信息(例如,另一个邻近块不可用或是帧内编解码的),则可以应用项目1。
[0161]
d.在一个示例中,项目3可以应用于从两个预定的空域邻近块获取的两组运动信息。
[0162]
e.在一个示例中,两个空域邻近块可以被当前ctu/ctu行/条带/片组/片内的两个块代替,这两个块不一定与当前块相邻。
[0163]
5.提出了总是用从n个预定的空域邻近块,其中n>2,获取的运动信息来构建一个或多个成对平均merge候选。例如,n=3。
[0164]
a.在一个示例中,预定的空域邻近块是{块a1,块b1,块b0};
[0165]
b.在一个示例中,预定的空域邻近块是{块a1,块b1,块a0};
[0166]
c.在一个示例中,预定的空域邻近块是{块a1,块b1,块b2};
[0167]
d.在一个示例中,预定的空域邻近块是{块a1,块a0,块b2};
[0168]
e.在一个示例中,预定的空域邻近块是{块b1,块b0,块b2};
[0169]
f.在一个示例中,预定的空域邻近块是{块a1,块b1,块b0};
[0170]
g.在一个示例中,预定的空域邻近块是{块a1,块b1,块b0,块b1};
[0171]
h.在一个示例中,预定的空域邻近块是{块a1,块b1,块b0,块b1,块b2};
[0172]
i.在一个示例中,只有一个成对平均merge候选可以用从n个预定的空域邻近块获取的运动信息来构建。
[0173]
i.例如,按顺序检查每对预定的空域邻近块,直到可以用来自一对预定的空域邻近块的运动信息来构建成对平均merge候选。
[0174]
ii.在一个示例中,如果不能从n个预定的空域邻近块获取运动信息,则不能构建成对平均merge候选。
[0175]
iii.在一个示例中,如果只能从n个预定的空域邻近块中的一个获取运动信息,则可以应用项目1。
[0176]
iv.可以应用项目3来确定是否可以用来自一对预定的空域邻近块的运动信息来构建成对平均merge候选。
[0177]
j.在一个示例中,可以用从n个预定的空域邻近块获取的运动信息来构建s(s>1)个成对平均merge候选。
[0178]
i.例如,按顺序检查每对预定的空域邻近块,直到可以用来自s对预定的空域邻近块的运动信息来构建s对成对平均merge候选。
[0179]
ii.在一个示例中,如果不能从n个预定的空域邻近块获取运动信息,则不能构建成对平均merge候选。
[0180]
iii.在一个示例中,如果只能从n个预定的空域邻近块中的一个获取运动信息,则可以应用项目1。
[0181]
iv.可以应用项目3来确定是否可以用来自一对预定的空域邻近块的运动信息来构建成对平均merge候选。
[0182]
k.在一个示例中,n个空域邻近块可以被当前ctu/ctu行/条带/片组/片内的两个块代替,这两个块不一定与当前块相邻。
[0183]
6.提出了总是用从n个预定的空域邻近块和m个预定的tmvp获取的运动信息来构建一个或多个成对平均merge候选。例如,n=2,m=1。
[0184]
a.在一个示例中,总是用从{块a1,块b1}获取的运动信息来构建成对平均merge候选。
[0185]
i.可替代地,总是用从{块a1,块a0}获取的运动信息来构建成对平均merge候选。
[0186]
ii.可替代地,总是用从{块b1,块b0}获取的运动信息来构建成对平均merge候选。
[0187]
iii.可替代地,总是用从{块a1,块b0}获取的运动信息来构建成对平均merge候选。
[0188]
iv.可替代地,总是用从{块b1,块a0}获取的运动信息来构建成对平均merge候选。
[0189]
v.可替代地,总是用从{块a1,块b2}获取的运动信息来构建成对平均merge候选。
[0190]
vi.可替代地,总是用从{块b1,块b2}获取的运动信息来构建成对平均merge候选。
[0191]
vii.可替代地,总是用从{块a0,块b2}获取的运动信息来构建成对平均merge候选。
[0192]
viii.可替代地,总是用从{块b0,块b2}获取的运动信息来构建成对平均merge候选。
[0193]
b.在一个示例中,预定的空域邻近块是{块a1,块b1,块b0};
[0194]
c.在一个示例中,预定的空域邻近块是{块a1,块b1,块a0};
[0195]
d.在一个示例中,预定的空域邻近块是{块a1,块b1,块b2};
[0196]
e.在一个示例中,预定的空域邻近块是{块a1,块a0,块b2};
[0197]
f.在一个示例中,预定的空域邻近块是{块b1,块b0,块b2};
[0198]
g.在一个示例中,预定的空域邻近块是{块a1,块b1,块b0};
[0199]
h.在一个示例中,预定的空域邻近块是{块a1,块b1,块b0,块b1};
[0200]
i.在一个示例中,预定的空域邻近块是{块a1,块b1,块b0,块b1,块b2};
[0201]
j.在一个示例中,tmvp可以用与hevc或vvc中相同的方法来推导。
[0202]
k.在一个示例中,只有一个成对平均merge候选可以用从n个预定的空域邻近块和m个预定的tmvp获取的运动信息来构建。
[0203]
i.例如,按顺序检查每对预定的空域邻近块和/或tmvp,直到可以用来自一对预定的空域邻近块或tmvp的运动信息来构建成对平均merge候选。
[0204]
1)例如,检查顺序是{块a1,块b1}、{块a1,tmvp}、{块a2,tmvp}。
[0205]
ii.在一个示例中,如果不能从n个预定的空域邻近块和m个tmvp获取运动信息,则不能构建成对平均merge候选。
[0206]
iii.在一个示例中,如果只能从n个预定的空域邻近块和/或m个tmvp中的一个获取运动信息,则可以应用项目1。
[0207]
iv.可以应用项目3来确定是否可以用来自一对预定的空域邻近块和/或tmvp的运动信息来构建成对平均merge候选。
[0208]
l.在一个示例中,可以用从n个预定的空域邻近块和/或m个tmvp获取的运动信息来构建s(s>1)个成对平均merge候选。
[0209]
i.例如,按顺序检查每对预定的空域邻近块和/或tmvp,直到可以用来自s对预定的空域邻近块和/或tmvp的运动信息来构建s个成对平均merge候选。
[0210]
ii.在一个示例中,如果不能从n个预定的空域邻近块和/或m个tmvp获取运动信息,则不能构建成对平均merge候选。
[0211]
iii.在一个示例中,如果只能从n个预定的空域邻近块和/或m个tmvp中的一个获取运动信息,则可以应用项目1。
[0212]
iv.可以应用项目3来确定是否可以用来自一对预定的空域邻近块和/或tmvp的运动信息来构建成对平均merge候选。
[0213]
m.在一个示例中,n个空域邻近块可以被当前ctu/ctu行/条带/片组/片内的两个块代替,这两个块不一定与当前块相邻。
[0214]
7.提出了总是用从hmvp表中的n个条目获取的运动信息来构建一个或多个成对平均merge候选。例如,n=2。
[0215]
a.n个条目可以被预定。例如,它们可以是表中的前n个条目,也可以是表中的最后
n个条目;
[0216]
i.n不应大于表中可用条目的总数。
[0217]
ii.在一个示例中,n被设置为表中可用条目的总数。
[0218]
iii.可替代地,所选择的n个条目可以不与连续的条目索引相关联,例如,可以利用第一个和最后一个条目。
[0219]
b.在一个示例中,只有一个成对平均merge候选可以用从hmvp表中的n个条目获取的运动信息来构建。
[0220]
i.例如,按顺序检查hmvp表中的每对条目,直到可以用来自hmvp表中的一对条目的运动信息来构建成对平均merge候选。
[0221]
ii.在一个示例中,如果不能从hmvp表中的n个条目获取运动信息,则不能构建成对平均merge候选。
[0222]
iii.在一个示例中,如果只能从hmvp表中的n个条目中的一个获取运动信息,则可以应用项目1。
[0223]
iv.可以应用项目3来确定是否可以用来自hmvp表中的一对条目的运动信息来构建成对平均merge候选。
[0224]
c.在一个示例中,可以用从hmvp表中的n个条目获取的运动信息来构建s(s>1)个成对平均merge候选。
[0225]
i.例如,按顺序检查hmvp表中的n个条目中的每对,直到可以用来自hmvp表中的n个条目中的s对的运动信息来构建s个成对平均merge候选。
[0226]
ii.在一个示例中,如果不能从hmvp表中的n个条目获取运动信息,则不能构建成对平均merge候选。
[0227]
iii.在一个示例中,如果只能从hmvp表中的n个条目中的一个获取运动信息,则可以应用项目1。
[0228]
iv.可以应用项目3来确定是否可以用来自hmvp表中的n个条目中的一对的运动信息来构建成对平均merge候选。
[0229]
8.提出了总是用从n个预定的空域邻近块获取的运动信息和从hmvp表中的m个条目获取的运动信息来构建一个或多个成对平均merge候选。例如,n=1,m=1。
[0230]
a.n个预定的空域邻近块可以如项目6中那样被预定。
[0231]
b.hmvp表中的m个条目可以如项目7中那样被预定。
[0232]
c.在一个示例中,仅一个成对平均merge候选可以用从n个预定的空域邻近块和/或hmvp表中的m个条目获取的运动信息来构建。
[0233]
i.例如,按顺序检查n个预定的空域邻近块和/或hmvp表中的条目中的每对,直到可以用来自n个预定的空域邻近块和/或hmvp表中的m个条目中的一对的运动信息来构建成对平均merge候选。
[0234]
ii.在一个示例中,如果没有运动信息可以从n个预定的空域邻近块和/或hmvp表中的m个条目获取,则不能构建成对平均merge候选。
[0235]
iii.在一个示例中,如果只能从n个预定的空域邻近块和/或hmvp表中的m个条目中的一个获取运动信息,则可以应用项目1。
[0236]
iv.可以应用项目3来确定是否可以用来自n个预定的空域邻近块和/或hmvp表中
的m个条目中的一对的运动信息来构建成对平均merge候选。
[0237]
d.在一个示例中,可以用从n个预定的空域邻近块和/或hmvp表中的m个条目获取的运动信息来构建s(s>1)个成对平均merge候选。
[0238]
i.例如,按顺序检查n个预定的空域邻近块和/或hmvp表中的m个条目中的每对,直到可以用来自n个预定的空域邻近块和/或hmvp表中的m个条目中的s对的运动信息来构建s个成对平均merge候选。
[0239]
ii.在一个示例中,如果没有运动信息可以从n个预定的空域邻近块和/或hmvp表中的m个条目获取,则不能构建成对平均merge候选。
[0240]
iii.在一个示例中,如果只能从n个预定的空域邻近块和/或hmvp表中的m个条目中的一个获取运动信息,则可以应用项目1。
[0241]
iv.可以应用项目3来确定是否可以用来自n个预定的空域邻近块和/或hmvp表中的m个条目中的一对的运动信息来构建成对平均merge候选。
[0242]
9.提出了总是用从n个预定的空域邻近块获取的运动信息以及从hmvp表中的m个条目和p个tmvp获取的运动信息来构建一个或多个成对平均merge候选。例如,n=1,m=1,p=1。
[0243]
a.n个预定的空域邻近块可以如项目6中那样被预定。
[0244]
b.hmvp表中的m个条目可以如项目7中那样被预定。
[0245]
c.tmvp可以用与hevc或vvc中相同的方式来推导。
[0246]
d.在一个示例中,仅一个成对平均merge候选可以用从n个预定的空域邻近块和/或hmvp表中的m个条目和/或p个tmvp获取的运动信息来构建。
[0247]
i.例如,按顺序检查n个预定的空域邻近块和/或hmvp表中的m个条目和/或p个tmvp中的每对,直到可以用来自n个预定的空域邻近块和/或hmvp表中的m个条目和/或p个tmvp中的一对的运动信息来构建成对平均merge候选。
[0248]
ii.在一个示例中,如果没有运动信息可以从n个预定的空域邻近块和/或hmvp表中的m个条目和/或p个tmvp获取,则不能构建成对平均merge候选。
[0249]
iii.在一个示例中,如果运动信息只能从n个预定的空域邻近块和/或hmvp表中的m个条目和/或p个tmvp中的一个获取,则可以应用项目1。
[0250]
iv.可以应用项目3来确定是否可以用来自n个预定的空域邻近块和/或hmvp表中的m个条目和/或p个tmvp中的一对的运动信息来构建成对平均merge候选。
[0251]
e.在一个示例中,可以用从n个预定的空域邻近块和/或hmvp表中的m个条目和/或p个tmvp获取的运动信息来构建s(s>1)个成对平均merge候选。
[0252]
i.例如,按顺序检查n个预定的空域邻近块和/或hmvp表中的m个条目和/或p个tmvp中的每对,直到可以用来自n个预定的空域邻近块和/或hmvp表中的m个条目和/或p个tmvp中的s对的运动信息来构建s个成对平均merge候选。
[0253]
ii.在一个示例中,如果没有运动信息可以从n个预定的空域邻近块和/或hmvp表中的m个条目和/或p个tmvp获取,则不能构建成对平均merge候选。
[0254]
iii.在一个示例中,如果运动信息只能从n个预定的空域邻近块和/或hmvp表中的m个条目和/或p个tmvp中的一个获取,则可以应用项目1。
[0255]
iv.可以应用项目3来确定是否可以用来自n个预定的空域邻近块和/或hmvp表中
的m个条目和/或p个tmvp中的一对的运动信息来构建成对平均merge候选。
[0256]
10.在一个示例中,如果不能构建成对平均merge候选(例如,用于成对平均候选推导的所有块都被帧内编解码),则一个或多个默认merge候选被放入merge候选列表中。
[0257]
a.在一个示例中,(多个)默认merge候选被放在merge候选列表中的零候选之前。
[0258]
i.可替代地,(多个)默认merge候选被放在merge候选列表中的零候选之后。
[0259]
b.在一个示例中,可以预定(多个)默认merge候选。
[0260]
i.例如,(多个)默认merge候选可以是(s,0)或(0,s);
[0261]
1)可替代地,(多个)默认merge候选可以是(s,s)或(s,

s);
[0262]
ii.在上述示例中,s是非零整数,诸如n或

n,其中n可以是1、2、3、4

。在另一示例中,s是非零整数,诸如2n或

2n,其中n可以是1、2、3、4

。在又一示例中,s是非零整数,诸如(2n

1)或

(2n

1),其中n可以是1、2、3、4

。在再一示例中,s是非零整数,诸如2
n

‑2n
,其中n可以是1、2、3、4


[0263]
c.在一个示例中,可以从编码器向解码器信令通知(多个)默认merge候选。
[0264]
d.在一个示例中,默认merge候选的mv必须引用整数位置。
[0265]
i.例如,默认merge候选的mv必须引用帧内块复制(intra

block copy,ibc)merge候选列表的整数位置。
[0266]
e.在一个示例中,如果不能从预定的块中找到成对平均候选,则它可以从hmvp表中推导。
[0267]
f.可替代地,可以跳过成对平均候选的插入。
[0268]
11.本文档中公开的方法可以应用于构建任何种类的merge候选列表中的成对平均merge候选。
[0269]
a.例如,它们可以用于构建常规merge候选列表中的(多个)成对平均merge候选。
[0270]
b.例如,它们可以用于构建三角形merge候选列表中的(多个)成对平均merge候选。
[0271]
c.例如,它们可以用于构建ibc merge候选列表中的(多个)成对平均merge候选。
[0272]
d.例如,它们可以用于构建基于子块的merge候选列表中的(多个)成对平均merge候选。
[0273]
e.例如,它们可以用于构建仿射merge候选列表中的(多个)成对平均merge候选。
[0274]
12.在一个示例中,从上述方法推导的成对merge候选可以在被添加到候选列表之前被进一步修改。
[0275]
a.在一个示例中,对于ibc merge候选列表,用所提出的方法推导的成对merge候选的mv应该取整到整数精度。假设存储mv精度为p,mv_pair是用所提出的方法推导的成对merge候选的mv,则将从mv_pair取整的mv_pair’放入ibc merge候选列表中。
[0276]
b.在一个示例中,mv_pari’=shift(mv_pair,p)<<p;
[0277]
c.在一个示例中,mv_pari’=satshift(mv_pair,p)<<p;
[0278]
d.在一个示例中,mv_pari’=mv_pair&(

1<<p)。
[0279]
13.在一个示例中,当(多个)成对merge候选在常规merge候选列表中时,可以应用本文档中公开的成对merge候选推导方法。
[0280]
a.可替代地,当(多个)成对merge候选在帧内块复制(ibc)merge候选列表中时,可
以应用本文档公开的成对merge候选推导方法。
[0281]
b.可替代地,当(多个)成对merge候选在基于子块的merge候选列表中时,可以应用本文档公开的成对merge候选推导方法。
[0282]
6.某些实施例的语法结构的示例
[0283]
实施例中的示例性语法设计公开如下。章节号指的是vvc文档的当前版本标准。使用粗体斜体文本突出显示实现一些实施例的语法变化的示例。
[0284]
8.5.2.2用于merge模式的亮度运动矢量的推导过程
[0285]
该过程仅在merge_flag[xcb][ypb]等于1时调用,其中(xcb,ycb)指定当前亮度编解码块的左上角样点相对于当前图片的左上角亮度样点。
[0286]
这一过程的输入是:
[0287]

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

变量cbwidth以亮度样点指定当前编解码块的宽度,
[0289]

变量cbheight以亮度样点指定当前编解码块的高度。
[0290]
这一过程的结果是:
[0291]

1/16分数样点精度的亮度运动矢量,mvl0[0][0]和mvl1[0][0],
[0292]

参考索引refidxl0和refidxl1,
[0293]

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

双向预测权重索引gbiidx。
[0295]
双向预测权重索引gbiidx被设置为等于0。
[0296]
变量xsmr、ysmr、smrwidth、smrheight和smrnumhmvpcand推导如下:
[0297]
xsmr=isinsmr[xcb][ycb]?smrx[xcb][ycb]:xcb
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

276)
[0298]
ysmr=isinsmr[xcb][ycb]?smry[xcb][ycb]:ycb
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

277)
[0299]
smrwidth=isinsmr[xcb][ycb]?smrw[xcb][ycb]:cbwidth
ꢀꢀꢀ
(8

278)
[0300]
smrheight=isinsmr[xcb][ycb]?smrh[xcb][ycb]:cbheight
ꢀꢀꢀ
(8

279)
[0301]
smrnumhmvpcand=isinsmr[xcb][ycb]?numhmvpsmrcand:numhmvpcand
[0302]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

280)
[0303]
运动矢量mvl0[0][0]和mvl1[0][0],参考索引refidxl0和refidxl1以及预测利用标志predflagl0[0][0]和predflagl1[0][0]通过以下有序步骤推导:
[0304]
1.调用章节8.5.2.3中规定的从邻近编解码单元推导merge候选的过程,其中,设置为等于(xsmr,ysmr)的亮度编解码块位置(xcb,ycb)、设置为等于smrwidth的亮度编解码块宽度cbwidth和设置为等于smrheight的亮度编解码块高度cbheight作为输入,输出是可用性标志availableflaga0、availableflaga1、availableflagb0、availableflagb1和availableflagb2,参考索引refidxlxa0、refidxlxa1、refidxlxb0、refidxlxb1和refidxlxb2,预测列表利用标志predflaglxa0、predflaglxa1、predflaglxb0、predflaglxb1和predflaglxb2,和运动矢量mvlxa0、mvlxa1、mvlxb0、mvlxb1和mvlxb2,其中x为0或1,以及双向预测权重索引gbiidxa0、gbiidxa1、gbiidxb0、gbiidxb1、gbiidxb2。
[0305]
2.x为0或1的参考索引refidxlxcol和时域merge候选col的双向预测权重索引gbiidxcol设置为等于0。
[0306]
3.调用章节8.5.2.11中规定的时域亮度运动矢量预测的推导过程,其中,设置为等于(xsmr,ysmr)的亮度位置(xcb,ycb)、设置为等于smrwidth的亮度编解码块宽度cbwidth、设置为等于smrheight的亮度编解码块高度cbheight和变量refidxl0col作为输入,输出为可用性标志availableflagl0col和时域运动矢量mvl0col。变量availableflagcol、predflagl0col和predflagl1col如下推导:
[0307]
availableflagcol=availableflagl0col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

281)
[0308]
predflagl0col=availableflagl0col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

282)
[0309]
predflagl1col=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

283)
[0310]
4.当tile_group_type等于b时,调用章节8.5.2.11中规定的时域亮度运动矢量预测的推导过程,其中,设置为等于(xsmr,ysmr)亮度位置(xcb,ycb)、设置为等于smrwidth的亮度编解码块宽度cbwidth、设置为等于smrheight亮度编解码块高度cbheight和变量refidxl1col作为输入,输出为可用性标志availableflagl1col和时域运动矢量mvl1col。变量availableflagcol和predflagl1col如下推导:
[0311]
availableflagcol=availableflagl0col||availableflagl1col
ꢀꢀꢀꢀꢀꢀ
(8

284)
[0312]
predflagl1col=availableflagl1col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

285)
[0313]
5.merge候选列表,mergecandlist,被构造如下:
[0314]
i=0
[0315]
if(availableflaga1)
[0316]
mergecandlist[i ]=a1[0317]
if(availableflagb1)
[0318]
mergecandlist[i ]=b1[0319]
if(availableflagb0)
[0320]
mergecandlist[i ]=b0ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

286)
[0321]
if(availableflaga0)
[0322]
mergecandlist[i ]=a0[0323]
if(availableflagb2)
[0324]
mergecandlist[i ]=b2[0325]
if(availableflagcol)
[0326]
mergecandlist[i ]=col
[0327]
6.变量numcurrmergecand和numorigmergecand设置为等于mergecandlist中的merge候选的数量。
[0328]
7.当numcurrmergecand小于(maxnummergecand

1)且smrnumhmvpcand大于0时,应用以下过程:
[0329]

调用章节8.5.2.6中规定的基于历史的merge候选的推导过程,其中,mergecandlist、设置为等于isinsmr[xcb][ycb]的isinsmr和
[0330]
numcurrmergecand作为输入,经修改的mergecandlist和
[0331]
numcurrmergecand作为输出。
[0332]

numorigmergecand设置为等于numcurrmergecand。
[0333]
8.当numcurrmergecand小于maxnummergecand且availableflaga1||availableflagb1不等于false时,应用以下过程:
[0334]

调用章节8.5.2.4中规定的成对平均merge候选的推导过程,mergecandlist、参考索引refidxl0n和refidxl1n、预测列表利用标志predflagl0n和predflagl1n、运动矢量mvl0n和mvl1n(n为a1和b1)、可用性标志availableflaga1和availableflagb1、numcurrmergecand和numorigmergecand作为输入,输出指定为mergecandlist、numcurrmergecand、参考索引refidxl0avgcand和refidxl1avgcand、预测列表利用标志predflagl0avgcand和predflagl1avgcand以及添加到mergecandlist中的候选avgcand的运动矢量mvl0avgcand和mvl1avgcand。添加到mergecandlist中的候选avgcand的双预测权重索引gbiidx设置为等于0。
[0335]

numorigmergecand设置为等于numcurrmergecand。
[0336]

[0337]
8.5.2.4成对平均merge候选的推导过程
[0338]
这一过程的输入是:
[0339]

merge候选列表mergecandlist,
[0340]

参考索引refidxl0n和refidxl1n,其中n是a1和b1,
[0341]

预测列表利用标志predflagl0n和predflagl1n,其中n是a1和b1,
[0342]

1/16分数样点精度的运动矢量mvl0n和mvl1n,其中n为a1和b1,
[0343]

可用性标志availableflaga1和availableflagb
[0344]

mergecandlist中的元素的数量numcurrmergecand。
[0345]
这一过程的结果是:
[0346]

merge候选列表mergecandlist,
[0347]

mergecandlist中的元素的数量numcurrmergecand,
[0348]

在该过程的调用期间,将候选avgcand的参考索引refidxl0avgcand和
[0349]
refidxl1avgcand添加到mergecandlist中,
[0350]

在该过程的调用期间,候选avgcand的预测列表利用标志
[0351]
predflagl0avgcand和predflagl1avgcand被添加到mergecandlist中,
[0352]

在该过程的调用期间,将候选avgcand的1/16分数样点精度的运动矢量
[0353]
mvl0avgcand和mvl1avgcand添加到mergecandlist中。
[0354]
变量numreflists如下推导:
[0355]
numreflists=(tile_group_type==b)?2:1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

314)
[0356]
进行以下指定,p0cand是merge候选列表mergecandlist中的位置0处的候选,p1cand是merge候选列表mergecandlist中的位置1处的候选:
[0357]
p0cand=a1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

315)
[0358]
p1cand=b1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

316)
[0359]
将候选avgcand添加到mergecandlist的末尾,即将mergecandlist[numcurrmergecand]设置为等于avgcand,并且参考索引、avgcand的运动矢量和预测列表利用标志如下推导,并且numcurrmergecand递增1:
[0360]
如果availableflaga1为真且availableflagb1为真,则应用以下过程:
[0361]

对于x范围从0到(numreflists

1)的每个参考图片列表lx,应用以下过程:
[0362]

如果predflaglxp0cand等于1并且predflaglxp1cand等于1,则变量refidxlxavgcand、predflaglxavgcand、mvlxavgcand[0]和mvlxavgcand[1]如下推导:
[0363]
refidxlxavgcand=refidxlxp0cand
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

317)
[0364]
predflaglxavgcand=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

318)
[0365]
mvlxavgcand[0]=(mvlxp0cand[0] mvlxp1cand[0])/2(8

319)
[0366]
mvlxavgcand[1]=(mvlxp0cand[1] mvlxp1cand[1])/2(8

320)
[0367]

否则,如果predflaglxp0cand等于1并且predflaglxp1cand等于0,则变量refidxlxavgcand、predflaglxavgcand、mvlxavgcand[0]、mvlxavgcand[1]如下推导:
[0368]
refidxlxavgcand=refidxlxp0cand
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

321)
[0369]
predflaglxavgcand=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

322)
[0370]
mvlxavgcand[0]=mvlxp0cand[0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

323)
[0371]
mvlxavgcand[1]=mvlxp0cand[1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

324)
[0372]

否则,如果predflaglxp0cand等于0并且predflaglxp1cand等于1,则变量refidxlxavgcand、predflaglxavgcand、mvlxavgcand[0]、mvlxavgcand[1]如下推导:
[0373]
refidxlxavgcand=refidxlxp1cand
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

325)
[0374]
predflaglxavgcand=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

326)
[0375]
mvlxavgcand[0]=mvlxp1cand[0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

327)
[0376]
mvlxavgcand[1]=mvlxp1cand[1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

328)
[0377]

否则,如果predflaglxp0cand等于0并且predflaglxp1cand等于0,则变量refidxlxavgcand、predflaglxavgcand、mvlxavgcand[0]、mvlxavgcand[1]如下推导:
[0378]
refidxlxavgcand=
‑1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

329)
[0379]
predflaglxavgcand=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

330)
[0380]
mvlxavgcand[0]=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

331)
[0381]
mvlxavgcand[1]=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

332)
[0382]

当numreflists等于1时,应用以下过程:
[0383]
refidxl1avgcand=
‑1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

333)
[0384]
predflagl1avgcand=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

334)
[0385]
否则,应用以下过程:
[0386]

如果availableflagb1为真,p0cand设置为等于b1。
[0387]

对于x范围从0到(numreflists

1)的每个参考图片列表lx,应用以下过程:
[0388]

如果predflaglxp0cand等于1并且predflaglxp1cand等于1,则变量refidxlxavgcand、predflaglxavgcand、mvlxavgcand[0]和mvlxavgcand[1]如下推导:
[0389]
refidxlxavgcand=refidxlxp0cand
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

317)
[0390]
predflaglxavgcand=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

318)
[0391]
mvlxavgcand[0]=mvlxp0cand[0]>=0?((mvlxp0cand[0] 1)>>1):
[0392]

(

mvlxp0cand[0] 1)>>1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

319)
[0393]
mvlxavgcand[1]=mvlxp0cand[1]>=0?((mvlxp0cand[1] 1)>>1):
[0394]

(

mvlxp0cand[1] 1)>>1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

320)
[0395]
图10是视频处理设备1000的框图。装置1000可以用于实施本文描述的方法中的一个或多个。装置1000可以体现在智能电话、平板电脑、计算机、物联网(internet of things,iot)接收器等中。装置1000可以包括一个或多个处理器1002、一个或多个存储器1004和视频处理硬件1006。(多个)处理器1002可以被配置为实施本文档中描述的一种或多种方法。存储器(多个存储器)可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件1006可以用于以硬件电路实施本文档中描述的一些技术。
[0396]
图11是视频处理的示例方法1100的流程图。方法1100包括从从特定组的一个或多个子组获取(1102)至少一组运动信息,该特定组包括作为成员的n个空域或时域邻近块和/或基于历史的运动矢量预测(hmvp)表中的p个条目,n和p是整数;基于至少一组运动信息,构造(1104)要插入到与当前视频块相关联的候选列表中的至少一个成对平均merge候选;以及使用该候选列表执行当前视频块和当前视频块的比特流表示之间的转换(1106)。
[0397]
额外的实施例和技术可以如以下示例中所述。
[0398]
在一个方面,公开了一种视频处理方法,包括:
[0399]
从特定组的一个或多个子组获取至少一组运动信息,该特定组包括作为成员的n个空域或时域邻近块和/或基于历史的运动矢量预测(hmvp)表中的p个条目,n和p是整数;
[0400]
基于至少一组运动信息,构造要插入到与当前视频块相关联的候选列表中的至少一个成对平均merge候选;以及
[0401]
使用该候选列表执行当前视频块和当前视频块的比特流表示之间的转换。
[0402]
在一个示例中,特定组包括第一子组,该第一子组包括作为成员的n个空域邻近块,其中n>=2。
[0403]
在一个示例中,该方法还包括:
[0404]
从第一子组中的k1对成员获取运动信息,以及
[0405]
用从第一子组中的k1对成员获取的运动信息构造k1个成对平均merge候选,k1>=1。
[0406]
在一个示例中,特定组还包括第二子组,该第二子组包括作为成员的m个时域运动矢量预测量(tmvp),其中m>=1。
[0407]
在一个示例中,该方法还包括:
[0408]
从第一子组和第二子组中的k2对成员提取运动信息,以及
[0409]
用从第一子组和第二子组中的k2对成员提取的运动信息构造k2个成对平均merge候选,k2>=1。
[0410]
在一个示例中,以与高效视频编码(hevc)或多功能视频编码(vvc)中相同的方式推导m个tmvp。
[0411]
在一个示例中,特定组包括第三子组,该第三子组包括作为成员的基于历史的运动矢量预测(hmvp)表中的p个条目,其中p>=1。
[0412]
在一个示例中,该方法还包括:
[0413]
从第三子组中的k3对成员提取运动信息,以及
[0414]
用从第三子组中的k3对成员提取的运动信息构造k3个成对平均merge候选,k3>=1。
[0415]
在一个示例中,特定组还包括第三子组,该第三子组包括作为成员的基于历史的运动矢量预测(hmvp)表中的p个条目,其中p>=1。
[0416]
在一个示例中,该方法还包括:
[0417]
从第一子组和第三子组中的k4对成员提取运动信息,以及
[0418]
用从第一子组和第三子组中的k4对成员提取的运动信息构造k4个成对平均merge候选,k4>=1。
[0419]
在一个示例中,特定组还包括第三子组,该第三子组包括作为成员的基于历史的运动矢量预测(hmvp)表中的p个条目,其中p>=1。
[0420]
在一个示例中,该方法还包括:
[0421]
从第一子组、第二子组和第三子组中的k5对成员获取运动信息,以及
[0422]
用从第一子组、第二子组和第三子组中的k5对成员获取的运动信息构造k5个成对平均merge候选,k5>=1。
[0423]
在一个示例中,p个条目是预定的。
[0424]
在一个示例中,p个条目是hmvp表中的前p个条目或最后p个条目。
[0425]
在一个示例中,hmvp表中的所有可用条目都被选择为p个条目。
[0426]
在一个示例中,p个条目在hmvp表中不具有连续的索引。
[0427]
在一个示例中,对于n=2,空域邻近块为如下之一:
[0428]
{a1,b1};
[0429]
{a1,a0};
[0430]
{b1,b0};
[0431]
{a1,b0};
[0432]
{b1,a0};
[0433]
{a1,b2};
[0434]
{b1,b2};
[0435]
{a0,b2};
[0436]
{b0,b2},
[0437]
其中a1、a0、b1、b0和b2分别表示当前视频块的左侧邻近块、左下邻近块、上侧邻近邻块、右上邻近块和左上邻近块。
[0438]
在一个示例中,对于n=3,空域邻近块为如下之一:
[0439]
{a1,b1,b0};
[0440]
{a1,b1,a0};
[0441]
{a1,b1,b2};
[0442]
{a1,a0,b2};
[0443]
{b1,b0,b2};
[0444]
{a1,b1,b0},
[0445]
其中a1、a0、b1、b0和b2分别表示当前视频块的左侧邻近块、左下邻近块、上侧邻近块、右上邻近块和左上邻近块。
[0446]
在一个示例中,空域邻近块为如下之一:
[0447]
{a1,b1,b0,b1},
[0448]
其中a1、b1和b0分别表示当前视频块的左侧邻近块、左下邻近块、上侧邻近块、右上邻近块和左上邻近块。
[0449]
在一个示例中,空域邻近块为如下之一:
[0450]
{a1,b1,b0,b1,b2},
[0451]
其中a1、b1、b0和b2分别表示当前视频块的左侧邻近块、左下邻近块、上侧邻近块、右上邻近块和左上邻近块。
[0452]
在一个示例中,n个空域邻近块是当前视频区域内不与当前视频块相邻的两个块。
[0453]
在一个示例中,当前视频区域属于当前编码树单元(ctu)、当前ctu行、当前条带、当前片组和当前片中的一个。
[0454]
在一个示例中,按顺序检查特定组的一个或多个子组中的每对成员,直到可以用从k
i
对成员导出的运动信息构造k
i
个成对平均merge候选,其中i为从1到5。
[0455]
在一个示例中,一个或多个子组包括第一子组。
[0456]
在一个示例中,一个或多个子组还包括第二子组。
[0457]
在一个示例中,第一子组和第二子组中的k
i
对成员是{a1,b1}、{a1,tmvp}、{a2,tmvp}。
[0458]
在一个示例中,一个或多个子组包括第三子组。
[0459]
在一个示例中,一个或多个子组包括第一子组和第三子组。
[0460]
在一个示例中,一个或多个子组包括第一子组、第二子组和第三子组。
[0461]
在一个示例中,如果不能从特定组的一个或多个子组推导运动信息,则不能构造成对平均merge候选。
[0462]
在一个示例中,如果只能从特定组的一个或多个子组中的一对成员推导一组运动信息,则成对平均merge候选可以从该组运动信息构造。
[0463]
在一个示例中,如果可以从来自特定组的子组的一对成员推导两组运动信息,则该方法还包括:
[0464]
检查该两组运动信息是否彼此相同或相似。
[0465]
在一个示例中,如果该两组运动信息彼此相同或相似,则确定不能用该两组运动信息构造成对平均merge候选。
[0466]
在一个示例中,如果该两组运动信息彼此相同或相似,则从该两组运动信息之一构造成对平均merge候选,并且该两组运动信息中的另一组运动信息被视为不可用。
[0467]
在一个示例中,转换包括将当前视频块编码成视频的比特流表示,和从视频的比特流表示中解码当前视频块。
[0468]
在另一个方面,公开了一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中指令在由处理器运行时使得处理器实施如上所述的方法。
[0469]
在另一方面,公开了一种其上存储有程序代码的非暂时性计算机可读介质,该程序代码在被运行时使得处理器实施如上所述的方法。
[0470]
应当理解,所公开的技术可以体现在视频编码器或解码器中,以在视频编码或解码操作期间使用包括使用成对平均来生成merge候选的技术来改进压缩效率。
[0471]
本文档中描述的所公开的和其它解决方案、示例、实施例、模块和功能操作可以在数字电子电路中实施,或者在计算机软件、固件或硬件中实施,包括本文档中公开的结构及
其结构等同物,或者在它们中的一个或多个的组合中实施。所公开的和其它实施例可以实施为一个或多个计算机程序产品,即编码在计算机可读介质上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基底、存储器设备、实现机器可读传播信号的物质组合,或者它们中的一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,例如,包括可编程处理器、计算机或多个处理器或计算机。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如,机器生成的电信号、光信号或电磁信号,其被生成来编码信息以传输到合适的接收器装置。
[0472]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其它单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其它程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件中(例如,存储一个或多个模块、子程序或部分代码的文件)。计算机程序可以被部署为在一个计算机或在位于一个站点或分布在多个站点并通过通信网络互连的多个计算机上执行。
[0473]
本文中描述的过程和逻辑流程可以由一个或多个可编程处理器执行,该处理器运行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路来执行,并且装置也可以实施为专用逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。
[0474]
举例来说,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或者被可操作地耦合以从一个或多个大容量存储设备接收数据或向其传送数据或两者兼有。然而,计算机不一定需要这样的设备。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如,包括半导体存储器设备,例如,eprom、eeprom和闪存设备;磁盘,例如,内部硬盘或可移动磁盘;磁光盘;以及cd

rom和dvd

rom盘。处理器和存储器可以由专用逻辑电路来补充或并入专用逻辑电路。
[0475]
虽然本专利文档包含许多细节,但这些不应被解释为对任何主题或所要求保护的范围的限制,而是对特定技术的特定实施例所特有的特征的描述。本专利文件中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合来实施。此外,尽管上述特征可以被描述为以某些组合起作用,甚至最初被要求这样来保护,但是在某些情况下,可以从所要求保护的组合中删除该组合中的一个或多个特征,并且所要求保护的组合可以指向子组合或子组合的变体。
[0476]
类似地,尽管在附图中以特定顺序描述了操作,但这不应理解为要求以所示的特定顺序或顺序地执行这些操作,或者要求执行所有所示的操作,以获得期望的结果。此外,在本专利文件中描述的实施例中的各种系统组件的分离不应该理解为在所有实施例中都需要这种分离。
[0477]
仅描述了几个实施方式和示例,并且可以基于本专利文件中描述和图示的内容进行其它实施、增强和变化。
再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜