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

具有默认参数的基于历史的运动矢量预测的制作方法

2022-02-22 02:07:44 来源:中国专利 TAG:

具有默认参数的基于历史的运动矢量预测
1.相关申请的交叉引用
2.根据适用专利法和/或适用于巴黎公约的规则,本技术及时要求2019年6月8日提交的国际专利申请no.pct/cn2019/090451、以及2019年7月4日提交的国际专利申请no.pct/cn2019/094703的优先权和权益。出于法律的所有目的,通过引用将上述申请的全部公开并入,作为本技术公开的一部分。
技术领域
3.该专利文件涉及视频编解码技术、设备和系统。


背景技术:

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


技术实现要素:

5.本文描述了使用具有默认参数的基于历史的运动矢量预测(hmvp)执行视频编码或解码的各种实施例和技术。
6.在一个示例性方面,公开了一种视频处理方法。所述方法包括:为视频的视频单元和所述视频的比特流表示之间的转换,通过将k个基于历史的运动矢量预测(hmvp)运动候选添加到hmvp表中来重置尺寸为n的所述hmvp表,其中所述k个hmvp候选运动候选具有默认值,其中n和k是正整数,并且其中k≤n;以及使用从所述重置得到的所述hmvp表执行所述视频单元和所述比特流表示之间的转换。
7.在另一个示例性方面,公开了一种视频处理方法。所述方法包括:向视频单元的基于历史的运动矢量预测(hmvp)表添加来自第一组k个默认hmvp运动候选的hmvp运动候选,其中,所述视频单元的所述第一组k个hmvp运动候选是从所述hmvp表中包括的用于所述视频的第二视频单元的第二组k个hmvp运动候选自适应地改变来的,其中,所述第二视频单元不同于所述视频单元,其中,所述第一组k个hmvp运动候选和所述第二组k个hmvp运动候选具有默认值,其中,所述hmvp表的尺寸为n,其中n和k为正整数,并且其中k≤n;以及执行所述视频的所述视频单元和所述视频的比特流表示之间的转换,其中,所述比特流表示包括指示添加到所述hmvp表中的所述第一组k个hmvp运动候选的语法元素。
8.在又一示例性方面,公开了一种视频处理方法。所述方法包括:在确定尺寸为n的基于历史的运动矢量预测(hmvp)表被重置时,使用k个默认hmvp候选的集合来填充hmvp表,其中n和k是正整数,并且其中k≤n;以及基于hmvp表执行当前块和当前块的比特流表示之间的转换。
9.在又一示例性方面,公开了另一种视频处理方法。所述方法包括:对于当前块和当前块的比特流表示之间的转换,确定要在转换期间使用的默认hmvp的集合;以及使用默认
hmvp候选的集合执行转换,其中在不同视频单元的转换期间使用不同的hmvp候选。
10.在又一示例性方面,公开了另一种视频处理方法。所述方法包括:在当前块和当前块的比特流表示之间的转换之前,确定已经在hmvp表中填充了n个默认的基于历史的运动矢量预测(hmvp)候选的集合;将运动候选添加到hmvp表中;以及使用包含运动候选的hmvp表执行转换。
11.在另一示例性方面,公开了另一种视频处理方法。所述方法包括:在当前视频块和当前视频块的比特流表示之间的转换之前,将用于当前视频块的插值滤波器的信息、或者关于用于当前视频块的可切换插值滤波器的侧信息,与当前视频块的过去的运动信息一起存储在表中;基于表的条目执行转换;以及在执行转换之后更新表。
12.在又一示例性方面,公开了一种视频处理装置。该装置包括处理器,处理器被配置为执行上述公开的方法。该装置还可以执行视频编码或视频解码。
13.在又一示例性方面,公开了一种计算机可读介质。介质上存储有用于上述方法的处理器实现的代码。
14.在本文中描述了这些和其它方面。
附图说明
15.图1示出了用于merge候选列表构造的示例推导处理。
16.图2示出了空域merge候选的位置的示例。
17.图3示出了考虑空域merge候选的冗余检查的候选对的示例。
18.图4a-4b示出了n
×
2n和2n
×
n分割的第二个pu的示例位置。
19.图5是用于时域merge候选的运动矢量缩放的图示。
20.图6示出了时域merge候选的候选位置的示例c0和c1。
21.图7示出了组合双向预测merge候选的示例。
22.图8总结了用于运动矢量预测候选的推导处理。
23.图9示出了用于空域运动矢量候选的运动矢量缩放的图示。
24.图10a和10b示出了简化的仿射运动模型的示例。
25.图11示出每个子块的仿射mvf的示例。
26.图12示出了用于仿射merge模式的候选位置的示例。
27.图13示出了修改后的merge列表构造处理的示例。
28.图14示出了基于三角分割的帧间预测的示例。
29.图15示出了其中cu应用第一加权因子组的示例。
30.图16示出了运动矢量存储实现的示例。
31.图17示出了最终运动矢量表达(umve)搜索处理的实施例。
32.图18示出umve搜索点的示例。
33.图19示出了在dmvr中在列表0和列表1之间镜像的mvd(0,1)的示例。
34.图20示出了可以在一次迭代中检查的运动矢量(mv)的示例。
35.图21示出了帧内块复制(ibc)的示例。
36.图22是用于实现本文档中描述的方法的硬件平台的示例的框图。
37.图23是视频处理的示例方法的流程图。
38.图24示出了用于amvr的扩展信令的表。
39.图25示出了在视频编码或解码中使用的插值滤波器的示例。
40.图26是示出可以利用本发明的技术的示例性视频编解码系统的框图。
41.图27是示出视频编码器的示例的框图。
42.图28是示出视频解码器的示例的框图。
43.图29是示出其中可以实现本文所公开的各种技术的示例性视频处理系统的框图。
44.图30至31示出了视频处理的示例方法的流程图。
具体实施方式
45.在本文档中使用节标题是为了便于理解,并且不将在一节中公开的实施例仅限于该节。此外,虽然参考多功能视频编解码或其他特定视频编解码器描述了某些实施例,但是所公开的技术也适用于其他视频编解码技术。此外,虽然一些实施例详细描述了视频编码步骤,但是应当理解,撤销编码的相应步骤解码将由解码器实现。此外,术语视频处理包括视频编码或压缩、视频解码或解压缩以及视频转码,其中视频像素从一种压缩格式表示为另一种压缩格式、或以不同的压缩比特率表示。
46.1.综述
47.本专利文档涉及视频编解码技术。具体地,其涉及对称运动矢量差编解码。它可以应用于现有的视频编解码标准(例如hevc),或者待定的标准(多功能视频编解码)。它也可能适用于未来的视频编解码标准或视频编解码器。
48.2.初始讨论
49.视频编解码标准主要通过公知的itu-t和iso/iec标准的发展而发展。itu-t制作了h.261和h.263,iso/iec制作了mpeg-1和mpeg-4visual,这两个组织共同制作了h.262/mpeg-2视频和h.264/mpeg-4增强视频编解码(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)成立,以致力于目标是与hevc相比其降低50%比特率的vvc标准。
50.2.1hevc/h.265中的帧间预测
51.对于帧间编解码的编解码单元(cu),其可以根据分割模式用一个预测单元(pu)、2个pu来进行编解码。每个帧间预测的pu都有一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。两个参考图片列表之一的使用也可以使用inter_pred_idc发信令通知。运动矢量可显式地编码为相对于预测器的增量。
52.当cu采用跳过模式编解码时,一个pu与cu相关联,并且没有显著的残差系数,没有编码运动矢量增量或参考图片索引。指定了一种merge模式,通过该模式,可以从临近的pu(包括空域和时域候选)中获取当前pu的运动参数。merge模式可以应用于任何帧间预测的pu,而不仅仅是跳过模式。merge模式的另一种选择是运动参数的显式传输,其中运动矢量(更精确地,与运动矢量预测器相比的运动矢量差(mvd))、每个参考图片列表的对应的参考图片索引、以及参考图片列表的使用都会根据每个pu显式地发信令通知。在本公开中,这样
的模式被命名为高级运动矢量预测(amvp)。
53.当信令指示要使用两个参考图片列表中的一个时,从一个样点块中生成pu。这被称为“单向预测”。单向预测对p条带(slice)和b条带都可用。
54.当信令指示要使用两个参考图片列表时,从两个样点块中生成pu。这被称为“双向预测”。双向预测仅对b条带可用。
55.下文提供了在hevc中规定的关于帧间预测模式的细节。描述将从merge模式开始。
56.2.1.1参考图片列表
57.在hevc中,术语帧间预测用于表示从当前解码图片以外的参考图片的数据元素(例如,样点值或运动矢量)中推导的预测。像在h.264/avc中一样,可以从多个参考图片中预测图片。用于帧间预测的参考图片被组织在一个或多个参考图片列表中。参考索引标识应使用列表中的哪些参考图片来创建预测信号。
58.单个参考图片列表,列表0用于p条带,两个参考图片列表,列表0和列表1用于b条带。应当注意,就捕获/显示顺序而言,列表0/1中包含的参考图片可能来自过去和将来的图片。
59.2.1.2merge模式
60.2.1.2.1merge模式的候选的推导
61.当使用merge模式预测pu时,从比特流解析指向merge候选列表中的条目的索引并将其用于检索运动信息。hevc标准中指定了此列表的构造(construction),并且该列表的构造可以根据以下步骤顺序进行总结:
62.·
步骤1:初始候选推导
63.o步骤1.1:空域候选推导
64.o步骤1.2:空域候选的冗余校验
65.o步骤1.3:时域候选推导
66.·
步骤2:插入附加的候选
67.o步骤2.1:创建双向预测候选
68.o步骤2.2:插入零运动候选
69.这些步骤也在图1中示意性地示出。对于空域merge候选推导,在位于五个不同位置的候选当中选择最多四个merge候选。对于时域merge候选推导,在两个候选当中选择最多一个merge候选。由于在解码器处假设恒定数量的候选用于每个pu,因此当从步骤1获得的候选的数量未达到在条带标头中用信令通知的最大merge候选数量(maxnummergecand)时,生成附加的候选。由于候选的数量是恒定的,因此使用截断的一元二值化(truncated unary binarization,tu)来编解码最佳merge候选的索引。如果cu的尺寸等于8,则当前cu的所有pu共享单个merge候选列表,其与2n
×
2n预测单元的merge候选列表相同。
70.在下文中,详细描述了与前述步骤相关联的操作。
71.图1示出了merge候选列表构造的示例推导处理。
72.2.1.2.2空域候选的推导
73.在空域merge候选的推导中,在位于图2描绘的位置的候选当中选择最多四个merge候选。推导的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任何pu不可用(例如,因为它属于另一条带或片)或者是帧内编解码时,才考虑位置b2。在添加位置a1处的候选之后,
对剩余候选的添加进行冗余校验,其确保具有相同运动信息的候选被排除在列表之外,使得编解码效率提高。为了降低计算复杂度,在所提到的冗余校验中并未考虑所有可能的候选对。相反,仅考虑图3中用箭头连接的对,并且仅在用于冗余校验的对应候选具有不一样的运动信息时,才将候选添加到列表。重复运动信息的另一来源是与不同于2n
×
2n的分割相关联的“第二pu”。作为示例,图4a和4b描绘了分别针对n
×
2n和2n
×
n的情况的第二pu。当当前pu被分割为n
×
2n时,位置a1处的候选不被考虑用于列表建构。实际上,通过添加该候选将导致具有相同运动信息的两个预测单元,这对于在编解码单元中仅具有一个pu是多余的。类似地,当当前pu被分割为2n
×
n时,不考虑位置b1。
74.2.1.2.3时域候选的推导
75.在该步骤中,只有一个候选被添加到列表中。具体地,在该时域merge候选的推导中,基于并置的pu来推导缩放的运动矢量,该并置的pu属于给定参考图片列表内与当前图片具有最小poc差的图片。在条带标头中明确地用信令通知要用于推导并置的pu的参考图片列表。如图5的虚线所示,获得了针对时域merge候选的缩放运动矢量,其是使用poc距离tb和td从并置的pu的运动矢量缩放的,其中tb被定义为当前图片的参考图片与当前图片之间的poc差,td被定义为是并置的图片的参考图片与并置的图片之间的poc差。时域merge候选的参考图片索引被设置为等于零。hevc规范中描述了缩放过程的实际实现。对于b条带,获得两个运动矢量,一个用于参考图片列表0,另一用于参考图片列表1,并且结合该两个运动矢量以获得双向预测merge候选。
76.2.1.2.4并置图片和并置pu
77.当tmvp被启用时(即,slice_temporal_mvp_enabled_flag等于1),表示并置图片的变量colpic导出如下:
[0078]-如果当前条带是b条带,并且信令通知的collocated_from_l0_flag等于0,则将colpic设置为等于refpiclist1[collocated_ref_idx]。
[0079]-否则(slice_type等于b,并且collocated_from_l0_flag等于1,或slice_type等于p),则将colpic设置为等于refpiclist0[collocated_ref_idx]。
[0080]
在本文中,collocated_ref_idx和collocated_from_l0_flag是可以在条带标头中信令通知的两个语法元素。
[0081]
在属于参考帧的并置的pu(y)中,在候选c0和c1之间选择时域候选的位置,如图6所示。如果位置c0处的pu不可用、是帧内编解码的、或者在当前编解码树单元(ctu又称为lcu、最大编解码单元)行之外,则使用位置c1。否则,位置c0用于时域merge候选的推导。
[0082]
相关语法元素描述如下:
[0083]
7.3.6.1通用条带段标头语法
[0084][0085]
2.1.2.5tmvp候选的mv的推导
[0086]
更具体地,为了导出tmvp候选,执行以下步骤:
[0087]
1)设置参考图片列表x=0,目标参考图片为列表x中索引等于0(即curr_ref)的参考图片。调用并置运动矢量的推导处理以获得指向curr_ref的列表x的mv。
[0088]
2)如果当前条带是b条带,则设置参考图片列表x=1,目标参考图片为列表x中索引等于0(即curr_ref)的参考图片。调用并置运动矢量的推导处理以获得指向curr_ref的列表x的mv。
[0089]
下一小节2.1.2.5.1将描述并置运动矢量的推导处理。
[0090]
2.1.2.5.1并置运动矢量的推导处理
[0091]
对于并置块,其可以是使用单预测或双向预测进行帧内或帧间编解码的。如果是帧内编解码的,则tmvp候选被设置为不可用。
[0092]
如果是来自列表a的单向预测,则列表a的运动矢量被缩放到目标参考图片列表x。
[0093]
如果是双向预测,并且目标参考图片列表是x,则列表a的运动矢量被缩放到目标参考图片列表x,并且根据以下规则确定a:
[0094]-如果与当前图片相比,没有任何参考图片具有更大的poc值,则将a设置为x。
[0095]-否则,将a设置为collocated_from_l0_flag。
[0096]
2.1.2.6附加(additional)候选插入
[0097]
除了空域和时域merge候选之外,还存在两种附加类型的merge候选:组合的双向
预测merge候选和零merge候选。通过利用空域和时域merge候选来生成组合的双向预测merge候选。组合的双向预测merge候选仅用于b条带。通过将原始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数组合来生成组合的双向预测候选。如果这两个元组提供不同的运动假设,它们将形成一个新的双向预测候选。例如,图7示出了当原始列表中的两个候选(左侧)中具有mvl0和refidxl0或mvl1和refidxl1,其被用于创建添加到最终列表(右侧)的组合的双向预测merge候选的情况。关于组合有许多规则,这些规则被认为可以生成这些附加的merge候选。
[0098]
插入零运动候选以填充merge候选列表中的剩余条目,从而达到maxnummergecand容量。这些候选具有零空域位移和参考图片索引,该参考图片索引从零开始并且每当新的零运动候选被添加到列表时增加。最后,不对这些候选执行冗余检查。
[0099]
2.1.3amvp
[0100]
amvp利用运动矢量与相邻pu的时空相关性,其用于运动参数的显式传输。对于每个参考图片列表,通过首先校验在时域上相邻的pu位置的上方,左侧的可用性,移除冗余候选并添加零矢量以使候选列表为恒定长度来建构运动矢量候选列表。然后,编解码器可以从候选列表中选择最佳预测器,并发送指示所选候选的对应索引。与merge索引信令类似,使用截断的一元来编解码最佳运动矢量候选的索引。在这种情况下要编解码的最大值是2(参见图8)。在以下章节中,提供了关于运动矢量预测候选的推导处理的细节。
[0101]
2.1.3.1amvp候选的推导
[0102]
图8概括了运动矢量预测候选的推导处理。
[0103]
在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选推导,基于位于图2中所示的五个不同位置的每个pu的运动矢量最终推导两个运动矢量候选。
[0104]
对于时域运动矢量候选推导,从两个候选中选择一个运动矢量候选,其是基于两个不同的并置的位置推导的。在产生时空候选的第一列表之后,移除列表中的重复的运动矢量候选。如果潜在候选的数量大于2,则从列表中移除相关联的参考图片列表内的其参考图片索引大于1的运动矢量候选。如果空时运动矢量候选的数量小于2,则将附加的零运动矢量候选添加到列表中。
[0105]
2.1.3.2空域运动矢量候选
[0106]
在空域运动矢量候选的推导中,在五个潜在候选当中考虑最多两个候选,其从位于如图2中所示的位置的pu中推导,那些位置与运动merge的位置相同。将当前pu的左侧的推导顺序定义为a0、a1,以及缩放的a0、缩放的a1。将当前pu的上侧的推导顺序定义为b0、b1、b2,缩放的b0、缩放的b1、缩放的b2。因此,对于每一侧,存在可以用作运动矢量候选的四种情况,其中两种情况不需要使用空域缩放,两种情况使用空域缩放。四种不同的情况总结如下。
[0107]
·
无空域缩放
[0108]-(1)相同的参考图片列表,以及相同的参考图片索引(相同的poc)
[0109]-(2)不同的参考图片列表,但相同的参考图片(相同的poc)
[0110]
·
空域缩放
[0111]-(3)相同的参考图片列表,但不同的参考图片(不同的poc)
[0112]-(4)不同的参考图片列表,以及不同的参考图片(不同的poc)
[0113]
首先校验无空域缩放的情况,然后校验空域缩放。当poc在相邻pu的参考图片与当前pu的参考图片之间不同而不管参考图片列表时,考虑空域缩放。如果左候选的所有pu都不可用或者是帧内编解码的,则允许对上述运动矢量进行缩放以帮助左和上mv候选的并行推导。否则,不允许对上述运动矢量进行空域缩放。
[0114]
在空域缩放过程中,以与时域缩放类似的方式缩放相邻pu的运动矢量。如图9所示,主要区别是将参考图片列表和当前pu的索引作为输入给出;实际缩放过程与时域缩放过程相同。
[0115]
2.1.3.3时域运动矢量候选
[0116]
除了参考图片索引推导之外,用于推导时域merge候选的所有过程与用于推导空域运动矢量候选的过程相同(参见图6)。将参考图片索引用信令通知给解码器。
[0117]
2.2vvc中的帧间预测方法
[0118]
有几种新的编解码工具用于帧间预测改进,如用于信令通知mvd的自适应运动矢量差分辨率(amvr)、与运动矢量差merge(mmvd)、三角预测模式(tpm)、组合帧内帧间预测(ciip)、高级tmvp(atmvp,又称为sbtmvp)、仿射预测模式、广义双向预测(gbi)、解码器侧运动矢量细化(dmvr)和双向光流(bio,又称为bdof)。
[0119]
vvc中支持三种不同的merge列表构造处理:
[0120]
1)子块merge候选列表:其包括atmvp和仿射merge候选。仿射模式和atmvp模式共享一个merge列表构造处理。这里,可以按顺序添加atmvp和仿射merge候选。在条带标头中信令通知子块merge列表尺寸,并且最大值为5。
[0121]
2)常规merge列表:对于帧间编解码的块,共享一个merge列表构造处理。这里,可以按顺序插入空域/时域merge候选、hmvp、成对merge候选和零运动候选。在条带标头中信令通知常规merge列表尺寸,并且最大值为6。mmvd、tpm、ciip依赖于常规merge列表。
[0122]
3)ibc merge列表:它的实现方式与常规merge列表类似。
[0123]
同样地,vvc中支持三种amvp列表:
[0124]
1)仿射amvp候选列表,
[0125]
2)常规amvp候选列表,
[0126]
3)ibc amvp候选列表:由于采用了jvet-n0843,构造处理与ibc merge列表相同。
[0127]
2.2.1vvc中的编解码块结构
[0128]
在vvc中,采用四叉树/二叉树/多叉树(qt/bt/tt)结构,以将图像划分成正方形或矩形块。
[0129]
除qt/bt/tt外,对于i帧,vvc还采用了分离树(又称为双编解码树)。使用分离树,为亮度和色度分量分别信令通知编解码块结构。
[0130]
此外,除了使用一些特定编解码方法(例如,其中pu等于tu但小于cu的帧内子分割预测,以及pu等于cu但tu小于pu的帧间编解码块的子块变换)编解码的块之外,cu被设置为pu和tu。
[0131]
2.2.2仿射预测模式
[0132]
在hevc中,运动补偿预测(mcp)仅应用平移运动模型。然而,在真实世界中可能存在多种运动,例如放大/缩小、旋转、透视运动和其他不规则运动。在vvc中,简化的仿射变换
运动补偿预测适用于4参数仿射模型和6参数仿射模型。如图10a-10b所示,通过用于4参数仿射模型的两个控制点运动矢量(cpmv)和用于6参数仿射模型的3个cpmv来描述块的仿射运动场。
[0133]
块的运动矢量场(mvf)由以下等式与等式(1)中的4参数仿射模型(其中4参数定义为变量a,b,e和f)和等式(2)中的6参数仿射模型(其中6参数定义为变量a,b,c,d,e和f)来描述:
[0134][0135][0136]
其中(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),代表点用于推导整个子块的运动矢量。
[0137]
为了进一步简化运动补偿预测,应用了基于子块的仿射变换预测。为了推导每个m
×
n(在当前vvc中,m和n都设置为4)子块的运动矢量,如图11所示,根据等式(1)和(2)计算出每个子块的中心样点的运动矢量,并被取整到1/16的分数精度。然后,将适用于1/16像素的运动补偿插值滤波器应用于生成具有推导运动矢量的每个子块的预测。仿射模式引入了1/16像素的插值滤波器。
[0138]
在mcp之后,对每个子块的高精度运动矢量进行取整并保存为与常规运动矢量相同的精度。
[0139]
2.2.3整个块的merge
[0140]
2.2.3.1平移常规merge模式的merge列表构造
[0141]
2.2.3.1.1基于历史的运动矢量预测(hmvp)
[0142]
与merge列表设计不同,在vvc中,采用了基于历史的运动矢量预测(hmvp)方法。
[0143]
在hmvp中,存储了先前编解码的运动信息。将先前编解码的块的运动信息定义为hmvp候选。多个hmvp候选存储在一个名为hmvp表的表中,并且该表在即时编码/解码处理中进行维护。当开始对新的片/lcu行/条带进行编码/解码时,将清空hmvp表。每当存在帧间编解码块、非子块、非tpm模式时,相关联的运动信息就会作为新的hmvp候选添加到表的最后一项。总体编码流程在图12中示出。
[0144]
2.2.3.1.2常规merge列表构造处理
[0145]
常规merge列表(用于平移运动)的构造可以按照以下步骤顺序进行概括:
[0146]
ο第1步:推导空域候选
[0147]
ο第2步:插入hmvp候选
[0148]
ο第3步:插入成对平均候选
[0149]
ο第4步:默认运动
[0150]
hmvp候选可以在amvp和merge候选列表构造处理中使用。图13示出了修改的merge候选列表构造处理(灰色阴影的)。当在插入tmvp候选之后merge候选列表未满时,可以利用存储在hmvp表中的hmvp候选来填充merge候选列表。考虑到一个块通常在运动信息方面与最近的临近块具有较高的相关性,以索引的降序插入表中的hmvp候选。表中的最后一个条目被首先添加到列表中,第一个条目被最后添加。类似地,对hmvp候选应用冗余去除。一旦可用merge候选的总数达到允许用信令通知的merge候选的最大数量,则merge候选列表构造处理终止。
[0151]
需要注意的是,所有的空域/时域/hmvp候选都应采用非ibc模式进行编解码。否则,不允许将其添加到常规merge候选列表中。
[0152]
hmvp表包含多达5个常规运动候选,并且每个候选都是唯一的。
[0153]
2.2.3.1.2.1修剪处理
[0154]
只有当用于冗余检查的对应候选没有相同的运动信息时,才将候选添加到列表中。这种比较处理称为修剪处理。
[0155]
候选空域之间的修剪处理取决于当前块的tpm使用。
[0156]
当当前块在不使用tpm模式(如常规merge、mmvd、ciip)的情况下编解码时,对空域merge候选使用hevc修剪处理(即,5修剪)。
[0157]
2.2.3.1.2.2更新hmvp表
[0158]
在使用非tpm、非子块模式解码帧间编解码块后,hmvp表被更新。可以首先将当前块的运动信息修剪到hmvp表中所有可用的hmvp候选。如果找到了一个相同的,则从表中删除冗余的一个,并将索引减1将所有剩余的向前推。然后将当前块的运动信息添加到hmvp表中。
[0159]
如果由k表示的计数器(记录表中可用hmvp候选的数量)小于5,则k增加1。否则,k保持不变。
[0160]
相关规范定义如下:
[0161]
8.5.2.16基于历史的运动矢量预测器候选列表的更新处理
[0162]
该处理的输入是:
[0163]-1/16分数样点精度的亮度运动矢量mvl0和mvl1,
[0164]-参考索引refidxl0和refidxl1,
[0165]-预测列表使用标志predflagl0和predflag1,
[0166]-双向预测权重索引bcwidx。
[0167]
mvp候选hmvpcand由亮度运动矢量mvl0和mvl1、参考索引refidxl0和refidxl1、预测列表使用标志predflagl0和predflag1以及双向预测权重索引bcwidx组成。
[0168]
使用候选hmvpcand按以下顺序步骤对候选列表hmvpcandlist进行修改:
[0169]
1.将变量identicalcandexist设置为等于false,而将变量removeidx设置为等于0。
[0170]
2.当numhmvpcand大于0时,对于hmvpidx=0..numhmvpcand-1的每个索引hmvpidx,应用以下步骤,直到identicalcandexist等于true:
[0171]-当hmvpcand等于hmvpcandlist[hmvpidx]时,将identicalcandexist设置为等于true,并将removeidx设置为等于hmvpidx。
[0172]
3.候选列表hmvpcandlist更新如下:
[0173]-如果identicalcandexist等于true或numhmvpcand等于maxnummergecand-1,则以下适用:
[0174]-对于i=(removeidx 1)

(numhmvpcand-1)的每个索引i,将hmvpcandlist[i-1]设置为等于hmvpcandlist[i]。
[0175]-将hmvpcandlist[numhmvpcand-1]设置为等于mvcand。
[0176]-否则(identicalcandexist等于false,并且numhmvpcand小于maxnummergecand-1),则以下适用:
[0177]-将hmvpcandlist[numhmvpcand ]设置为等于mvcand。
[0178]
在这里,maxnummergecand设置为5。
[0179]
2.2.4三角预测模式(tpm)
[0180]
在vvc中,支持三角分割模式进行帧间预测。三角分割模式仅适用于8x8或更大的并且在merge模式下但不在mmvd或ciip模式下编解码的cu。对于满足这些条件的cu,信令通知cu级别标志,以指示是否应用三角分割模式。
[0181]
当使用该模式时,如图14所示,使用对角线划分或反对角线划分将cu均匀地划分成两个三角形的分割。cu中的每个三角形分割使用其自身的运动进行帧间预测;每个分割只允许进行单向预测,即每个分割具有一个运动矢量和一个参考索引。应用单向预测运动约束,以确保与传统的双向预测一样,每个cu只需要两个运动补偿预测。
[0182]
如果cu级别标志指示当前cu使用三角分割模式进行编解码,则指示三角分割方向的标志(对角线或反对角线)和两个merge索引(每个分割一个)将被进一步信令通知。在预测每个三角分割后,使用具有自适应权值的混合处理来调整沿对角线或反对角线边缘的样点值。这是整个cu的预测信号,并且与其他预测模式一样,变换和量化处理将应用于整个cu。最后,以4x4单位存储使用三角分割模式预测的cu的运动场。
[0183]
常规merge候选列表被重用于三角分割merge预测,而不需要额外的运动矢量修剪。对于常规merge候选列表中的每个merge候选,其l0或l1运动矢量中的一个(且仅一个)用于三角预测。此外,l0与l1运动矢量的选择顺序基于其merge索引奇偶性。利用这个方案,可以直接使用常规merge列表。
[0184]
2.2.4.1 tpm的merge列表构造处理
[0185]
基本上,如jvet-n0340中所提出的那样应用常规merge列表的构造处理。然而,还添加了一些修改。
[0186]
具体地,以下适用:
[0187]
1)如何进行修剪处理取决于当前块对tpm的使用。
[0188]-如果当前块未使用tpm编解码,则调用应用于空域merge候选的hevc5修剪;
[0189]-否则(如果当前块使用tpm编解码),则在添加新的空域merge候选时应用完全修剪。也就是说,b1与a1比较;b0与a1和b1比较;a0与a1、b1和b0进行比较;并且b2与a1、b1、a0和b0进行比较。
[0190]
2)是否检查来自b2的运动信息的条件取决于当前块对tpm的使用。
[0191]-如果当前块未使用tpm编解码,则只有在检查b2前存在小于4个空域merge候选时访问b2并对其进行检查。
[0192]-否则(如果当前块使用tpm编解码),则在添加b2之前无论有多少可用的空域merge候选,都会访问并检查b2。
[0193]
2.2.4.2自适应加权处理
[0194]
在对每个三角预测单元进行预测后,对两个三角预测单元之间的对角线边缘应用自适应加权处理,从而导出整个cu的最终预测。两个加权因子组定义如下:
[0195]
ο第一加权因子组:{7/8,6/8,4/8,2/8,1/8}和{7/8,4/8,1/8}分别用于亮度和色度样点;
[0196]
ο第二加权因子组:{7/8,6/8,5/8,4/8,3/8,2/8,1/8}和{6/8,4/8,2/8}分别用于亮度和色度样点。
[0197]
基于两个三角预测单元的运动矢量的比较来选择加权因子组。当满足以下任一条件时,使用第二加权因子组:
[0198]-两个三角预测单元的参考图片彼此不同
[0199]-两个运动矢量的水平值之差的绝对值大于16像素。
[0200]-两个运动矢量的垂直值之差的绝对值大于16像素。
[0201]
否则,使用第一加权因子组。示例如图15所示。
[0202]
2.2.4.3运动矢量存储
[0203]
三角预测单元的运动矢量(图16中的mv1和mv2)存储在4
×
4网格中。对于每个4
×
4网格,根据4
×
4网格在cu中的位置存储单向预测或双向预测运动矢量。如图16所示,为位于非加权区域(即不位于对角线边缘处)的4
×
4网格存储单向预测运动矢量mv1或mv2。另一方面,为位于加权区域的4
×
4网格存储双向预测运动矢量。根据以下规则从mv1和mv2导出双向预测运动矢量:
[0204]
1)在mv1和mv2具有来自不同方向(l0或l1)的运动矢量的情况下,将mv1和mv2简单地组合以形成双向预测运动矢量。
[0205]
2)在mv1和mv2都来自同一l0(或l1)方向的情况下,
[0206]-如果mv2的参考图片与l1(或l0)参考图片列表中的图片相同,则将mv2缩放到该图片。将mv1和缩放后的mv2组合以形成双向预测运动矢量。
[0207]-如果mv1的参考图片与l1(或l0)参考图片列表中的图片相同,则将mv1缩放到该图片。将缩放后的mv1和mv2组合以形成双向预测运动矢量。
[0208]-否则,仅为加权区域存储mv1。
[0209]
2.2.4.4merge模式的语法表、语义和解码处理
[0210]
7.3.5.1通用条带标头语法
[0211]
[0212][0213]
7.3.7.5编解码单元语法
[0214]
[0215][0216]
7.3.7.7 merge数据语法
[0217]
[0218][0219]
7.4.6.1通用条带标头语义
[0220]
six_minus_max_num_merge_cand指定从6减去条带中支持的merge运动矢量预测(mvp)候选的最大数量。merge mvp候选的最大数量maxnummergecand推导如下:
[0221]
maxnummergecand=6-six_minus_max_num_merge_cand
ꢀꢀꢀ
(7-57)
[0222]
maxnummergecand的值应在1到6之间(包括1和6)。
[0223]
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推导如下:
[0224]
maxnumsubblockmergecand=5-five_minus_max_num_subblock_merge_cand
ꢀꢀ
(7-58)
[0225]
maxnumsubblockmergecand的值应在0到5之间(包括0和5)。
[0226]
7.4.8.5编解码单元语义
[0227]
pred_mode_flag等于0指定当前编解码单元以帧间预测模式编解码。pred_mode_flag等于1指定当前编解码单元以帧内预测模式编解码。
[0228]
当pred_mode_flag不存在时,将其推断如下:
[0229]-如果cbwidth等于4,并且cbheight等于4,则pred_mode_flag将被推断为等于1。
[0230]-否则,在解码i条带和解码p或b条带时,将pred_mode_flag分别推断为等于1和等于0。
[0231]
对于x=x0..x0 cbwidth-1和y=y0..y0 cbheight-1,变量cupredmode[x][y]推导如下:
[0232]-如果pred_mode_flag等于0,则将cupredmode[x][y]设置为等于mode_inter。
[0233]-否则(pred_mode_flag等于1),将cupredmode[x][y]设置为等于mode_intra。
[0234]
pred_mode_ibc_flag等于1指定当前编解码单元以ibc预测模式编解码。pred_mode_ibc_flag等于0指定当前编解码单元不以ibc预测模式编解码。
[0235]
当pred_mode_ibc_flag不存在时,将其推断如下:
[0236]-如果cu_skip_flag[x0][y0]等于1,并且cbwidth等于4,并且cbheight等于4,则
将pred_mode_ibc_flag推断为等于1。
[0237]-否则,如果cbwidth和cbheight都等于128,则将pred_mode_ibc_flag推断为等于0。
[0238]-否则,在解码i条带和解码p或b条带时,将pred_mode_ibc_flag分别推断为等于sps_ibc_enabled_flag的值和等于0。
[0239]
当pred_mode_ibc_flag等于1时,将变量cupredmode[x][y]设置为等于x=x0..x0 cbwidth-1和y=y0..y0 cbheight-1的mode_ibc。
[0240]
general_merge_flag[x0][y0]指定当前编解码单元的帧间预测参数是否从临近的帧间预测分割推断。数组索引x0,y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0241]
当general_merge_flag[x0][y0]不存在时,将其推断如下:
[0242]-如果cu_skip_flag[x0][y0]等于1,则general_merge_flag[x0][y0]被推断为等于1。
[0243]-否则,general_merge_flag[x0][y0]被推断为等于0。
[0244]
mvp_l0_flag[x0][y0]指定列表0的运动矢量预测器索引,其中x0,y0指定所考虑编解码块的左上亮度样点相对于图片左上亮度样点的位置(x0,y0)。
[0245]
当mvp_l0_flag[x0][y0]不存在时,将其推断为等于0。
[0246]
mvp_l1_flag[x0][y0]的语义与mvp_l0_flag相同,l0和list 0分别被l1和list 1替换。
[0247]
根据表7-10,inter_pred_idc[x0][y0]指定当前编解码单元是使用列表0、列表1还是双向预测。数组索引x0,y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0248]
表7-10名称与帧间预测模式的关联
[0249][0250]
当inter_pred_idc[x0][y0]不存在时,推断其等于pred_l0。
[0251]
7.4.8.7merge数据语义
[0252]
regular_merge_flag[x0][y0]等于1指定使用常规merge模式生成当前编解码单元的帧间预测参数。数组索引x0,y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0253]
当规则regular_merge_flag[x0][y0]不存在时,将其推断如下:
[0254]-如果以下所有条件均为真,则regular_merge_flag[x0][y0]被推断为等于1:
[0255]-sps_mmvd_enabled_flag等于0。
[0256]-general_merge_flag[x0][y0]等于1。
[0257]-cbwidth*cbheight等于32。
[0258]-否则,regular_merge_flag[x0][y0]被推断为等于0。
[0259]
mmvd_merge_flag[x0][y0]等于1指定使用运动矢量差merge模式来生成当前编解码单元的帧间预测参数。数组索引x0,y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0260]
当mmvd_merge_flag[x0][y0]不存在时,将其推断如下:
[0261]-如果以下所有条件均为真,则mmvd_merge_flag[x0][y0]被推断为等于1:
[0262]-sps_mmvd_enabled_flag等于1。
[0263]-general_merge_flag[x0][y0]等于1。
[0264]-cbwidth*cbheight等于32。
[0265]-regular_merge_flag[x0][y0]等于0。
[0266]-否则,mmvd_merge_flag[x0][y0]被推断为等于0。
[0267]
mmvd_cand_flag[x0][y0]指定merge候选列表中的第一个(0)还是第二个(1)候选与从mmvd_distance_idx[x0][y0]和mmvd_direction_idx[x0][y0]导出的运动矢量差一起使用。数组索引x0,y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0268]
当mmvd_cand_flag[x0][y0]不存在时,将其推断为等于0。
[0269]
mmvd_distance_idx[x0][y0]指定按照表7-12所指定的用于导出mmvddistance[x0][y0]的索引。数组索引x0,y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0270]
表7-12基于mmvd_distance_idx[x0][y0]的mmvddistance[x0][y0]的规范
[0271][0272]
mmvd_direction_idx[x0][y0]指定按照表7-13所指定的用于导出mmvdsign[x0][y0]的索引。数组索引x0,y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮
度样点的位置(x0,y0)。
[0273]
表7-13基于mmvd_direction_idx[x0][y0]的mmvdsign[x0][y0]的规范
[0274]
mmvd_direction_idx[x0][y0]mmvdsign[x0][y0][0]mmvdsign[x0][y0][1]0 101-1020 130-1
[0275]
merge加mvd偏移mmvdoffset[x0][y0]的两个分量推导如下:
[0276]
mmvdoffset[x0][y0][0]=(mmvddistance[x0][y0]《《2)*mmvdsign[x0][y0
[0277]
][0](7-124)
[0278]
mmvdoffset[x0][y0][1]=(mmvddistance[x0][y0]《《2)*mmvdsign[x0][y0
[0279]
][1](7-125)
[0280]
merge_subblock_flag[x0][y0]指定是否从临近块推断当前编解码单元的基于子块的帧间预测参数。数组索引x0,y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。当merge_subblock_flag[x0][y0]不存在时,将其推断为等于0。
[0281]
merge_subblock_idx[x0][y0]指定基于子块的merge候选列表的merge候选索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0282]
当merge_subblock_idx[x0][y0]不存在时,将其推断为等于0。
[0283]
ciip_flag[x0][y0]指定是否对当前编解码单元应用组合的帧间merge和帧内预测。数组索引x0,y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0284]
当ciip_flag[x0][y0]不存在时,将其推断为等于0。
[0285]
当ciip_flag[x0][y0]等于1时,将变量intrapredmodey[x][y](x=xcb..xcb cbwidth-1且y=ycb..ycb cbheight-1)设置为等于intra_planar。
[0286]
变量mergetriangleflag[x0][y0]指定在解码b条带时,是否使用基于三角形状的运动补偿来生成当前编解码单元的预测样点。其推导如下:
[0287]-如果以下所有条件均为真,则将mergetriangleflag[x0][y0]设置为等于1:
[0288]-sps_triangle_enabled_flag等于1。
[0289]-slice_type等于b。
[0290]-general_merge_flag[x0][y0]等于1。
[0291]-maxnumtrianglemergecand大于或等于2。
[0292]-cbwidth*cbheight大于或等于64。
[0293]-regular_merge_flag[x0][y0]等于0。
[0294]-mmvd_merge_flag[x0][y0]等于0。
[0295]-merge_sub block_flag[x0][y0]等于0。
[0296]-ciip_flag[x0][y0]等于0。
[0297]-否则,将mergetriangleflag[x0][y0]设置为等于0。
[0298]
merge_triangle_split_dir[x0][y0]指定merge三角模式的划分方向。数组索引x0,y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0299]
当merge_triangle_split_dir[x0][y0]不存在时,将其推断为等于0。
[0300]
merge_triangle_idx0[x0][y0]指定基于三角形状的运动补偿候选列表的第一个merge候选索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0301]
当merge_triangle_idx0[x0][y0]不存在时,将其推断为等于0。
[0302]
merge_triangle_idx1[x0][y0]指定基于三角形状的运动补偿候选列表的第二个merge候选索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0303]
当merge_triangle_idx1[x0][y0]不存在时,将其推断为等于0。
[0304]
merge_idx[x0][y0]指定merge候选列表的merge候选索引,其中x0,y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0305]
当merge_idx[x0][y0]不存在时,将其推断如下:
[0306]-如果mmvd_merge_flag[x0][y0]等于1,则推断merge_idx[x0][y0]等于mmvd_cand_flag[x0][y0]。
[0307]
否则(mmvd_merge_flag[x0][y0]等于0),merge_idx[x0][y0]被推断为等于0。
[0308]
2.2.4.4.1解码处理
[0309]
jvet-n0340中提供的解码处理定义如下:
[0310]
8.5.2.2merge模式的亮度运动矢量的推导处理
[0311]
只有当general_merge_flag[xcb][ycb]等于1时,才调用此处理,其中(xcb,ycb)指定当前亮度编解码块相对于当前图片的左上亮度样点的左上样点。
[0312]
该处理的输入是:
[0313]-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xcb、ycb),
[0314]-变量cbwidth,指定亮度样点中当前编解码块的宽度,
[0315]-变量cbheight,指定亮度样点中当前编解码块的高度。
[0316]
该处理的输出是:
[0317]-1/16分数样点精度的亮度运动矢量mvl0[0][0]和mvl1[0][0],
[0318]-参考索引refidxl0和refidxl1,
[0319]-预测列表使用标志predflagl0[0][0]和predflagl1[0][0],
[0320]-双向预测权重索引bcwidx,
[0321]-merge候选列表mergecandlist。
[0322]
将双向预测权重索引bcwidx设置为0。
[0323]
通过以下顺序步骤导出运动矢量mvl0[0][0]和mvl1[0][0]、参考索引refidxl0和refidxl1以及预测使用标志predflagl0[0][0]和predflagl1[0][0]:
[0324]
1.以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度cbwidth和亮度编解码块高度cbheight作为输入,调用第8.5.2.3条中规定的从临近编解码单元推导空域merge候选的处理,并且输出为可用性标志availableflaga0,availableflaga1,availableflagb0,
availableflagb1和availableflagb2,参考索引refidxlxa0,refidxlxa1,refidxlxb0,refidxlxb1和refidxlxb2,预测列表使用标志predflaglxa0,predflaglxa1,predflaglxb0,predflaglxb1和predflaglxb2,以及运动示例mvlxa0,mvlxa1,mvlxb0,mvlxb1和mvlxb2(其中x为0或1),以及双向预测权重索引bcwidxa0,bcwidxa1,bcwidxb0,bcwidxb1,bcwidxb2.
[0325]
2.将参考索引refidxlxcol(x为0或1)和时域merge候选col的双向预测权重索引bcwidxcol设置为等于0。
[0326]
3.以亮度位置(xcb,ycb)、亮度编解码块宽度cbwidth、亮度编解码块高度cbheight和变量refidxl0col为输入,调用第8.5.2.11条规定的时域亮度运动矢量预测的推导处理,并且输出为可用性标志availableflagl0col和时域运动矢量mvl0col。变量availableflagcol、predflagl0col和predflag1col推导如下:
[0327]
availableflagcol=availableflagl0col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-263)
[0328]
predflagl0col=availableflagl0col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-264)
[0329]
predflagl1col=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-265)
[0330]
4.当slice_type等于b时,以亮度位置(xcb,ycb)、亮度编解码块宽度cbwidth、亮度编解码块高度cbheight和变量refidxl1col作为输入,调用第8.5.2.11条规定的时域亮度运动矢量预测的推导处理,并且输出为可用性标志availableflagl1col和时域运动矢量mvl1col。变量availableflagcol和predflagl1col的推导如下:
[0331]
availableflagcol=availableflagl0col||availableflagl1col
ꢀꢀ
(8-266)
[0332]
predflagl1col=availableflagl1col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-267)
[0333]
5.merge候选列表mergecandlist构造如下:
[0334][0335][0336]
6.将变量numcurrmergecand和numorigmergecand设置为等于mergecandlist中merge候选的数量。
[0337]
7.当numcurrmergecand小于(maxnummergecand-1)且numhmvpcand大于0时,以下适用:
[0338]-以mergecandlist和numcurrmergecand为输入,调用8.5.2.6中指定的基于历史的merge候选的推导处理,并将修改后的mergecandlist和numcurrmergecand作为输出。
[0339]-将numorigmergecand设置为等于numcurrmergecand。
[0340]
8.当numcurrmergecand小于maxnummergecand且大于1时,以下适用:
[0341]-以mergecandlist、参考索引refidxl0n和refidxl1n、预测列表使用标志predflagl0n和predflagl1n、mergecandlist中每个候选n的运动矢量mvl0n和mvl1n以及numcurrmergecand作为输入,调用第8.5.2.4条规定的成对平均merge候选的推导处理,并将输出分配给mergecandlist,numcurrmergecand,添加到mergecandlist中的候选avgcand的参考索引refidxl0avgcand和refidxl1avgcand,预测列表使用标志predflagl0avgcand和predflagl1avgcand以及运动矢量mvl0avgcand和mvl1avgcand。将添加到mergecandlist中的候选avgcand的双向预测权重索引bcwidx设置为等于0。
[0342]-将numorigmergecand设置为等于numcurrmergecand。
[0343]
9.以mergecandlist、参考索引refidxl0n和refidxl1n、预测列表使用标志predflagl0n和predflagl1n、mergecandlist中每个候选n的运动矢量mvl0n和mvl1n以及numcurrmergecand作为输入,调用第8.5.2.5条规定的零运动矢量merge候选的推导处理,并将输出分配给mergecandlist,numcurrmergecand,添加到mergecandlist中的每个新候选zerocandm的参考索引refidxl0zerocandm和refidxl1zerocandm,预测列表使用标志predflagl0zerocandm和predflagl1zerocandm以及运动矢量mvl0zerocandm和mvl1zerocandm。将添加到mergecandlist中的每个新候选zerocandm的双向预测权重索引bcwidx设置为等于0。将添加的候选的数量numzeromergecand设置为等于(numcurrmergecand-numorigmergecand)。当numzeromergecand大于0时,m的范围为0到numzeromergecand-1,包括0和numzeromergecand-1。
[0344]
10.进行以下分配,其中n为merge候选列表mergecandlist中的位置merge_idx[xcb][ycb]处的候选(n=mergecandlist[merge_idx[xcb][ycb]]),x被0或1替换:
[0345]
refidxlx=refidxlxn
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-269)
[0346]
predflaglx[0][0]=predflaglxn
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-270)
[0347]
mvlx[0][0][0]=mvlxn[0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-271)
[0348]
mvlx[0][0][1]=mvlxn[1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-272)
[0349]
bcwidx=bcwidxn
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-273)
[0350]
11.当mmvd_merge_flag[xcb][ycb]等于1时,以下适用:
[0351]-以亮度位置(xcb,ycb)、参考索引refidxl0、refidxl1和预测列表使用标志predflagl0[0][0]和predflagl1[0][0]为输入,调用8.5.2.7中指定的merge运动矢量差的推导处理,并将运动矢量分mmvdl0和mmvdl1作为输出。
[0352]-将运动矢量差mmvdlx添加到merge运动矢量mvlx(x为0和1),如下所示:
[0353]
mvlx[0][0][0] =mmvdlx[0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-274)
[0354]
mvlx[0][0][1] =mmvdlx[1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-275)
[0355]
mvlx[0][0][0]=clip3(-2
17
,2
17-1,mvlx[0][0][0])
ꢀꢀ
(8-276)
[0356]
mvlx[0][0]1]=clip3(-2
17
,2
17-1,mvlx[0][0][1])
ꢀꢀꢀ
(8-277)
[0357]
2.2.5 mmvd
[0358]
在jvet-l0054中,提出了最终运动矢量表达(umve,也称为mmvd)。umve与提出的运动矢量表达方法被用于跳过或merge模式。
[0359]
umve重用与vvc中常规merge候选列表中包含的merge候选相同的merge候选。在merge候选中,可以选择基础候选,并通过所提出的运动矢量表达方法进一步扩展。
[0360]
umve提供了一种新的运动矢量差(mvd)表示方法,其中使用起点、运动幅度和运动方向来表示mvd。
[0361]
图17示出了umve搜索处理的示例。
[0362]
图18示出了umve搜索点的示例。
[0363]
这个提出的技术按原样使用merge候选列表。但是只有默认merge类型(mrg_type_default_n)的候选才被考虑用于umve的扩展。
[0364]
基础候选索引定义了起点。基础候选索引指示列表中候选的最佳候选,如下所示。
[0365]
表1基础候选idx
[0366][0367]
如果基础候选的数量等于1,则不信令通知基础候选idx。
[0368]
距离索引是运动幅度信息。距离索引指示距离起点信息的预定义的距离。预定义的距离如下所示:
[0369]
表2距离idx
[0370][0371]
方向索引表示mvd相对于起点的方向。方向索引可以表示如下所示的四个方向。
[0372]
表3方向idx
[0373][0374][0375]
在发送跳过标志和merge标志之后立即信令通知umve标志。如果跳过和merge标志
为真,则解析umve标志。如果umve标志等于1,则解析umve语法。但是,如果不是1,则解析仿射标志。如果仿射标志等于1,则是仿射模式,但是,如果不是1,则解析vtm的跳过/merge模式的跳过/merge索引。
[0376]
由于umve候选而导致的附加线缓冲器是不需要的。因为软件的跳过/merge候选被直接用作基础候选。通过使用输入umve索引,在运动补偿前判定mv的补充。不需要为此保留长线缓冲器。
[0377]
在当前普通测试条件下,可以选择merge候选列表中的第一个或第二个merge候选作为基础候选。
[0378]
umve也称为与mv差merge(mmvd)。
[0379]
2.2.6组合帧内帧间预测(ciip)
[0380]
在jvet-l0100中,提出了多假设预测,其中组合帧内帧间预测是产生多个假设的一种方法。
[0381]
当将多假设预测应用于改进帧内模式时,多假设预测将一个帧内预测和一个merge索引预测组合。在merge cu中,为merge模式信令通知一个标志,当标志为真时,从帧内候选列表中选择帧内模式。对于亮度分量,帧内候选列表仅从一种帧内预测模式(即平面模式)导出。通过两个临近块(a1和b1)的编解码模式(帧内或非帧内)来确定从帧内和帧间预测应用到预测块的权重。
[0382]
2.2.7基于子块技术的merge
[0383]
提出除了非子块merge候选的常规merge列表外,将所有与子块相关的候选运动都放入单独的merge列表中。
[0384]
将与子块相关的候选运动放入单独的merge列表中,称为子块merge候选列表。
[0385]
在一个示例中,子块merge候选列表包括atmvp候选和仿射merge候选。
[0386]
子块merge候选列表按以下顺序填充候选:
[0387]
a)atmvp候选(可能可用或不可用);
[0388]
b)仿射merge列表(包括继承的仿射候选;以及构造的仿射候选)
[0389]
c)填充为零mv的4参数仿射模型
[0390]
2.2.7.1 atmvp(又称为子块时域运动矢量预测器,sbtmvp)
[0391]
atmvp的基本思想是为一个块导出多组时域运动矢量预测器。每个子块分配一组运动信息。当生成atmvp merge候选时,运动补偿在8x8级别而不是整个块级别进行。
[0392]
在当前的设计中,atmvp分两步预测cu内的子cu的运动矢量,这两个步骤分别在下面两个小节中描述。
[0393]
2.2.7.1.1初始化运动矢量的推导
[0394]
用tempmv表示初始化运动矢量。当块a1可用且非帧内编解码(即,以帧间或ibc模式编解码)时,应用以下步骤来推导初始化运动矢量。
[0395]-如果满足以下所有条件,则将tempmv设置为等于来自列表1中块a1的运动矢量,用mvl1a1表示:
[0396]-列表1的参考图片索引可用(不等于-1),并且与并置图片具有相同的poc值(即diffpicordercnt(colpic,refpiclist[1][refidxl1a1])等于0),
[0397]-所有参考图片与当前图片相比没有更大的poc(即,当前条带的每个参考图片列
表中的每个图片apic的diffpicordercnt(apic,currpic)都小于或等于0),
[0398]-当前条带等于b条带,
[0399]-collocated_from_l0_flag等于0。
[0400]-否则,如果以下所有条件均为真,则将tempmv设置为等于来自列表0中块a1的运动矢量,用mvl0a1表示:
[0401]-列表0的参考图片索引可用(不等于-1),
[0402]-它与并置图片具有相同的poc值(即diffpicordercnt(colpic,refpiclist[0][refidxl0a1])等于0)。
[0403]-否则,将零运动矢量用作初始化mv。
[0404]
利用初始化运动矢量在条带标头信令通知的并置图片中识别对应的块(当前块的中心位置加上取整的mv,在必要时被剪切为在特定范围内)。
[0405]
如果块是帧间编解码的,则转到第2步。否则,atmvp候选被设置为不可用。
[0406]
2.2.7.1.2子cu运动推导
[0407]
第二步是将当前的cu划分成子cu,并从并置图片中对应于每个子cu的块中获取每个子cu的运动信息。
[0408]
如果子cu的对应块以帧间模式编解码,则通过调用与传统tmvp处理相同的并置mv的推导处理,利用运动信息来导出当前子cu的最终运动信息。基本上,如果从用于单向预测或双向预测的目标列表x预测对应块,则使用运动矢量;否则,如果从用于单向预测或双向预测的列表y(y=1-x)预测并且nobackwardpredflag等于1,则使用列表y的mv。否则,找不到运动候选。
[0409]
如果由初始化mv和当前子cu的位置识别的并置图片中的块是帧内ibc编解码的,或者如上所述没有找到运动候选,则以下进一步适用:
[0410]
将用于获取并置图片rcol中的运动场的运动矢量表示为mvcol。为了使mv缩放的影响最小化,按以下方式选择用于导出mvcol的空域候选列表中的mv:如果候选mv的参考图片是并置图片,则选择该mv并用作mvcol而不进行任何缩放。否则,选择具有与并置图片最近的参考图片的mv,以使用缩放导出mvcol。
[0411]
2.2.8运动信息的细化
[0412]
2.2.8.1解码器侧运动矢量细化(dmvr)
[0413]
在双向预测操作中,对于一个块区域的预测,将分别使用列表0的运动矢量(mv)和列表1的mv形成的两个预测片组合以形成单个预测信号。在解码器侧运动矢量细化(dmvr)方法中,进一步细化了双向预测的两个运动矢量。
[0414]
对于vvc中的dmvr,假设列表0和列表1之间的mvd镜像如图19所示,并且执行双边匹配以细化mv,即在多个mvd候选中找到最佳mvd。用mvl0(l0x,l0y)和mvl1(l1x,l1y)表示两个参考图片列表的mv。可以最小化成本函数(例如sad)的列表0的用(mvdx,mvdy)表示的mvd被定义为最佳mvd。对于sad函数,它被定义为在列表0参考图片中由运动矢量(l0x mvdx,l0y mvdy)导出的列表0的参考块与列表1参考图片中由运动矢量(l1x-mvdx,l1y-mvdy)导出的列表1的参考块之间的sad。
[0415]
运动矢量细化处理可以迭代两次。在每次迭代中,可以分两步检查最多6个mvd(具有整数pel精度),如图20所示。在第一步中,检查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决定如下:
[0416]
mvdx=-1;
[0417]
mvdy=-1;
[0418]
如果(sad(1,0)《sad(-1,0))
[0419]
mvdx=1;
[0420]
如果(sad(0,1)《sad(0,-1))
[0421]
mvdy=1;
[0422]
在第一次迭代中,起始点是信令通知的mv,并且在第二次迭代中,起始点是信令通知的mv加上第一次迭代中选择的最佳mvd。dmvr仅适用于一个参考图片是前一个图片并且另一个参考图片是后续图片、并且两个参考图片与当前图片的图片顺序计数距离相同的情况。
[0423]
为了进一步简化dmvr的处理,jvet-m0147对jem的设计提出了几点修改。更具体地,vtm-4.0(即将发布)采用的dmvr设计具有以下主要特征:
[0424]
ο当列表0和列表1之间的(0,0)位置的sad小于阈值时提前终止。
[0425]
ο当列表0和列表1之间的某个位置的sad为零时提前终止。
[0426]
οdmvr的块尺寸:w*h》=64&&h》=8,其中w和h是块的宽度和高度。
[0427]
ο对于cu尺寸》16*16的dmvr,将cu划分成多个16x16子块。如果只有cu的宽度或高度大于16,则只在垂直或水平方向上将其划分。
[0428]
ο参考块尺寸(w 7)*(h 7)(对于亮度)。
[0429]
ο25点的基于sad的整数像素搜索(即( -)2细化搜索范围,单级)
[0430]
ο基于双线性插值的dmvr。
[0431]
ο基于“参数误差表面方程”的子像素细化。该过程仅在最小sad成本不等于零且上一次mv细化迭代中的最佳mvd为(0,0)时执行。
[0432]
ο利用参考块填充的亮度/色度mc(如需要)。
[0433]
ο细化的mv仅用于mc和tmvp。
[0434]
2.2.8.1.1 dmvr的使用
[0435]
当以下条件均为真时,可启用dmvr:
[0436]-sps中的dmvr启用标志(即sps_dmvr_enabled_flag)等于1,
[0437]-tpm标志、帧间仿射标志和子块merge标志(atmvp或仿射merge)、mmvd标志均等于0,
[0438]-merge标志等于1,
[0439]-当前块是双向预测的,并且列表1中的当前图片和参考图片之间的poc距离等于列表0中的参考图片和当前图片之间的poc距离,
[0440]-当前cu高度大于或等于8,
[0441]-亮度样点的数量(cu宽度*高度)大于或等于64。
[0442]
2.2.8.1.2基于“参数误差表面方程”的子像素细化
[0443]
该方法总结如下:
[0444]
1)参数误差表面拟合仅在中心位置为给定迭代的最佳成本位置时计算。
[0445]
2)使用中心位置成本和距中心(-1,0),(0,-1),(1,0)和(0,1)位置的成本来拟合这种形式的2d抛物型误差表面方程:
[0446]
e(x,y)=a(x-x0)2 b(y-y0)2 c
[0447]
其中(x0,y0)对应于成本最小的位置,并且c对应最小成本值。通过求解5个未知数的5个方程,(x0,y0)计算如下:
[0448]
x0=(e(-1,0)-e(1,0))/(2(e(-1,0) e(1,0)-2e(0,0)))
[0449]
y0=(e(0,-1)-e(0,1))/(2((e(0,-1) e(0,1)-2e(0,0)))
[0450]
可以通过调整执行除法的精度(即计算商的位数)将(x0,y0)计算到任何所需的子像素精度。对于1/16像素精度,只需计算商的绝对值中的4位,这就有助于基于快速移位减法实现每个cu所需的2个除法。
[0451]
3)计算出的(x0,y0)再加上整数距离细化mv,以得到子像素精确的细化增量mv。
[0452]
2.3帧内块复制(ibc)
[0453]
帧内块复制(ibc)(又称为当前图片参考)已被hevc屏幕内容编解码扩展(hevc-scc)和当前vvc测试模型(vtm-4.0)采用。ibc将运动补偿的概念从帧间编解码扩展到帧内编解码。如图21所示,当应用ibc时,由同一图片中的参考块预测当前块。在对当前块进行编码或解码之前,参考块中的样点必须已经被重构。虽然ibc对于大多数相机捕获的序列不是很有效,但它显示了屏幕内容的显著编解码增益。原因是在屏幕内容图片中有很多重复的模式,例如图标和文本字符。ibc可以有效地消除这些重复模式之间的冗余。在hevc-scc中,如果帧间编解码单元(cu)选择当前图片作为参考图片,则可以应用ibc。在这种情况下,mv被重命名为块矢量(bv),bv始终具有整数像素精度。为了与主配置hevc兼容,在解码图片缓冲器(dpb)中将当前图片标记为“长期”参考图片。应当注意,类似地,在多视图/3d视频编解码标准中,视图间参考图片也被标记为“长期”参考图片。
[0454]
在bv找到其参考块之后,可以通过复制参考块来生成预测。残差可以通过从原始信号中减去参考像素得到。然后,可以像在其它编解码模式中一样应用变换和量化。
[0455]
然而,当参考块在图片之外、或与当前块重叠、或在重构区域之外、或在受某些约束限制的有效区域之外时,不定义部分或全部像素值。基本上,有两种解决方法来处理这样的问题。一种是不允许这种情况,例如在比特流一致性中。另一种方法是对那些未定义的像素值应用填充。下面的小节将详细介绍解决方案。
[0456]
2.3.1 vvc测试模型(vtm4.0)中的ibc
[0457]
在目前的vvc测试模型中,即在vtm-4.0设计中,整个参考块应该与当前的编解码树单元(ctu)在一起,并且不与当前块重叠。因此,不需要填充参考块或预测块。ibc标志被编码为当前cu的预测模式。因此,每个cu共有三种预测模式,mode_intra、mode_inter和mode_ibc。
[0458]
2.3.1.1 ibc merge模式
[0459]
在ibc merge模式下,从比特流中解析指向ibc merge候选列表中的条目的索引。ibc merge列表的构造可以按照以下步骤进行总结:
[0460]
ο第1步:推导空域候选
[0461]
ο第2步:插入hmvp候选
[0462]
ο第3步:插入成对平均候选
[0463]
在空域merge候选的推导中,如图2所示,在位于a1、b1、b0、a0和b2所示的位置的候选中选择最多四个merge候选。推导顺序为a1、b1、b0、a0和b2。只有当位置a1、b1、b0、a0的任何pu不可用(例如,因为它属于另一个条带或片)或未使用ibc模式编解码时,才考虑位置b2。在添加位置a1处的候选之后,对剩余候选的插入进行冗余检查,以确保从列表中排除具有相同运动信息的候选,从而提高编解码效率。
[0464]
插入空域候选后,如果ibc merge列表尺寸仍然小于ibc merge列表的最大尺寸,则可以插入来自hmvp表中的ibc候选。在插入hmvp候选时执行冗余检查。
[0465]
最后,将成对平均候选插入ibc merge列表中。
[0466]
当由merge候选识别的参考块在图片之外、或者与当前块重叠、或者在重构区域之外、或者在受某些约束限制的有效区域之外时,merge候选被称为无效merge候选。
[0467]
注意,可能会将无效的merge候选插入ibc merge列表中。
[0468]
2.3.1.2 ibc amvp模式
[0469]
在ibc amvp模式下,从比特流解析指向ibc amvp列表中的条目的amvp索引。ibc amvp的构造可按以下步骤进行总结:
[0470]
ο第1步:推导空域候选
[0471]
·
检查a0、a1,直到找到可用的候选。
[0472]
·
检查b0、b1、b2,直到找到可用的候选。
[0473]
ο第2步:插入hmvp候选
[0474]
ο第3步:插入零候选
[0475]
在插入空域候选后,如果ibc amvp列表尺寸仍然小于ibc amvp列表尺寸的最大值,则可以插入来hmvp表中的ibc候选。
[0476]
最后,在ibc amvp列表中插入0候选。
[0477]
2.3.1.3色度ibc模式
[0478]
在当前vvc中,色度ibc模式下的运动补偿在子块级执行。色度块将被分割为若干个子块。每个子块确定对应的亮度块是否具有块矢量,并且如果存在,确定其有效性。在当前的vtm中存在编解码器约束,如果当前色度cu中的所有子块都具有有效的亮度块矢量,则将测试色度ibc模式。例如,在yuv 420视频中,色度块是nxm,然后并置的亮度区域是2nx2m。色度块的子块尺寸是2x2。存在几个步骤来执行色度mv推导,然后是块复制处理。
[0479]
1)首先将色度块分割为(n》》1)*(m》》1)个子块。
[0480]
2)左上样点坐标位于(x,y)处的每个子块获取覆盖坐标位于(2x,2y)处的相同左上样点的对应亮度块。
[0481]
3)编解码器检查获取的亮度块的块矢量(bv)。如果满足以下条件之一,则bv将被视为无效。
[0482]
a、对应的亮度块的bv不存在。
[0483]
b、由bv识别的预测块尚未重构。
[0484]
c、由bv识别的预测块与当前块部分或完全重叠。
[0485]
4)将子块的色度运动矢量设置为相应亮度子块的运动矢量。
[0486]
当所有子块都找到有效的bv时,在编解码器处允许ibc模式。
[0487]
2.3.2ibc的最新进展(在vtm5.0中)
[0488]
2.3.2.1单个bv列表
[0489]
vvc采用jvet-n0843。在jvet-n0843中,ibc中merge模式和amvp模式的bv预测器将共享共同的预测器列表,该列表由以下元素组成:
[0490]
ο2个空域临近位置(a1、b1,如图2所示)
[0491]
ο5个hmvp条目
[0492]
ο默认的零矢量
[0493]
列表中候选的数量由从条带标头推导的变量控制。对于merge模式,最多将使用此列表的前6个条目;对于amvp模式,将使用此列表的前2个条目。并且该列表符合共享merge列表区域要求(在smr中共享同一列表)。
[0494]
除了上述bv预测器候选列表外,jvet-n0843还提出了简化hmvp候选和现有merge候选(a1、b1)之间的修剪操作。在简化中,由于只比较第一个hmvp候选和空域merge候选,因此最多将有2个修剪操作。
[0495]
2.3.2.2 ibc hmvp表的更新
[0496]
与用于模式间编解码的hmvp表更新处理的设计类似,应用修剪并维护计数器来记录ibc hmvp表中可用ibc候选的数量。
[0497]
相关规范定义如下:
[0498]
8.6.2.6基于历史的运动矢量预测器候选列表的更新处理
[0499]
该处理的输入是:
[0500]-1/16分数样点精度的亮度运动矢量mvl。
[0501]
候选列表hmvpibccandlist按以下顺序步骤进行修改:
[0502]
1.将变量identicalcandexist设置为等于false,并且将变量removeidx设置为等于0。
[0503]
2.当numhmvpibccand大于0时,对于hmvpidx=0..numhmvpibccand-1的每个索引hmvpidx,以下步骤适用,直到identicalcandexist等于true:
[0504]-当hmvpcand等于hmvpibccandlist[hmvpidx]时,将identicalcandexist设置为等于true,并将removeidx设置为等于hmvpidx。
[0505]
3.候选列表hmvpibccandlist更新如下:
[0506]-如果identicalcandexist等于true或numhmvpibccand等于maxnummergecand-1,则以下适用:
[0507]-对于i=(removeidx 1)..(numhmvpibccand-1)的每个索引i,将hmvpibccandlist[i-1]设置为等于hmvpibccandlist[i]。
[0508]-将-hmvpibccandlist[numhmvpibccand-1]设置为等于mvcand。
[0509]-否则(identicalcandexist等于false并且小于maxnummergecand-1),则以下适用:
[0510]-将hmvpibccandlist[numhmvpibccand ]设置为等于mvcand。
[0511]
这里,将maxnummergecand设置为6。
[0512]
2.4可切换的插值滤波器
[0513]
2.4.1半像素amvr模式
[0514]
提出了一种用于非仿射非merge帧间编解码的cu的附加amvr模式,该模式允许以半像素精度信令通知运动矢量差。当前vvc草案中现有的amvr方案以如下方式直接扩展:紧跟随语法元素amvr_flag,如果amvr_flag==1,则存在新的上下文建模二进制语法元素hpel_amvr_flag,如果hpel_amvr_flag==1,则其指示使用新的半像素amvr模式。否则,也就是说,如果hpel_amvr_flag==0,如当前vvc草案中一样,由语法元素amvr_precision_flag指示在全像素和4像素amvr模式之间的选择。
[0515]
amvr信令被扩展,如图24中的表所示。
[0516]
在jvet-n0309中,提出了可选亮度半像素插值滤波器,其中在ce4-1中测试了两个具有平滑特性的6抽头滤波器,分别表示为平顶(flattop)和高斯(gauss)。见图25。
[0517]
2.4.2显式信令
[0518]
对于使用半像素运动矢量精度(即,半像素amvr模式)的非仿射和非merge帧间编解码的cu,使用可选亮度半像素插值滤波器。对于2.4.1所述的测试,使用高斯(gauss)亮度半像素插值滤波器。对于该测试,基于新语法元素hpel_if_idx的值,在两个可选的半像素插值滤波器之间进行切换。仅在半像素amvr模式下信令通知语法元素hpel_if_idx,如下所示:
[0519][0520]
2.4.3隐式信令
[0521]
在使用空域merge候选的跳过/merge模式下,从临近块继承对半像素位置应用插值滤波器的信息。
[0522]
3.用公开的实施例解决的问题的示例
[0523]
当前的hmvp设计必须记录hmvp表中可用hmvp候选的数量。对于用于帧间编解码块的hmvp表和用于ibc编解码块的ibc hmvp表,维护两个不同的计数器。每当需要更新hmvp表时,都需要检查并相应地修改计数器。
[0524]
4.示例实施例
[0525]
以下列出的应被视为解释一般概念的示例。不应狭隘地解释这些实施例。此外,这些发明可以以任何方式组合。
[0526]
在以下针对各种实现方式描述的示例中说明了可以增强现有和未来的视频编解码标准的基于所公开的技术的基于lut的运动矢量预测。在基于lut的运动矢量预测方法中,在编码/解码处理期间,维护一个或多个表,其具有来自先前编解码块的运动信息。在一个块的编码/解码期间,lut中的相关联的运动信息可以被添加到运动候选列表中,并且在对一个块进行编码/解码之后,lut可以被更新。基于lut的方法也称为基于历史的运动矢量
预测(hmvp)方法。运动信息包括以下中的至少一个:预测方向、参考图片索引、运动矢量值、强度补偿标志、仿射标志、运动矢量差精度或运动矢量差值。候选运动还可以包括其它种类的编解码信息,诸如用于帧内模式编解码的帧内预测模式;用于ic参数编解码的照明补偿参数;以及滤波器参数。
[0527]
在对视频单元(例如,条带/片/砖/图片/ctu行/ctu)进行编解码之前,可以通过填充一个或多个默认候选运动来重置hmvp表,而不是将表中可用的hmvp候选的计数器重置为0。用n表示hmvp表的尺寸,即最多可以存储n个hmvp候选。
[0528]
在下面的讨论中,术语“条带”也可以被称为“片组”或“片/砖/ctu行”或其他视频数据单元。
[0529]
1.每当重置hmvp表时,可以使用k(k《=n)个默认hmvp候选来填充hmvp表。
[0530]
a.在一个示例中,k个默认hmvp候选是相同的。
[0531]
i.可选地,k个默认hmvp候选中的至少两个是不同的。
[0532]
ii.可选地,一个默认的hmvp候选可以多次添加到hmvp表中。
[0533]
1)可选地,前m(m《k)个默认hmvp候选可以彼此不同,然而,剩余的最后(k-m)个候选与前m个候选中的一个相同。
[0534]
2)可选地,最后m(m《k)个默认hmvp候选可以彼此不同,然而,剩余的前(k-m)个候选与前m候选中的一个相同。
[0535]
iii.可选地,前m(m《k)个默认hmvp候选可以彼此不同,然而,剩余的最后(k-m)个候选是通过重复复制前m个候选来填充的。
[0536]
b.在一个示例中,可以将默认hmvp候选设置为单向预测运动候选。
[0537]
i.在一个示例中,对于p条带/图片,可以将预测方向设置为列表0。
[0538]
ii.在一个示例中,对于b条带/图片,可以将预测方向设置为列表0或列表1。
[0539]
iii.可选地,此外,可以将默认hmvp候选的运动矢量(mv)设置为(0,0)。
[0540]
iv.可选地,此外,可以将默认hmvp候选的mv设置为(-m*w,0),其中m和w是两个整数。例如,w是编解码单元/预测单元/变换单元的允许宽度中的一个。
[0541]
v.可选地,此外,可以将默认hmvp候选的mv设置为(0,-q*h),其中q和h是两个整数。例如,h是编解码单元/预测单元/变换单元的允许高度中的一个。
[0542]
vi.可选地,此外,可以将默认hmvp候选的mv设置为(-m*w,-q*h),其中m,w,q,h是整数。例如,w和h分别是编解码单元/预测单元/变换单元的允许宽度和高度中的一个。
[0543]
vii.可选地,此外,可以将默认hmvp候选的参考索引设置为在预测方向上(即,列表0或1)小于参考图片数量的任何值。
[0544]
viii.可选地,此外,可以将参考图片设置为当前图片。
[0545]
ix.可选地,此外,ibc标志可以设置为1。
[0546]
c.在一个示例中,可以将默认hmvp候选设置为双向预测运动候选。
[0547]
i.在一个示例中,可以使用1.ii下的项目来设置与每个预测方向相关联的运动信息。
[0548]
ii.可选地,此外,对于两个mv,来自两个方向的两个预测的加权因子可以被设置为相等。
[0549]
1)在一个示例中,将广义双向预测(gbi)索引设置为0。
[0550]
d.默认的hmvp候选可以包括来自另一个视频单元的运动信息,诸如另一个ctu行/另一个图片。
[0551]
e.在一个示例中,对于p片/图片,默认hmvp候选可以包括(mv(0,0),i),其中i是在[0,列表0中的参考图片的数量减去1]的范围内的参考图片索引。
[0552]
i.可选地,此外,可以按照i的升序/降序将候选添加到hmvp表中。
[0553]
ii.可选地,此外,如果列表0中的参考图片的数量小于k,则可以重复添加其中一个默认的运动候选,直到k个候选可用为止。
[0554]
f.可选地,此外,如果列表0中的参考图片的数量小于k,则可以重复添加可用的默认hmvp候选,直到k个候选可用为止。在一个示例中,对于b条带/图片,默认hmvp候选可以包括来自列表x的k0单向预测hmvp候选、来自列表y(y等于(1-x))的k1单向预测hmvp候选、以及k2双向预测hmvp候选,其中(k0 k1 k2=k,并且k0/k1/k2》=0)。
[0555]
i.在一个示例中,对于b条带/图片,默认hmvp候选可以只包括双向预测hmvp候选。
[0556]
ii.在一个示例中,对于b条带/图片,默认hmvp候选可以以交错方式包括单向预测hmvp候选和双向预测hmvp候选。
[0557]
iii.在一个示例中,对于b条带/图片,默认的hmvp候选可以包括单向预测hmvp候选,然后是双向预测hmvp候选。
[0558]
g.可选地,此外,当k等于n时,移除维护用于记录表中可用hmvp候选数量的计数器。
[0559]
h.在一个示例中,默认hmvp候选只能引用参考索引等于特定值(例如,0)的参考图片。
[0560]
2.默认的hmvp候选可以从一个视频单元到另一个视频单元自适应地改变。
[0561]
a.默认的hmvp候选可以从一个ctu行到另一个ctu行自适应地改变。
[0562]
b.默认的hmvp候选可以从一个片到另一个片自适应地改变。
[0563]
3.对于不同的hmvp表,默认的hmvp候选可以不同。
[0564]
a.在一个示例中,默认hmvp候选的选择可取决于用于编解码模式的hmvp表。
[0565]
i.在一个示例中,用于填充用于帧间编解码块和ibc编解码块的hmvp表的默认hmvp候选可以不同。
[0566]
4.当对视频单元进行编码/解码之前在hmvp表中填充n个默认的hmvp候选时,在添加新的运动候选时,以下进一步适用。
[0567]
a.在一个示例中,根据hmvp表中hmvp候选的索引的升序或降序,将新的运动候选与可用的hmvp候选进行比较。
[0568]
i.在一个示例中,当找到相同的hmvp候选时,比较处理终止。可选地,此外,从表中移除相同的hmvp候选,并且将新的运动候选添加到表的最后一个条目中。
[0569]
ii.在一个示例中,在检查表中的所有hmvp候选之后,比较处理终止。可选地,此外,从表中移除所有相同的m个hmvp候选,并且重复添加新的运动候选,直到该表满为止。
[0570]
5.可以在vps/dps/sps/aps/pps/图片标头/条带标头/片组标头中信令通知默认的hmvp候选。
[0571]
a.可选地,可以预定义多组默认hmvp候选,并且可以信令通知一个或多个索引,以指示图片/条带/片组/片/ctu行使用哪一组hmvp候选。
[0572]
b.可选地,可以预定义多组默认hmvp候选,并且可以信令通知一种编解码模式(例如ibc或非ibc)的索引,以指示图片/条带/片组/片/ctu行使用哪一组hmvp候选。
[0573]
6.当更新hmvp表/hmvp列表时,要添加的新运动候选可以添加到hmvp表/hmvp列表中所有现有运动候选之前。在这种情况下,具有最小值的表的条目索引可以指示解码顺序中的最新运动候选。
[0574]
a.在一个示例中,如果新的运动候选与表中的现有候选相同或相似,则不可添加该运动候选。
[0575]
i.可选地,如果新的运动候选与表中的现有候选相同或相似(例如,mv差小于阈值),则可以不添加新的运动候选,并且从表中移除与现有候选相同或相似的运动候选。
[0576]
7.上述方法可适用于所有hmvp表(例如,包括将由帧间或ibc编解码块使用的那些表)。
[0577]
a.可选地,上述方法应当应用哪个hmvp表取决于该表的用途,诸如是否用于ibc编解码块。
[0578]
8.所提出的方法可以适用于具有历史信息的其它编解码信息,诸如具有默认帧内预测模式填充lut的基于历史的帧内模式编解码方法。
[0579]
运动信息在hmvp表/hmvp列表中的存储
[0580]
9.用于可切换插值滤波器的块和/或侧信息的插值滤波器的指示可以存储在hmvp表/hmvp列表中存储的运动候选中。
[0581]
a.在一个示例中,运动候选包括与其它运动信息一起存储的用于块的插值滤波器的指示,其它运动信息诸如mv、参考图片索引、gbi(广义双向预测)/bcw(又称为具有cu权重的双向预测)索引等。
[0582]
b.在一个示例中,具有不同插值滤波器的两个运动候选可被视为不同的运动候选。
[0583]
c.在一个示例中,具有不同插值滤波器的两个运动候选可被视为相同的运动候选。例如,对于hmvp表中的运动候选x,如果运动候选y除了插值滤波器外具有与x相同的信息,则可以从hmvp表中移除x并且可以将y插入hmvp表中。
[0584]
d.在一个示例中,是否将运动候选的插值滤波器的指示存储在hmvp表中可以取决于运动候选的mv分辨率。
[0585]
i.例如,如果候选的mv具有半像素分辨率,则可以在hmvp表中存储用于运动候选的插值滤波器的指示。
[0586]
ii.在一个示例中,可以针对每个预测方向存储插值滤波器。
[0587]
运动信息在hmvp表/hmvp列表中的使用
[0588]
10.在对新候选相对候选列表中的现有候选进行修剪处理(例如,比较和/或避免添加新候选)期间,还应比较插值滤波器信息。
[0589]
e.在一个示例中,假设有两个候选具有除了与这两个候选相关联的插值滤波器之外的相同的运动信息,则将它们视为不同的。在这种情况下,新的候选也可以被添加到候选列表中。
[0590]
11.当将hmvp表/hmvp列表中的运动(hmvp)候选作为新的(例如amvr或merge)候选添加到列表(例如amvp或merge列表)中时,与该运动候选相关联的插值滤波器也可以由新
候选继承。
[0591]
f.在一个示例中,在修剪处理中,还可以考虑插值滤波器信息。
[0592]
12.可以基于hmvp表/hmvp列表中的一个运动(hmvp)候选导出多个新候选到列表(例如amvp或merge列表),并且每一个都可以与不同的插值滤波器相关联。
[0593]
图22是视频处理装置2200的框图。装置2200可用于实现本文所述的一种或多种方法。装置2200可以实施在智能手机、平板电脑、计算机、物联网(iot)接收器等中。装置2200可以包括一个或多个处理器2202、一个或多个存储器2204和视频处理硬件2206。处理器2202可以被配置成实现本文档中描述的一个或多个方法。存储器(多个存储器)2204可用于存储用于实现本文所述的方法和技术的数据和代码。视频处理硬件2206可用于在硬件电路中实现本文档中描述的一些技术。
[0594]
图23是用于视频处理的示例方法2300的流程图。方法2300包括:在确定尺寸为n的基于历史的运动矢量预测(hmvp)表被重置时,使用(2302)k个默认hmvp候选的集合来填充hmvp表,其中n和k是正整数且k≤n;以及基于hmvp表执行(2304)当前块和当前块的比特流表示之间的转换。
[0595]
一些实施例可优选地包括以下技术示例。
[0596]
1.一种用于视频处理的方法,包括:在确定尺寸为n的基于历史的运动矢量预测(hmvp)表被重置时,使用k个默认hmvp候选的集合来填充hmvp表,其中n和k是正整数且k≤n;以及基于hmvp表执行当前块和当前块的比特流表示之间的转换。
[0597]
2.根据示例1所述的方法,其中k个默认hmvp候选的集合中的每一个是相同的。
[0598]
3.根据示例1所述的方法,其中k个默认hmvp候选的集合中的至少两个是不同的。
[0599]
4.根据示例1所述的方法,其中将k个默认hmvp候选的集合中的至少一个多次添加到hmvp表中。
[0600]
5.根据示例4所述的方法,其中hmvp表中的前m个候选中的每一个是不同的,并且其中,hmvp表中的最后(k-m)个候选中的每一个与前m个候选中的一个相同,其中m是正整数。
[0601]
6.根据示例4所述的方法,其中hmvp表中的最后(k-m)个候选中的每一个是不同的,并且其中,hmvp表中的前m个候选中的每一个与最后(k-m)个候选中的一个相同,其中m是正整数。
[0602]
7.根据示例4所述的方法,其中hmvp表中的前m个候选中的每一个是不同的,并且其中,hmvp表中的最后(k-m)个候选包括前m个候选的一个或多个副本。
[0603]
8.根据示例1所述的方法,其中k个默认hmvp候选的集合中的至少一个是单向预测运动候选。
[0604]
9.根据示例8所述的方法,其中包括当前块的条带或图片分别是p条带或图片,并且其中,将单向预测运动候选的预测方向设置为列表0(l0)。
[0605]
10.根据示例8所述的方法,其中包括当前块的条带或图片分别是b条带或图片,并且其中,将单向预测运动候选的预测方向设置为列表0(l0)或列表1(l1)。
[0606]
11.根据示例8所述的方法,其中将单向预测运动候选的运动矢量设置为(0,0)。
[0607]
12.根据示例8所述的方法,其中将单向预测运动候选的运动矢量设置为(-m
×
w,0),其中m和w是整数。
[0608]
13.根据示例8所述的方法,其中将单向预测运动候选的运动矢量设置为(0,-q
×
h),其中q和h是整数。
[0609]
14.根据示例8所述的方法,其中将单向预测运动候选的运动矢量设置为(-m
×
w,-q
×
h),其中m、q、h和w是整数。
[0610]
15.根据示例12或14所述的方法,其中w是与当前块相关联的预测单元(pu)、编解码单元(cu)或变换单元(tu)的允许宽度。
[0611]
16.根据示例13或14所述的方法,其中h是与当前块相关联的预测单元(pu)、编解码单元(cu)或变换单元(tu)的允许高度。
[0612]
17.根据示例1所述的方法,其中k个默认hmvp候选的集合中的至少一个是双向预测运动候选。
[0613]
18.根据示例1所述的方法,其中k个默认hmvp候选的集合中的至少一个包括来自与包含当前块的视频单元不同的视频单元的运动信息。
[0614]
19.根据示例18所述的方法,其中视频单元包括编解码树单元(ctu)行或图片。
[0615]
20.一种用于视频处理的方法,包括:对于当前块和当前块的比特流表示之间的转换,确定要在转换期间使用默认的基于历史的运动矢量预测(hmvp)候选的集合;以及使用默认hmvp候选的集合执行转换,其中在不同视频单元的转换期间使用不同的hmvp候选。
[0616]
21.根据示例20所述的方法,其中不同的视频单元包括不同的编解码树单元(ctu)行或不同的块。
[0617]
22.一种用于视频处理的方法,包括:在当前块和当前块的比特流表示之间的转换之前,确定已经在hmvp表中填充了n个默认的基于历史的运动矢量预测(hmvp)候选的集合;将运动候选添加到hmvp表中;使用包含运动候选的hmvp表执行转换。
[0618]
23.根据示例22所述的方法,还包括:基于n个默认hmvp候选的集合的索引的升序或降序,将运动候选与hmvp表中的每个候选进行比较。
[0619]
24.根据示例23所述的方法,其中当运动候选与hmvp表中的特定候选匹配时终止比较。
[0620]
25.根据示例24所述的方法,其中从hmvp表中移除特定候选,并且其中,将运动候选添加到hmvp表的最后一个条目。
[0621]
26.根据示例1至25中任一项所述的方法,其中在视频参数集(vps)、解码器参数集(dps)、序列参数集(sps)、自适应参数集(aps)、图片参数集(pps)、图片标头、条带标头或片组标头中信令通知默认hmvp候选的集合。
[0622]
27.根据示例1至25中任一项所述的方法,其中预定义多个默认hmvp候选的集合,并且其中,信令通知多个默认hmvp候选的集合中的默认hmvp候选的集合的索引。
[0623]
28.根据示例1至27中任一项所述的方法,其中使用帧间编解码模式或帧内块复制(ibc)模式对当前块进行编解码。
[0624]
29.一种视频处理方法,包括:在当前视频块和当前视频块的比特流表示之间的转换之前,将用于当前视频块的插值滤波器的信息、或者关于用于当前视频块的可切换插值滤波器的侧信息,与当前视频块的过去的运动信息一起存储在表中;基于表的条目执行转换;以及在执行转换之后更新表。
[0625]
30.根据示例29所述的方法,其中,过去的运动信息包括包括运动候选,所述运动
候选包括用于插值滤波器的信息或侧信息,以及运动矢量、参考图片索引、广义双向预测信息、双向预测权重索引中的至少一个。
[0626]
31.根据示例29-30中任一项所述的方法,其中更新包括基于用于插值滤波器的信息的更新。
[0627]
32.根据示例29-31中任一项所述的方法,其中更新包括基于所述侧信息的更新。
[0628]
33.根据示例31-32中任一项所述的方法,其中用于插值滤波器的信息或侧信息被用于确定对应运动候选的唯一性。
[0629]
34.根据示例29-33中任一项所述的方法,其中更新基于修剪处理,在所述修剪处理中,将新的运动候选与表中存储的信息进行比较,并基于新的运动候选中包含的唯一信息选择性地添加新的运动候选。
[0630]
35.根据示例34所述的方法,其中修剪处理基于用于插值滤波器的信息来确定唯一性。
[0631]
36.根据示例29-35中任一项所述的方法,其中更新包括使用来自高级运动矢量分辨率列表或merge候选的运动候选、以及对应的插值滤波器信息或侧信息来更新表。
[0632]
37.根据示例29-35中任一项所述的方法,其中更新包括通过从具有不同插值信息或不同侧信息的其他候选推导来生成新的候选。
[0633]
38.根据示例29-37中任一项所述的方法,其中转换包括从当前视频块生成比特流表示的编码处理。
[0634]
39.根据示例29-37中任一项所述的方法,其中转换包括从比特流表示生成当前视频块的解码处理。
[0635]
上一节中的第9-12项提供了与示例29-39相关的附加方面和变化。
[0636]
40.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,当处理器执行指令时,所述指令使处理器实现示例1-39中任一项所述的方法。
[0637]
41.一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于实现示例1-39中任一项所述的方法的程序代码。
[0638]
在本文档中的示例列表中,术语转换可以是指为当前视频块生成比特流表示或从比特流表示生成当前视频块。比特流表示不需要表示连续的比特组,并且可以被划分为包含在标头字段中或在表示编解码像素值信息的码字中的比特。
[0639]
应当理解,所公开的技术可以实施在视频编码器或解码器中,以使用包括使用各种实现规则的技术来提高压缩效率,所述实现规则考虑了如本文所述的关于使用具有默认参数的基于历史的运动矢量预测(hmvp)。
[0640]
所公开技术的一些实施例包括:做出启用视频处理工具或模式的决策或确定。在一个示例中,当视频处理工具或模式被启用时,编码器将在视频块的处理中使用或实现该工具或模式,但不一定基于该工具或模式的使用来修改产生的比特流。也就是说,当基于决策或确定启用视频处理工具或模式时,从视频块到视频的比特流表示的变换将使用该视频处理工具或模式。在另一示例中,当视频处理工具或模式被启用时,解码器将在知晓已经基于视频处理工具或模式修改了比特流的情况下处理比特流。也就是说,将使用基于决策或确定而启用的视频处理工具或模式来执行从视频的比特流表示到视频块的变换。
[0641]
所公开技术的一些实施例包括:做出禁用视频处理工具或模式的决策或确定。在
一个示例中,当视频处理工具或模式被禁用时,编码器将不在将视频块变换到视频的比特流表示的变换中使用该工具或模式。在另一示例中,当视频处理工具或模式被禁用时,解码器将在知晓未使用基于所述决策或确定而启用的视频处理工具或模式修改比特流的情况下来处理比特流。
[0642]
图26是示出可利用本发明的技术的示例性视频编解码系统100的框图。如图26所示,视频编解码系统100可以包括源设备110和目的地设备120。源设备110生成可称为视频编码设备的编码视频数据。目的地设备120可以对源设备110生成的编码视频数据进行解码,源设备110可以被称为视频解码设备。源设备110可以包括视频源112、视频编码器114和输入/输出(i/o)接口116。
[0643]
视频源112可以包括诸如视频捕获设备、从视频内容提供商接收视频数据的接口和/或用于生成视频数据的计算机图形系统等源,或者这些源的组合。视频数据可以包括一个或多个图片。视频编码器114对来自视频源112的视频数据进行编码以生成比特流。比特流可以包括形成视频数据的编解码表示的比特序列。比特流可以包括编解码图片和相关数据。编解码图片是图片的编解码表示。相关数据可以包括序列参数集、图片参数集合其他语法结构。i/o接口116可以包括调制器/解调器(调制解调器)和/或发射机。编码后的视频数据可以通过网络130a经由i/o接口116直接信令通知到目的地设备120。编码后的视频数据还可以存储到存储介质/服务器130b上以供目的地设备120访问。
[0644]
目的地设备120可以包括i/o接口126、视频解码器124和显示设备122。
[0645]
i/o接口126可以包括接收器和/或调制解调器。i/o接口126可从源设备110或存储介质/服务器130b获取经编码的视频数据。视频解码器124可对经编码的视频数据进行解码。显示设备122可以向用户显示解码的视频数据。显示设备122可以与目的地设备120集成,或者可以是被配置成在与外部显示设备接口的目的地设备120的外部。
[0646]
视频编码器114和视频解码器124可以根据视频压缩标准操作,诸如高效视频编码(hevc)标准、多功能视频编解码(vvm)标准和其他当前和/或进一步的标准。
[0647]
图27是示出视频编码器200的示例的框图,视频编码器200可以是图26所示的系统100中的视频编码器114。
[0648]
视频编码器200可以被配置成执行本公开的任何或所有技术。在图27的示例中,视频编码器200包括多个功能组件。本公开中描述的技术可以在视频编码器200的各个组件之间共享。在一些示例中,处理器可以被配置为执行本公开中描述的任何或所有技术。
[0649]
视频编码器200的功能组件可以包括分割单元201、可包括模式选择单元203的预测单元202、运动估计单元204、运动补偿单元205和帧内预测单元206、残差生成单元207、变换单元208、量化单元209、逆量化单元210、逆变换单元211、重构单元212、缓冲器213和熵编码单元214。
[0650]
在其他示例中,视频编码器200可以包括更多、更少或不同的功能组件。在示例中,预测单元202可以包括帧内块复制(ibc)单元。ibc单元可以在ibc模式下执行预测,其中至少一个参考图片是当前视频块所在的图片。
[0651]
此外,一些组件(诸如运动估计单元204和运动补偿单元205)可以高度集成,但是为了解释的目的,在图27的示例中是分开表示的。
[0652]
分割单元201可以将图片分割成一个或多个视频块。视频编码器200和视频解码器
300可以支持各种视频块尺寸。
[0653]
模式选择单元203可以例如基于错误结果选择编码模式(帧内或帧间)中的一个,并将得到的帧内或帧间编码块提供给残差生成单元207,以生成残差块数据,并且提供给重构单元212以重构编码块以用作参考图片。在一些示例中,模式选择单元203可以选择其中预测基于帧间预测信号和帧内预测信号的组合帧内帧间(ciip)模式。在帧间预测的情况下,模式选择单元203还可以为块的运动矢量(例如,子像素或整数像素精度)选择分辨率。
[0654]
为了对当前视频块执行帧间预测,运动估计单元204可以通过将缓冲器213中的一个或多个参考帧与当前视频块进行比较来生成当前视频块的运动信息。运动补偿单元205可以基于来自缓冲器213的图片(不同于与当前视频块相关联的图片)的运动信息和解码样点点点来确定当前视频块的预测视频块。
[0655]
例如,取决于当前视频块是在i条带、p条带还是b条带中,运动估计单元204和运动补偿单元205可以对当前视频块执行不同的操作。
[0656]
在一些示例中,运动估计单元204可以对当前视频块执行单向预测,并且运动估计单元204可以在列表0或列表1的参考图片中搜索当前视频块的参考视频块。然后,运动估计单元204可以生成指示包含参考视频块和指示当前视频块和参考视频块之间的空域位移的运动矢量的列表0或列表1中的参考图片的参考索引。运动估计单元204可以输出参考索引、预测方向指示符和运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块来生成当前块的预测视频块。
[0657]
在其他示例中,运动估计单元204可以对当前视频块执行双向预测,运动估计单元204可以在列表0的参考图片中搜索当前视频块的参考视频块,并且也可以在列表1的参考图片中搜索当前视频的另一参考视频块。然后,运动估计单元204可以生成指示包含参考视频块和指示参考视频块和当前视频块之间的空域位移的运动矢量的列表0或列表1中的参考图片的参考索引。运动估计单元204可以输出当前视频块的参考索引和运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块来生成当前视频块的预测视频块。
[0658]
在一些示例中,运动估计单元204可以输出用于解码器的解码处理的全套运动信息。
[0659]
在一些示例中,运动估计单元204可以不输出当前视频的全套运动信息。相反,运动估计单元204可以参考另一视频块的运动信息来信令通知当前视频块的运动信息。例如,运动估计单元204可以确定当前视频块的运动信息与临近视频块的运动信息足够相似。
[0660]
在一个示例中,运动估计单元204可以在与当前视频块相关联的语法结构中指示值,该值向视频解码器300指示当前视频块与另一视频块具有相同的运动信息。
[0661]
在另一示例中,运动估计单元204可以在与当前视频块相关联的语法结构中标识另一个视频块和运动矢量差(mvd)。运动矢量差指示当前视频块的运动矢量与指示视频块的运动矢量之间的差。视频解码器300可以使用所指示的视频块的运动矢量和运动矢量差来确定当前视频块的运动矢量。
[0662]
如上所述,视频编码器200可以预测地信令通知运动矢量。可由视频编码器200实现的预测信令技术的两个示例包括高级运动矢量预测(amvp)和merge模式信令。
[0663]
帧内预测单元206可以对当前视频块进行帧内预测。当帧内预测单元206对当前视
频块进行帧内预测时,帧内预测单元206可以基于相同图片中的其他视频块的解码样点点点生成当前视频块的预测数据。当前视频块的预测数据可以包括预测的视频块和各种语法元素。
[0664]
残差生成单元207可以通过从当前视频块减去(例如,由减号指示)当前视频块的预测视频块来生成当前视频块的残差数据。当前视频块的残差数据可以包括对应于当前视频块中的样点点点的不同样点点点分量的残差视频块。
[0665]
在其他示例中,例如在跳过模式下,当前视频块的当前视频块可以没有残差数据,并且残差生成单元207可以不执行减法操作。
[0666]
变换处理单元208可以通过对与当前视频块相关联的残差视频块应用一个或多个变换来为当前视频块生成一个或多个变换系数视频块。
[0667]
在变换处理单元208生成与当前视频块相关联的变换系数视频块之后,量化单元209可以基于与当前视频块相关联的一个或多个量化参数(qp)值来量化与当前视频块相关联的变换系数视频块。
[0668]
逆量化单元210和逆变换单元211可以分别对变换系数视频块应用逆量化和逆变换,以从变换系数视频块重构残差视频块。重构单元212可以将重构的残差视频块添加到由预测单元202生成的一个或多个预测视频块的对应样点点点中,以产生与当前块相关联的重构视频块以存储在缓冲器213中。
[0669]
在重构单元212重构视频块之后,可以执行环路滤波操作以减少视频块中的视频块伪影。
[0670]
熵编码单元214可以从视频编码器200的其它功能组件接收数据。当熵编码单元214接收数据时,熵编码单元214可以执行一个或多个熵编码操作以生成熵编码数据并输出包括熵编码数据的比特流。
[0671]
图28是示出可以是图26所示的系统100中的视频解码器114的视频解码器300的示例的框图。
[0672]
视频解码器300可以被配置成执行本公开的任何或所有技术。在图28的示例中,视频解码器300包括多个功能组件。本公开中描述的技术可以在视频解码器300的各个组件之间共享。在一些示例中,处理器可以被配置为执行本公开中描述的任何或所有技术。
[0673]
在图28的示例中,视频解码器300包括熵解码单元301、运动补偿单元302、帧内预测单元303、逆量化单元304、逆变换单元305、以及重构单元306和缓冲器307。在一些示例中,视频解码器300可以执行通常与关于视频编码器200描述的编码处理(图27)相反的解码处理。
[0674]
熵解码单元301可以检索编码的比特流。编码的比特流可以包括熵编码视的频数据(例如,视频数据的编码块)。熵解码单元301可以解码熵编码的视频数据,并且运动补偿单元302可以从熵解码的视频数据中确定包括运动矢量、运动矢量精度、参考图片列表索引和其他运动信息的运动信息。例如,运动补偿单元302可以通过执行amvp和merge模式来确定这些信息。
[0675]
运动补偿单元302可以通过基于插值滤波器进行插值来产生运动补偿块。语法元素中可以包括以子像素精度使用的插值滤波器的标识符。
[0676]
运动补偿单元302可以使用视频编码器20在视频块编码期间使用的插值滤波器来
计算参考块的子整数像素的插值。运动补偿单元302可以根据接收到的语法信息来确定视频编码器200使用的插值滤波器,并且使用插值滤波器来产生预测块。
[0677]
运动补偿单元302可以使用一些语法信息来确定用于对编码的视频序列的帧和/或条带进行编码的块的尺寸、描述如何对编码的视频序列的图片的每个宏块进行分割的分割信息、指示如何对每个分割进行编码的模式、每个帧间编码块的一个或多个参考帧(和参考帧列表)、以及用于解码编码的视频序列的其他信息。
[0678]
帧内预测单元303可以使用例如在比特流中接收到的帧内预测模式来从空域临近块形成预测块。逆量化单元303对在比特流中提供并由熵解码单元301解码的量化视频块系数进行逆量化(即去量化)。逆变换单元303应用逆变换。
[0679]
重构单元306可以将残差块与由运动补偿单元202或帧内预测单元303生成的对应预测块相加以形成解码块。如果需要,还可以应用去方块滤波器来滤波解码块以去除块性伪影。解码的视频块随后被存储在缓冲器307中,其提供用于后续运动补偿/帧内预测的参考块,并且还产生解码的视频以在显示设备上呈现。
[0680]
在本文中,术语“视频处理”可以指视频编码、视频解码、视频压缩或视频解压缩。例如,视频压缩算法可以在从视频的像素表示转换为相应的比特流表示期间应用,或反之亦然。例如,当前视频块的比特流表示或编解码表示可以对应于在比特流内的不同位置并置或传播的比特,如语法所定义的。例如,可以根据经过变换和编码的误差残值对视频块进行编码,并且还可以使用比特流中的标头和其他字段中的比特。此外,在转换期间,解码器可以在知晓某些字段可能存在、或不存在的情况下基于确定来解析比特流,如上面的解决方案所述。类似地,编解码器可以确定是否包括某些语法字段,并通过从编解码表示中包括或排除语法字段来相应地生成编解码表示。
[0681]
图29是示出其中可以实现本文公开的各种技术的示例视频处理系统2900的框图。各种实现可以包括系统2900的部分或全部组件。系统2900可以包括用于接收视频内容的输入2902。视频内容可以原始或未压缩格式(例如,8或10位多分量像素值)接收,或者可以压缩或编解码格式接收。输入2902可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(pon)等有线接口和诸如wi-fi或蜂窝接口的无线接口。
[0682]
系统2900可以包括编码组件2904,其可以实现本文中描述的各种编码或编码方法。编码组件2904可以降低从输入2902到编码组件2904的输出的视频的平均比特率,以产生视频的编码表示。因此,编码技术有时被称为视频压缩或视频转码技术。编码组件2904的输出可以存储,或者通过由组件2906表示的所连接的通信来信令通知。组件2908可以使用在输入2902处接收的视频的存储或通信比特流(或编码的)表示来生成信令通知到显示接口2910的像素值或可显示视频。从比特流表示生成用户可视视频的处理有时称为视频解压缩。此外,虽然某些视频处理操作被称为“编码”操作或工具,但是应当理解,在编码器处使用编码工具或操作,并且将由解码器执行对应的解码工具或反转编码结果的操作。
[0683]
外围总线接口或显示接口的示例可以包括通用串行总线(usb)或高清晰度多媒体接口(hdmi)或显示端口等。存储接口的示例包括sata(串行高级技术附件)、pci、ide接口等。本文中描述的技术可以实施在各种电子设备中,例如能够执行数字数据处理和/或视频显示的移动电话、膝上型计算机、智能手机或其他设备。
[0684]
图30是用于视频处理的示例方法3000的流程图。方法3000包括:为视频的视频单
元和视频的比特流表示之间的转换,通过将k个基于历史的运动矢量预测(hmvp)运动候选添加到hmvp表中来重置3002尺寸为n的hmvp表,其中k个hmvp候选运动候选具有默认值,其中n和k是正整数,并且其中k≤n;以及使用从重置得到的hmvp表执行3004视频单元和比特流表示之间的转换。
[0685]
在方法3000的一些实施例中,k个hmvp候选运动中的每一个都是相同的。在方法3000的一些实施例中,k个hmvp候选运动中的至少两个是不同的。在方法3000的一些实施例中,将至少一个具有默认值的运动候选多次添加到hmvp表中。在方法3000的一些实施例中,hmvp表中前m个候选彼此不同,hmvp表中最后(k-m)个候选中的每一个都与前m个候选中的一个相同,并且m《k。在方法3000的一些实施例中,hmvp表中最后(k-m)个候选彼此不同,hmvp表中前m候选的每一个与最后(k-m)个候选中的一个相同,并且m《k。在方法3000的一些实施例中,hmvp表中前m个候选彼此不同,hmvp表中最后(k-m)个候选包括前m个候选的一个或多个副本,并且m《k。
[0686]
在方法3000的一些实施例中,k个hmvp运动候选中中的至少一个是单向预测运动候选。在方法3000的一些实施例中,视频单元是p条带或p图片,并且其中,将单向预测运动候选的预测方向设置为列表0(l0)。在方法3000的一些实施例中,视频单元是b条带或b图片,并且其中,将单向预测运动候选的预测方向设置为列表0(l0)或列表1(l1)。在方法3000的一些实施例中,将单向预测运动候选的运动矢量设置为(0,0)。在方法3000的一些实施例中,将单向预测运动候选的运动矢量设置为(-m
×
w,0),其中m和w是整数。在方法3000的一些实施例中,将单向预测运动候选的运动矢量设置为(0,-q
×
h),其中q和h是整数。在方法3000的一些实施例中,将单向预测运动候选的运动矢量设置为(-m
×
w,-q
×
h),其中m、q、h和w是整数。
[0687]
在方法3000的一些实施例中,w是视频单元的视频块的预测单元(pu)、编解码单元(cu)或变换单元(tu)的允许宽度。在方法3000的一些实施例中,h是视频单元的视频块的预测单元(pu)、编解码单元(cu)或变换单元(tu)的允许高度。在方法3000的一些实施例中,将单向预测运动候选的参考索引设置为在预测方向上小于参考图片的数量的值。在方法3000的一些实施例中,将单向预测运动候选的预测方向设置为列表0(l0)或列表1(l1)。在方法3000的一些实施例中,将参考图片设置为与视频单元相关联的当前图片。在方法3000的一些实施例中,指示为视频单元的视频块启用帧内块复制(ibc)模式的语法元素被设置为1。
[0688]
在方法3000的一些实施例中,k个hmvp运动候选中的至少一个是双向预测运动候选。在方法3000的一些实施例中,视频单元是p条带或图片,并且其中,将双向预测运动候选的每个预测方向都设置为列表0(l0)。在方法3000的一些实施例中,视频单元是b条带或b图片,并且其中,将双向预测候选运动的至少一个预测方向设置为列表0(l0)或列表1(l1)。在方法3000的一些实施例中,将双向预测运动候选的运动矢量设置为(0,0)。在方法3000的一些实施例中,将双向预测运动候选的运动矢量设置为(-m
×
w,0),其中m和w是整数。
[0689]
在方法3000的一些实施例中,将双向预测运动候选的运动矢量设置为(0,-q
×
h),其中q和h是整数。在方法3000的一些实施例中,将双向预测运动候选的运动矢量设置为(-m
×
w,-q
×
h),其中m、q、h和w是整数。在方法3000的一些实施例中,w是与视频单元的视频块相关联的预测单元(pu)、编解码单元(cu)或变换单元(tu)的允许宽度。在方法3000的一些实施例中,h是与视频单元的视频块相关联的预测单元(pu)、编解码单元(cu)或变换单元
(tu)的允许高度。在方法3000的一些实施例中,将双向预测运动候选的参考索引设置为在至少一个预测方向上小于参考图片的数量的值。在方法3000的一些实施例中,将双向预测运动候选的至少一个预测方向设置为列表0(l0)或列表1(l1)。
[0690]
在方法3000的一些实施例中,对与双向预测运动候选相关联的两个运动矢量使用相同的加权因子。在方法3000的一些实施例中,将视频单元的广义双向预测(gbi)索引设置为0。在方法3000的一些实施例中,k个hmvp候选运动中的至少一个包括来自与视频单元不同的第二视频单元的运动信息。在方法3000的一些实施例中,视频单元包括第一编解码树单元(ctu)行或第一图片,并且其中,第二视频单元包括第二ctu或第二图片。
[0691]
在方法3000的一些实施例中,对于多个p条带或多个p图片,k个hmvp候选运动中的至少一个包括设置为(mv(0,0),i)的运动矢量,其中i是在0和列表0中的参考图片的数量减去1之间的范围内的参考图片索引,并且视频单元是来自多个p条带的p条带,或者视频单元是来自多个p图片的p图片。在方法3000的一些实施例中,以升至i的升序将k个hmvp运动候选添加到hmvp表中。在方法3000的一些实施例中,以从i开始的降序将k个hmvp运动候选添加到hmvp表中。在方法3000的一些实施例中,响应于列表0(l0)中的参考图片的数量小于k,将一个或多个hmvp运动候选重复地添加到hmvp表中,直到hmvp表包括k个候选。
[0692]
在方法3000的一些实施例中,响应于列表0(l0)中的参考图片的数量小于k,将一个或多个可用的hmvp运动候选重复地添加到hmvp表中,直到hmvp表包括k个候选。在方法3000的一些实施例中,对于多个b条带或多个b图片,k个hmvp候选运动包括:来自列表x的k0个单向预测运动候选、来自列表y的k1个单向预测运动候选(其中y等于(1-x))、以及k2个双向预测运动候选,其中k0 k1 k2=k,并且k0/k1/k2》=0,并且其中,视频单元是来自多个b条带的b条带,或者视频单元是来自多个b图片的b图片。
[0693]
在方法3000的一些实施例中,对于多个b条带或多个b图片,k个hmvp运动候选仅包括双向预测运动候选,并且其中,视频单元是来自多个b条带的b条带,或者视频单元是来自多个b图片的b图片。在方法3000的一些实施例中,对于多个b条带或多个b图片,k个hmvp运动候选包括与双向预测候选运动交错的单向预测运动候选,并且其中,视频单元是来自多个b条带的b条带,或者视频单元是来自多个b图片的b图片。在方法3000的一些实施例中,对于多个b条带或多个b图片,k个hmvp运动候选包括单向预测运动候选,随后是双向预测运动候选,并且其中,视频单元是来自多个b条带的b条带,或者视频单元是来自多个b图片的b图片。
[0694]
在方法3000的一些实施例中,响应于k等于n,将hmvp表中可用hmvp运动候选的计数器从比特流表示中排除。在方法3000的一些实施例中,来自k个hmvp候选运动的至少一个hmvp运动候选参考参考索引等于特定值的参考图片。在方法3000的一些实施例中,特定值为零。在方法3000的一些实施例中,用于视频单元的k个hmvp候选运动被自适应地改变以获得用于视频的第二视频单元的第二组k个hmvp运动候选,其中第二视频单元与所述视频单元不同。
[0695]
图31是用于视频处理的示例方法3100的流程图。方法3100包括:向视频单元的基于历史的运动矢量预测(hmvp)表添加3102来自第一组k个默认hmvp运动候选的hmvp运动候选,其中,视频单元的第一组k个hmvp运动候选是从hmvp表中包括的用于视频的第二视频单元的第二组k个hmvp运动候选自适应地改变来的,其中第二视频单元不同于所述视频单元,
其中,第一组k个hmvp运动候选和第二组k个hmvp运动候选具有默认值,其中hmvp表的尺寸为n,其中n和k为正整数,并且其中k≤n;以及执行3104视频的视频单元和视频的比特流表示之间的转换,其中,比特流表示包括指示添加到hmvp表中的第一组k个hmvp运动候选的语法元素。
[0696]
在方法3000和/或3100的一些实施例中,视频单元包括第一编解码树单元(ctu)行,并且其中,第二视频单元包括第二ctu行。在方法3000和/或3100的一些实施例中,视频单元包括第一片,并且其中,第二视频单元包括第二片。
[0697]
在方法3000的一些实施例中,用于hmvp表的k个hmvp运动候选与用于另一hmvp表的k个hmvp运动候选不同。在方法3000的一些实施例中,k个hmvp运动候选的选择基于用于与视频单元的视频块相关联的编解码模式的hmvp表。在方法3000的一些实施例中,用于使用帧间编解码模式编解码的视频块的k个hmvp运动候选不同于用于使用帧内块复制(ibc)模式编解码的视频块的k个hmvp运动候选,并且视频块属于视频单元。在方法3000的一些实施例中,该方法还包括:在执行转换之前,确定已经在hmvp表中填充了n个hmvp运动候选;以及基于该确定,根据规则向hmvp表添加另一个运动候选。在方法3000的一些实施例中,该规则指定通过执行比较操作将另一个运动候选添加到hmvp表中,在该比较操作中,按照n个hmvp运动候选的索引的升序或降序将另一个运动候选与hmvp表中的每个候选进行比较。在方法3000的一些实施例中,当另一个运动候选与hmvp表中的运动候选匹配时,执行比较操作被终止。在方法3000的一些实施例中,执行比较操作包括在确定另一个运动候选与hmvp表中的运动候选相同时:从hmvp表中移除该运动候选,并且将另一个运动候选添加到hmvp表中的最后一个条目。
[0698]
在方法3000的一些实施例中,对于hmvp表中的所有k个hmvp运动候选,在确定另一个运动候选是否与hmvp表中的任何运动候选匹配之后,执行比较操作被终止。在方法3000的一些实施例中,执行比较操作包括在确定另一个运动候选与hmvp表中的所有m个运动候选都相同时:从hmvp表中移除m个运动候选,并且重复地将另一个运动候选添加到hmvp表中,直到hmvp表满为止。在方法3000和/或3100的一些实施例中,在视频参数集(vps)、解码器参数集(dps)、序列参数集(sps)、自适应参数集(aps)、图片参数集(pps)、图片标头、条带标头或片组标头中信令通知添加到hmvp表中的k个hmvp运动候选。在方法3000和/或3100的一些实施例中,预定义多组k个hmvp运动候选,并且比特流表示包括视频单元的多组默认k个hmvp运动候选中的k个hmvp运动候选的索引。
[0699]
在方法3000和/或3100的一些实施例中,预定义多组k个hmvp运动候选,比特流表示包括用于视频单元的视频块的编解码模式的索引,并且编解码模式的索引指示多组默认k个hmvp运动候选中的k个hmvp运动候选用于视频单元。在方法3000和/或3100的一些实施例中,视频单元包括图片、条带、片组、片、编解码树单元(ctu)行。
[0700]
在方法3000的一些实施例中,hmvp表通过以下方式更新:在hmvp表中的所有现有hmvp运动候选之前向hmvp表中添加附加的hmvp运动候选。在方法3000的一些实施例中,值最小的hmvp表的条目索引指示hmvp表中的最新的hmvp运动候选,并且在添加到hmvp表的最新的hmvp运动候选之前添加附加的hmvp运动候选。在方法3000的一些实施例中,该方法还包括在确定附加的hmvp运动候选与hmvp表中的至少一个hmvp运动候选相同或相似时,确定不将附加hmvp运动候选添加到hmvp表中。
[0701]
在方法3000的一些实施例中,在确定附加的hmvp运动候选与hmvp表中的至少一个hmvp运动候选相同或相似时,从hmvp表中移除至少一个hmvp运动候选。在方法3000的一些实施例中,通过确定与附加的hmvp运动候选和至少一个hmvp运动候选相对应的运动矢量之间的差小于阈值,确定附加的hmvp运动候选与至少一个hmvp运动候选相同或相似。
[0702]
在方法3000和/或3100的一些实施例中,使用帧间编解码模式或帧内块复制(ibc)模式对视频单元的视频块进行编解码。在方法3000和/或3100的一些实施例中,从多组k个hmvp运动候选中选择hmvp表的k个hmvp运动候选,并且基于视频单元的视频块的编解码模式来选择hmvp表的k个hmvp运动候选。在方法3000和/或3100的一些实施例中,编解码模式包括帧间编解码模式或帧内块复制(ibc)模式。在方法3000和/或3100的一些实施例中,默认值还包括帧内预测模式的默认值。在方法3000的一些实施例中,重置还包括在添加k个hmvp运动候选之前将hmvp表中的现有条目标记为不可用或删除现有条目。在方法3000和/或3100的一些实施例中,转换的执行包括从视频单元的视频块生成比特流表示的编码操作。在方法3000和/或3100的一些实施例中,转换的执行包括从比特流表示生成视频单元的视频块的解码操作。
[0703]
综上,为了说明的目的,本文描述了本公开技术的具体实施例,但是可以在不偏离本发明的范围的情况下进行各种修改。因此,除了所附权利要求外,本公开技术不受限制。
[0704]
本文档中描述公开和其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路、或计算机软件、固件或硬件中实现,包括本文档中所公开的结构及其结构等效体,或其中一个或多个的组合。本说明中描述的主题的实现可以实现为一个或多个计算机程序产品,即一个或多个编码在有形的且非易失的计算机可读介质上的计算机程序指令的模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或其中多个的组合。术语“数据处理单元”或“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。传播的信号是人为生成的信号,例如,机器生成的电、光或电磁信号,其被生成以编码信息以传输到合适的接收器设备。
[0705]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
[0706]
本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。
[0707]
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数
字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如,内部硬盘或可移动硬盘;磁光盘;以及cd rom和dvd rom盘。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
[0708]
虽然本专利文件包含许多细节,但不应将其解释为对任何主题或权利要求范围的限制,而应解释为对特定技术的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中移除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。
[0709]
同样,尽管附图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。
[0710]
仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中描述和说明的内容做出。
再多了解一些

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

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

相关文献