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

帧内块复制编解码的块的Merge候选的约束的制作方法

2022-02-20 23:56:20 来源:中国专利 TAG:

帧内块复制编解码的块的merge候选的约束
1.相关申请的交叉引用
2.根据适用的专利法和/或巴黎公约的规定,提出本技术是为了及时要求于2019年5月25日提交的国际专利申请第pct/cn2019/088454号的优先权和权益。出于法律的所有目的,上述申请的全部公开内容通过引用并入作为本技术公开内容的一部分。
技术领域
3.本文件涉及视频和图像编解码和解码技术。


背景技术:

4.数字视频仍占据因特网和其它数字通信网络上的最大的带宽使用。随着能够接收和显示视频的所连接的用户设备的数量增加,预计数字视频使用的带宽需求将继续增长。


技术实现要素:

5.公开的技术可由视频或图像解码器或编码器实施例使用,其中在使用块矢量信令通知和/或merge候选时,进行基于帧内块编解码的视频的解码或编码。
6.在一个代表性方面,公开了一种视频处理方法。该方法包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,所述比特流表示基于所述视频区域的转换期间使用的第一类型的ibc候选的最大数量,选择性地包括帧内块复制(ibc)高级运动矢量预测(amvp)模式的运动矢量差(mvd)有关的语法元素,其中,当应用ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
7.在另一个代表性方面,公开了一种视频处理方法。该方法包括:对于视频的视频区域和所述视频的比特流表示之间的转换,确定对所述视频区域禁用帧内块复制(ibc)模式的使用并在所述视频的序列级启用所述ibc模式的使用的指示,以及基于所述确定进行所述转换,其中,当应用了所述ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
8.在又一个代表性方面,公开了一种视频处理方法。该方法包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,所述比特流表示基于所述视频区域的转换期间使用的第一类型的ibc候选的最大数量选择性地包括关于帧内块复制(ibc)模式的使用的指示和/或一个或多个ibc有关的语法元素,其中,当应用了所述ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
9.在又一个代表性方面,公开了一种视频处理方法。该方法包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,在所述视频区域的转换期间使用的第一类型的帧内块复制(ibc)候选的最大数量的指示,独立于在所述转换期间使用的帧间模式的merge候选的最大数量在所述比特流表示中信令通知,其中,当应用了所述ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
10.在又一个代表性方面,公开了一种视频处理方法。该方法包括:在视频的视频区域
和所述视频的比特流表示之间进行转换,其中,在所述视频区域的转换期间使用的帧内块复制(ibc)运动候选的最大数量(表示为maxibccandnum)是ibc merge候选的最大数量(表示为maxibcmrgnum)和ibc高级运动矢量预测(amvp)候选的最大数量(表示为maxibcamvpnum)的函数,其中,当应用了所述ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
11.在又一个代表性方面,公开了一种视频处理方法。该方法包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,在所述视频区域的转换期间使用的帧内块复制(ibc)运动候选的最大数量(表示为maxibccandnum)基于所述视频区域的编解码的模式信息。
12.在又一个代表性方面,公开了一种视频处理方法。该方法包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,解码的帧内块复制(ibc)高级运动矢量预测(amvp)merge索引或解码的ibc merge索引小于帧内块复制(ibc)运动候选的最大数量(表示为maxibccandnum)。
13.在又一个代表性方面,公开了一种视频处理方法。该方法包括:在视频的视频区域和所述视频的比特流表示之间的转换期间,确定帧内块复制(ibc)替代运动矢量预测器(amvp)候选索引或ibc merge候选索引无法识别在块矢量候选列表中的块矢量候选,以及基于所述确定在所述转换期间使用默认预测块。
14.在又一个代表性方面,公开了一种视频处理方法。该方法包括:在视频的视频区域和所述视频的比特流表示之间的转换期间,确定帧内块复制(ibc)替代运动矢量预测器(amvp)候选索引或ibc merge候选索引无法识别在块矢量候选列表中的块矢量候选,以及基于所述确定通过将所述视频区视为具有无效块矢量进行所述转换。
15.在又一个代表性方面,公开了一种视频处理方法。该方法包括:在视频的视频区域和所述视频的比特流表示之间的转换期间,确定帧内块复制(ibc)替代运动矢量预测器(amvp)候选索引或ibc merge候选索引无法满足条件,基于所述确定生成补充块矢量(bv)候选列表,以及使用所述补充bv候选列表进行所述转换。
16.在又一个代表性方面,公开了一种视频处理方法。该方法包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,帧内块复制(ibc)高级运动矢量预测(amvp)候选的最大数量(表示为maxibcamvpnum)不等于二。
17.在另一个示例方面,上述方法可以由包括处理器的视频解码器设备实现。
18.在另一个示例方面,上述方法可以由包括处理器的视频编码器设备实现。
19.在又一个示例方面,这些方法可以以处理器可执行指令的形式实现并存储在计算机可读程序介质上。
20.这些和其它方面将在本文件中进一步描述。
附图说明
21.图1示出了用于merge候选列表构建的导出过程的示例。
22.图2示出了空域merge候选的示例位置。
23.图3示出了考虑用于空域merge候选的冗余检查的候选对的示例。
24.图4a和4b示出了nx2n和2nxn分割的第二预测单元(pu)的位置的示例。
25.图5是对于时域merge候选的运动矢量缩放的图示。
26.图6示出了时域merge候选c0和c1的候选位置的示例。
27.图7示出了组合的双向预测merge候选的示例。
28.图8总结了运动矢量预测候选的导出过程。
29.图9是对于空域运动矢量候选的运动矢量缩放的图示。
30.图10a和10b分别示出了4-参数仿射运动模型和6-参数仿射运动模型。
31.图11是每个子块的仿射运动矢量场(mvf)的示例。
32.图12示出了仿射merge模式的候选位置的示例
33.图13示出了修改的merge列表构建过程的示例。
34.图14示出了基于三角分割的帧间预测的示例。
35.图15示出了最终运动矢量表达(umve)搜索过程的示例。
36.图16示出了umve搜索点的示例。
37.图17示出了在dmvr中的list 0和list 1之间镜像的mvd(0,1)的示例。
38.图18示出了可以在一次迭代中检查的mv的示例。
39.图19示出了帧内块复制(ibc)的示例。
40.图20a-20k是用于视频处理的方法的示例的流程图。
41.图21是视频处理设备的示例的框图。
42.图22是其中可以实现所公开的技术的示例视频处理系统的框图。
具体实施方式
43.本文件提供了可由图像或视频比特流的解码器使用的各种技术,以提高解压缩的或解码的数字视频或图像的质量。为简便起见,本文使用术语“视频”既包括图片序列(传统上称为视频),也包括单个图像。此外,视频编码器还可在编码过程期间实现这些技术,以便重建用于进一步编码的解码帧。
44.在本文件中使用章节标题是为了易于理解,并且不将实施例和技术限于相应的章节。因此,一个章节的实施例可以与其它章节的实施例组合。
45.1.概要
46.本发明涉及视频编解码技术。具体而言,其涉及运动矢量编解码。它可以应用于像hevc之类的现有的视频编解码标准或者待最终确定的标准(通用视频编解码)。它也可以适用于未来的视频编解码标准或视频编解码器。
47.2.背景
48.视频编解码标准主要是通过众所周知的itu-t和iso/iec标准的发展而得以演进。itu-t制作了h.261和h.263标准,iso/iec制作了mpeg-1和mpeg-4visual标准,并且两个组织联合制作了h.262/mpeg-2视频标准和h.264/mpeg-4高级视频编解码(advanced video coding,avc)标准和h.265/hevc标准。从h.262开始,视频编解码标准基于混合视频编解码结构,其中利用时域预测加变换编解码。为了探索hevc之外的未来视频编解码技术,由vceg和mpeg于2015年联合成立联合视频探索团队(jvet)。从那时起,jvet采用了许多新方法并将其纳入名为联合探索模型(jem)的参考软件。2018年4月,vceg(q6/16)和iso/iec jtc1 sc29/wg11(mpeg)之间的联合视频专家团队(jvet)成立,致力于vvc标准,目标是与hevc相
比降低50%比特率。
49.最新版本的vvc草案,即多功能视频编解码(草案5)可以在以下位置找到:
50.phenix.it-sudparis.eu/jvet/doc_end_user/documents/14_geneva/wg11/jvet-n1001-v2.zip
51.名为vtm的vvc的最新参考软件可以在以下位置找到:
52.vcgit.hhi.fraunhofer.de/jvet/vvcsoftware_vtm/tags/vtm-5.0
53.2.1hevc/h.265中的帧间预测
54.对于帧间编解码的编解码单元(cu),其可以根据分割模式以一个预测单元(pu)、两个pu进行编解码。每个帧间预测的pu具有对于一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。也可以使用inter_pred_idc来信令通知对两个参考图片列表中一个的使用。运动矢量可以明确地被编解码为相对于预测器的增量。
55.当使用跳过(skip)模式来编解码cu时,一个pu与该cu相关联,并且不存在显著的残差系数,不存在编解码的运动矢量增量或参考图片索引。指定merge模式,由此从相邻pu——包括空域和时域候选——获得用于当前pu的运动参数。merge模式可以应用于任何帧间预测的pu,而不仅适用于跳过模式。merge模式的替代方案是运动参数的显式传输(explicit transmission),其中,运动矢量(更确切地,相比于运动矢量预测器的运动矢量差(mvd))、每个参考图片列表的对应参考图片索引以及参考图片列表使用对每个pu被显式信令通知。这样的模式在本公开中被命名为高级运动矢量预测(amvp)。
56.当信令通知指示要使用两个参考图片列表中的一个时,pu从一个块的样点产生。这被称为“单向预测”。单向预测可用于p条带和b条带。
57.当信令通知指示要使用两个参考图片列表时,pu从两个块的样点产生。这被称为“双向预测”。双向预测仅可用于b条带。
58.下文提供了在hevc中规定的帧间预测模式的详细信息。说明将从merge模式开始。
59.2.1.1参考图片列表
60.在hevc中,术语帧间预测用于表示从当前解码的图片以外的参考图片的数据元素(例如,样点值或运动矢量)导出的预测。像在h.264/avc中一样,可以从多个参考图片来预测图片。用于帧间预测的参考图片被组织在一个或多个参考图片列表中。参考索引识别应使用列表中的哪些参考图片来创建预测信号。
61.单个参考图片列表——list 0(list 0)被用于p条带,并且两个参考图片列表——list 0(list 0)和list 1(list 1)被用于b条带。应当注意,就捕获/显示顺序而言,list 0/1中包含的参考图片可以是来自过去和将来的图片。
62.2.1.2merge模式
63.2.1.2.1merge模式的候选的导出
64.当使用merge模式预测pu时,从比特流解析出指向merge候选列表(merge candidates list)中的条目的索引,并且该索引被用于检索运动信息。该列表的构建在hevc标准中规定并可以根据以下步骤顺序进行总结:
65.步骤1:初始候选导出
66.步骤1.1:空域候选导出
67.步骤1.2:空域候选的冗余检查
68.步骤1.3:时域候选导出
69.步骤2:附加候选插入
70.步骤2.1:创建双向预测候选
71.步骤2.2:插入零运动候选
72.在图1中也示意性地描绘了这些步骤。对于空域merge候选导出,在位于五个不同位置的候选中选择最多四个merge候选。对于时域merge候选导出,在两个候选中选择最多一个merge候选。由于在解码器处假设每个pu的候选的数量为常数,因此当从步骤1获得的候选的数量未达到在条带头中信令通知的merge候选的最大数量(maxnummergecand)时,生成附加的候选。由于候选的数量是恒定的,因此使用截断一元二值化(tu)来编码最佳merge候选的索引。如果cu的尺寸等于8,则当前cu的所有pu共享单个merge候选列表,该单个merge候选列表与2n
×
2n预测单元的merge候选列表相同。
73.在下文中,详细描述了与前述步骤相关联的操作。
74.图1示出了merge候选列表构建的导出过程的示例。
75.2.1.2.2空域候选导出
76.在空域merge候选的导出中,在位于图2中描绘的位置中的候选中选择最多四个merge候选。导出的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任何pu不可用时(例如,因为该pu属于另一个条带(slice)或片(tile))或者是帧内编解码时,才考虑位置b2。在添加位置a1处的候选之后,对剩余候选的添加进行冗余检查,该冗余检查确保具有相同运动信息的候选被排除在列表之外,从而改进编解码效率。为了降低计算复杂度,在所提到的冗余检查中并未考虑所有可能的候选对。相反,仅考虑与图3中的箭头链接的对,并且仅当如果用于冗余检查的对应候选具有不同的运动信息时,则该候选才被添加到列表中。重复的运动信息的另一个来源是与不同于2nx2n的分割相关联的“第二pu”。作为示例,图4分别描绘了对于n
×
2n和2n
×
n的情况的第二pu。当当前pu被分割为n
×
2n时,位置a1处的候选不被考虑用于列表构建。事实上,通过添加该候选将导致具有相同运动信息的两个预测单元,这对于在编解码单元中仅具有一个pu是冗余的。类似地,当当前pu被分割为2n
×
n时,不考虑位置b1。
77.图2示出了空域merge候选的示例位置。
78.图3示出了考虑用于空域merge候选的冗余检查的候选对的示例。
79.图4示出了nx2n和2nxn分割的第二pu的位置的示例。
80.2.1.2.3时域候选导出
81.在此步骤中,只有一个候选被添加到列表中。特别地,在该时域merge候选的导出中,基于共位(co-located)的pu来导出缩放的运动矢量,该共位的pu属于相对于给定参考图片列表内的当前图片具有最小poc差的图片。在条带头中显式信令通知用于共位的pu的导出的参考图片列表。如图5中虚线所示,获得了用于时域merge候选的缩放的运动矢量,该用于时域merge候选的缩放的运动矢量使用poc距离tb和td而从共位的pu的运动矢量被缩放,其中tb被定义为当前图片的参考图片与该当前图片之间的poc差,并且td被定义为共位图片的参考图片与该共位图片之间的poc差。时域merge候选的参考图片索引被设置为等于零。在hevc规范中描述了缩放过程的实际实现。对于b条带,获得两个运动矢量并将其组合以产生双向预测merge候选,该两个运动矢量中的一个用于参考图片list 0(list 0)而另
一个用于参考图片list 1(list 1)。
82.图5示出了对于时域merge候选的运动矢量缩放的图示。
83.如图6所示,在属于参考帧的共位的pu(y)中,在候选c0和c1之间选择用于时域候选的位置。如果位置c0处的pu不可用、被帧内编解码或在当前编解码树单元(ctu,即lcu,最大编解码单元)之外,则使用位置c1。否则,在时域merge候选的导出中使用位置c0。
84.图6示出了时域merge候选c0和c1的候选位置的示例。
85.2.1.2.4附加候选插入
86.除了空域和时域merge候选之外,还存在两种附加类型的merge候选:组合的双向预测merge候选和零merge候选。通过利用空域和时域merge候选来生成组合的双向预测merge候选。组合的双向预测merge候选仅用于b条带。通过将初始候选的第一参考图片列表运动参数与另一个候选的第二参考图片列表运动参数进行组合来生成组合的双向预测候选。如果这两个元组(tuple)提供不同的运动假设,则它们将形成一个新的双向预测候选。作为示例,图7描绘了以下情况,在该情况中原始列表(在左方)中具有mvl0和refidxl0或mvl1和refidxl1的两个候选被用于创建组合的双向预测merge候选,该组合的双向预测merge候选被添加到最终列表(在右方)。关于被认为生成这些附加merge候选的组合有诸多规则。
87.图7示出了组合的双向预测merge候选的示例。
88.零运动候选被插入以填充merge候选列表中的剩余条目,并且因此达到maxnummergecand容量。这些候选具有零空域位移和参考图片索引,该参考图片索引从零开始并且每当新的零运动候选被添加到列表时则增加。最终,对这些候选不进行冗余检查。
89.2.1.3 amvp
90.amvp利用运动矢量与相邻pu的空域-时域相关性,该空域-时域相关性用于运动参数的显式传输。对于每个参考图片列表,通过下述操作来构建运动矢量候选列表:首先检查左方、上方在时域上相邻pu位置的可用性,移除冗余候选,并添加零矢量,以使候选列表为恒定长度。然后,编码器可以从候选列表中选择最佳预测器,并传输指示所选候选的对应索引。与merge索引信令通知类似,使用截断一元来编码最佳运动矢量候选的索引。在这种情况下要编码的最大值是2(参见图8)。在以下章节中,提供了关于运动矢量预测候选的导出过程的细节。
91.2.1.3.1 amvp候选的导出
92.图8总结了用于运动矢量预测候选的导出过程。
93.图8示出了运动矢量预测候选的导出过程的示例。
94.在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。如图2示出的,对于空域运动矢量候选导出,最终基于位于五个不同位置的每个pu的运动矢量来导出两个运动矢量候选。
95.对于时域运动矢量候选导出,从基于两个不同的共位位置导出的两个候选中选择一个运动矢量候选。在制作空域-时域候选的第一列表之后,移除列表中的重复的运动矢量候选。如果潜在候选的数量大于2,则从列表中移除其在相关联的参考图片列表内的参考图片索引大于1的运动矢量候选。如果空域-时域运动矢量候选的数量小于2,则将附加的零运动矢量候选添加到列表中。
96.2.1.3.2空域运动矢量候选
97.在空域运动矢量候选的导出中,在五个潜在候选中考虑最多两个候选,该五个潜在候选来自位于如图2示出的位置的pu,这些位置与运动merge的那些位置相同。当前pu的左侧的导出顺序被定义为a0、a1和缩放的a0、缩放的a1。当前pu的上侧的导出顺序被定义为b0、b1、b2、缩放的b0、缩放的b1、缩放的b2。因此,对于每一侧,存在四种可用作运动矢量候选的情况,其中两种情况不需要使用空域缩放,并且两种情况使用空域缩放。四种不同的情况总结如下。
98.无空域缩放
[0099]-(1)相同的参考图片列表,以及相同的参考图片索引(相同的poc)
[0100]-(2)不同的参考图片列表,但是相同的参考图片(相同的poc)
[0101]
空域缩放
[0102]-(3)相同的参考图片列表,但是不同的参考图片(不同的poc)
[0103]-(4)不同的参考图片列表,以及不同的参考图片(不同的poc)
[0104]
首先检查无空域缩放情况,接下来检查空域缩放。不管参考图片列表如何,当poc在相邻pu的参考图片与当前pu的参考图片之间是不同的时,考虑空域缩放。如果左方候选的所有pu都不可用或者是被帧内编解码的,则允许对上方运动矢量进行缩放,以帮助左方和上方mv候选的并行导出。否则,对上方运动矢量不允许空域缩放。
[0105]
图9是对于空域运动矢量候选的运动矢量缩放的图示。
[0106]
在空域缩放过程中,以与时域缩放类似的方式缩放相邻pu的运动矢量,如图9所示。主要差异在于当前pu的参考图片列表和索引被给定为作为输入;实际缩放过程与时域缩放过程相同。
[0107]
2.1.3.3时域运动矢量候选
[0108]
除了参考图片索引导出之外,用于时域merge候选的导出的所有过程与用于空域运动矢量候选的导出的过程相同(见图6)。将参考图片索引信令通知给解码器。
[0109]
2.2 vvc中的帧间预测方法
[0110]
存在几种新的用于帧间预测改进的编解码工具,诸如用于信令通知mvd的自适应运动矢量差分辨率(amvr)、具有运动矢量差的merge(mmvd),三角预测模式(tpm)、组合帧内-帧间预测(ciip)、高级tmvp(atmvp,又称为sbtmvp)、仿射预测模式、广义双向预测(gbi)、解码器侧运动矢量细化(dmvr)和双向光流(bio,又称为bdof)。
[0111]
vvc中支持三种不同的merge列表构建过程:
[0112]
1)子块merge候选列表:它包括atmvp和仿射merge候选。仿射模式和atmvp模式两者共享一个merge列表构建过程。在此,可以按顺序添加atmvp和仿射merge候选。子块merge列表的尺寸在条带头中信令通知,最大值为5。
[0113]
2)常规merge列表:对于剩余的编解码块,共享一个merge列表的构建过程。在此,可以按顺序插入空域/时域/hmvp、成对组合的双向预测merge候选和零运动候选。在条带头中信令通知常规merge列表的尺寸,并且最大值为6。mmvd、tpm、ciip依赖于常规merge列表。
[0114]
3)ibc merge列表:其以与常规merge列表类似的方式完成。
[0115]
类似地,vvc支持三个amvp列表:
[0116]
1)仿射amvp候选列表
[0117]
2)常规amvp候选列表
[0118]
3)ibc amvp候选列表:由于采用了jvet-n0843,因此与ibc merge列表的构建过程相同
[0119]
2.2.1 vvc中的编解码块结构
[0120]
在vvc中,采用四叉树/二叉树/三叉树(qt/bt/tt)结构将图片分为正方形或矩形块。
[0121]
除了qt/bt/tt,还在vvc中采用单独的树(也称为双重编解码树)以用于i帧。通过单独的树,分别为亮度和色度分量信令通知编解码块结构。
[0122]
此外,cu被设置为等于pu和tu,除了用几种特定的编解码方法编解码的块(诸如,帧内子分割预测,其中pu等于tu,但是小于cu,以及对于帧间编解码块的子块变换,其中pu等于cu,但tu小于pu)。
[0123]
2.2.2仿射预测模式
[0124]
在hevc中,对于运动补偿预测(mcp)仅应用平移运动模型。而在现实世界中,存在许多种运动,例如放大/缩小、旋转、透视运动和其它不规则的运动。在vvc中,简化的仿射变换运动补偿预测应用于4-参数仿射模型和6-参数仿射模型。如图10a-10b所示,该块的仿射运动场由4-参数仿射模型的两个控制点运动矢量(cpmv)和6-参数仿射模型的3个cpmv描述。
[0125]
图10a和10b示出了:10a:简化的仿射运动模型参数仿射,10b:6-参数仿射模式。
[0126]
块的运动矢量场(mvf)由以下等式分别以等式(1)中的4-参数仿射模型(其中4-参数定义为变量a、b、e和f)和等式(2)中的6-参数仿射模型(其中4-参数定义为变量a、b、c、d、e和f)描述:
[0127][0128][0129]
其中(mv
h0
,mv
h0
)是左上角控制点的运动矢量,并且(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中的4x4),代表点被用于导出整个子块的运动矢量。
[0130]
为了进一步简化运动补偿预测,应用基于子块的仿射变换预测。为了导出每个m
×
n(在当前vvc中,m和n两者都被设置为4)子块的运动矢量,如图11所示,根据等式(1)和(2)计算每个子块的中心样点的运动矢量并将其取整至1/16的分数准确度。然后,可以应用1/
16像素的运动补偿插值滤波器,以利用导出的运动矢量生成每个子块的预测。1/16像素的插值滤波器通过仿射模式引入。
[0131]
图11是每个子块的仿射mvf的示例。
[0132]
在mcp之后,每个子块的高准确度运动矢量以与正常运动矢量相同的准确度被取整并保存。
[0133]
2.2.3对于整个块的merge
[0134]
2.2.3.1平移的常规merge模式的merge列表构建
[0135]
2.2.3.1.1基于历史的运动矢量预测(hmvp)
[0136]
与merge列表设计不同,在vvc中,采用了基于历史的运动矢量预测(hmvp)方法。
[0137]
在hmvp中,存储了先前编解码的运动信息。将先前编解码的块的运动信息定义为hmvp候选。多个hmvp候选存储在一个名为hmvp表的表中,并且在即时编码/解码处理期间维持该表。当开始对新的片/lcu行/条带进行编解码/解码时,hmvp表被清空。每当存在帧间编解码块和非子块、非tpm模式时,相关联的运动信息就会作为新的hmvp候选添加到表的最后一个条目。整个编解码流程如图12所示。
[0138]
2.2.3.1.2常规merge列表构建过程
[0139]
常规merge列表(用于平移运动)的构建可以根据以下步骤序列进行总结:
[0140]
·
步骤1:导出空域候选
[0141]
·
步骤2:插入hmvp候选
[0142]
·
步骤3:插入成对平均候选
[0143]
·
步骤4:默认运动候选
[0144]
hmvp候选可以在amvp和merge候选列表两者的构建过程中使用。图13描绘了修改的merge候选列表构建过程(蓝色高亮)。当在tmvp候选插入之后,merge候选列表未满时,可以利用存储在hmvp表中的hmvp候选来填充merge候选列表。考虑到一个块通常就运动信息而言与最近的相邻块具有更高的相关性,因此以索引的降序插入表中的hmvp候选。最先将表中的最后一个条目添加到列表中,而最后添加第一个条目。类似地,冗余移除被应用于hmvp候选。一旦可用merge候选的总数达到允许被信令通知的merge候选的最大数量,则merge候选列表构建过程终止。
[0145]
注意,所有的空域/时域/hmvp候选都应以非ibc模式进行编解码。否则,不允许将其添加到常规merge候选列表中。
[0146]
hmvp表包含多达5个常规运动候选,并且每个候选都是唯一的。
[0147]
2.2.3.2三角预测模式(tpm)
[0148]
在vtm4中,支持三角分割模式用于帧间预测。三角分割模式仅适用于8x8或更大且以merge模式编解码而不以mmvd或ciip模式编解码的cu。对于满足这些条件的cu,信令通知cu级的标志以指示是否应用了三角分割模式。
[0149]
当使用该模式时,如图13所示,使用对角线划分或反对角线划分将cu均匀地划分为两个三角形分割。cu中的每个三角分割都是使用自己的运动进行帧间预测的;每个分割仅允许单向预测,即每个分割具有一个运动矢量和一个参考索引。应用单向预测运动约束以确保与常规双向预测相同,每个cu仅需要两个运动补偿的预测。
[0150]
图14示出了基于三角分割的帧间预测的示例。
[0151]
如果cu级标志指示当前cu是使用三角分割模式编解码的,则进一步信令通知指示三角分割的方向(对角线或反对角线)的标志以及两个merge索引(每个分割一个)。在预测每个三角分割之后,使用具有自适应权重的混合处理来调整沿对角线或反对角线边缘的样点值。这是整个cu的预测信号,并且与在其它预测模式中一样,变换和量化过程将应用于整个cu。最后,使用三角分割模式预测的cu的运动场以4x4单元存储。
[0152]
常规merge候选列表被重新用于三角分割merge预测,而没有额外的运动矢量修剪。对于常规merge候选列表中的每个merge候选,其l0或l1运动矢量中有且仅有一个用于三角预测。另外,选择l0与l1运动矢量的顺序基于其merge索引奇偶校验。通过这种方案,可以直接使用常规merge列表。
[0153]
2.2.3.3mmvd
[0154]
在jvet-l0054中,提出了最终运动矢量表达(umve,也称为mmvd)。umve可通过提出的运动矢量表达方法用于跳过或merge模式。
[0155]
umve重复使用与vvc中的常规merge候选列表中所包括的merge候选相同的merge候选。在merge候选之中,可以选择基本候选,并通过提出的运动矢量表达方法对其进一步扩展。
[0156]
umve提供了一种新的运动矢量差(mvd)表示方法,其中使用起点、运动幅度和运动方向来表示mvd。
[0157]
图15示出了umve搜索过程的示例。
[0158]
图16示出了umve搜索点的示例。
[0159]
该提出的技术照原样使用merge候选列表。但是,只有默认merge类型(mrg_type_default_n)的候选才会考虑umve的扩展。
[0160]
基本候选索引定义起点。基本候选索引如下指示列表中候选中的最佳候选。
[0161]
表1:基本候选idx
[0162]
基本候选idx0123第n mvp第1mvp第2mvp第3mvp第4mvp
[0163]
如果基本候选的数量等于1,则不信令通知基本候选idx。
[0164]
距离索引是运动幅度信息。距离索引指示距起点信息的预定义距离。预定义的距离如下:
[0165]
表2.距离idx
[0166][0167]
方向索引表示mvd相对于起点的方向。方向索引可以表示四个方向,如下所示。
[0168]
表3.方向idx
[0169]
方向idx00011011x-轴

n/an/ay-轴n/an/a

[0170]
在发送跳过标志或merge标志之后立即信令通知umve标志。如果跳过或merge标志为真(ture),则解析umve标志。如果umve标志等于1,则解析umve语法。但是,如果不是1,则解析仿射标志。如果仿射标志等于1,则为仿射模式;但是,如果不等于1,则将为vtm的跳过/merge模式解析跳过/merge索引。
[0171]
由于umve候选,不需要附加的行缓冲器。因为软件的跳过/merge候选直接用作基本候选。使用输入的umve索引,可以在运动补偿之前确定mv的补充。无需为此保留长行缓冲区。
[0172]
在当前的通用测试条件下,可以选择merge候选列表中的第一或第二merge候选作为基本候选。
[0173]
umve也被称为具有mv差的merge(mmvd)。
[0174]
2.2.3.4组合的帧内-帧间预测(ciip)
[0175]
在jvet-l0100中,提出了多假设预测,其中组合的帧内预测和帧间预测是生成多个假设的一种方法。
[0176]
当将多假设预测应用于改善帧内模式时,多假设预测将一个帧内预测和一个merge索引预测组合。在merge cu中,当标志为真时,信令通知一个标志用于merge模式以从帧内候选列表中选择帧内模式。对于亮度分量,帧内候选列表仅从一个帧内预测模式——即平面模式导出。从帧内和帧间预测应用于预测块的权重由两个相邻块(a1和b1)的编解码模式(帧内或非帧内)确定。
[0177]
2.2.4基于子块的merge技术
[0178]
建议将所有与子块有关的运动候选不仅放入非子块merge候选的常规merge列表,还放入单独的merge列表中。
[0179]
将与子块有关的运动候选放在单独的merge列表中,该列表命名为“子块merge候选列表”。
[0180]
在一个示例中,子块merge候选列表包括atmvp候选和仿射merge候选。
[0181]
子块merge候选列表按以下顺序填充候选:
[0182]
a.atmvp候选(可能可用或不可用);
[0183]
b.仿射merge列表(包括继承的仿射候选;和构建的仿射候选)
[0184]
c.填充为零mv 4-参数仿射模型
[0185]
2.2.4.1.1 atmvp(又称为子块时域运动矢量预测器,sbtmvp)
[0186]
atmvp的基本思想是为一个块导出多组时域运动矢量预测器。每个子块分配有一组运动信息。当生成atmvp merge候选时,将以8x8级而不是整个块级进行运动补偿。
[0187]
2.2.5常规帧间模式(amvp)
[0188]
2.2.5.1 amvp运动候选列表
[0189]
类似于hevc中的amvp设计,可以导出多达2个amvp候选。但是,也可以在tmvp候选之后添加hmvp候选。hmvp表中的hmvp候选以索引的升序(即,从等于0的索引,最旧的索引)遍历。可以检查多达4个hmvp候选,以找到其参考图片是否与目标参考图片相同(即,相同的poc值)。
[0190]
2.2.5.2 amvr
[0191]
在hevc中,当条带头中的use_integer_mv_flag等于0时,以四分之一的亮度样点
为单位信令通知(运动矢量与pu的预测运动矢量之间的)运动矢量差(mvd)。在vvc中,引入了局部自适应运动矢量分辨率(amvr)。在vvc中,可以以四分之一亮度样点、整数亮度样点或四亮度样点(即,1/4像素、1像素、4像素)为单位对mvd进行编解码。mvd分辨率被控制在编解码单元(cu)级,并且对具有至少一个非零mvd分量的每个cu有条件地信令通知mvd分辨率标志。
[0192]
对于具有至少一个非零mvd分量的cu,信令通知第一标志以指示在cu中是否使用四分之一亮度样点mv精度。当第一标志(等于1)指示未使用四分之一亮度样点mv精度时,信令通知另一标志以指示是使用整数亮度样点mv精度还是使用四亮度样点mv精度。
[0193]
当cu的第一mvd分辨率标志为零或未为cu编解码时(意味着cu中的所有mvd均为零),四分之一亮度样点mv分辨率被用于cu。当cu使用整数亮度样点mv精度或四亮度样点mv精度时,cu的amvp候选列表中的mvp会取整到对应的精度。
[0194]
2.2.5.3 jvet-n1001-v2中的对称运动矢量差
[0195]
在jvet-n1001-v2中,对称运动矢量差(smvd)被应用于双向预测中的运动信息编解码。
[0196]
首先,在条带级,以n1001-v2中规定的以下步骤分别导出变量refidxsyml0和refidxsyml1,以指示在smvd模式中使用的list 0/1的参考图片索引。当两个变量中的至少一个等于-1时,应禁用smvd模式。
[0197]
2.2.6运动信息的细化
[0198]
2.2.6.1解码器侧运动矢量细化(dmvr)
[0199]
在双向预测操作中,对于一个块区域的预测,将分别使用list 0的运动矢量(mv)和list 1的mv形成的两个预测块进行组合以形成单个预测信号。在解码器侧运动矢量细化(dmvr)方法中,进一步对双向预测的两个运动矢量进行细化。
[0200]
对于vvc中的dmvr,假定list 0和list 1之间的mvd镜像如图17所示,并进行双边匹配以细化mv,即在几个mvd候选中找到最佳的mvd。用mvl0(l0x,l0y)和mvl1(l1x,l1y)表示两个参考图片列表的mv。将list 0的(mvdx,mvdy)表示的、可将成本函数(例如,sad)最小化的mvd定义为最佳mvd。对于sad函数,其定义为以list 0参考图片中的运动矢量(l0x mvdx,l0y mvdy)导出的list 0的参考块与以list 1的参考图片中的运动矢量(l1x-mvdx,l1y-mvdy)导出的list 1的参考块之间的sad。
[0201]
运动矢量细化过程可以迭代两次。在每个迭代中,可以分两步检查最多6个mvd(具有整数像素精度),如图18所示。在第一步骤中,检查mvd(0,0)、(-1,0)、(1,0)、(0,-1)、(0,1)。在第二步骤中,可以选择并进一步检查mvd(-1,-1)、(-1、1)、(1,-1)或(1、1)中的一个。假设函数sad(x,y)返回mvd(x,y)的sad值。在第二步骤中检查的由(mvdx,mvdy)表示的mvd如下决定:
[0202]
mvdx=-1;
[0203]
mvdy=-1;
[0204]
if(sad(1,0)《sad(-1,0))
[0205]
mvdx=1;
[0206]
if(sad(0,1)《sad(0,-1))
[0207]
mvdy=1;
[0208]
在第一迭代中,起点是信令通知的mv,并且在第二迭代中,起点是信令通知的mv加上在第一迭代中选择的最佳mvd。仅在一个参考图片为前一图片而另一参考图片为后一图片且两个参考图片与当前图片的图片顺序计数距离相同时才应用dmvr。
[0209]
图17示出了在dmvr中的list 0和list 1之间镜像的mvd(0,1)的示例。
[0210]
图18示出了可以在一次迭代中检查的mv的示例。
[0211]
为了进一步简化dmvr的过程,jvet-m0147对jem中的设计提出了一些改进。更具体地,vtm-4.0(即将发布)采用的dmvr设计具有以下主要功能:
[0212]
·
当list 0和list 1之间的(0,0)位置sad小于阈值时,提前终止。
[0213]
·
当对于某些位置,list 0和list 1之间的sad为零时,提前终止。
[0214]
·
dmvr的块尺寸:w*h》=64&&h》=8,其中w和h是块的宽度和高度。
[0215]
·
对于cu尺寸》16*16的dmvr,将cu划分为16x16的多个子块。如果仅cu的宽度或高度大于16,则仅在垂直或水平方向上划分。
[0216]
·
参考块尺寸(w 7)*(h 7)(用于亮度)。
[0217]
·
25点基于sad的整数像素搜索(即,( -)2细化搜索范围,单级)
[0218]
·
基于双线性插值的dmvr。
[0219]
·
基于“参数误差表面等式”的子像素细化。仅当最小sad成本不等于零且最佳mvd在上一次mv细化迭代中为(0,0)时,才进行此过程。
[0220]
·
亮度/色度mc w/参考块填充(如果需要)。
[0221]
·
仅用于mc和tmvp的细化mv。
[0222]
2.2.6.1.1 dmvr的使用
[0223]
当以下条件均为真时,可以启用dmvr:
[0224]

sps中的dmvr启用标志(即,sps_dmvr_enabled_flag)等于1
[0225]

tpm标志,帧间仿射标志和子块merge标志(atmvp或仿射merge),mmvd标志均等于0
[0226]

merge标志等于1
[0227]

当前块是双向预测的,并且list 1中的当前图片与参考图片之间的poc距离等于list 0中的参考图片与当前图片之间的poc距离
[0228]

当前cu的高度大于或等于8
[0229]

亮度样点的数量(cu宽度*高度)大于或等于64
[0230]
2.2.6.1.2基于“参数误差表面等式”的子像素细化
[0231]
该方法总结如下:
[0232]
1.仅当中心位置是给定迭代中的最佳成本位置时,才计算参数误差表面拟合。
[0233]
2.中心位置成本和距中心的(-1,0)、(0,-1)、(1,0)和(0,1)位置的成本用于拟合以下形式的二维抛物线误差表面等式
[0234]
e(x,y)=a(x-x0)2 b(y-y0)2 c
[0235]
其中(x0,y0)对应于成本最小的位置,并且c对应于最小成本值。通过求解5个未知数中的5个等式,可计算出(x0,y0)为:
[0236]
x0=(e(-1,0)-e(1,0))/(2(e(-1,0) e(1,0)-2e(0,0)))
[0237]
y0=(e(0,-1)-e(0,1))/(2((e(0,-1) e(0,1)-2e(0,0)))
[0238]
可以通过调整进行除法的精度(即,计算出多少位的商)以将(x0,y0)计算为任何所需的子像素精度。对于1/16像素准确度,仅需计算商的绝对值的4位,这有助于每个cu所需的2次除法的基于快速移位的减法的实现。
[0239]
3.将计算出的(x0,y0)添加到整数距离细化mv以获得子像素准确的细化增量mv。
[0240]
2.2.6.2双向光流(bdof)
[0241]
2.3帧内块复制
[0242]
hevc屏幕内容编解码扩展(hevc-scc)和当前vvc测试模型(vtm-4.0)已采用了帧内块复制(ibc),又称当前图片参考。ibc将运动补偿的概念从帧间编解码扩展到了帧内编解码。如图18所示,当应用ibc时,当前块由同一图片中的参考块预测。在对当前块进行编解码或解码之前,必须已经重建了参考块中的样点。尽管ibc对于大多数相机捕获的序列而言效率不高,但它示出了屏幕内容的显着编解码增益。原因是屏幕内容图片中有很多重复的模式,诸如图标和文本字符。ibc可以有效地移除这些重复模式之间的冗余。在hevc-scc中,如果选择当前图片作为其参考图片,则帧间编解码的编解码单元(cu)可以应用ibc。在这种情况下,mv被重命名为块矢量(bv),并且bv始终具有整数像素精度。为了与主配置文件hevc兼容,当前图片在解码图片缓冲器(decoded picture buffer,dpb)中被标记为“长期”参考图片。应当注意,类似地,在多视图/3d视频编解码标准中,视图间参考图片也被标记为“长期”参考图片。
[0243]
在bv找到其参考块之后,可以通过复制参考块来生成预测。可以通过从原始信号中减去参考像素来获得残差。然后,可以像在其它编解码模式中一样应用变换和量化。
[0244]
图19是帧内块复制的示例。
[0245]
然而,当参考块在图片之外、或与当前块重叠、或在重建区域之外、或在受某些约束限制的有效区域之外时,未定义部分或全部像素值。基本上,有两种解决此问题的方案。一种是禁止这种情况,例如在比特流一致性中。另一种是对那些未定义的像素值应用填充。以下子章节详细描述了方案。
[0246]
2.3.1 vvc测试模型中的ibc(vtm4.0)
[0247]
在当前的vvc测试模型(例如vtm-4.0设计)中,整个参考块应与当前的编解码树单元(ctu)一致,且不与当前块重叠。因此,不需要填充参考或预测块。ibc标志被编解码为当前cu的预测模式。因此,每个cu总共存在三种预测模式:mode_intra\mode_inter和mode_ibc。
[0248]
2.3.1.1 ibc merge模式
[0249]
在ibc merge模式中,从比特流中解析指向ibc merge候选列表中的条目的索引。ibc merge列表的构建可以根据以下步骤序列进行总结:
[0250]
·
步骤1:导出空域候选
[0251]
·
步骤2:插入hmvp候选
[0252]
·
步骤3:插入成对平均候选
[0253]
在空域merge候选的导出中,在位于如附图2所描绘的a1、b1、b0、a0和b2所示的位置的候选当中选择最多四个merge候选。导出的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任何pu不可用(例如,因为它属于另一条带或片)或者没有用ibc模式进行编解码时,才考虑位置b2。在添加位置a1处的候选之后,对剩余候选的插入进行冗余检查,其确保具有相同
运动信息的候选被排除在列表之外,使得编解码效率提高。
[0254]
在插入空域候选之后,如果ibc merge列表尺寸仍小于最大ibc merge列表尺寸,则可以插入来自hmvp表的ibc候选。插入hmvp候选时执行冗余检查。
[0255]
最后,将成对平均候选插入ibc merge列表。
[0256]
当由merge候选识别的参考块在图片之外、或者与当前块重叠、或者在重建区域之外、或者在受某些约束限制的有效区域之外时,merge候选被称为无效merge候选。
[0257]
注意,可将无效的merge候选插入到ibc merge列表中。
[0258]
2.3.1.2 ibc amvp模式
[0259]
在ibc amvp模式中,指向ibc amvp列表中条目的amvp索引是从比特流中解析出来的。ibc amvp列表的构建可以根据以下步骤序列进行总结:
[0260]
·
步骤1:导出空域候选
[0261]
ο检查a0、a1,直到找到可用的候选。
[0262]
ο检查b0、b1、b2,直到找到可用的候选。
[0263]
·
步骤2:插入hmvp候选
[0264]
·
步骤3:插入零候选
[0265]
在插入空域候选之后,如果ibc amvp列表尺寸仍然小于最大ibc amvp列表尺寸,则可以插入来自hmvp表的ibc候选。
[0266]
最后,将零候选插入到ibc amvp列表中。
[0267]
2.3.1.3色度ibc模式
[0268]
在当前的vvc中,在子块级进行色度ibc模式中的运动补偿。色度块将被分割为几个子块。每个子块确定对应亮度块是否具有块矢量以及有效性(如果存在)。当前vtm中存在编码器约束,其中如果当前色度cu中的所有子块都具有有效的亮度块矢量,则将测试色度ibc模式。例如,在yuv 420视频上,色度块为nxm,然后共位的亮度区域为2nx2m。色度块的子块尺寸为2x2。有几个步骤进行色度mv导出,然后进行块复制过程。
[0269]
1)色度块将首先被分割为(n》》1)*(m》》1)个子块。
[0270]
2)具有坐标为(x,y)的左上样点的每个子块取回对应的亮度块,该亮度块覆盖了坐标为(2x,2y)的相同左上样点。
[0271]
3)编码器检查取回的亮度块的块矢量(bv)。如果满足以下条件之一,则bv被视为无效。
[0272]
a.对应亮度块的bv不存在。
[0273]
b.由bv识别的预测块尚未重建。
[0274]
c.由bv识别的预测块与当前块部分或完全重叠。
[0275]
4)将子块的色度运动矢量设置为对应亮度子块的运动矢量。
[0276]
当所有子块都找到有效的bv时,在编码器处允许ibc模式。
[0277]
下面列出了ibc块的解码过程。与ibc模式中的色度运动矢量导出有关的部分用双粗化括号包括,即,{{a}}指示“a”与ibc模式中的色度运动矢量导出有关。
[0278]
8.6.1在ibc预测中编解码的编解码单元的一般解码过程
[0279]
此过程的输入是:
[0280]

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

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

变量cbheight,指定亮度样点中当前编解码块的高度,
[0283]

变量treetype,指定使用单树还是双树,并且如果使用双树,则它指定当前树是对应于亮度分量还是色度分量。
[0284]
该过程的输出是环路滤波之前的修改后的重建图片。
[0285]
以亮度位置(xcb,ycb)、亮度样点中的当前编解码块的宽度cbwidth和亮度样点中的当前编解码块的高度cbheight以及变量treetype作为输入来调用第8.7.1节中规定的量化参数的导出过程。
[0286]
以ibc预测模式编解码的编解码单元的解码过程包括以下有序的步骤:
[0287]
1.当前编解码单元的运动矢量分量导出如下:
[0288]
1.如果treetype等于single_tree或dual_tree_luma,则适用以下:
[0289]

以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度cbwidth和亮度编解码块高度cbheight作为输入,并以亮度运动矢量mvl[0][0]作为输出,调用第8.6.2.1节规定的运动矢量分量的导出过程。
[0290]

当treetype等于single_tree时,以亮度运动矢量mvl[0][0]作为输入,并以色度运动矢量mvc[0][0]作为输出,调用第8.6.2.9节中色度运动矢量的导出过程。
[0291]

水平方向中的亮度编解码子块的数量numsbx和垂直方向中的亮度编解码子块的数量numsby均设置为等于1。
[0292]
1.否则,如果treetype等于dual_tree_chroma,则适用以下:
[0293]

水平方向中的亮度编解码子块的数量numsbx和垂直方向中的亮度编解码子块的数量numsby导出如下:
[0294]
numsbx=((cbwidth》》2)
ꢀꢀ
(8-886)
[0295]
numsby=((cbheight》》2))
ꢀꢀ
(8-887)
[0296]

{{对于xsbidx=0..numsbx-1,ysbidx=0..numsby-1,色度运动矢量mvc[xsbidx][ysbidx]如下导出:
[0297]

亮度运动矢量mvl[xsbidx][ysbidx]如下导出:
[0298]

共位亮度编解码单元的位置(xcuy,ycuy)如下导出:
[0299]
xcuy=xcb xsbidx*4
ꢀꢀ
(0-1)
[0300]
ycuy=ycb ysbidx*4
ꢀꢀ
(0-2)
[0301]

如果cupredmode[xcuy][ycuy]等于mode_intra,则适用以下:
[0302]
mvl[xsbidx][ysbidx][0]=0
ꢀꢀ
(0-3)
[0303]
mvl[xsbidx][ysbidx][1]=0
ꢀꢀ
(0-4)
[0304]
predflagl0[xsbidx][ysbidx]=0
ꢀꢀ
(0-5)
[0305]
predflagl1[xsbidx][ysbidx]=0
ꢀꢀ
(0-6)
[0306]

否则(cupredmode[xcuy][ycuy]等于mode_ibc),则适用以下:
[0307]
mvl[xsbidx][ysbidx][0]=mvl0[xcuy][ycuy][0]
ꢀꢀ
(0-7)
[0308]
mvl[xsbidx][ysbidx][1]=mvl0[xcuy][ycuy][1]
ꢀꢀ
(0-8)
[0309]
predflagl0[xsbidx][ysbidx]=1
ꢀꢀ
(0-9)
[0310]
predflagl1[xsbidx][ysbidx]=0
ꢀꢀ
(0-10)}}
[0311]

以mvl[xsbidx][ysbidx]作为输入,并以mvc[xsbidx][ysbidx]作为输出,调用第8.6.2.9节中的色度运动矢量的导出过程。
[0312]

比特流一致性的要求是色度运动矢量mvc[xsbidx][ysbidx]应遵守以下约束:
[0313]

当以当前色度位置(xcurr,ycurr)设置为等于(xcb/subwidthc,ycb/subheightc)并且相邻色度位置(xcb/subwidthc (mvc[xsbidx][ysbidx][0]》》5),ycb/subheightc (mvc[xsbidx][ysbidx][1]》》5))作为输入来调用第6.4.x节[编辑(bb):相邻块可用性检查过程tbd]规定的块可用性的导出过程时,输出应等于真。
[0314]

当以当前色度位置(xcurr,ycurr)设置为等于(xcb/subwidthc,ycb/subheightc)并且相邻色度位置(xcb/subwidthc (mvc[xsbidx][ysbidx][0]》》5) cbwidth/subwidthc

1,ycb/subheightc (mvc[xsbidx][ysbidx][1]》》5) cbheight/subheightc-1)作为输入来调用第6.4.x节[编辑(bb):相邻块可用性检查过程tbd]规定的块可用性的导出过程时,输出应等于真。
[0315]

以下条件中的一个或二者应为真:
[0316]

(mvc[xsbidx][ysbidx][0]》》5》) xsbidx*2 2小于或等于0。
[0317]

(mvc[xsbidx][ysbidx][1]》》5) ysbidx*2 2小于或等于0。
[0318]
2.当前编解码单元的预测样点导出如下:
[0319]

如果treetype等于single_tree或dual_tree_luma,则当前编解码单元的预测样点导出如下:
[0320]

以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度cbwidth和亮度编解码块高度cbheight、水平方向中的亮度编解码子块的数量numsbx和垂直方向中的亮度编解码子块的数量numsby、亮度运动矢量mvl[xsbidx][ysbidx](其中xsbidx=0..numsbx-1,而ysbidx=0..numsby-1)、变量cidx设置为等于0作为输入,并且作为预测亮度样点的(cbwidth)x(cbheight)矩阵predsamples
l
的ibc预测样点(predsamples)作为输出,来调用第8.6.3.1节规定的ibc块的解码过程。
[0321]

否则,如果treetype等于single_tree或dual_tree_chroma,则当前编解码单元的预测样点导出如下:
[0322]
––
以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度cbwidth和亮度编解码块高度cbheight、水平方向中的亮度编解码子块的数量numsbx和垂直方向中的亮度编解码子块的数量numsby、色度运动矢量mvc[xsbidx][ysbidx](其中xsbidx=0..numsbx-1,而ysbidx=0..numsby-1)、变量cidx设置为等于1作为输入,并且作为色度分量cb的预测色度样点的(cbwidth/2)x(cbheight/2)矩阵predsamples
cb
的ibc预测样点(predsamples)作为输出,来调用第8.6.3.1节规定的ibc块的解码过程。
[0323]
––
以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度cbwidth和亮度编解码块高度cbheight、水平方向中的亮度编解码子块的数量numsbx和垂直方向中的亮度编解码子块的数量numsby、色度运动矢量mvc[xsbidx][ysbidx](其中xsbidx=0..numsbx-1,而ysbidx=0..numsby

1)、变量cidx设置为等于2作为输入,并且作为色度分量cr的预测色度样点的(cbwidth/2)x(cbheight/2)矩阵predsamples
cr
的ibc预测样点(predsamples)作为输出,来调用第8.6.3.1节规定的ibc块的解码过程。
[0324]
3.变量numsbx[xcb][ycb]和numsby[xcb][ycb]分别设置为等于numsbx和numsby。
[0325]
4.当前编解码单元的残差样点导出如下:
[0326]

当treetype等于single_tree或treetype等于dual_tree_luma时,以位置(xtb0,ytb0)设置为等于亮度位置(xcb,ycb),宽度ntbw设置为等于亮度编解码块宽度cbwidth,高度ntbh设置为等于亮度编解码块高度cbheight,并且变量cidxset设置为等于0作为输入,并且矩阵ressamples
l
作为输出,来调用第8.5.8节中规定的以帧间预测模式编解码的编解码块的残差信号的解码过程。
[0327]

当treetype等于single_tree或treetype等于dual_tree_chroma时,以位置(xtb0,ytb0)设置为等于色度位置(xcb/2,ycb/2),宽度ntbw设置为等于色度编解码块宽度cbwidth/2,高度ntbh设置为等于色度编解码块高度cbheight/2,并且变量cidxset设置为等于1作为输入,并且矩阵ressamples
cb
作为输出,来调用第8.5.8节中规定的以帧间预测模式编解码的编解码块的残差信号的解码过程。
[0328]

当treetype等于single_tree或treetype等于dual_tree_chroma时,以位置(xtb0,ytb0)设置为等于色度位置(xcb/2,ycb/2),宽度ntbw设置为等于色度编解码块宽度cbwidth/2,高度ntbh设置为等于色度编解码块高度cbheight/2,并且变量cidxset设置为等于2作为输入,并且矩阵ressamples
cr
作为输出,来调用第8.5.8节中规定的以帧间预测模式编解码的编解码块的残差信号的解码过程。
[0329]
5.当前编解码单元的重建样点导出如下:
[0330]

当treetype等于single_tree或treetype等于dual_tree_luma时,以块位置(xb,yb)设置为等于(xcb,ycb),块宽度bwidth设置为cbwidth,块高度bheight设置为cbheight,变量cidx设置为0,将(cbwidth)x(cbheight)矩阵predsamples设置为等于predsamples
l
,并且将(cbwidth)x(cbheight)矩阵ressamples设置为等于ressamples
l
作为输入,并且输出为环路滤波之前的修改的重建图片,来调用第8.7.5节中规定的颜色分量的图片重建过程。
[0331]

当treetype等于single_tree或treetype等于dual_tree_chroma时,以块位置(xb,yb)设置为等于(xcb/2,ycb/2),块宽度bwidth设置为cbwidth/2,块高度bheight设置为cbheight/2,变量cidx设置为1,将(cbwidth/2)x(cbheight/2)矩阵predsamples设置为等于predsamples
cb
,并且将(cbwidth/2)x(cbheight/2)矩阵ressamples设置为等于ressamples
cb
作为输入,并且输出为环路滤波之前的修改的重建图片,来调用第8.7.5节中规定的颜色分量的图片重建过程。
[0332]

当treetype等于single_tree或treetype等于dual_tree_chroma时,以块位置(xb,yb)设置为等于(xcb/2,ycb/2),块宽度bwidth设置为cbwidth/2,块高度bheight设置为cbheight/2,变量cidx设置为2,将(cbwidth/2)x(cbheight/2)矩阵predsamples设置为等于predsamples
cr
,并且将(cbwidth/2)x(cbheight/2)矩阵ressamples设置为等于ressamples
cr
作为输入,并且输出为环路滤波之前的修改的重建图片,来调用第8.7.5节中规定的颜色分量的图片重建过程。
[0333]
2.3.2 ibc的最新进展(在vtm5.0中)
[0334]
2.3.2.1单个bv列表
[0335]
vvc采用了jvet-n0843。在jvet-n0843中,ibc中用于merge模式和amvp模式的bv预
[0364]
3.变量numcurrcand设置为等于mvcandlist中merge候选的数量。
[0365]
4.当numcurrcand小于maxnummergecandand且smrnumhmvpibccand大于0时,将以mvcandlist,isinsmr设置为等于isinsmr[xcb][ycb]以及numcurrcand作为输入,并且修改的mvcandlist和numcurrcand作为输出来调用8.6.2.4中规定的基于ibc历史的运动矢量候选的导出过程。
[0366]
5.当numcurrcand小于maxnummergecand时,以下内容适用,直到numcurrcand等于maxnummergecand:
[0367]
1.mvcandlist[numcurrcand][0]设置为等于0。
[0368]
2.mvcandlist[numcurrcand][1]设置为等于0。
[0369]
3.numcurrcand增加1。
[0370]
6.变量mvidx如下导出:
[0371]
mvidx=general_merge_flag[xcb][ycb]?merge_idx[xcb][ycb]:mvp_l0_flag[xcb][ycb](0-17)
[0372]
7.进行以下分配:
[0373]
mvl[0]=mergecandlist[mvidx][0]
ꢀꢀ
(0-18)
[0374]
mvl[1]=mergecandlist[mvidx][1]
ꢀꢀ
(0-19)
[0375]
2.3.2.2 ibc的尺寸限制
[0376]
在最新的vvc和vtm5中,建议在先前的vtm和vvc版本中的当前比特流约束之上,显式使用语法约束以禁用128x128 ibc模式,这使得ibc标志的存在取决于cu尺寸《128x128。
[0377]
2.3.2.3 ibc的共享的merge列表
[0378]
为了降低解码器复杂度并支持并行编码,jvet-m0147提出了cu划分树中的一个祖先节点的所有叶编解码单元(cu)共享相同的merge候选列表,以启用小的跳过/merge编解码的cu的并行处理。祖先节点被称为merge共享节点。假设merge共享节点是叶cu,在merge共享节点处生成共享merge候选列表。
[0379]
更具体地说,可以适用以下:
[0380]-如果块具有亮度样点不大于32,并划分为2个4x4子代块(child block),则使用在非常小的块(例如,两个相邻的4x4块)之间的共享merge列表。
[0381]-如果块具有亮度样点大于32,但是在划分之后,至少一个子块小于阈值(32),该划分的所有子代块共享相同的merge列表(例如,16x4或4x16三元划分或8x8四元划分)。
[0382]
这样的限制仅应用于ibc merge模式。
[0383]
2.4编解码单元和merge模式的语法表和语义
[0384]
7.3.5.1一般条带头语法
[0385]
[0386][0387]
7.3.7.5编解码单元语法
[0388]
[0389]
[0390][0391]
7.3.7.7 merge数据语法
[0392]
[0393][0394]
7.4.6.1一般条带头语义
[0395]
six_minus_max_num_merge_cand指定从6减去的条带中支持的merge运动矢量预测(mvp)候选的最大数量。merge mvp候选的最大数量maxnummergecand如下导出:
[0396]
maxnummergecand=6-six_minus_max_num_merge_cand(7-57)
[0397]
maxnummergecand的值应在1到6的范围中(包括端值)。
[0398]
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如下导出:
[0399]
maxnumsubblockmergecand=5-five_minus_max_num_subblock_merge_cand(7-58)
[0400]
maxnumsubblockmergecand的值应在0到5的范围中(包括端值)。
[0401]
7.4.8.5编解码单元语义
[0402]
pred_mode_flag等于0指定当前编解码单元是在帧间预测模式中编解码的。pred_mode_flag等于1指定当前编解码单元是在帧内预测模式中编解码的。
[0403]
当不存在pred_mode_flag时,可如下推断:
[0404]

如果cbwidth等于4并且cbheight等于4,则pred_mode_flag推断为等于1。
[0405]

否则,在解码i条带时,将pred_mode_flag推断为等于1,而在分别解码p或b条带时,将pred_mode_flag推断为等于0。
[0406]
对于x=x0..x0 cbwidth-1且y=y0..y0 cbheight-1,变量cupredmode[x][y]如下导出:
[0407]

如果pred_mode_flag等于0,则将cupredmode[[x][y]设置为等于mode_inter。
[0408]

否则(pred_mode_flag等于1),将cupredmode[x][y]设置为等于mode_intra。
[0409]
pred_mode_ibc_flag等于1指定当前编解码单元是在ibc预测模式中编解码的。pred_mode_ibc_flag等于0指定当前编解码单元未在ibc预测模式中编解码。
[0410]
当不存在pred_mode_ibc_flag时,可如下推断:
[0411]

如果cu_skip_flag[x0][y0]等于1,并且cbwidth等于4,且cbheight等于4,则pred_mode_ibc_flag推断为等于1。
[0412]

否则,如果cbwidth和cbheight都等于128,则pred_mode_ibc_flag推断为等于0。
[0413]

否则,当解码i条带时,将pred_mode_ibc_flag推断为等于sps_ibc_enabled_flag的值;并且当分别解码p或b条带时,将pred_mode_ibc_flag的值推断为等于0。
[0414]
当pred_mode_ibc_flag等于1时,对于x=x0..x0 cbwidth-1且y=y0..y0 cbheight-1,将变量cupredmode[x][y]设置为等于mode_ibc。
[0415]
general_merge_flag[x0][y0]指定是否从相邻的帧间预测分割中推断当前编解码单元的帧间预测参数。矩阵索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0416]
当不存在general_merge_flag[x0][y0]时,可如下推断:
[0417]

如果cu_skip_flag[x0][y0]等于1,则推断general_merge_flag[x0][y0]等于1。
[0418]

否则,推断general_merge_flag[x0][y0]等于0。
[0419]
mvp_l0_flag[x0][y0]指定list 0的运动矢量预测器索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度图片样点的位置(x0,y0)。
[0420]
当不存在mvp_l0_flag[x0][y0]时,则将其推断为等于0。
[0421]
mvp_l1_flag[x0][y0]与mvp_l0_flag具有相同的语义,其中l0和list 0分别被l1和list 1代替。
[0422]
inter_pred_idc[x0][y0]指定根据表7-10,list 0、list 1或双向预测是否用于当前编解码单元。矩阵索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0423]
表7-10

关联到帧间预测模式的名称
[0424][0425]
当不存在inter_pred_idc[x0][y0]时,则将其推断为等于pred_l0。
[0426]
7.4.8.7 merge数据语义
[0427]
regular_merge_flag[x0][y0]等于1指定使用常规merge模式生成当前编解码单元的帧间预测参数。矩阵索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0428]
当不存在regular_merge_flag[x0][y0]时,可如下推断:
[0429]

如果以下所有条件为真,则将regular_merge_flag[x0][y0]推断为等于1:
[0430]

sps_mmvd_enabled_flag等于0。
[0431]

general_merge_flag[x0][y0]等于1。
[0432]

cbwidth*cbheight等于32。
[0433]

否则,推断regular_merge_flag[x0][y0]等于0。
[0434]
mmvd_merge_flag[x0][y0]等于1指定使用具有运动矢量差的merge模式生成当前编解码单元的帧间预测参数。矩阵索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0435]
当不存在mmvd_merge_flag[x0][y0]时,可如下推断:
[0436]

如果以下所有条件为真,则将mmvd_merge_flag[x0][y0]推断为等于1:
[0437]

sps_mmvd_enabled_flag等于1。
[0438]

general_merge_flag[x0][y0]等于1。
[0439]

cbwidth*cbheight等于32。
[0440]

regular_merge_flag[x0][y0]等于0。
[0441]

否则,推断mmvd_merge_flag[x0][y0]等于0。
[0442]
mmvd_cand_flag[x0][y0]指定是否将merge候选列表中的第一(0)或第二(1)候选与从mmvd_distance_idx[x0][y0]和mmvd_direction_idx[x0][y0]导出的运动矢量差一起使用。矩阵索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0443]
当不存在mmvd_cand_flag[x0][y0]时,则将其推断为等于0。
[0444]
mmvd_distance_idx[x0][y0]指定用于导出mmvddistance[x0][y0]的索引,如表7-12所示。矩阵索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0445]
表7-12

基于mmvd_distance_idx[x0][y0]的mmvddistance[x0][y0]的规定
[0446][0447][0448]
mmvd_direction_idx[x0][y0]指定用于导出mmvdsign[x0][y0]的索引,如表7-13中所指定。矩阵索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0449]
表7-13

基于mmvd_direction_idx[x0][y0]的mmvdsign[x0][y0]的规定
[0450][0451]
merge加mvd偏移的两个分量mmvdoffset[x0][y0]如下导出:
[0452]
mmvdoffset[x0][y0][0]=(mmvddistance[x0][y0]《《2)*mmvdsign[x0][y0][0]
ꢀꢀ
(0-21)
[0453]
mmvdoffset[x0][y0][1]=(mmvddistance[x0][y0]《《2)*mmvdsign[x0][y0][1]
ꢀꢀ
(0-22)
[0454]
merge_subblock_flag[x0][y0]指定是否从相邻块中推断当前编解码单元的基于子块的帧间预测参数。矩阵索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。当不存在merge_subblock_flag[x0][y0]时,则将其推断为等于0。
[0455]
merge_subblock_idx[x0][y0]指定基于子块的merge候选列表的merge候选索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0456]
当不存在merge_subblock_idx[x0][y0]时,则将其推断为等于0。
[0457]
ciip_flag[x0][y0]指定是否将组合的帧间图片merge和帧内图片预测应用于当前编解码单元。矩阵索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0458]
当不存在ciip_flag[x0][y0]时,则将其推断为等于0。
[0459]
当ciip_flag[x0][y0]等于1时,具有x=xcb..xcb cbwidth-1和y=ycb..ycb cbheight-1的变量intrapredmodey[x][y]设置为等于intra_planar。
[0460]
指定在解码b条带时是否使用基于三角形的运动补偿来生成当前编解码单元的预测样点的变量mergetriangleflag[x0][y0],导出如下:
[0461]

如果以下所有条件为真,则将mergetriangleflag[x0][y0]设置为等于1:
[0462]

sps_triangle_enabled_flag等于1。
[0463]

slice_type等于b。
[0464]

general_merge_flag[x0][y0]等于1。
[0465]

maxnumtrianglemergecand大于或等于2。
[0466]

cbwidth*cbheight大于或等于64。
[0467]

regular_merge_flag[x0][y0]等于0。
[0468]

mmvd_merge_flag[x0][y0]等于0。
[0469]

merge_subblock_flag[x0][y0]等于0。
[0470]

ciip_flag[x0][y0]等于0。
[0471]

否则,将mergetriangleflag[x0][y0]设置为等于0。
[0472]
merge_triangle_split_dir[x0][y0]指定merge三角模式的划分方向。矩阵索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0473]
当不存在merge_triangle_split_dir[x0][y0]时,则将其推断为等于0。
[0474]
merge_triangle_idx0[x0][y0]指定基于三角形的运动补偿候选列表的第一merge候选索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0475]
当不存在merge_triangle_idx0[x0][y0]时,则将其推断为等于0。
[0476]
merge_triangle_idx1[x0][y0]指定基于三角形的运动补偿候选列表的第二merge候选索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0477]
当不存在merge_triangle_idx1[x0][y0]时,则推断其等于0。
[0478]
merge_idx[x0][y0]指定merge候选列表的merge候选索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0479]
当不存在merge_idx[x0][y0]时,可如下推断:
[0480]

如果mmvd_merge_flag[x0][y0]等于1,则将merge_idx[x0][y0]推断为等于mmvd_cand_flag[x0][y0]。
[0481]

否则(mmvd_merge_flag[x0][y0]等于0),则将merge_idx[x0][y0]推断为等于0。
[0482]
3由实施例解决的技术问题的示例
[0483]
当前的ibc可能具有以下问题:
[0484]
1.对于p/b条带,可将多少个ibc运动(bv)候选添加到ibc运动列表中被设置为与常规merge列表尺寸相同。因此,如果禁用了常规merge模式,则也将禁用ibc merge模式。但是,考虑到其巨大的收益,即使禁用常规merge模式,也希望启用ibc merge模式。
[0485]
2.ibc amvp和ibc merge模式共享相同的运动(bv)候选列表构建过程。在条带头中信令通知由merge候选的最大数量(例如,maxnummergecand)指示的列表尺寸。对于ibc amvp的情况,只能从两个ibc运动候选中的一个中选择bv预测器。
[0486]
a.当bv候选列表尺寸为1时,在这种情况下,不需要bv预测器索引的信令通知。
[0487]
b.当bv候选列表尺寸为0时,ibc merge和amvp模式均应禁用。但是,在当前设计中,仍然会信令通知bv预测器索引。
[0488]
3.可以在序列级启用ibc,但是,由于信令通知的bv列表尺寸,可以禁用ibc,但是仍然信令通知ibc模式和有关语法的指示,这浪费了比特。
[0489]
4示例技术和实施例
[0490]
下面的详细发明应被认为是示例以解释一般概念。这些发明不应狭义地解释。此外,这些发明可以以任何方式组合。
[0491]
在本发明中,解码器侧运动矢量导出(dmvd)包括进行运动估计以导出或细化块/子块运动信息的dmvr和fruc,以及进行样点方面的运动细化的bio之类的方法。
[0492]
可以通过maxibccandnum基于在bv候选列表中导出或预测bv来表示bv候选的最大数量(即,bv候选列表尺寸)。
[0493]
将ibc merge候选的最大数量表示为maxibcmrgnum,将ibc amvp候选的最大数量表示为maxibcamvpnum。注意,跳过模式可以视为所有系数等于0的特殊merge模式。
[0494]
1.即使对序列启用了ibc,也可能对图片/条带/片/片组/组块或其它视频单元禁用ibc(例如,ibc amvp和/或ibc merge)模式。
[0495]
a.在一个示例中,可以在图片/条带/片/片组/组块或其它视频单元级(诸如,在pps、aps、条带头、图片头等中)信令通知是否启用了ibc amvp和/或ibc merge模式的指示。
[0496]
i.在一个示例中,该指示可以是标志。
[0497]
ii.在一个示例中,指示可以是多个允许的bv预测器。当允许的bv预测器的数量等于0时,指示ibc amvp和/或merge模式被禁用。
[0498]
1)可替代地,可以以预测的方式信令通知允许的bv预测器的数量。
[0499]
a.例如,可以信令通知x减去允许的bv预测器数量,其中x是固定数,诸如2。
[0500]
iii.可替代地,此外,可以诸如基于视频内容是否是屏幕内容还或sps_ibc_enabled_flag而有条件地信令通知该指示。
[0501]
b.在一个示例中,当视频内容不是屏幕内容(诸如,相机捕获的或混合的内容)时,可以禁用ibc模式。
[0502]
c.在一个示例中,当视频内容是相机捕获的内容时,可以禁用ibc模式。
[0503]
2.是否信令通知ibc的使用(例如,pred_mode_ibc_flag)和ibc有关的语法元素可以取决于maxibccandnum(例如,maxibccandnum被设置为等于maxnummergecand)。
[0504]
a.在一个示例中,当maxibccandnum等于0时,可以跳过对于i条带使用ibc跳过模式(例如,cu_skip_flag)的信令通知,并且推断ibc被禁用。
[0505]
b.在一个示例中,当maxibcmrgnum等于0时,可以跳过对于i条带使用ibc跳过模式
(例如,cu_skip_flag)的信令通知,并且推断ibc跳过模式被禁用。
[0506]
c.在一个示例中,当maxibccandnum等于0时,可以跳过使用ibc merge/ibc amvp模式(例如,pred_mode_ibc_flag)的信令通知,并且推断ibc被禁用。
[0507]
d.在一个示例中,当maxibccandnum等于0并且当前块以ibc模式编解码时,可以跳过merge模式(例如,general_merge_flag)的信令通知,并且推断ibc merge模式被禁用。
[0508]
i.可替代地,推断当前块以ibc amvp模式编解码。
[0509]
e.在一个示例中,当maxibcmrgnum等于0并且当前块以ibc模式编解码时,可以跳过merge模式(例如,general_merge_flag)的信令通知,并且推断ibc merge模式被禁用。
[0510]
i.可替代地,推断当前块以ibc amvp模式编解码。
[0511]
3.是否信令通知ibc amvp模式的与运动矢量差有关的语法元素可以取决于maxibccandnum(例如,maxibccandnum被设置为等于maxnummergecand)。
[0512]
a.在一个示例中,当maxibccandnum等于0时,可以跳过ibc amvp模式的运动矢量预测器索引(例如,mvp_10_flag)的信令通知,并且推断ibc amvp模式被禁用。
[0513]
b.在一个示例中,当maxibccandnum等于0时,可以跳过运动矢量差(例如,mvd_coding)的信令通知,并且推断ibc amvp模式被禁用。
[0514]
c.在一个示例中,在maxibccandnum大于k(例如,k=0或1)的条件下,可以对ibc amvp模式的运动矢量预测器索引和/或运动矢量预测器的精度和/或运动矢量差的精度进行编解码。
[0515]
i.在一个示例中,如果maxibccandnum等于1,则可以不信令通知ibc amvp模式的运动矢量预测器索引(例如,mvp_10_flag)。
[0516]
1)在一个示例中,在这种情况下,可将ibc amvp模式的运动矢量预测器索引(例如,mvp_10_flag)推断为诸如0的值。
[0517]
ii.在一个示例中,如果maxibccandnum等于0,则可以跳过对于ibc amvp模式的运动矢量预测器的精度和/或运动矢量差的精度(例如,amvr_precision_flag)的信令通知。
[0518]
iii.在一个示例中,可以在maxibccandnum大于0的条件下,信令通知ibc amvp模式的运动矢量预测器的精度和/或运动矢量差的精度(例如,amvr_precision_flag)。
[0519]
4.建议可将maxibccandnum从常规merge候选的最大数量解耦。
[0520]
a.在一个示例中,可以直接信令通知maxibccandnum。
[0521]
i.可替代地,当对条带启用ibc时,一致性比特流应满足maxibccandnum大于0。
[0522]
b.在一个示例中,可以信令通知maxibccandnum和其它语法元素/固定值的预测编解码。
[0523]
i.在一个示例中,可以对常规merge列表尺寸与maxibccandnum之间的差进行编解码。
[0524]
ii.在一个示例中,(k减去maxibccandnum)可以被编解码,例如,k=5或6。
[0525]
iii.在一个示例中,(maxibccandnum减去k)可以被编解码,例如,k=0或2。
[0526]
c.在一个示例中,可以根据上述方法信令通知maxibcmrgnum和/或maxibcamvpnum的指示。
[0527]
5.可将maxibccandnum设置为等于func(maxibcmrgnum,maxibcamvpnum)
[0528]
a.在一个示例中,maxibcamvpnum固定为2,并且maxibccandnum设置为func
(maxibcmrgnum,2)。
[0529]
b.在一个示例中,func(a,b)返回两个变量a和b之间的较大值。
[0530]
6.maxibccandnum可以根据一个块的编解码模式信息来确定。即,可将多少bv候选添加到bv候选列表可以取决于块的模式信息。
[0531]
a.在一个示例中,如果一个块以ibc merge模式编解码,则可将maxibccandnum设置为等于maxibcmrgnum。
[0532]
b.在一个示例中,如果一个块以ibc amvp模式编解码,则可将maxibccandnum设置为等于maxibcamvpnum。
[0533]
7.一致性比特流应满足解码的ibc amvp或ibc merge索引小于maxibccandnum。
[0534]
a.在一个示例中,一致性比特流应满足解码的ibc amvp索引小于maxibcamvpnum。
[0535]
b.在一个示例中,一致性比特流应满足解码的ibc merge索引小于maxibcmrgnum(例如2)。
[0536]
8.当ibc amvp或ibc merge候选索引无法在bv候选列表中识别bv候选时(例如,ibc amvp或merge候选索引不小于maxibccandnum,或者解码的ibc amvp索引不小于maxibcamvpnum,或者解码的ibc merge索引不小于maxibcmrgnum),则可以使用默认的预测块。
[0537]
a.在一个示例中,默认预测块中的所有样点都被设置为(1《《(比特深度-1))。
[0538]
b.在一个示例中,可将默认的bv分配给块。
[0539]
9.当ibc amvp或ibc merge候选索引无法在bv候选列表中识别bv候选时(例如,ibc amvp或merge候选索引不小于maxibccandnum,或者解码的ibc amvp索引不小于maxibcamvpnum,或者解码的ibc merge索引不小于maxibcmrgnum),则可以该块视为具有无效bv的ibc块。
[0540]
a.在一个示例中,可将应用到具有无效bv的块的过程应用于该块。
[0541]
10.可以在某些条件下构建补充的bv候选列表,诸如,解码的ibc amvp或ibc merge索引不小于maxibccandnum。
[0542]
a.在一个示例中,补充bv候选列表由以下步骤中的一个或多个构建(依次或以交织的方式):
[0543]
i.添加hmvp候选
[0544]
1)以hmvp候选索引的升序,从hmvp表中的第k个条目开始(例如,k=0)
[0545]
2)以hmvp候选索引的降序,从hmvp表中的倒数第k个条目开始(例如,k=0或k=maxibccandnum

ibc amvp/ibc merge索引,或k=maxibccandnum
–1–
ibc amvp/ibc merge索引)
[0546]
ii.使用具有maxibccandnum候选的bv候选列表从可用候选导出虚拟bv候选。
[0547]
1)在一个示例中,可将偏移添加到bv候选的水平和/或垂直分量上以获得虚拟bv候选。
[0548]
2)在一个示例中,可将偏移添加到hmvp表中的hmvp候选的水平和/或垂直分量上以获得虚拟bv候选。
[0549]
iii.添加默认候选
[0550]
1)在一个示例中,可以添加(0,0)作为默认候选。
[0551]
2)在一个示例中,可以根据当前块的维度导出默认候选。
[0552]
11.maxibcamvpnum可以不等于2。
[0553]
a.可替代地,此外,可以信令通知可以大于1的索引,而不是信令通知指示运动矢量预测器索引的标志(例如,mvp_10_flag)。
[0554]
i.在一个示例中,可以用一元/截断一元/固定长度/指数哥伦布/其它二值化方法对索引进行二值化。
[0555]
ii.在一个示例中,索引的二进制的二进制数(bin)字符串的二进制数可以被上下文编解码或旁路编解码。
[0556]
1)在一个示例中,可以对索引的二进制的二进制数字符串的前k个(例如,k=1)位进行上下文编解码,并且剩余位进行旁路编解码。
[0557]
b.在一个示例中,maxibcamvpnum可以大于maxibcmrgnum。
[0558]
i.可替代地,此外,可将bv候选列表中的前maxibcmrgnum个bv候选用于ibc merge编解码块。
[0559]
12.即使将maxibccandnum设置为0(例如,maxnummergecand=0),仍然可以构建ibc bv候选列表。
[0560]
a.在一个示例中,可以在启用ibc amvp模式时构建merge列表。
[0561]
b.在一个示例中,当ibc merge模式被禁用时,merge列表可以被构建为包含多达maxibcamvpnum个bv候选。
[0562]
13.对于以上公开的方法,术语“maxibccandnum”可以由“maxibcmrgnum”或“maxibcamvpnum”代替。
[0563]
14.对于以上公开的方法,术语“maxibccandnum”和/或“maxibcmrgnum”可以由maxnummergecand代替,该maxnummergecand可以代表常规merge列表的merge候选的最大数量。
[0564]
5实施例
[0565]
在jvet-n1001-v5上新添加的部分包含在双粗体花括号内,即,{{a}}指示已添加“a”,而删除的部分包含在双粗体括号内,即,[[a]]表示“a”已被删除。
[0566]
5.1实施例#1
[0567]
可以在条带头/pps/aps/dps中信令通知ibc运动候选的最大数量的指示(例如,用于ibc amvp和/或ibc merge)。
[0568]
7.3.5.1一般条带头语法
[0569]
[0570][0571]
{{max_num_merge_cand_minus_max_num_ibc_cand指定从maxnummergecand减去的条带中支持的ibc merge模式候选的最大数量。ibc merge模式候选的最大数量maxnumibcmergecand如下导出:
[0572]
maxnumibcmergecand=maxnummergecand-max_num_merge_cand_minus_max_num_ibc_cand
[0573]
当存在max_num_merge_cand_minus_max_num_ibc_cand时,maxnumibcmergecand的值应在2(或0)至maxnummergecand的范围内(包括端值)。当不存在max_num_merge_cand_minus_max_num_ibc_cand时,maxnumibcmergecand设置为等于0。当maxnumibcmergecand等于0时,当前条带不允许使用ibc merge模式和ibc amvp模式。}}
[0574]
可替代地,maxnumibcmergecand的指示的信令通知可以替换为:
[0575][0576]
maxnumibcmergecand=5-five_minus_max_num_ibc_cand}}
[0577]
5.2实施例#2
[0578]
建议将ibc bv列表的最大数量从同时控制ibc和常规帧间模式的maxnummergecand更改为单独的变量maxnumibcmergecand。
[0579]
8.6.2.2 ibc亮度运动矢量预测的导出过程
[0580]
仅当cupredmode[xcb][ycb]等于mode_ibc时才调用此过程,其中(xcb,ycb)指定相对于当前图片的左上亮度样点的当前亮度编解码块的左上样点。
[0581]
此过程的输入是:
[0582]

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

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

变量cbheight,指定亮度样点中当前编解码块的高度。
[0585]
此过程的输出是:
[0586]

1/16分数样点准确度mvl的亮度运动矢量。
[0587]
变量xsmr、ysmr、smrwidth、smrheight和smrnumhmvpibccand如下导出:
[0588]
xsmr=isinsmr[xcb][ycb]?smrx[xcb][ycb]:xcb(8-910)
[0589]
ysmr=isinsmr[xcb][ycb]?smry[xcb][ycb]:ycb(8-911)
[0590]
smrwidth=isinsmr[xcb][ycb]?smrw[xcb][ycb]:cbwidth
[0591]
(8-912)
[0592]
smrheight=isinsmr[xcb][ycb]?smrh[xcb][ycb]:cbheight
[0593]
(8-913)
[0594]
smrnumhmvpibccand=isinsmr[xcb][ycb]?numhmvpsmribccand:numhmvpibccand
[0595]
(8-914)
[0596]
亮度运动矢量mvl通过以下有序步骤导出:
[0597]
1.以将亮度编解码块位置(xcb,ycb)设置为等于(xsmr,ysmr),亮度编解码块宽度cbwidth、亮度编解码块高度cbheight设置为等于smrwidth和smrheight作为输入,并且输出是可用性标志availableflaga1、availableflagb1和运动矢量mva1和mvb1,来调用第8.6.2.3条中规定的从相邻编解码单元的空域运动矢量候选的导出过程。
[0598]
2.运动矢量候选列表mvcandlist的构建如下:
[0599]
i=0
[0600]
if(availableflaga1)
[0601]
mvcandlist[i ]=mva1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-915)
[0602]
if(availableflagb1)
[0603]
mvcandlist[i ]=mvb1[0604]
3.变量numcurrcand设置为等于mvcandlist中merge候选的数量。
[0605]
4.当numcurrcand小于[[maxnummergecand]]{{maxnumibcmergecand}}并且smrnumhmvpibccand大于0时,以mvcandlist、将isinsmr设置为等于isinsmr[xcb][ycb]和numcurrcand作为输入,并且将修改的mvcandlist和numcurrcand作为输出,来调用8.6.2.4中规定的基于ibc历史的运动矢量候选的导出过程。
[0606]
5.当numcurrcand小于[[maxnummergecand]]{{maxnumibcmergecand}}时,以下内容适用,直到numcurrcand等于maxnummergecand:
[0607]
1.mvcandlist[numcurrcand][0]设置为等于0。
[0608]
2.mvcandlist[numcurrcand][1]设置为等于0。
[0609]
3.numcurrcand增加1。
[0610]
6.变量mvidx如下导出:
[0611]
mvidx=general_merge_flag[xcb][ycb]?merge_idx[xcb][ycb]:mvp_l0_flag[xcb][ycb](0-29)
[0612]
7.进行以下分配:
[0613]
mvl[0]=mergecandlist[mvidx][0](8-917)
[0614]
mvl[1]=mergecandlist[mvidx][1](8-918)
[0615]
在一个示例中,如果当前块是ibc merge模式,则将maxnumibcmergecand设置为maxnummergecand;并且如果当前块为ibc amvp模式,则将maxnumibcmergecand设置为2。
[0616]
在一个示例中,诸如使用实施例#1,从信令通知的信息中导出maxnumibcmergecand。
[0617]
5.3实施方案#3
[0618]
根据允许的ibc候选的最大数量,对ibc有关的语法元素进行有条件的信令通知。在一个示例中,maxnumibcmergecand被设置为等于maxnummergecand。
[0619]
7.3.7.5编解码单元语法
[0620][0621][0622]
cu_skip_flag[x0][y0]等于1指定对于当前编解码单元,当解码p或b条带时,在cu_skip_flag[x0][y0]]之后,除了以下一个或多个语法元素外,不再解析其它语法元素:ibc模式标志pred_mode_ibc_flag[x0][y0]{{如果maxnumibcmergecand大于0}},以及merge_data()语法结构;当解码i条带{{并且maxnumibcmergecand大于0}}时,在cu_skip_flag[x0][y0]之后将不再解析除merge_idx[x0][y0]之外的其它语法元素。cu_skip_flag[x0][y0]等于0指示不跳过编解码单元。矩阵索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0623]
当不存在cu_skip_flag[x0][y0]时,则将其推断为等于0。
[0624]
pred_mode_ibc_flag等于1指定当前编解码单元以ibc预测模式编解码。pred_mode_ibc_flag等于0指定当前编解码单元不以ibc预测模式编解码。
[0625]
当不存在pred_mode_ibc_flag时,可如下推断:
[0626]

如果cu_skip_flag[x0][y0]等于1,且cbwidth等于4,cbheight等于4,则pred_mode_ibc_flag被推断为等于1。
[0627]

否则,如果cbwidth和cbheight都等于128,则pred_mode_ibc_flag被推断为等于0。
[0628]

否则,当解码i条带{{并且maxnumibcmergecand大于0}}时,pred_mode_ibc_flag被推断为等于sps_ibc_enabled_flag的值,并且当分别解码p或b条带时,pred_mode_ibc_flag被推断为等于0。
[0629]
5.4实施例#3
[0630]
根据允许的ibc候选的最大数量,对ibc有关的语法元素进行有条件的信令通知。
[0631][0632]
[0633]
在一个示例中,maxnumibcamvpcand可以被设置为maxnumibcmergecand或maxnummergecand。
[0634]
图20a示出了用于视频处理的示例方法2000。方法2000包括:在操作2002,在视频的视频区域和所述视频的比特流表示之间进行转换,比特流表示基于所述视频区域的转换期间使用的第一类型的ibc候选的最大数量,选择性地包括帧内块复制(ibc)高级运动矢量预测(amvp)模式的运动矢量差(mvd)有关的语法元素。在一些实施例中,当应用ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
[0635]
图20b示出了用于视频处理的示例方法2005。方法2005包括:在操作2007,对于视频的视频区域和所述视频的比特流表示之间的转换,确定对所述视频区域禁用帧内块复制(ibc)模式的使用并在所述视频的序列级启用所述ibc模式的使用的指示。
[0636]
方法2005包括,在操作2009,基于所述确定进行所述转换。在一些实施例中,当应用了所述ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
[0637]
图20c示出了用于视频处理的示例方法2010。方法2010包括:在操作2012,在视频的视频区域和所述视频的比特流表示之间进行转换,比特流表示基于在所述视频区域的转换期间使用的第一类型的ibc候选的最大数量,选择性地包括关于帧内块复制(ibc)模式的使用的指示和/或一个或多个ibc有关的语法元素。在一些实施例中,当应用了所述ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
[0638]
图20d示出了用于视频处理的示例方法2020。方法2020包括:在操作2022,在视频的视频区域和所述视频的比特流表示之间进行转换,在所述视频区域的转换期间使用的第一类型的帧内块复制(ibc)候选的最大数量的指示,独立于在所述转换期间使用的帧间模式的merge候选的最大数量在所述比特流表示中信令通知。在一些实施例中,当应用了所述ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
[0639]
图20e示出了用于视频处理的示例方法2030。方法2030包括:在操作2032,在视频的视频区域和所述视频的比特流表示之间进行转换,在所述视频区域的转换期间使用的帧内块复制(ibc)运动候选的最大数量是ibc merge候选的最大数量和ibc高级运动矢量预测(amvp)候选的最大数量的函数。在一些实施例中,当应用了所述ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
[0640]
图20f示出了用于视频处理的示例方法2040。方法2040包括:在操作2042,在视频的视频区域和所述视频的比特流表示之间进行转换,在所述视频区域的转换期间使用的帧内块复制(ibc)运动候选的最大数量基于所述视频区域的编解码的模式信息。
[0641]
图20g示出了用于视频处理的示例方法2050。方法2050包括:在操作2052,在视频的视频区域和所述视频的比特流表示之间进行转换,解码的帧内块复制(ibc)高级运动矢量预测(amvp)merge索引或解码的ibc merge索引小于帧内块复制(ibc)运动候选的最大数量。
[0642]
图20h示出了用于视频处理的示例方法2060。方法2060包括:在操作2062,在视频的视频区域和所述视频的比特流表示之间的转换期间,确定帧内块复制(ibc)替代运动矢量预测器(amvp)候选索引或ibc merge候选索引无法识别在块矢量候选列表中的块矢量候选。
[0643]
方法2060包括:在操作2064,基于所述确定在所述转换期间使用默认预测块。
[0644]
图20i示出了用于视频处理的示例方法2070。方法2070包括:在操作2072,在视频的视频区域和所述视频的比特流表示之间的转换期间,确定帧内块复制(ibc)替代运动矢量预测器(amvp)候选索引或ibc merge候选索引无法识别在块矢量候选列表中的块矢量候选。
[0645]
方法2070包括:在操作2074,基于所述确定通过将所述视频区视为具有无效块矢量进行所述转换。
[0646]
图20j示出了用于视频处理的示例方法2080。方法2080包括:在操作2082,在视频的视频区域和所述视频的比特流表示之间的转换期间,确定帧内块复制(ibc)替代运动矢量预测器(amvp)候选索引或ibc merge候选索引无法满足条件。
[0647]
方法2080包括:在操作2084,基于所述确定生成补充块矢量(bv)候选列表。
[0648]
方法2080包括:在操作2086,使用所述补充bv候选列表进行所述转换。
[0649]
图20k示出了用于视频处理的示例方法2090。方法2090包括:在操作2092,在视频的视频区域和所述视频的比特流表示之间进行转换,帧内块复制(ibc)高级运动矢量预测(amvp)候选的最大数量不等于2。
[0650]
图21是视频处理设备2100的框图。设备2100可用于实现本文所述的一个或多个方法。设备2100可以被实现在智能手机、平板计算机、计算机、物联网(iot)接收器等中。设备2100可以包括一个或多个处理器2102、一个或多个存储器2104和视频处理硬件2106。(一个或多个)处理器2102可以被配置为实现本文所述的一个或多个方法。存储器(多个存储器)2104可用于存储用于实现本文所述的方法和技术的数据和代码。视频处理硬件2106可用于在硬件电路中实现本文所述的一些技术。视频处理硬件2106可以部分或全部地以专用硬件或图像处理单元(gpu)或专业信号处理块的形式包括在(一个或多个)处理器2102内。
[0651]
在一些实施例中,视频编解码方法可以使用如关于图21所描述的在硬件平台上实现的设备来实现。
[0652]
所公开技术的一些实施例包括作出决定或确定以启用视频处理工具或模式。在一个示例中,当启用视频处理工具或模式时,编码器将在处理视频块时使用或实现该工具或模式,但不一定基于工具或模式的使用来修改所产生的比特流。也就是说,从视频块到视频的比特流表示的转换将在基于决定或确定启用视频处理工具或模式时使用视频处理工具或模式。在另一个示例中,当启用视频处理工具或模式时,解码器将在已经知道比特流已基于视频处理工具或模式而被修改的情况下处理比特流。即,将使用基于决定或确定而启用的视频处理工具或模式来进行从视频的比特流表示到视频块的转换。
[0653]
所公开技术的一些实施例包括作出决定或确定以禁用视频处理工具或模式。在一个示例中,当视频处理工具或模式被禁用时,编码器将在视频块到视频的比特流表示的转换中不使用该工具或模式。在另一示例中,当视频处理工具或模式被禁用时,解码器将在已经知道未使用基于决定或确定而启用的视频处理工具或模式来修改比特流的情况下处理比特流。
[0654]
图22是示出其中可实现本文中所公开的各种技术的示例视频处理系统2200的框图。各种实现方式可以包括系统2200的一些或全部组件。系统2200可以包括用于接收视频内容的输入2202。视频内容可以以原始或未压缩的格式(例如8或10比特多分量像素值)接
收,或者可以以压缩或编码的格式接收。输入2202可以代表网络接口、外围总线接口或存储接口。网络接口的示例包括有线接口(诸如以太网、无源光网络(pon)等)和无线接口(诸如wi-fi或蜂窝接口)。
[0655]
系统2200可以包括可以实现本文中描述的各种编解码或编码方法的编解码组件2204。编解码组件2204可以减少从编解码组件2204的输入2202到输出的视频的平均比特率,以产生视频的编解码表示。因此,编解码技术有时称为视频压缩或视频转码技术。如组件2206所表示的,编解码组件2204的输出可以被存储或经由所连接的通信来发送。在输入2202处接收的视频的存储或传送的比特流(或编解码)表示可以被组件2208使用,以生成被发送到显示接口2210的像素值或可显示视频。从比特流表示中生成用户可见视频的过程有时称为视频解压缩。此外,尽管某些视频处理操作被称为“编解码”操作或工具,但是应当理解,在编码器处使用编解码工具或操作,并且将由编解码器执行反向编解码结果的对应解码工具或操作。
[0656]
外围总线接口或显示接口的示例可以包括通用串行总线(usb)或高清多媒体接口(hdmi)或displayport等。存储接口的示例包括sata(串行高级技术附件)、pci、ide接口等。本文中描述的技术可以实现在各种电子设备中,诸如移动电话、膝上型计算机、智能电话或其它能够执行数字数据处理和/或视频显示的设备。
[0657]
在一些实施例中,可以实现以下技术方案:
[0658]
a1.一种视频处理方法,包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,所述比特流表示基于在所述视频区域的转换期间使用的第一类型的ibc候选的最大数量,选择性地包括帧内块复制(ibc)高级运动矢量预测(amvp)模式的运动矢量差(mvd)有关的语法元素,其中,当应用ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
[0659]
a2.如方案a1所述的方法,其中,mvd有关的语法元素包括以下中的至少一个:编解码的运动矢量预测器索引、运动矢量预测器的编解码的精度、运动矢量差和ibc amvp模式的运动矢量差的编解码的精度。
[0660]
a3.如方案a1所述的方法,其中,基于所述第一类型的ibc候选的最大数量小于或等于k,所述比特流表示排除了对于ibc amvp模式的mdv有关的语法元素的信令通知,并将所述ibc amvp模式推断为禁用,并且其中,k是整数。
[0661]
a4.如方案a1所述的方法,其中,基于所述第一类型的ibc候选的最大数量小于或等于k,所述比特流表示排除了对于运动矢量差的信令通知,并将所述ibc amvp模式推断为禁用,并且其中,k是整数。
[0662]
a5.如方案a1所述的方法,其中,基于所述第一类型的ibc候选的所述最大数量大于k,所述比特流表示选择性地包括以下中的至少一个:编解码的运动矢量预测器索引、运动矢量预测器的编解码的精度和ibc amvp模式的运动矢量差的编解码的精度,并且其中,k是整数。
[0663]
a6.如方案a3至a5中任一项所述的方法,其中,k=0或k=1。
[0664]
a7.如方案a1所述的方法,其中,基于所述第一类型的ibc候选的最大数量等于1,所述比特流表示排除ibc amvp模式的运动矢量预测器索引。
[0665]
a8.如方案a19所述的方法,其中,所述ibc amvp模式的运动矢量预测器索引被推
断为零。
[0666]
a9.如方案a1所述的方法,其中,基于所述第一类型的ibc候选的最大数量等于零,所述比特流表示排除运动矢量预测器的精度和/或所述ibc amvp模式的运动矢量差的精度。
[0667]
a10.如方案a1所述的方法,其中,基于所述第一类型的ibc候选的最大数量大于零,所述比特流表示排除运动矢量预测器的精度和/或所述ibc amvp模式的运动矢量差的精度。
[0668]
a11.如方案a1至a10中任一项所述的方法,其中,所述第一类型的ibc候选的最大数量是ibc运动候选的最大数量(表示为maxibccandnum)。
[0669]
a12.如方案a1至a10中任一项所述的方法,其中,所述第一类型的ibc候选的最大数量是ibc merge候选的最大数量(表示为maxibcmrgnum)。
[0670]
a13.如方案a1至a10中任一项所述的方法,其中,所述第一类型的ibc候选的最大数量是ibc高级运动矢量预测(amvp)候选的最大数量(表示为maxibcamvpnum)。
[0671]
a14.如方案a1至a10中任一项所述的方法,其中,所述第一类型的ibc候选的最大数量在所述比特流表示中信令通知。
[0672]
a15.一种视频处理方法,包括:对于视频的视频区域和所述视频的比特流表示之间的转换,确定对所述视频区域禁用帧内块复制(ibc)模式的使用并在所述视频的序列级启用所述ibc模式的使用的指示;以及基于所述确定进行所述转换,其中,当应用所述ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
[0673]
a16.如方案a15所述的方法,其中,所述视频区域对应于所述视频图片的图片、条带、片、片组或组块。
[0674]
a17.如方案a15或a16中所述的方法,其中,所述比特流表示包括与所述确定相关联的指示。
[0675]
a18.如方案a17所述的方法,其中,所述指示在图片、条带、片、组块或自适应参数集(aps)中信令通知。
[0676]
a19.如方案a18所述的方法,其中,所述指示在图片参数集(pps)、条带头、图片头、片头、片组头或组块头中信令通知。
[0677]
a20.如方案a15所述的方法,其中,基于所述视频的视频内容不同于屏幕内容来禁用所述ibc模式。
[0678]
a21.如方案a15所述的方法,其中,基于所述视频的视频内容是相机捕获的内容来禁用所述ibc模式。
[0679]
a22.一种视频处理方法,包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,所述比特流表示基于在所述视频区域的转换期间使用的第一类型的ibc候选的最大数量,选择性地包括关于帧内块复制(ibc)模式的使用的指示和/或一个或多个ibc有关的语法元素,其中,当应用所述ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
[0680]
a23.如方案a22所述的方法,其中,所述第一类型的ibc候选的最大数量被设置为等于帧间编解码块的merge候选的最大数量。
[0681]
a24.如方案a22所述的方法,其中,基于所述第一类型的ibc候选的最大数量等于
maxnumibc)在所述比特流中信令通知。
[0699]
b9.如方案b8所述的方法,其中,k=5或k=6。
[0700]
b10.如方案b6至b9中任一项所述的方法,其中,所述第一类型的ibc候选的最大数量被导出为(k

在所述比特流中信令通知的所述最大数量的指示)。
[0701]
b11.如方案b5所述的方法,其中,所述差在所述第一类型的ibc候选的最大数量和所述另一个值之间。
[0702]
b12.如方案b11所述的方法,其中,所述另一个值是固定的整数(k),并且其中(maxnumibc

k)在所述比特流中信令通知。
[0703]
b13.如方案b12所述的方法,其中k=0或k=2。
[0704]
b14.如方案b11至b13中任一项所述的方法,其中,所述第一类型的ibc候选的最大数量被导出为(在所述比特流中信令通知的所述最大数量的指示 k)。
[0705]
b15.如方案b1至b14中任一项所述的方法,其中,所述第一类型的ibc候选的最大数量是ibc运动候选的最大数量(表示为maxibccandnum)。
[0706]
b16.如方案b1至b14中任一项所述的方法,其中,所述第一类型的ibc候选的最大数量是ibc merge候选的最大数量(表示为maxibcmrgnum)。
[0707]
b17.如方案b1至b14中任一项所述的方法,其中,所述第一类型的ibc候选的最大数量是ibc高级运动矢量预测(amvp)候选的最大数量(表示为maxibcamvpnum)。
[0708]
b18.一种视频处理方法,包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,在所述视频区域的转换期间使用的帧内块复制(ibc)运动候选的最大数量(表示为maxibccandnum)是ibc merge候选的最大数量(表示为maxibcmrgnum)和ibc高级运动矢量预测(amvp)候选的最大数量(表示为maxibcamvpnum)的函数,其中,当应用所述ibc模式时,从对应于所述视频区域的视频图片中的其它样点来预测所述视频区域的样点。
[0709]
b19.如方案b18所述的方法,其中,maxibcamvpnum等于2。
[0710]
b20.如方案b18或b19中所述的方法,其中,所述函数返回其较大的对象。
[0711]
b21.一种视频处理方法,包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,在所述视频区域的转换期间使用的帧内块复制(ibc)运动候选的最大数量(表示为maxibccandnum)基于所述视频区域的编解码的模式信息。
[0712]
b22.如方案b21所述的方法,其中,基于所述视频区域以ibc merge模式编解码,maxibccandnum被设置为ibc merge候选的最大数量(表示为maxibcmrgnum)。
[0713]
b23.如方案b21所述的方法,其中,基于所述视频区域以ibc amvp模式编解码,maxibccandnum被设置为ibc高级运动矢量预测(amvp)候选的最大数量(表示为maxibcamvpnum)。
[0714]
b24.一种视频处理方法,包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,解码的帧内块复制(ibc)高级运动矢量预测(amvp)merge索引或解码的ibc merge索引小于ibc运动候选的最大数量(表示为maxibccandnum)。
[0715]
b25.如方案b24所述的方法,其中,解码的ibc amvp merge索引小于ibc amvp候选的最大数量(表示为maxibcamvpnum)。
[0716]
b26.如方案b24所述的方法,其中,所述解码的ibc merge索引小于ibc merge候选的最大数量(表示为maxibcmrgnum)。
[0717]
b27.如方案b26所述的方法,其中,maxibcmrgnum=2。
[0718]
b28.一种视频处理方法,包括:在视频的视频区域和所述视频的比特流表示之间的转换期间,确定帧内块复制(ibc)替代运动矢量预测器(amvp)候选索引或ibc merge候选索引无法识别在块矢量候选列表中的块矢量候选;以及基于所述确定在所述转换期间使用默认预测块。
[0719]
b29.如方案b28所述的方法,其中,默认预测块的每个样点被设置为(1《《(比特深度-1)),其中比特深度是正整数。
[0720]
b30.如方案b28所述的方法,其中,默认块矢量被分配给默认预测块。
[0721]
b31.一种视频处理方法,包括:在视频的视频区域和所述视频的比特流表示之间的转换期间,确定帧内块复制(ibc)替代运动矢量预测器(amvp)候选索引或ibc merge候选索引无法识别在块矢量候选列表中的块矢量候选;以及基于所述确定通过将所述视频区视为具有无效块矢量进行所述转换。
[0722]
b32.一种视频处理方法,包括:在视频的视频区域和所述视频的比特流表示之间的转换期间,确定帧内块复制(ibc)替代运动矢量预测器(amvp)候选索引或ibc merge候选索引无法满足条件;基于所述确定生成补充块矢量(bv)候选列表;以及使用所述补充bv候选列表进行所述转换。
[0723]
b33.如方案b32所述的方法,其中,所述条件包括所述ibc amvp候选索引或所述ibc merge候选索引不小于用于所述视频区域的ibc运动候选的最大数量的。
[0724]
b34.如方案b32或b33所述的方法,其中,所述补充bv候选矢量列表使用以下步骤生成:添加一个或多个基于历史的运动矢量预测(hmvp)候选,从其它bv候选生成一个或多个虚拟bv候选;以及添加一个或多个默认候选。
[0725]
b35.如方案b34所述的方法,其中,所述步骤按顺序进行。
[0726]
b36.如方案b34所述的方法,其中,所述步骤以交织的方式进行。
[0727]
b37.一种视频处理方法,包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,帧内块复制(ibc)高级运动矢量预测(amvp)候选的最大数量(表示为maxibcamvpnum)不等于二。
[0728]
b38.如方案b37所述的方法,其中,所述比特流表示排除指示运动矢量预测器索引的标志,并且包括具有大于一的值的索引。
[0729]
b39.如方案b38所述的方法,其中使用一元、截断一元、固定长度或指数哥伦布表示对所述索引进行二进制编解码。
[0730]
b40.如方案b38所述的方法,其中,所述索引的二进制的二进制数字符串的二进制数是上下文编解码的或旁路编解码的。
[0731]
b41.如方案b37所述的方法,其中,maxibcamvpnum大于ibc merge候选的最大数量(表示为maxibcmrgnum)。
[0732]
b42.一种视频处理的方法,包括在视频区域和所述视频区域的比特流表示之间的转换期间,确定帧内块复制(ibc)运动候选的最大数量为零,以及基于所述确定通过在所述转换期间生成ibc块矢量候选列表来进行所述转换。
[0733]
b43.如方案b42所述的方法,其中,所述转换还包括基于ibc高级运动矢量预测(amvp)模式对于所述视频区域的转换被启用而生成merge列表。
[0734]
b44.如方案b42所述的方法,其中,所述转换还包括基于ibc merge模式对于所述视频区域的转换被禁用而生成具有长度达ibc amvp候选的最大数量的merge列表。
[0735]
b45.如方案b1至b44中任一项所述的方法,其中,所述转换包括:从所述比特流表示生成所述视频区域的像素值。
[0736]
b46.如方案b1至b44中任一项所述的方法,其中,所述转换包括:从所述视频区域的像素值生成所述比特流表示。
[0737]
b47.一种视频处理设备,包括处理器,该处理器被配置为实现如方案b1至b46中的任一项或多项所述的方法。
[0738]
b48.一种存储程序代码的计算机可读介质,该程序代码在被执行时,使得所述处理器实现方案b1到b46中的任一项或多项所述的方法。
[0739]
在一些实施例中,可以实现以下技术方案:
[0740]
c1.一种视频处理方法,包括:在视频的视频区域和视频区域的比特流表示之间的转换期间,确定对于视频区域禁用帧内块复制模式并对视频的其它视频区域启用帧内块复制模式;以及基于所述确定进行转换;其中,在帧内块复制模式中,从对应于所述视频区域的视频图片中的其它像素来预测所述视频区域的像素。
[0741]
c2.如方案c1所述的方法,其中,视频区域对应于视频图片或视频图片的条带或片或片组或组块。
[0742]
c3.如方案c1-c2中的任一项所述的方法,其中,比特流表示包括关于确定的指示。
[0743]
c4.如方案c3所述的方法,其中,所述指示被包括在图片或条带或片或片组或组块级。
[0744]
c5.一种视频处理的方法,包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,所述比特流表示选择性地包括指示,所述指示关于确定在所述视频区域的转换期间使用的ibc运动候选的最大数量(指示为maxibccandnum)等于在所述转换期间使用的merge候选的最大数量(指示为maxnummergecand)。
[0745]
c6.如方案c5所述的方法,其中,maxibccandnum等于零,并且由于maxibcccardnum等于零,所以比特流表示排除了某些ibc信息的信令通知。
[0746]
c7.一种视频处理的方法,包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,所述比特流表示取决于在所述视频区域的转换期间使用的帧内块复制运动候选的最大数量的值(指示为maxibccandnum)满足条件,包括帧内块复制替代运动矢量预测器的运动矢量差有关的语法元素;其中,在所述帧内块复制模式中,从对应于所述视频区域的视频图片中的其它像素来预测所述视频区域的像素。
[0747]
c8.如方案c7所述的方法,其中,所述条件包括maxibccandnum等于在所述转换期间使用的merge候选的最大数量(指示为maxnummergecand)。
[0748]
c9.如方案c8所述的方法,其中maxibccandnum等于0,并且由于maxibccandnum等于0,因此从比特流表示中省略了对帧内块复制替代运动矢量预测器的运动矢量预测器索引的信令通知。
[0749]
c10.如方案c8所述的方法,其中,maxibccandnum等于0,并且由于maxibccandnum等于0,因此从比特流表示中省略了对于帧内块复制替代运动矢量预测器的运动矢量差的信令通知。
[0750]
c11.一种视频处理的方法,包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,在所述视频区域的转换期间使用的帧内块复制运动候选的最大数量(指示为maxibccandnum),独立于在所述转换中使用的merge候选的最大数量(指示为maxnummergecand)在所述比特流表示中信令通知;其中,帧内块复制对应于其中从对应于所述视频区域的视频图片中的其它像素来预测所述视频区域的像素的模式。
[0751]
c12.如方案c11所述的方法,其中,由于对于所述视频区域的转换被启用帧内块复制,maxibccandnum大于零。
[0752]
c13.如方案c11-c12中的任一项所述的方法,其中,通过使用另一个值进行预测性编解码,在比特流表示中信令通知maxibccandnum。
[0753]
c14.如方案c13所述的方法,其中,另一个值是maxnummergecand。
[0754]
c15.如方案c13所述的方法,其中,另一个值是常数k。
[0755]
c16.一种视频处理的方法,包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,在所述视频区域的转换期间使用的帧内块复制(ibc)运动候选的最大数量(指示为maxibccandnum)取决于所述视频区域的编解码模式信息;其中,ibc对应于从对应于所述视频区域的视频图片中的其它像素来预测所述视频区域的像素的模式。
[0756]
c17.如方案c16所述的方法,当以ibc merge模式对块编解码时,将maxibccandnum设置为ibc merge候选的最大数量,表示为maxibcmrgnum。
[0757]
c18.如方案c16所述的方法,当以ibc替代运动矢量预测候选(amvp)模式对块编解码时,将maxibccandnum设置为ibc amvp数量的最大数量,表示为maxibcamvpnum。
[0758]
c19.如方案c17所述的方法,maxibcmrgnum在条带头中信令通知。
[0759]
c20.如方案c17所述的方法,maxibcmrgnum设置为与允许的非ibc平移merge候选的最大数量相同。
[0760]
c21.如方案c18所述的方法,maxibcamvpnum设置为2。
[0761]
c22.一种视频处理的方法,包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,在所述视频区域的转换期间使用的帧内块复制(ibc)运动候选的最大数量(指示为maxibccandnum)是ibc merge候选的最大数量(表示为maxibcmrgnum)和ibc替代运动矢量预测候选数量的最大数量(表示为maxibcamvpnum)的第一函数;其中,ibc对应于从对应于所述视频区域的视频图片中的其它像素来预测所述视频区域的像素的模式。
[0762]
c23.如方案c22所述的方法,其中,maxibcamvpnum等于2。
[0763]
c24.如方案c22-c23所述的方法,其中,在所述转换期间,解码的ibc替代运动矢量预测器索引小于maxibcamvpnum。
[0764]
c25.一种视频处理的方法,包括:在视频的视频区域和所述视频的比特流表示之间的转换期间,确定帧内块复制替代运动矢量预测器索引或帧内块复制merge候选索引无法识别块矢量候选列表中的块矢量候选;以及基于所述确定在所述转换期间使用默认的预测块。
[0765]
c26.一种视频处理的方法,包括:在视频的视频区域和所述视频的比特流表示之间的转换期间,确定帧内块复制替代运动矢量预测器索引或帧内块复制merge候选索引无法识别块矢量候选列表中的块矢量候选;以及基于所述确定通过将所述视频区域视为具有无效块矢量而进行转换。
[0766]
c27.一种视频处理的方法,包括:在视频的视频区域和所述视频的比特流表示之间的转换期间,确定帧内块复制替代运动矢量预测器索引或帧内块复制merge候选索引无法满足条件;以及基于所述确定生成补充块矢量(bv)候选列表;以及使用所述补充块矢量候选列表进行所述转换。
[0767]
c28.如方案c27所述的方法,其中,所述条件包括帧内块复制替代运动矢量预测器索引或所述帧内块复制merge候选索引小于视频区域的帧内块复制候选的最大数量。
[0768]
c29.如方案c27-c28中任一项所述的方法,其中,所述补充bv候选矢量列表使用以下步骤生成:生成基于历史的运动矢量预测器候选,从其它bv候选生成虚拟的bv候选;以及添加默认候选。
[0769]
c30.如方案c29所述的方法,其中,所述步骤按顺序进行。
[0770]
c31.如方案c29所述的方法,其中,所述步骤以交织的方式进行。
[0771]
c32.一种视频处理的方法,包括:在视频的视频区域和所述视频的比特流表示之间进行转换,其中,ibc替代运动矢量预测候选的最大数量(表示为maxibcamvpnum)不等于2;其中,ibc对应于从对应于所述视频区域的视频图片中的其它像素来预测所述视频区域的像素的模式。
[0772]
c33.如方案c32所述的方法,其中,比特流表示排除指示运动矢量预测器索引的第一标志,并且包括具有大于一的值的索引。
[0773]
c34.如方案c32-c33中的任一项所述的方法,其中,使用以一元/截断一元/固定长度/指数哥伦布/其他二值化表示的二值化来对索引进行编解码。
[0774]
c35.一种视频处理的方法,包括:在视频区域和所述视频区域的比特流表示之间的转换期间,确定帧内块复制(ibc)候选的最大数量为零,以及基于所述确定通过在所述转换期间生成ibc块矢量候选列表来进行所述转换;其中,ibc对应于从对应于所述视频区域的视频图片中的其它像素来预测所述视频区域的像素的模式。
[0775]
c36.如方案c35所述的方法,其中,所述转换还包括:通过假设对于所述视频区域的转换启用了ibc替代运动矢量预测器模式来生成merge列表。
[0776]
c37.如方案c34所述的方法,其中,所述转换还包括:在对于所述视频区域的转换禁用ibc merge模式的情况下,生成merge列表,该merge列表的长度具有达到ibc高级运动矢量预测器候选的最大数量。
[0777]
c38.如方案c1-c37中的任一项所述的方法,其中,所述转换包括:从所述比特流表示生成所述视频区域的像素值。
[0778]
c39.如方案c1-c37中的任一项所述的方法,其中,所述转换包括:从所述视频区域的像素值生成所述比特流表示。
[0779]
c40.一种视频处理设备,包括处理器,该处理器被配置为实施如方案c1至c39中的任一项或多项所述的方法。
[0780]
c41.一种存储程序代码的计算机可读介质,该程序代码在被执行时,使得所述处理器实现如方案c1至c39中的任一项或多项所述的方法。
[0781]
本文件中描述的公开和其它方案、示例、实施例、模块和功能操作可以以数字电子电路实现,或者以计算机软件、固件或硬件实现,包括本文件中公开的结构及其结构等同物,或者以它们中的一个或多个的组合实现。公开和其它实施例可以实现为一个或多个计
算机程序产品,即,在计算机可读介质上编码的一个或多个计算机程序指令模块,用于由数据处理设备执行或控制数据处理设备的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器装置、影响机器可读传播信号的物质组成、或者它们中的一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有设备、装置和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除了硬件之外,该设备还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如机器生成的电信号、光信号或电磁信号,其被生成以对信息进行编码以便传输到合适的接收器设备。
[0782]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言,并且可以以任何形式来部署计算机程序,包括独立程序或适合在计算环境中使用的模块、组件、子例程或其它单元。计算机程序并不必需对应于文件系统中的文件。程序可以存储在文件的保存其它程序或数据(例如,存储在标志语言文档中的一个或多个脚本)的部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。可以部署计算机程序以在一个计算机上或在位于一个站点上或分布在多个站点上并通过通信网络互连的多个计算机上执行。
[0783]
本文件中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且设备也可以实现为专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。
[0784]
举例来说,适合于执行计算机程序的处理器包括通用和专用微处理器、以及任何种类的数字计算机的任一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器装置。通常,计算机还将包括或可操作地耦合到用于存储数据的一个或多个大容量存储装置(例如磁盘、磁光盘或光盘),以从该一个或多个大容量存储装置接收数据,或将数据传输到该一个或多个大容量存储装置,或者既接收又传输数据。然而,计算机不需要具有这样的装置。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,包括例如半导体存储器装置,例如eprom、eeprom和闪存装置;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及cd rom和dvd-rom磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
[0785]
虽然本专利文件包含许多细节,但这些细节不应被解释为对任何主题或可要求保护的范围的限制,而是作为特定于特定技术的特定实施例的特征的描述。在本专利文件中,在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以描述为以某些组合起作用并且甚至最初如此要求权利保护,但是在某些情况下,可以从所要求保护的组合中去除来自该组合的一个或多个特征,并且所要求保护的组合可以指向子组合或子组合的变型。
[0786]
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为要求以所示的特定顺序或按顺序执行这样的操作,或者执行所有示出的操作,以实现期望的结果。此
外,在本专利文件中描述的实施例中的各种系统组件的分开不应被理解为在所有实施例中都要求这种分开。
[0787]
仅描述了几个实现方式和示例,并且可以基于本专利文件中描述和示出的内容来作出其它实现方式、增强和变型。
再多了解一些

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

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

相关文献