用于查找表更新的编码的运动信息的选择的制作方法

文档序号:29969771发布日期:2022-05-11 11:10阅读:200来源:国知局
用于查找表更新的编码的运动信息的选择的制作方法
用于查找表更新的编码的运动信息的选择
1.本技术是申请日为2019年07月01日、申请号为201910586813.6、发明名称为“用于查找表更新的编码的运动信息的选择”的发明专利申请的分案申请。
技术领域
2.本技术文件涉及视频编码技术、设备和系统。


背景技术:

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


技术实现要素:

4.本文件公开了用于使用运动矢量的merge列表编码和解码数字视频的方法、系统和设备。
5.在一个示例方面,公开了一种视频解码方法。该方法包括:维护若干个表,其中每个表包括一组运动候选,其中每个运动候选与先前从视频块推导出的对应运动信息相关联;在视频块和视频块的编码表示之间执行转换;以及基于视频块的转换条件确定是否通过添加对应于视频块的运动信息来更新至少一个表。
6.在另一个示例方面,公开了另一种视频解码方法。该方法包括:维护若干个表,其中每个表包括一组运动候选,其中每个运动候选与先前从视频块推导出的对应运动信息相关联;在视频块和视频块的编码表示之间执行转换;在视频块内选择m个典型的位置,其中m是整数,以加载与m个典型的位置相关联的运动信息;以及使用与m个典型的位置相关联的运动信息更新至少一个表。
7.在又一示例方面,公开了实现本文所述的视频编码方法的视频编码设备。
8.在又一典型的方面,本文所述的各种技术可以实施为存储在非暂时性计算机可读介质上的计算机程序产品。计算机程序产品包括用于执行本文所述方法的程序代码。
9.在又一典型的方面,公开了实现本文所述的视频解码方法的视频解码装置。
10.在附件、附图和下面的描述中阐述了一个或多个实现的细节。其它特征将从说明书和附图以及权利要求书中显而易见。
附图说明
11.图1是示出视频编码器实现的示例的框图。
12.图2图示了h.264视频编码标准中的宏块分割。
13.图3图示了将编码块(cb)划分成预测块(pb)的示例。
14.图4图示了将编码树块(ctb)细分成cb和转换块(tb)的示例实现。实线表示cb边界,且虚线表示tb边界,包括带分割的示例ctb和相应的四叉树。
15.图5示出了用于分割视频数据的四叉树二叉树(qtbt)结构的示例。
16.图6示出了视频块分割的示例。
17.图7示出了四叉树分割的示例。
18.图8示出了树型信令的示例。
19.图9示出了merge候选列表构造的推导过程的示例。
20.图10示出了空间merge候选的示例位置。
21.图11示出了考虑到空间merge候选的冗余检查的候选对的示例。
22.图12示出了nx2n和2nxn分割的第二个pu的位置的示例。
23.图13图示了时域merge候选的示例运动矢量缩放。
24.图14示出了时域merge候选的候选位置以及它们的并置图片。
25.图15示出了组合双向预测merge候选的示例。
26.图16示出了运动矢量预测候选的推导过程的示例。
27.图17示出了空间运动矢量候选的运动矢量缩放的示例。
28.图18示出了编码单元(cu)的运动预测的示例可选时域运动矢量预测(atmvp)。
29.图19图示地描绘了源块和源图片的识别的示例。
30.图20示出了具有四个子块和相邻块的一个cu的示例。
31.图21图示了双边匹配的示例。
32.图22图示了模板匹配的示例。
33.图23描绘了帧速率上转换(fruc)中的单边运动估计(me)的示例。
34.图24示出了基于双边模板匹配的解码器侧运动矢量细化(dmvr)的示例。
35.图25示出了用于推导空间merge候选的空间相邻块的示例。
36.图26描绘了查找表的典型位置的选择是如何更新的示例。
37.图27说明了用新的一组运动信息更新查找表的示例。
38.图28是用于实现本文中所述的视觉媒体解码或视觉媒体编码技术的硬件平台示例的框图。
39.图29是视频比特流处理的另一示例方法的流程图。
40.图30是视频比特流处理的另一示例方法的流程图。
具体实施方式
41.为了提高视频的压缩比,研究人员不断寻找新的技术来编码视频。
42.1.介绍
43.本文件涉及视频编码技术。具体地,涉及视频编码中的运动信息编码(诸如merge模式、amvp模式)。可应用于现有的视频编码标准,或待最终确定的标准多功能视频编码。也可能适用于未来的视频编码标准或视频编解码器。
44.简要讨论
45.视频编码标准主要是通过开发公知的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编码器框
架的示例如图1所示。
46.2.1分割结构
47.2.1.1 h.264/avc中的分割树结构
48.先前标准中编码层的核心是宏块,包含16
×
16的亮度样点块,并且在常规的4:2:0颜色采样情况下,包含两个对应的8
×
8的色度样点块。
49.内部编码块使用空间预测来探索像素之间的空间相关性。定义了两种分割:16x16和4x4。
50.帧间编码块通过估计图片之间的运动来使用时域预测,而不是空间预测。可以单独估计16x16宏块或其任何子宏块分割的运动:16x8、8x16、8x8、8x4、4x8、4x4(见图2)。每个子宏块分割只允许一个运动矢量(mv)。
51.2.1.2 hevc中的分割树结构
52.在hevc中,通过使用四叉树结构(表示为编码树)将ctu划分成cu来适应各种局部特性。在cu级别决定是使用帧间(时域)预测还是帧内(空间)预测对图片区域进行编码。根据pu的分割类型,每个cu可以进一步划分成一个、两个或四个pu。在一个pu中,应用相同的预测处理,并且相关信息以pu为基础传输到解码器。在基于pu分割类型通过应用预测处理获得残差块后,可以根据与cu的编码树相似的另一个四叉树结构将cu分割成变换单元(tu)。hevc结构的一个重要特征是它具有多个分割概念,包括cu、pu以及tu。
53.以下,使用hevc的混合视频编码中涉及的各种特征突出显示如下。
54.1)编码树单元和编码树块(ctb)结构:hevc中的类似结构是编码树单元(ctu),其具有由编码器选择并且可以大于传统的宏块的尺寸。ctu由亮度ctb和相应的色度ctb以及语法元素组成。亮度ctb的尺寸l
×
l可以选择为l=16、32或64个样点,较大的尺寸通常能够实现更好的压缩。然后,hevc支持使用树结构和四叉树式信令将ctb分割为更小的块。
55.2)编码单元(cu)和编码块(cb):ctu的四叉树语法规定了其亮度和色度cb的尺寸和位置。四叉树的根与ctu相关联。因此,亮度ctb的尺寸是亮度cb支持的最大尺寸。ctu的亮度和色度cb的划分是联合发信令的。一个亮度cb和通常两个色度cb以及相关的语法一起形成编码单元(cu)。ctb可以只包含一个cu,也可以划分形成多个cu,并且每个cu都有一个相关的划分,分割成预测单元(pu)和转换单元树(tu)。
56.3)预测单元和预测块(pb):在cu级别决定是使用帧间预测还是帧内预测对图片区域进行编码。pu分割结构的根位于cu级。取决于基本的预测类型决定,可以在尺寸上进一步划分亮度和色度cb,并从亮度和色度预测块(pb)中预测亮度和色度cb。hevc支持从64
×
64到4
×
4个样点的可变pb尺寸。图3示出了mxm cu的允许pb示例。
57.4)tu和变换块:使用块变换对预测残差进行编码。tu树结构的根位于cu级。亮度cb残差可能与亮度变换块(tb)相同,或者也可能进一步划分成更小的亮度tb。同样适用于色度tb。对于4
×
4、8
×
8、16
×
16和32
×
32的方形tb定义了与离散余弦变换(dct)相似的整数基函数。对于亮度帧内预测残差的4
×
4变换,也可以指定从离散正弦变换(dst)形式推导的整数变换。
58.图4示出了将ctb细分成cb(和转换块(tb))的示例。实线指示cb边界,并且虚线指示tb边界。(a)带分割的ctb。(b)对应的四叉树。
59.2.1.2.1分割成变换块和单元的树形结构划分
60.对于残差编码,cb可以递归地分割为转换块(tb)。分割由残差四叉树发信令。只指定了方形cb和tb分割,其中块可以递归地划分为四象限,如图4所示。对于尺寸为m
×
m的给定的亮度cb,标志指示它是否被划分成四个尺寸为m/2
×
m/2的块。如果可以进一步划分,如sps中指示的残差四叉树的最大深度所指示的那样,每个象限都会分配一个标志,指示是否将其划分为四个象限。由残差四叉树生成的叶节点块是由变换编码进一步处理的变换块。编码器指示它将使用的最大和最小亮度tb尺寸。当cb尺寸大于最大tb尺寸时,则暗示划分。当划分将导致比指示的最小值更小的亮度tb尺寸时,则暗示不划分。色度tb尺寸在每个维度上是亮度tb尺寸的一半,但当亮度tb尺寸为4
×
4时除外,在这种情况下,被四个4
×
4亮度tb覆盖的区域使用单个4
×
4色度tb。在帧内预测的cu的情况下,最近相邻tb(cb内或cb外)的解码样点用作帧内预测的参考数据。
61.与以前的标准不同,对于帧间预测的cu,hevc设计允许tb跨越多个pb,以最大化得益于四叉树结构的tb分割的潜在编码效率。
62.2.1.2.2父节点和子节点
63.根据四叉树结构对ctb进行划分,其节点为编码单元。四叉树结构中的多个节点包括叶节点和非叶节点。叶节点在树结构中没有子节点(例如,叶节点不会进一步划分)。非叶节点包括树结构的根节点。根节点对应于视频数据的初始视频块(例如,ctb)。对于多个节点的每个各自的非根节点,各自的非根节点对应于视频块,该视频块是对应于各自非根节点的树结构中的父节点的视频块的子块。多个非叶节点的每个各自的非叶节点在树结构中具有一个或多个子节点。
64.2.1.3 jem中具有较大ctu的四叉树加二叉树块结构
65.为探索hevc之外的未来视频编码技术,vceg和mpeg于2015年共同成立了联合视频探索团队(jvet)。从那时起,jvet采用了许多新的方法,并将其应用到了名为联合探索模型(jem)的参考软件中。
66.2.1.3.1 qtbt块分割结构
67.与hevc不同,qtbt结构消除了多个分割类型的概念,即qtbt结构消除了cu、pu和tu概念的分离,并支持cu分割形状的更多灵活性。在qtbt块结构中,cu可以是方形或矩形。如图5所示,首先用四叉树结构对编码树单元(ctu)进行分割。四叉树叶节点进一步被二叉树结构分割。在二叉树划分中有两种分割类型:对称的水平划分和对称的垂直划分。二叉树叶节点被称为编码单元(cu),该划分用于预测和转换处理,而无需进一步分割。这意味着在qtbt编码块结构中cu、pu和tu具有相同的块尺寸。在jem中,cu有时由不同颜色分量的编码块(cb)组成,例如,在4:2:0色度格式的p条带和b条带中,一个cu包含一个亮度cb和两个色度cb,并且cu有时由单个分量的cb组成,例如,在i条带的情况下,一个cu仅包含一个亮度cb或仅包含两个色度cb。
68.为qtbt分割方案定义了以下参数。
69.–
ctu尺寸:四叉树的根节点尺寸,与hevc中的概念相同。
70.–
minqtsize:最小允许的四叉树叶节点尺寸
71.–
maxbtsize:最大允许的二叉树根节点尺寸
72.–
maxbtdepth:最大允许的二叉树深度
73.–
minbtsize:最小允许的二叉树叶节点尺寸
74.在qtbt分割结构的一个示例中,ctu尺寸被设置为具有两个对应的64
×
64色度样点块的128
×
128个亮度样点,minqtsize被设置为16
×
16,maxbtsize被设置为64
×
64,minbtsize(宽度和高度)被设置为4
×
4,maxbtsize被设置为4。四叉树分割首先应用于ctu,以生成四叉树叶节点。四叉树叶节点的尺寸可以具有从16
×
16(即,minqtsize)到128
×
128(即,ctu尺寸)的尺寸。如果叶四叉树节点是128
×
128,则其不会被二叉树进一步划分,因为其尺寸超过了maxbtsize(例如,64
×
64)。否则,叶四叉树节点可以被二叉树进一步分割。因此,四叉树叶节点也是二叉树的根节点,并且其二叉树深度为0。当二叉树深度达到maxbtdepth(即,4)时,不考虑进一步划分。当二叉树节点的宽度等于minbtsize(即,4)时,不考虑进一步的水平划分。同样,当二叉树节点的高度等于minbtsize时,不考虑进一步的垂直划分。通过预测和变换处理进一步处理二叉树的叶节点,而不需要进一步的分割。在jem中,最大ctu尺寸为256
×
256个亮度样点。
75.图5(左侧)图示了通过使用qtbt进行块分割的示例,图5(右侧)图示了相应的树表示。实线表示四叉树分割,并且虚线表示二叉树分割。在二叉树的每个划分(即,非叶)节点中,会对一个标志发信令来指示使用哪种分割类型(即,水平或垂直),其中0表示水平划分,1表示垂直划分。对于四叉树分割,不需要指明分割类型,因为四叉树分割总是水平和垂直划分一个块,以生成尺寸相同的4个子块。
76.此外,qtbt方案支持亮度和色度具有单独的qtbt结构的能力。目前,对于p条带和b条带,一个ctu中的亮度和色度ctb共享相同的qtbt结构。然而,对于i条带,用qtbt结构将亮度ctb分割为cu,用另一个qtbt结构将色度ctb分割为色度cu。这意味着i条带中的cu由亮度分量的编码块或两个色度分量的编码块组成,p条带或b条带中的cu由所有三种颜色分量的编码块组成。
77.在hevc中,为了减少运动补偿的内存访问,限制小块的帧间预测,使得4
×
8和8
×
4块不支持双向预测,并且4
×
4块不支持帧间预测。在jem的qtbt中,这些限制被移除。
78.2.1.4多功能视频编码(vvc)的三叉树
79.在一些实施例中,支持四叉树和二叉树以外的树类型。在实现中,还引入了另外两个三叉树(tt)划分,即水平和垂直的中心侧三叉树,如图6(d)和图6(e)所示。
80.图6示出了:(a)四叉树划分(b)垂直二叉树划分(c)水平二叉树划分(d)垂直中心侧三叉树划分(e)水平中心侧三叉树划分。
81.在一些实现中,有两个层次的树:区域树(四叉树)和预测树(二叉树或三叉树)。首先用区域树(rt)对ctu进行划分。可以进一步用预测树(pt)划分rt叶。也可以用pt进一步划分pt叶,直到达到最大pt深度。pt叶是基本的编码单元。为了方便起见,它仍然被称为cu。cu不能进一步划分。预测和变换都以与jem相同的方式应用于cu。整个分割结构被称为“多类型树”。
82.2.1.5分割结构
83.此响应中使用的称为多树型(mtt)的树结构是qtbt的广义化。在qtbt中,如图5所示,首先用四叉树结构对编码树单元(ctu)进行分割。然后用二叉树结构对四叉树叶节点进行进一步分割。
84.mtt的基本结构由两种类型的树节点组成:区域树(rt)和预测树(pt),支持九种类型的划分,如图7所示。
85.图7图示了以下示例:(a)四叉树分割,(b)垂直二叉树分割,(c)水平二叉树分割,(d)垂直三叉树分割,(e)水平三叉树分割,(f)水平向上非对称二叉树分割,(g)水平向下非对称二叉树分割,(h)垂直的左非对称二叉树分割,和(i)垂直的右非对称二叉树分割。
86.区域树可以递归地将ctu划分为方形块,直至4x4尺寸的区域树叶节点。在区域树的每个节点上,可以从三种树类型中的一种形成预测树:二叉树(bt)、三叉树(tt)和/或非对称二叉树(abt)。在pt划分中,可能禁止在预测树的分支中进行四叉树分割。和jem一样,亮度树和色度树在i条带中被分开。rt和pt的信令方法如图8所示。
87.2.2 hevc/h.265中的帧间预测
88.每个帧间预测的pu具有一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。对两个参考图片列表中的一个的使用也可以使用inter_pred_idc发信令。运动矢量可以相对于预测值显式地编码为增量,这种编码模式称为高级运动矢量预测(amvp)模式。
89.当cu采用跳跃模式编码时,一个pu与cu相关联,并且没有显著的残差系数、没有编码的运动矢量增量或参考图片索引。指定了一种merge模式,通过该模式,可以从相邻的pu(包括空间和时域候选)中获取当前pu的运动参数。merge模式可以应用于任何帧间预测的pu,而不仅仅是跳跃模式。merge模式的另一种选择是运动参数的显式传输,其中运动矢量、每个参考图片列表对应的参考图片索引和参考图片列表的使用都会在每个pu中显式地发信令。
90.当信令指示要使用两个参考图片列表中的一个时,从一个样点块中生成pu。这被称为“单向预测”。单向预测对p条带和b条带都可用。
91.当信令指示要使用两个参考图片列表时,从两个样点块中生成pu。这被称为“双向预测”。双向预测仅对b条带可用。
92.下面文本提供了hevc中规定的帧间预测模式的细节。描述将从merge模式开始。
93.2.2.1 merge模式
94.2.2.1.1merge模式的候选的推导
95.当使用merge模式预测pu时,从比特流分析指向merge候选列表中条目的索引,并用于检索运动信息。该列表的结构在hevc标准中有规定,并且可以按照以下步骤顺序进行概括:
96.步骤1:初始候选推导
97.步骤1.1:空域候选推导
98.步骤1.2:空域候选的冗余检查
99.步骤1.3:时域候选推导
100.步骤2:附加候选插入
101.步骤2.1:双向预测候选的创建
102.步骤2.2:零运动候选的插入
103.在图9中也示意性描述了这些步骤。对于空间merge候选推导,在位于五个不同位置的候选中最多选择四个merge候选。对于时域merge候选推导,在两个候选中最多选择一个merge候选。由于在解码器处假定每个pu的候选数为常量,因此当候选数未达到条带报头中发信令的最大merge候选数(maxnummergecand)时,生成附加的候选。由于候选数是恒定
的,所以最佳merge候选的索引使用截断的一元二值化(tu)进行编码。如果cu的大小等于8,则当前cu的所有pu都共享一个merge候选列表,这与2n
×
2n预测单元的merge候选列表相同。
104.下面详细介绍与上述步骤相关的操作。
105.2.2.1.2空域候选推导
106.在空间merge候选的推导中,在位于图10所示位置的候选中最多选择四个merge候选。推导顺序为a1、b1、b0、a0和b2。只有当位置a1、b1、b0、a0的任何pu不可用(例如,因为它属于另一个条带或片)或是内部编码时,才考虑位置b2。在增加a1位置的候选后,对其余候选的增加进行冗余检查,其确保具有相同运动信息的候选被排除在列表之外,从而提高编码效率。为了降低计算的复杂度,在所提到的冗余检查中并不考虑所有可能的候选对。相反,只有与图11中的箭头链接的对才会被考虑,并且只有当用于冗余检查的对应候选没有相同的运动信息时,才将候选添加到列表中。复制运动信息的另一个来源是与2n
×
2n不同的分区相关的“第二pu”。例如,图12分别描述了n
×
2n和2n
×
n情况下的第二pu。当当前的pu被划分为n
×
2n时,对于列表构建不考虑a1位置的候选。在一些实施例中,添加此候选可能导致两个具有相同运动信息的预测单元,这对于在编码单元中仅具有一个pu是冗余的。同样地,当当前pu被划分为2n
×
n时,不考虑位置b1。
107.2.2.1.3时域候选推导
108.在此步骤中,只有一个候选添加到列表中。特别地,在这个时域merge候选的推导中,基于与给定参考图片列表中当前图片具有最小图片顺序计数poc差异的并置pu推导了缩放运动矢量。用于推导并置pu的参考图片列表在条带报头中显式地发信令。图13中的虚线示出了时域merge候选的缩放运动矢量的获得,其使用poc距离tb和td从并置pu的运动矢量进行缩放,其中tb定义为当前图片的参考图片和当前图片之间的poc差异,并且td定义为并置图片的参考图片与并置图片之间的poc差异。时域merge候选的参考图片索引设置为零。hevc规范中描述了缩放处理的实际实现。对于b条带,得到两个运动矢量(一个是对于参考图片列表0,另一个是对于参考图片列表1)并将其组合使其成为双向预测merge候选。时域merge候选的运动矢量缩放的说明。
109.在属于参考帧的并置pu(y)中,在候选c0和c1之间选择时域候选的位置,如图14所示。如果位置c0处的pu不可用、内部编码或在当前ctu之外,则使用位置c1。否则,位置c0被用于时域merge候选的推导。
110.2.2.1.4附加候选插入
111.除了空时merge候选,还有两种附加类型的merge候选:组合双向预测merge候选和零merge候选。组合双向预测merge候选是利用空时merge候选生成的。组合双向预测merge候选仅用于b条带。通过将初始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数相结合,生成组合双向预测候选。如果这两个元组提供不同的运动假设,它们将形成新的双向预测候选。图15示出了原始列表中(在左侧)的两个候选被用于创建添加到最终列表(在右侧)中的组合双向预测merge候选的情况,其具有mvl0和refidxl0或mvl1和refidxl1的两个候选。有许多关于组合的规则需要考虑以生成这些附加merge候选。
112.插入零运动候选以填充merge候选列表中的其余条目,从而达到maxnummergecand的容量。这些候选具有零空间位移和从零开始并且每次将新的零运动候选添加到列表中时
都会增加的参考图片索引。这些候选使用的参考帧的数目对于单向预测和双向预测分别是1帧和2帧。最后,对这些候选不执行冗余检查。
113.2.2.1.5并行处理的运动估计区域
114.为了加快编码处理,可以并行执行运动估计,从而同时推导给定区域内所有预测单元的运动矢量。从空间邻域推导merge候选可能会干扰并行处理,因为一个预测单元在完成相关运动估计之前无法从相邻的pu推导运动参数。为了缓和编码效率和处理延迟之间的平衡,hevc定义了运动估计区域(mer)。可使用如下所述的语法元素“log2_parallel_merge_level_minus2”在图片参数集中对mer的尺寸中发信令。当定义mer时,落入同一区域的merge候选标记为不可用,并且因此在列表构建中不考虑。
115.7.3.2.3图片参数设置原始字节序列有效载荷(rbsp)语法
116.7.3.2.3.1通用图片参数集rbsp语法
[0117][0118]
log2_parallel_merge_level_minus2加2指定变量log2parmrglevel的值,该变量用于第8.5.3.2.2条中规定的merge模式亮度运动矢量的推导过程,以及第8.5.3.2.3条中规定的空间merge候选的推导过程。log2_parallel_merge_level_minus2的值应在0到ctblog2sizey-2的范围内,包括0和ctblog2sizey-2。
[0119]
变量log2parmrglevel推导如下:
[0120]
log2parmrglevel=log2_parallel_merge_level_minus2+2
[0121]
注释3

log2parmrglevel的值表示merge候选列表并行推导的内置功能。例如,当log2parmrglevel等于6时,可以并行推导64x64块中包含的所有预测单元(pu)和编码单元(cu)的merge候选列表。
[0122]
2.2.2amvp模式中的运动矢量预测
[0123]
运动矢量预测利用运动矢量与相邻的pu的空时相关性,其用于运动参数的显式传输。首先通过检查左上方的时域相邻的pu位置的可用性、去掉多余的候选位置并且加上零
矢量以使候选列表长度恒定来构建运动矢量候选列表。然后,编码器可以从候选列表中选择最佳的预测值,并发送指示所选候选的对应索引。与merge索引信令类似,最佳运动矢量候选的索引使用截断的一元进行编码。在这种情况下要编码的最大值是2(图2至图8)。在下面的章节中,将详细介绍运动矢量预测候选的推导过程。
[0124]
2.2.2.1运动矢量预测候选的推导
[0125]
图16概括了运动矢量预测候选的推导过程。
[0126]
在运动矢量预测中,考虑了两种类型的运动矢量候选:空间运动矢量候选和时域运动矢量候选。对于空间运动矢量候选的推导,基于位于图11所示的五个不同位置的每个pu的运动矢量最终推推导两个运动矢量候选。
[0127]
对于时域运动矢量候选的推导,从两个候选中选择一个运动矢量候选,这两个候选是基于两个不同的并置位置推导的。在作出第一个空时候选列表后,移除列表中重复的运动矢量候选。如果潜在候选的数量大于二,则从列表中移除相关联的参考图片列表中参考图片索引大于1的运动矢量候选。如果空时运动矢量候选数小于二,则会在列表中添加附加的零运动矢量候选。
[0128]
2.2.2.2空间运动矢量候选
[0129]
在推导空间运动矢量候选时,在五个潜在候选中最多考虑两个候选,这五个候选来自图11所描绘位置上的pu,这些位置与运动merge的位置相同。当前pu左侧的推导顺序定义为a0、a1、以及缩放的a0、缩放的a1。当前pu上面的推导顺序定义为b0、b1,b2、缩放的b0、缩放的b1、缩放的b2。因此,每侧有四种情况可以用作运动矢量候选,其中两种情况不需要使用空间缩放,并且两种情况使用空间缩放。四种不同的情况概括如下:
[0130]
‑‑
无空间缩放
[0131]
(1)相同的参考图片列表,并且相同的参考图片索引(相同的poc)
[0132]
(2)不同的参考图片列表,但是相同的参考图片索引(相同的poc)
[0133]
‑‑
空间缩放
[0134]
(3)相同的参考图片列表,但是不同的参考图片索引(不同的poc)
[0135]
(4)不同的参考图片列表,并且不同的参考图片索引(不同的poc)
[0136]
首先检查无空间缩放的情况,然后检查空间缩放。当poc在相邻pu的参考图片与当前pu的参考图片之间不同时,都会考虑空间缩放,而不考虑参考图片列表。如果左侧候选的所有pu都不可用或是内部编码,则允许对上述运动矢量进行缩放,以帮助左侧和上方mv候选的平行推导。否则,不允许对上述运动矢量进行空间缩放。
[0137]
在空间缩放处理中,相邻pu的运动矢量以与时域缩放相似的方式缩放,如图17所示。主要区别在于,给出了当前pu的参考图片列表和索引作为输入,实际缩放处理与时域缩放处理相同。
[0138]
2.2.2.3时域运动矢量候选
[0139]
除了参考图片索引的推导外,时域merge候选的所有推导过程与空间运动矢量候选的推导过程相同(图2至图6)。向解码器发参考图片索引的信令。
[0140]
2.2.2.4amvp信息的信令
[0141]
对于amvp模式,可以在比特流对四个部分发信令,包括预测方向、参考索引、mvd和mv预测候选索引。
[0142]
语法表:
[0143][0144]
7.3.8.9运动矢量差语法
[0145][0146]
2.3联合探索模型(jem)中新的帧间预测方法
[0147]
2.3.1基于子cu的运动矢量预测
[0148]
在具有qtbt的jem中,每个cu对于每个预测方向最多可以具有一组运动参数。通过将大的cu分割成子cu并推导该大cu的所有子cu的运动信息,编码器中考虑了两种子cu级的运动矢量预测方法。可选时域运动矢量预测(atmvp)方法允许每个cu从多个小于并置参考图片中当前cu的块中获取多组运动信息。在空时运动矢量预测(stmvp)方法中,通过利用时域运动矢量预测值和空间邻接运动矢量递归地推导子cu的运动矢量。
[0149]
为了为子cu运动预测的保持更精确的运动场,当前禁用参考帧的运动压缩。
[0150]
2.3.1.1可选时域运动矢量预测
[0151]
在可选时域运动矢量预测(atmvp)方法中,运动矢量时域运动矢量预测(tmvp)是通过从小于当前cu的块中提取多组运动信息(包括运动矢量和参考索引)来修改的。如图18所示,子cu为方形n
×
n块(默认n设置为4)。
[0152]
atmvp分两步预测cu内的子cu的运动矢量。第一步是用所谓的时域矢量识别参考图中的对应块。参考图片称为运动源图片。第二步是将当前cu划分成子cu,并从每个子cu对应的块中获取运动矢量以及每个子cu的参考索引,如图18所示。
[0153]
在第一步中,参考图片和对应的块由当前cu的空间相邻块的运动信息确定。为了避免相邻块的重复扫描处理,使用当前cu的merge候选列表中的第一个merge候选。第一个可用的运动矢量及其相关联的参考索引被设置为时域矢量和运动源图片的索引。这样,在atmvp中,与tmvp相比,可以更准确地识别对应的块,其中对应的块(有时称为并置块)始终位于相对于当前cu的右下角或中心位置。在一个示例中,如果第一个merge候选来自左相邻
块(例如,图19中的a1),则使用相关的mv和参考图片来识别源块和源图片。
[0154]
图19示出了源块和源图片的识别的示例。
[0155]
在第二步中,通过将时域矢量添加到当前cu的坐标中,通过运动源图片中的时域矢量识别子cu的对应块。对于每个子cu,使用其对应块的运动信息(覆盖中心样点的最小运动网格)来推导子cu的运动信息。在识别出对应n
×
n块的运动信息后,将其转换为当前子cu的运动矢量和参考索引,与hevc的tmvp方法相同,其中应用运动缩放和其它处理。例如,解码器检查是否满足低延迟条件(例如,当前图片的所有参考图片的poc都小于当前图片的poc),并可能使用运动矢量mvx(与参考图片列表x对应的运动矢量)来为每个子cu预测运动矢量mvy(x等于0或1且y等于1-x)。
[0156]
2.3.1.2空时运动矢量预测
[0157]
在这种方法中,子cu的运动矢量是按照光栅扫描顺序递归推导的。图20说明了该概念。我们来考虑一个8
×
8的cu,它包含四个4
×
4的子cu a、b、c和d。当前帧中相邻的4
×
4的块标记为a、b、c和d。
[0158]
子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的运动矢量。
[0159]
图20示出了具有四个子块(a-d)和相邻块(a-d)的一个cu的示例。
[0160]
2.3.1.3子cu运动预测模式信令通知
[0161]
子cu模式作为附加的merge候选模式启用,并且不需要附加的语法元素来对该模式发信令。将另外两个merge候选添加到每个cu的merge候选列表中,以表示atmvp模式和stmvp模式。如果序列参数集指示启用了atmvp和stmvp,则最多使用七个merge候选。附加merge候选的编码逻辑与hm中的merge候选的编码逻辑相同,这意味着对于p条带或b条带中的每个cu,需要对两个附加merge候选进行两次额外的rd检查。
[0162]
在jem中,merge索引的所有bin文件都由cabac进行上下文编码。然而在hevc中,只有第一个bin文件是上下文编码的,并且其余的bin文件是上下文旁路编码的。
[0163]
2.3.2自适应运动矢量差分辨率
[0164]
在hevc中,当在条带报头中use_integer_mv_flag等于0时,运动矢量差(mvd)(在pu的运动矢量和预测运动矢量之间)以四分之一亮度样点为单位发信令。在jem中,引入了局部自适应运动矢量分辨率(lamvr)。在jem中,mvd可以用四分之一亮度样点、整数亮度样点或四亮度样点的单位进行编码。mvd分辨率控制在编码单元(cu)级别,并且mvd分辨率标志有条件地为每个至少有一个非零mvd分量的cu发信令。
[0165]
对于具有至少一个非零mvd分量的cu,第一个标志将发信令以指示cu中是否使用四分之一亮度样点mv精度。当第一个标志(等于1)指示不使用四分之一亮度样点mv精度时,另一个标志发信令以指示是使用整数亮度样点mv精度还是使用四亮度样点mv精度。
[0166]
当cu的第一个mvd分辨率标志为零或没有为cu编码(意味着cu中的所有mvd都为零)时,cu使用四分之一亮度样点mv分辨率。当一个cu使用整数亮度样点mv精度或四亮度样点mv精度时,该cu的amvp候选列表中的mvp将取整到对应的精度。
[0167]
在编码器中,cu级别的rd检查用于确定哪个mvd分辨率将用于cu。也就是说,对每个mvd分辨率执行三次cu级别的rd检查。为了加快编码器速度,在jem中应用以下编码方案。
[0168]
在对具有正常四分之一亮度采样mvd分辨率的cu进行rd检查期间,存储当前cu(整数亮度采样精度)的运动信息。在对具有整数亮度样点和4亮度样点mvd分辨率的同一个cu进行rd检查时,将存储的运动信息(取整后)用作进一步小范围运动矢量细化的起始点,从而使耗时的运动估计处理不会重复三次。
[0169]
有条件地调用具有4亮度样点mvd分辨率的cu的rd检查。对于cu,当整数亮度样点mvd分辨率的rd检查成本远大于四分之一亮度样点mvd分辨率的rd检查成本时,将跳过对cu的4亮度样点mvd分辨率的rd检查。
[0170]
2.3.3模式匹配运动矢量推导
[0171]
模式匹配运动矢量推导(pmmvd)模式是基于帧速率上转换(fruc)技术的特殊merge模式。在这种模式下,块的运动信息不会被发信令,而是在解码器侧推导。
[0172]
对于cu,当其merge标志为真时,对fruc标志发信令。当fruc标志为假时,对merge索引发信令并且使用常规merge模式。当fruc标志为真时,对另一个fruc模式标志发信令来指示将使用哪种模式(双边匹配或模板匹配)来推导该块的运动信息。
[0173]
在编码器侧,基于对正常merge候选所做的rd成本选择决定是否对cu使用fruc merge模式。即通过使用rd成本选择来检查cu的两个匹配模式(双边匹配和模板匹配)。导致最低成本的模式进一步与其它cu模式相比较。如果fruc匹配模式是最有效的模式,那么对于cu,fruc标志设置为真,并且使用相关的匹配模式。
[0174]
fruc merge模式中的运动推导过程有两个步骤:首先执行cu级运动搜索,然后执行子cu级运动优化。在cu级,基于双边匹配或模板匹配,推导整个cu的初始运动矢量。首先,生成一个mv候选列表,并且选择导致最低匹配成本的候选作为进一步优化cu级的起点。然后在起始点附近执行基于双边匹配或模板匹配的局部搜索,并且将最小匹配成本的mv结果作为整个cu的mv值。接着,以推导的cu运动矢量为起点,进一步在子cu级细化运动信息。
[0175]
例如,对于w
×
h cu运动信息推导执行以下推导过程。在第一阶段,推推导了整个w
×
h cu的mv。在第二阶段,该cu进一步被分成m
×
m子cu。m的值按照等式(1)计算,d是预先定义的划分深度,在jem中默认设置为3。然后推导每个子cu的mv值。
[0176][0177]
如图21所示,通过沿当前cu的运动轨迹在两个不同的参考图片中找到两个块之间最接近的匹配,使用双边匹配来推导当前cu的运动信息。在连续运动轨迹假设下,指向两个参考块的运动矢量mv0和mv1与当前图片和两个参考图片之间的时间距离(例如,td0和td1成正比。作为特殊情况,当当前图片暂时位于两个参考图片之间并且当前图片到两个参考图片的时间距离相同时,双边匹配成为基于镜像的双向mv。
[0178]
如图22所示,通过在当前图片中的模板(当前cu的顶部和/或左侧相邻块)和参考图片中的块(与模板尺寸相同)之间找到最接近的匹配,使用模板匹配来推导当前cu的运动
信息。除了上述的fruc merge模式外,模板匹配也应用于amvp模式。在jem中,正如在hevc中一样,amvp有两个候选。利用模板匹配方法,推导了新的候选。如果由模板匹配新推导的候选与第一个现有amvp候选不同,则将其插入amvp候选列表的最开始处,并且然后将列表大小设置为2(即移除第二个现有amvp候选)。当应用于amvp模式时,仅应用cu级搜索。
[0179]
2.3.3.1cu级mv候选集
[0180]
cu级的mv候选集包括:
[0181]
(i)原始amvp候选,如果当前cu处于amvp模式,
[0182]
(ii)所有merge候选,
[0183]
(iii)在第2.3.3.2节中介绍的插值mv场中的几个mv。
[0184]
(iv)顶部和左侧相邻运动矢量
[0185]
当使用双边匹配时,merge候选的每个有效mv用作输入,以生成假设为双边匹配的mv对。例如,merge候选在参考列表a处的一个有效mv为(mva,refa)。然后在另一个参考列表b中找到其配对的双边mv的参考图片refb,以便refa和refb在时间上位于当前图片的不同侧。如果参考列表b中的参考refb不可用,则将参考refb确定为与参考refa不同的参考,并且其到当前图片的时间距离是列表b中的最小距离。确定参考refb后,通过基于当前图片和参考refa、参考refb之间的时间距离缩放mva推导mvb。
[0186]
还将来自插值mv场中的四个mv添加到cu级候选列表中。更具体地,添加当前cu的位置(0,0),(w/2,0),(0,h/2)和(w/2,h/2)处插值的mv。
[0187]
当在amvp模式下应用fruc时,原始的amvp候选也添加到cu级的mv候选集。
[0188]
在cu级,可以将amvp cu的最多15个mv和merge cu的最多13个mv添加到候选列表中。
[0189]
2.3.3.2子cu级mv候选集
[0190]
在子cu级设置的mv候选包括:
[0191]
(i)从cu级搜索确定的mv,
[0192]
(ii)顶部、左侧、左上方和右上方相邻的mv,
[0193]
(iii)来自参考图片的并置mv的缩放版本,
[0194]
(iv)最多4个atmvp候选,
[0195]
(v)最多4个stmvp候选。
[0196]
来自参考图片的缩放mv推导如下。两个列表中的所有参考图片都被遍历。参考图片中子cu的并置位置处的mv被缩放为起始cu级mv的参考。
[0197]
atmvp和stmvp候选被限制为前四个。在子cu级,最多17个mv被添加到候选列表中。
[0198]
2.3.3.3插值mv场的生成
[0199]
在对帧进行编码之前,基于单向me生成整个图片的内插运动场。然后,该运动场可以随后用作cu级或子cu级的mv候选。
[0200]
首先,两个参考列表中每个参考图片的运动场在4
×
4的块级别上被遍历。对于每个4
×
4块,如果与块相关联的运动通过当前图片中的4
×
4块(如图23所示),并且该块没有被分配任何内插运动,则根据时间距离td0和td1将参考块的运动缩放到当前图片(与hevc中tmvp的mv缩放相同),并且在当前帧中将该缩放运动指定给该块。如果没有缩放的mv指定给4
×
4块,则在插值运动场中将块的运动标记为不可用。
[0201]
2.3.3.4插补匹配成本
[0202]
当运动矢量指向分数采样位置时,需要运动补偿插值。为了降低复杂度,对双边匹配和模板匹配都使用双线性插值而不是常规的8抽头hevc插值。
[0203]
匹配成本的计算在不同的步骤处有点不同。当从cu级的候选集中选择候选时,匹配成本是双边匹配或模板匹配的绝对和差(sad)。在确定起始mv后,双边匹配在子cu级搜索的匹配成本c计算如下:
[0204][0205]
这里,w是权重系数,被经验地设置为4。mv和mvs分别指示当前mv和起始mv。仍然将sad用作模式匹配在子cu级搜索的匹配成本。
[0206]
在fruc模式下,mv通过仅使用亮度样点推导。推导的运动将用于亮度和色度的mc帧间预测。确定mv后,对亮度使用8抽头(8-taps)插值滤波器并且对色度使用4抽头(4-taps)插值滤波器执行最终mc。
[0207]
2.3.3.5 mv细化
[0208]
mv细化是基于模式的mv搜索,以双边成本或模板匹配成本为标准。在jem中,支持两种搜索模式—无限制中心偏置菱形搜索(ucbds)和自适应交叉搜索,分别在cu级别和子cu级别进行mv细化。对于cu级和子cu级的mv细化,都在四分之一亮度样点精度下直接搜索mv,接着是八分之一亮度样点mv细化。将cu和子cu步骤的mv细化的搜索范围设置为8个亮度样点。
[0209]
2.3.3.6模板匹配fruc merge模式下预测方向的选择
[0210]
在双边merge模式下,总是应用双向预测,因为cu的运动信息是在两个不同的参考图片中基于当前cu运动轨迹上两个块之间的最近匹配得出的。模板匹配merge模式没有这种限定。在模板匹配merge模式下,编码器可以从列表0的单向预测、列表1的单向预测或者双向预测中为cu做出选择。
[0211]
该选择基于如下的模板匹配成本:
[0212]
如果costbi《=factor*min(cost0,cost1)
[0213]
则使用双向预测;
[0214]
否则,如果cost0《=cost1
[0215]
则使用列表0中的单向预测;
[0216]
否则,
[0217]
使用列表1中的单向预测;
[0218]
其中cost0是列表0模板匹配的sad,cost1是列表2模板匹配的sad,并且costbi是双向预测模板匹配的sad。factor的值等于1.25,意味着选择处理朝双向预测偏移。帧间预测方向选择可以仅应用于cu级模板匹配处理。
[0219]
2.3.4解码器侧运动矢量细化
[0220]
在双向预测操作中,对于一个块区域的预测,将两个分别由列表0的运动矢量(mv)和列表1的mv形成的预测块组合形成单个预测信号。在解码器侧运动矢量细化(dmvr)方法中,通过双边模板匹配处理进一步细化双向预测的两个运动矢量。解码器中应用的双边模板匹配用于在双边模板和参考图片中的重建样点之间执行基于失真的搜索,以便在不传输附加运动信息的情况下获得细化的mv。
[0221]
在dmvr中,双边模板被生成为两个预测块的加权组合(即平均),其中两个预测块分别来自列表0的初始mv0和列表1的mv1。模板匹配操作包括计算生成的模板与参考图片中的样点区域(在初始预测块周围)之间的成本度量。对于两个参考图片中的每一个,产生最小模板成本的mv被视为该列表的更新mv,以替换原始mv。在jem中,为每个列表搜索九个mv候选。九个mv候选包括原始mv和8个周边mv,这八个周边mv在水平或垂直方向上或两者与原始mv具有一个亮度样点的偏移。最后,使用图24所示的两个新的mv(即mv0

和mv1

)生成最终的双向预测结果。绝对差异之和(sad)被用作成本度量。
[0222]
在不传输附加语法元素的情况下,将dmvr应用于双向预测的merge模式,其中一个mv来自过去的参考图片,并且另一个mv来自未来的参考图片。在jem中,当为cu启用lic、仿射运动、fruc或子cu merge候选时,不应用dmvr。
[0223]
2.3.5具有双边匹配细化的merge/跳跃模式
[0224]
首先构建merge候选列表,通过将空间相邻块和时域相邻块的运动矢量和参考索引插入候选列表,并进行冗余检查,直到可用候选数量达到最大候选数目19。merge/跳过模式的merge候选列表是通过根据预先定义的插入顺序插入空间候选(图11)、时域候选、仿射候选、高级时域mvp(atmvp)候选、空时mvp(stmvp)候选和hevc中使用的附加候选(组合候选和零候选)来构建的:
[0225]-块1-4的空间候选。
[0226]-块1-4的外推仿射候选。
[0227]-atmvp。
[0228]-stmvp。
[0229]-虚拟仿射候选。
[0230]-空间候选(块5)(仅当可用候选数小于6时使用)。
[0231]-外推仿射候选(块5)。
[0232]-时域候选(如hevc中推导的)。
[0233]-后接外推仿射候选的非相邻的空间候选(块6至块49,如图25所示)。
[0234]-组合候选。
[0235]-零候选
[0236]
值得注意的是,除了stmvp和仿射之外,ic标志也继承自merge候选。此外,对于前四个空间候选,在单向预测候选之前插入双向预测候选。
[0237]
在一些实现中,可以访问未与当前块连接的块。如果使用非内部模式对非相邻块进行编码,则相关的运动信息可以作为附加merge候选添加。
[0238]
3.本文公开的实施例所解决的问题的示例
[0239]
当前的hevc设计可以将当前块与其相邻块(与当前块相邻)的相关性用于更好地编码运动信息。然而,相邻块可能对应于具有不同运动轨迹的不同对象。在这种情况下,从相邻块进行预测不是有效的。
[0240]
从非相邻块的运动信息预测可以带来额外的编码效益,代价是将所有运动信息(通常在4x4级别)存储到缓存中,这显著地增加硬件实现的复杂性。
[0241]
4.一些示例
[0242]
为了克服现有实现的缺点,可以在各种实施例中实现基于lut的运动矢量预测技
术,以提供具有更高编码效率的视频编码,基于lut的运动矢量预测技术使用存储至少一个运动候选以预测块的运动信息的一个或多个查找表。每个lut可以包括一个或多个运动候选,每个运动候选与相应的运动信息关联。运动候选的运动信息可以包括预测方向、参考索引/图片、运动矢量、lic标志、仿射标志、运动矢量推导(mvd)精度和/或mvd值的部分或全部。运动信息还可以包括块位置信息,以指示运动信息来自何处。
[0243]
在下面对各种实现描述的示例中说明了基于所公开的技术的基于lut的运动矢量预测,其可以增强现有和未来的视频编码标准。由于lut允许基于历史数据(例如,已处理的块)执行编码/解码过程,因此基于lut的运动矢量预测也可以称为基于历史的运动矢量预测(hmvp)方法。在基于lut的运动矢量预测方法中,在编码/解码过程中保持一个或多个表,其运动信息来自先前的编码块。在块的编码/解码期间,可以将lut中的相关运动信息添加到运动候选列表中,并且可以在编码/解码该块后更新lut。下面的示例应该视为解释一般概念的示例。这些示例不应该被狭隘地理解。此外,这些示例可以以任何方式组合。
[0244]
一些实施例可以使用存储了至少一个运动候选的一个或多个查找表来预测块的运动信息。实施例可以使用运动候选来指示存储在查找表中的一组运动信息。对于传统的amvp或merge模式,实施例可以使用amvp或merge候选,用于存储运动信息。
[0245]
下面的示例说明了一般概念。
[0246]
查找表的示例
[0247]
示例a1:每个查找表可以包含一个或多个运动候选,其中每个候选与其运动信息关联。
[0248]
a.这里,候选运动的运动信息可能包括预测方向、参考索引/图片、运动矢量、lic标志、仿射标志、mvd精度、mvd值的部分或全部。
[0249]
b.运动信息还可以包括块位置信息,以指示运动信息来自何处。
[0250]
c.可为每个查找表进一步分配计数器。
[0251]
i.在对图片/条带/lcu(ctu)行/片进行编码/解码的开始处,可以将计数器初始化为零。
[0252]
ii.在一个示例中,可以在编码/解码ctu/ctb/cu/cb/pu/特定区域尺寸(例如,8x8或16x16)后更新计数器。
[0253]
iii.在一个示例中,每次将一个候选添加到查找表中,计数器增加1。
[0254]
iv.在一个示例中,计数器不应大于表的大小(允许的运动候选的数量)。
[0255]
v.或者,计数器可用于指示已尝试将多少运动候选添加到查找表中(它们中的一些在查找表中,但稍后可能从表中移除)。在这种情况下,计数器可能大于表的大小。
[0256]
d.表的大小(允许的运动候选数量)和/或表的数量可以是固定的或自适应的。所有表的表大小可能相同,或者不同表的表大小可能不同。
[0257]
i.或者,不同的查找表可能使用不同的尺寸(例如,1或2)。
[0258]
ii.在一个示例中,可以预先定义表的大小和/或表的数目。
[0259]
iii.在一个示例中,表的大小和/或表的数量可以在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带报头、片报头、编码树单元(ctu)、编码树块(ctb)、编码单元(cu)或预测单元(pu)、覆盖多个ctu/ctb/cu/pu的区域中进行信号通知。
[0260]
iv.表的大小和/或表的数量可能进一步取决于条带类型、图片的时域层索引、一
个条带和最近的内部条带之间的图片顺序计数(poc)距离。
[0261]
e.假设有n个表用于编码线程,则可能需要n*p个表来编码条带,其中p表示lcu行数或片数。
[0262]
i.或者,编码条带只需要p个表,其中p表示lcu行数,其中每个lcu行只使用一个查找表,即使当片被禁用时n可能大于1。
[0263]
lut的选择
[0264]
示例b1:对于编码块,可以按顺序检查来自一个查找表中的部分或全部运动候选。在编码块期间检查一个运动候选时,可以将其添加到运动候选列表(例如,amvp、merge候选列表)。
[0265]
a.或者,可以按顺序检查来自多个查找表的运动候选。
[0266]
b.查找表索引可在ctu、ctb、cu或pu、或覆盖多个ctu/ctb/cu/pu的区域中信号通知。
[0267]
示例b2:查找表的选择可能取决于块的位置。
[0268]
a.可能取决于覆盖该块的ctu地址。这里,我们以两个查找表(双重查找表,dlut)为例来说明这个理念:
[0269]
i.如果块位于ctu行中的前m个ctu之一,则可以使用第一个查找表对块进行编码,而对于位于ctu行中其余ctu中的块,可以使用第二个查找表。
[0270]
ii.如果块位于ctu行中的前m个ctu之一,则可以首先检查第一个查找表的运动候选对块进行编码,如果第一个表中没有足够的候选,则可以进一步使用第二个查找表。而对于位于ctu行中其余ctu中的块,可以使用第二个查找表。
[0271]
iii.或者,对于位于ctu行中其余ctu中的块,可以首先检查第二个查找表的运动候选对块进行编码,如果第二个表中没有足够的候选,则可以进一步使用第一个查找表。
[0272]
b.可能取决于块的位置和与一个或多个查找表中一个运动候选相关联的位置之间的距离。
[0273]
iv.在一个示例中,如果一个运动候选与要编码的块之间较小的距离相关联,则其可以比另一个运动候选更早地进行检查。
[0274]
查找表的使用
[0275]
示例c1:要检查的查找表中的运动候选总数可以预先定义。
[0276]
a.可能进一步取决于编码信息、块尺寸、块形状等。例如,对于amvp模式,可能只检查m个运动候选,而对于merge模式,可能检查n个运动候选(例如,m=2,n=44)。
[0277]
b.在一个示例中,要检查的运动候选总数可以在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带报头、片报头、编码树单元(ctu)、编码树块(ctb)、编码单元(cu)或预测单元(pu)、覆盖多个ctu/ctb/cu/pu的区域中信号通知。
[0278]
示例c2:查找表中包含的运动候选可以直接由块继承。
[0279]
a.它们可用于merge模式编码,即可以在merge候选列表推导过程中检查运动候选。
[0280]
b.它们可用于仿射merge模式编码。
[0281]
i.如果查找表中的运动候选的仿射标志是1,则可以将其添加为仿射merge候选。
[0282]
c.可启用查找表中的运动候选的检查,当:
[0283]
i.插入tmvp候选后,merge候选列表未满;
[0284]
ii.为空间merge候选推导检查某个空间相邻块后,merge候选列表未满;
[0285]
iii.所有空间merge候选后,merge候选列表未满;
[0286]
iv.组合双向预测merge候选后,merge候选列表未满;
[0287]
v.在将运动候选添加到merge候选列表之前,可以应用修剪。
[0288]
示例c3:查找表中包含的运动候选可用作编码块的运动信息的预测值。
[0289]
a.它们可用于amvp模式编码,即可在amvp候选列表推导过程中检查运动候选。
[0290]
b.可启用查找表中的运动候选的检查,当:
[0291]
i.插入tmvp候选后,amvp候选列表未满;
[0292]
ii.在插入tmvp候选之前,从空间邻居中选择并修剪后amvp候选列表未满;
[0293]
iii.当没有来自上方相邻块的不带缩放的amvp候选时和/或当没有来自左侧相邻块的不带缩放的amvp候选时。
[0294]
iv.在将运动候选添加到amvp候选列表中之前,可以应用修剪。
[0295]
c.检查与当前参考图片具有相同参考图片的运动候选。
[0296]
i.可选地,此外,还检查与当前参考图片具有不同参考图片的运动候选(带缩放的mv)。
[0297]
ii.或者,首先检查与当前参考图片具有相同参考图片的所有运动候选,然后检查与当前参考图片具有不同参考图片的运动候选。
[0298]
iii.或者,与merge中相同的方式来检查运动候选。
[0299]
示例c4:查找表中运动候选的检查顺序定义如下(假设允许检查k(k》=1)个运动候选):
[0300]
a.查找表中的最后k个运动候选,例如,按lut的条目索引的降序顺序。
[0301]
b.前k%l个候选,其中l是k》=l时的查找表大小,例如,按lut的条目索引的降序顺序。
[0302]
c.当k》=l时,查找表中的所有候选(l个候选)。
[0303]
d.或者,此外,基于运动候选索引的降序顺序。
[0304]
e.或者,根据候选信息(例如与运动候选相关的位置和当前块的距离)选择k个运动候选。
[0305]
f.不同查找表的检查顺序在下一小节查找表的使用中定义。
[0306]
g.一旦merge/amvp候选列表达到最大允许的候选数目,检查处理将终止。
[0307]
h.或者,一旦增加的候选运动数量达到最大允许的运动候选数目,检查处理将终止。
[0308]
i.在sps、pps、条带报头、片报头中可以信号通知指示允许表的大小和允许检查的运动候选的数目(即k=l)的一个语法元素。
[0309]
示例c5:可以在sps、pps、条带报头、片报头、ctu、ctb、cu或pu、覆盖多个ctu/ctb/cu/pu的区域中信号通知对块的运动信息编码启用/禁用查找表的使用。
[0310]
示例c6:是否从查找表中应用预测可能进一步取决于编码信息。当推断不应用于块时,跳过指示预测的附加信令。或者,当推断不应用于块时,不需要访问查找表中的运动候选,并且省略了对相关运动候选的检查。
[0311]
a.是否从查找表应用预测可能取决于块尺寸/块形状。在一个示例中,对于较小的块(如4x4、8x4或4x8块),不允许从查找表执行预测。
[0312]
b.是否从查找表应用预测可能取决于块是用amvp编码的还是用merge模式编码的。在一个示例中,对于amvp模式,不允许从查找表执行预测。
[0313]
c.是否从查找表应用预测可能取决于块是用仿射运动还是其他运动(如平移运动)编码的。在一个示例中,对于仿射模式,不允许从查找表执行预测。
[0314]
示例c7:先前编码的帧/条带/片中的查找表的运动候选可用于预测不同帧/条带/片中块的运动信息。
[0315]
a.在一个示例中,只能将与当前块的参考图片相关联的查找表用于编码当前块。
[0316]
b.在一个示例中,只能将与当前块具有相同条带类型和/或相同量化参数的图片相关联的查找表用于编码当前块。
[0317]
查找表的更新
[0318]
示例d1:使用运动信息对块进行编码后(即,帧内块复制模式、帧间编码模式),可以更新一个或多个查找表。
[0319]
a.在一个示例中,是否更新查找表可能会重复使用选择查找表的规则,例如,当可以选择查找表对当前块进行编码时,对块进行编码/解码后,所选查找表可能会进一步更新。
[0320]
b.可基于编码信息和/或块/lcu的位置选择要更新的查找表。
[0321]
c.如果用直接信号通知的运动信息对块进行编码(如amvp模式),则可以将块的运动信息添加到查找表中。
[0322]
i.或者,如果用直接从空间相邻块继承的不进行任何细化的运动信息对块进行编码(例如,不进行细化的空间merge候选),则不应将块的运动信息添加到查找表中。
[0323]
ii.或者,如果用直接从自空间相邻块继承的经过细化的运动信息对块进行编码(如dmvr、fruc),则不应将块的运动信息添加到任何查找表中。
[0324]
iii.或者,如果用直接从存储在查找表中的运动候选继承的运动信息对块进行编码,则不应将块的运动信息添加到任何查找表中。
[0325]
d.选择块内的m(m》=1)个典型位置,并使用与典型位置相关联的运动信息更新查找表。
[0326]
i.在一个示例中,典型位置被定义为块内四个角位置(如图26中的c0-c3)之一。
[0327]
ii.在一个示例中,典型位置被定义为块内的中心位置(如图26中的ca-cd)。
[0328]
iii.当该块不允许子块预测时,m设为1。
[0329]
iv.当该块允许子块预测时,m可以被设置为1、或子块的总数目、或介于1和子块的总数目之间的任何值,包括1和子块的总数目。
[0330]
v.或者,当该块允许子块预测时,m可以设置为1,且典型子块的选择基于
[0331]
1.使用的运动信息的频率,
[0332]
2.是否是双向预测块,
[0333]
3.基于参考图片索引/参考图片,
[0334]
4.相比于其它运动矢量的运动矢量差(例如,选择最大的mv差)
[0335]
5.其它编码信息。
[0336]
e.当选择m(m》=1)组典型位置来更新查找表时,在将其作为附加运动候选添加到查找表之前,可以检查进一步的条件。
[0337]
i.修剪可应用于查找表中现有运动候选的新运动信息集。
[0338]
ii.在一个示例中,新的一组运动信息不应与查找表中现有运动候选的任何或部分相同。
[0339]
iii.或者,对于来自新运动信息集和一个现有运动候选的相同参考图片,mv差应不小于一个/多个阈值。例如,mv差的水平和/或垂直分量应大于1像素距离。
[0340]
iv.或者,当k》l时,新运动信息集仅对最后k个候选或前k%l个现有运动候选进行修剪,以允许重新激活旧的运动候选。
[0341]
v.或者,不应用修剪。
[0342]
f.如果使用m组运动信息更新查找表,则相应的计数器应增加m。
[0343]
g.假设在对当前块进行编码之前,要更新的查找表的计数器用k表示,在对块进行编码之后,对于一组选定的运动信息(使用上述方法),将其添加为索引等于k%l的附加运动候选(其中l是查找表大小)。示例如图27所示。
[0344]
i.或者,将其添加为索引等于min(k+1,l-1)的附加运动候选。另外,如果k》=l,则从查找表中移除第一个运动候选(索引等于0),并将后续k个候选的索引减1。
[0345]
h.在对一个内部约束块进行编码后,查找表可能被清空。
[0346]
i.如果在查找表中添加了运动信息条目,则还可以通过从运动信息中推导,更多的运动信息条目添加到该表中。在这种情况下,与查找表关联的计数器可能会增加大于1。
[0347]
i.在一个示例中,运动信息条目的mv被缩放并放入表中;
[0348]
ii.在一个示例中,运动信息条目的mv通过(dx,dy)添加并放入表中;
[0349]
iii.在一个示例中,计算出两个或多个运动信息条目的mv的平均值,并将其放入表中。
[0350]
示例d2:如果一个块位于图片/条带/片边界,则可能始终不允许更新查找表。
[0351]
示例d3:可以禁用上述lcu行的运动信息来对当前lcu行进行编码。
[0352]
a.在这种情况下,在新的条带/片/lcu行的开头,可用的运动候选数目可以重置为0。
[0353]
示例d4:在用新的时域层索引对条带/片进行编码的开头,可用的运动候选数目可以重置为0。
[0354]
示例d5:可以使用具有相同时域层索引的一个条带/片/lcu行/多个条带对查找表进行连续更新。
[0355]
a.或者,只能在编码/解码每s个(s》=1)ctu/ctb/cu/cb或编码/解码某个区域(例如,尺寸等于8x8或16x16)后更新查找表。
[0356]
b.或者,一个查找表一旦达到最大允许计数器,就可能停止更新。
[0357]
c.在一个示例中,计数器可以是预先定义的。或者,可以在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带报头、片报头、编码树单元(ctu)、编码树块(ctb)、编码单元(cu)或预测单元(pu)、覆盖多个ctu/ctb/cu/pu的区域中信号通知。
[0358]
图28是视频处理装置2800的框图。装置2800可用于实施本文所述的一种或多种方法。装置2800可实施在智能手机、平板电脑、计算机、物联网(iot)接收器等之中。装置2800
可包括一个或多个处理器2802、一个或多个存储器2804和视频处理硬件2806。处理器2802可以配置为实现本文中描述的一个或多个方法。存储器(多个存储器)2804可用于存储用于实现本文所述方法和技术的数据和代码。视频处理硬件2806可用于在硬件电路中实现本文中描述的一些技术。
[0359]
图29是视频解码方法2900的示例的流程图。方法2900包括维护(2902)若干个表(例如,查找表;lut),其中每个表包括一组运动候选,其中每个运动候选与先前从视频块推导的相应运动信息相关联,在视频块和视频块的编码表示之间执行(2904)转换,并且基于视频块的转换条件,确定(2906)是否通过添加对应于视频块的运动信息来更新至少一个表。
[0360]
图30是视频解码方法3000的示例的流程图。方法3000包括维护(3002)若干个表(例如,查找表;lut),其中每个表包括一组运动候选,其中每个运动候选与先前从视频块推导出的对应运动信息相关联;在视频块和视频块的编码表示之间执行(3004)转换;在视频块内选择(3006)m个典型的位置,其中m是整数,以加载与m个典型的位置相关联的运动信息;以及使用与m个典型的位置相关联的运动信息更新(3008)至少一个表。
[0361]
从上述来看,应当理解的是,为了便于说明,本发明公开的技术的具体实施例已经在本文中进行了描述,但是可以在不偏离本发明范围的情况下进行各种修改。因此,除了的之外,本发明公开的技术不限于权利要求的限定。
[0362]
本文中公开的和其他描述的实施例、模块和功能操作可以在数字电子电路、或计算机软件、固件或硬件中实现,包括本文中所公开的结构及其结构等效体,或其中一个或多个的组合。公开的实施例和其他实施例可以实现为一个或多个计算机程序产品,即一个或多个编码在计算机可读介质上的计算机程序指令的模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或多个的组合。术语“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。传播信号是人为产生的信号,例如机器产生的电信号、光学信号或电磁信号,生成这些信号以对信息进行编码,以便传输到适当的接收装置。
[0363]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
[0364]
本文中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。
[0365]
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光磁盘;以及cdrom和dvd-rom光盘。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
[0366]
虽然本专利文件包含许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的一些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在一些组合中起作用,甚至最初要求是这样,但在一些情况下,可以从组合中移除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。
[0367]
同样,尽管图纸中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。
[0368]
仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中描述和说明的内容做出。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1