具有自适应运动矢量分辨率的运动矢量精度指示的信令通知的制作方法

未命名 08-29 阅读:94 评论:0

具有自适应运动矢量分辨率的运动矢量精度指示的信令通知
1.相关申请的交叉引用
2.本技术是申请日为2019年9月23日、申请号为201910901081.5、发明名称为“具有自适应运动矢量分辨率的运动矢量精度指示的信令通知”的发明专利申请的分案申请。
技术领域
3.本专利文档涉及视频编码技术、设备和系统。


背景技术:

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


技术实现要素:

5.描述了与数字视频编码,特别是用于具有自适应运动矢量分辨率(adaptive motion vector resolution,amvr)的仿射模式的运动矢量预测值推导和信令通知有关的设备、系统和方法。所描述的方法可以应用于现有视频编码标准(例如,高效视频编码(high efficiency video coding,hevc))和未来视频编码标准或视频编解码器。
6.在一个代表性方面,所公开的技术可以用来提供用于视频处理的方法。该方法包括:对于当前视频块和该当前视频块的比特流表示之间的转换,使用自适应地选择与该当前视频块相关联的每个运动矢量的分辨率的编解码工具来确定最终运动矢量,并且其中该比特流表示包括指示与该当前视频块相关联的运动矢量或运动矢量差的精度的、包括多于一个比特的字段;以及基于最终运动矢量来执行该比特流表示和该当前视频块之间的转换,其中,该运动矢量或运动矢量差的精度的允许的值的集合基于该当前视频块的编解码模式,该编解码模式是仿射模式或非仿射模式;其中,该允许的值的集合还基于该当前视频块的尺寸和形状。
7.在另一个代表性方面,所公开的技术可以用来提供视频系统中的装置。该装置包括处理器和其上具有指令的非暂时性存储器,其中该指令在由处理器运行时使得该处理器实施本公开各种实施例的方法。
8.在又一个代表性方面,所公开的技术可以用来提供用于视频处理的方法。该方法包括:对于当前视频块的信令通知的运动矢量差mvd,从精度集合中确定第一精度;基于该第一精度,获取具有预定义的第二精度的运动矢量,其中该第二精度与用于块预测的存储的运动矢量的精度相同,其中该运动矢量基于将运动矢量预测值mvp添加到该运动矢量差mvd;以及基于该运动矢量,对该当前视频块进行编解码。
9.在又一个代表性方面,所公开的技术可以用来提供用于视频处理的装置。该装置包括处理器和其上具有指令的非暂时性存储器,其中该指令在由该处理器执行时使得该处理器执行本公开各种实施例的方法。
10.在又一个代表性方面,所公开的技术可以用来提供存储指令的非暂时性计算机可读存储介质。该指令使得处理器执行本公开各种实施例的方法。
11.在又一个代表性方面,所公开的技术可以用来提供用于视频处理的方法。该方法包括:对于当前视频块和当前视频块的比特流表示之间的转换,使用自适应地选择与当前视频块相关联的每个运动矢量的分辨率的编码工具来确定最终运动矢量,其中最终运动矢量的精度与当前视频块的存储的运动矢量的精度相同;以及基于最终运动矢量来执行比特流表示和当前视频块之间的转换。
12.在另一代表性方面,所公开的技术可以用来提供用于视频处理的方法。该方法包括:对于当前视频块和当前视频块的比特流表示之间的转换,使用自适应地选择与当前视频块相关联的每个运动矢量的分辨率的编码工具来确定最终运动矢量,其中当前视频块是以仿射模式而编码的,并且其中比特流表示包括指示与当前视频块相关联的运动矢量或运动矢量差的精度的、包括多于一个比特的字段;以及基于最终运动矢量来执行比特流表示和当前视频块之间的转换。
13.在又一代表性方面,上述方法以处理器可运行代码的形式而体现,并且被存储在计算机可读程序介质中。
14.在又一代表性方面,公开了一种被配置为或可操作来执行上述方法的设备。该设备可以包括被编程为实施该方法的处理器。
15.在又一代表性方面,视频解码器装置可以实施如本文所描述的方法。
16.在附图、说明书和权利要求中更详细地描述了所公开的技术的上述以及其他方面和特征。
附图说明
17.图1示出了构建merge候选列表的示例。
18.图2示出了空域候选的位置的示例。
19.图3示出了进行空域merge候选的冗余检查的候选对的示例。
20.图4a和图4b示出了基于当前块的尺寸和形状的第二预测单元(prediction unit,pu)的位置的示例。
21.图5示出了用于时域merge候选的运动矢量缩放的示例。
22.图6示出了时域merge候选的候选位置的示例。
23.图7示出了生成组合的双向预测merge候选的示例。
24.图8示出了构建运动矢量预测候选的示例。
25.图9示出了用于空域运动矢量候选的运动矢量缩放的示例。
26.图10示出了使用用于编码单元(coding unit,cu)的可选时域运动矢量预测(alternative temporal motion vector prediction,atmvp)算法的运动预测的示例。
27.图11示出了具有由空时运动矢量预测(spatial-temporal motion vector prediction,stmvp)算法使用的子块和相邻块的编码单元(cu)的示例。
28.图12a和图12b示出了当使用重叠块运动补偿(overlapped block motion compensation,obmc)算法时的子块的示例快照。
29.图13示出了用来推导局部光照补偿(local illumination compensation,lic)算
法的参数的相邻样点的示例。
30.图14示出了简化的仿射运动模型的示例。
31.图15示出了每个子块的仿射运动矢量场(affine motion vector field,mvf)的示例。
32.图16示出了af_inter仿射运动模式的运动矢量预测(motion vector prediction,mvp)的示例。
33.图17a和图17b分别示出了4-参数仿射模型和6-参数仿射模型的示例。
34.图18a和图18b示出了af_merge仿射运动模式的示例候选。
35.图19示出了模式匹配的运动矢量推导(pattern matched motion vector derivation,pmmvd)模式中的双边匹配的示例,其是基于帧速率上转换(frame-rate up conversion,fruc)算法的特殊merge模式。
36.图20示出了fruc算法中的模板匹配的示例。
37.图21示出了fruc算法中的单边运动估计的示例。
38.图22示出了用于视频处理的示例方法的流程图。
39.图23示出了用于视频处理的另一示例方法的流程图。
40.图24是用于实施本文档中描述的可视媒体解码或可视媒体编码技术的硬件平台的示例的框图。
41.图25是其中可以实施所公开的技术的示例视频处理系统的框图。
具体实施方式
42.由于对更高分辨率视频的日益增长的需求,视频编码方法和技术在现代技术中无处不在。视频编解码器通常包括压缩或解压缩数字视频的电子电路或软件,并且正在不断被改进以提供更高的编码效率。视频编解码器将未压缩的视频转换为压缩格式,反之亦然。视频质量、用来表示视频的数据量(由比特率确定)、编码和解码算法的复杂性、对数据丢失和错误的敏感性、编辑的简易性、随机访问和端到端延迟(时延)之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如,高效视频编码(hevc)标准(也已知为h.265或mpeg-h第2部分)[1]、要完成的通用视频编码标准、或其他当前和/或未来视频编码标准。
[0043]
所公开的技术的实施例可以应用于现有视频编码标准(例如,hevc、h.265)和未来标准以改进压缩性能。在本文档中使用章节标题以提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实施方式)仅限制于各个章节。
[0044]
1.hevc/h.265中的帧间预测的示例
[0045]
多年来,视频编码标准已经得到显着改进,并且现在部分地提供高编码效率并且支持更高的分辨率。诸如hevc和h.265的最新标准基于其中利用时域预测加变换编码的混合视频编码结构。
[0046]
1.1预测模式的示例
[0047]
每个帧间预测的pu(预测单元)具有一个或两个参考图片列表的运动参数。在一些实施例中,运动参数包括运动矢量和参考图片索引。在其他实施例中,也可以使用inter_pred_idc来信令通知对两个参考图片列表中的一个的使用。在又一些实施例中,可以将运动矢量显式地编码为相对于预测值的增量(delta)。
[0048]
当用跳过模式对cu进行编码时,一个pu与cu相关联,并且不存在显著的残差系数、不存在编码的运动矢量增量或参考图片索引。指定merge模式,从而从相邻pu获得当前pu的运动参数,包括空域和时域候选。merge模式可以应用于任何帧间预测的pu,而不仅应用于跳过模式。merge模式的替代是运动参数的显式传输,其中,对于每个pu,显式地信令通知运动矢量、每个参考图片列表的对应参考图片索引、以及参考图片列表使用。
[0049]
当信令指示将使用两个参考图片列表中的一个时,从一个样点块产生pu。这被称为“单向预测(uni-prediction)”。单向预测可用于p条带和b条带两者[2]。
[0050]
当信令指示将使用两个参考图片列表时,从两个样点块产生pu。这被称为“双向预测(bi-prediction)”。双向预测仅可用于b条带。
[0051]
1.1.1构建merge模式的候选的实施例
[0052]
当使用merge模式预测pu时,从比特流解析指向merge候选列表中的条目的索引并将其用于检索运动信息。该列表的构建可以根据以下步骤序列总结:
[0053]
步骤1:初始候选推导
[0054]
步骤1.1:空域候选推导
[0055]
步骤1.2:空域候选的冗余检查
[0056]
步骤1.3:时域候选推导
[0057]
步骤2:附加候选插入
[0058]
步骤2.1:创建双向预测候选
[0059]
步骤2.2:插入零运动候选
[0060]
图1示出了基于上面总结的步骤序列构建merge候选列表的示例。对于空域merge候选推导,在位于五个不同位置的候选当中选择最多四个merge候选。对于时域merge候选推导,在两个候选当中选择最多一个merge候选。由于在解码器处假设每个pu的恒定数量的候选,因此当候选的数量未达到在条带报头中信令通知的最大merge候选数量(maxnummergecand)时,生成附加候选。由于候选的数量是恒定的,因此使用截断的一元二值化(truncated unary binarization,tu)来编码最佳merge候选的索引。如果cu的尺寸等于8,则当前cu的所有pu共享单个merge候选列表,其与2n
×
2n预测单元的merge候选列表相同。
[0061]
1.1.2构建空域merge候选
[0062]
在空域merge候选的推导中,在位于图2描绘的位置的候选当中选择最多四个merge候选。推导的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任何pu不可用(例如,因为它属于另一条带或片)或者是帧内编码时,才考虑位置b2。在添加位置a1处的候选之后,对剩余候选的添加进行冗余检查,其确保具有相同运动信息的候选被排除在列表之外,使得编码效率提高。
[0063]
为了降低计算复杂度,在所提到的冗余检查中并未考虑所有可能的候选对。相反,仅考虑图3中用箭头连结的对,并且仅在用于冗余检查的对应候选具有不一样的运动信息时,才将候选添加到列表。重复运动信息的另一来源是与不同于2n
×
2n的分割相关联的“第二pu”。作为示例,图4a和图4b分别描绘了针对情况n
×
2n和2n
×
n的第二pu。当当前pu被分割为n
×
2n时,位置a1处的候选不被考虑用于列表构建。在一些实施例中,添加该候选可能导致具有相同运动信息的两个预测单元,这对于在编码单元中仅具有一个pu是冗余的。类
似地,当当前pu被分割为2n
×
n时,不考虑位置b1。
[0064]
1.1.3构建时域merge候选
[0065]
在该步骤中,只有一个候选被添加到列表。具体地,在该时域merge候选的推导中,基于并置pu来推导缩放的运动矢量,该并置pu属于给定参考图片列表内与当前图片具有最小poc差的图片。在条带报头中显式地信令通知要用于并置pu的推导的参考图片列表。
[0066]
图5示出了时域merge候选的缩放的运动矢量的推导的示例(如虚线),其是使用poc距离tb和td从并置pu的运动矢量缩放的,其中tb被定义为当前图片的参考图片与当前图片之间的poc差,并且td被定义为并置图片的参考图片与并置图片之间的poc差。时域merge候选的参考图片索引被设置为等于零。对于b条带,获得两个运动矢量,一个用于参考图片列表0,另一个用于参考图片列表1,并且组合该两个运动矢量以得到双向预测merge候选。
[0067]
在属于参考帧的并置pu(y)中,在候选c0和c1之间选择时域候选的位置,如图6所描绘的。如果位置c0处的pu不可用、是帧内编码的、或者在当前ctu之外,则使用位置c1。否则,位置c0用于时域merge候选的推导。
[0068]
1.1.4构建附加类型的merge候选
[0069]
除了空时merge候选之外,还存在两种附加类型的merge候选:组合的双向预测merge候选和零merge候选。通过利用空时merge候选来生成组合的双向预测merge候选。组合的双向预测merge候选仅用于b条带。通过将初始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数组合来生成组合的双向预测候选。如果这两个元组提供不同的运动假设,它们将形成新的双向预测候选。
[0070]
图7示出了该过程的示例,其中,原始列表(左侧的710)中的具有mvl0和refidxl0或mvl1和refidxl1的两个候选用来创建添加到最终列表(右侧的720)的组合的双向预测merge候选。
[0071]
插入零运动候选以填充merge候选列表中的剩余条目,从而达到maxnummergecand容量。这些候选具有零空域位移和从零开始并且每当新的零运动候选被添加到列表时增加的参考图片索引。对于单向和双向预测,由这些候选使用的参考帧的数量分别是一和二。在一些实施例中,不对这些候选执行冗余检查。
[0072]
1.1.5用于并行处理的运动估计区域的示例
[0073]
为了加速编码处理,可以并行执行运动估计,从而同时推导给定区域内部的所有预测单元的运动矢量。从空域邻域推导merge候选可能干扰并行处理,因为一个预测单元直到其相关联的运动估计完成时才能从邻近pu推导运动参数。为了减轻编码效率和处理等待时间之间的折衷,可以定义运动估计区域(motion estimation region,mer)。mer的尺寸可以在图片参数集(picture parameter set,pps)中使用“log2_parallel_merge_level_minus2”语法元素而信令通知。当定义mer时,落入相同区域的merge候选被标记为不可用,并且因此在列表构建中不予考虑。
[0074]
1.2高级运动矢量预测(advanced motion vector prediction,amvp)的示例
[0075]
amvp利用运动矢量与相邻pu的空时相关性,其用于运动参数的显式传输。它通过首先检查时域上相邻的pu位置的左侧、上侧的可用性,移除冗余候选并添加零矢量以使候选列表为恒定长度来构建运动矢量候选列表。然后,编码器可以从候选列表选择最佳预测
值,并且发送指示所选候选的对应索引。与merge索引信令类似,使用截断的一元来编码最佳运动矢量候选的索引。在这种情况下要编码的最大值是2(参见图8)。在以下章节中,提供了关于运动矢量预测候选的推导过程的细节。
[0076]
1.2.1构建运动矢量预测候选的示例
[0077]
图8总结了运动矢量预测候选的推导过程,并且可以针对具有作为输入的refidx的每个参考图片列表而实施。
[0078]
在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选推导,最终基于位于如先前在图2中示出的五个不同位置的每个pu的运动矢量推导两个运动矢量候选。
[0079]
对于时域运动矢量候选推导,从两个候选选择一个运动矢量候选,其是基于两个不同的并置位置推导的。在产生空时候选的第一列表之后,移除列表中的重复的运动矢量候选。如果潜在候选的数量大于二,则从列表移除相关联的参考图片列表内的其参考图片索引大于1的运动矢量候选。如果空时运动矢量候选的数量小于二,则将附加零运动矢量候选添加到列表中。
[0080]
1.2.2构建空域运动矢量候选
[0081]
在空域运动矢量候选的推导中,在五个潜在候选当中考虑最多两个候选,其从位于如先前在图2中示出的位置的pu推导,那些位置与运动merge的位置相同。将当前pu的左侧的推导顺序定义为a0、a1,以及缩放的a0、缩放的a1。将当前pu的上侧的推导顺序定义为b0、b1、b2,缩放的b0、缩放的b1、缩放的b2。因此,对于每一侧,存在可以用作运动矢量候选的四种情况,其中两种情况不需要使用空域缩放,并且两种情况使用空域缩放。四种不同的情况总结如下:
[0082]
‑‑
无空域缩放
[0083]
(1)相同的参考图片列表,以及相同的参考图片索引(相同的poc)
[0084]
(2)不同的参考图片列表,但相同的参考图片(相同的poc)
[0085]
‑‑
空域缩放
[0086]
(3)相同的参考图片列表,但不同的参考图片(不同的poc)
[0087]
(4)不同的参考图片列表,以及不同的参考图片(不同的poc)
[0088]
首先检查无空域缩放的情况,然后检查允许空域缩放的情况。当poc在相邻pu的参考图片和当前pu的参考图片之间不同时,考虑空域缩放,而不管参考图片列表。如果左侧候选的所有pu都不可用或者是帧内编码的,则允许对上侧运动矢量进行缩放以帮助左侧和上侧mv候选的并行推导。否则,不允许对上侧运动矢量进行空域缩放。
[0089]
如图9中的示例所示,对于空域缩放情况,以与时域缩放类似的方式缩放相邻pu的运动矢量。一个差异是给出参考图片列表和当前pu的索引作为输入;实际缩放过程与时域缩放过程相同。
[0090]
1.2.3构建时域运动矢量候选
[0091]
除了参考图片索引推导之外,用于推导时域merge候选的所有过程与用于推导空域运动矢量候选的过程相同(如图6中的示例所示)。在一些实施例中,参考图片索引被信令通知到解码器。
[0092]
2.联合探索模型(joint exploration model,jem)中的帧间预测方法的示例
[0093]
在一些实施例中,使用已知为联合探索模型(jem)[3][4]的参考软件来探索未来视频编码技术。在jem中,在几个编码工具中采用基于子块的预测,诸如仿射预测、可选时域运动矢量预测(atmvp)、空时运动矢量预测(stmvp)、双向光流(bi-directional optical flow,bio),帧速率上转换(fruc)、局部自适应运动矢量分辨率(locally adaptive motion vector resolution,lamvr)、重叠块运动补偿(obmc)、局部光照补偿(lic)和解码器侧运动矢量细化(decoder-side motion vector refinement,dmvr)。
[0094]
2.1基于子cu的运动矢量预测的示例
[0095]
在具有四叉树加二叉树(quadtrees plus binary trees,qtbt)的jem中,每个cu可以具有用于每个预测方向的至多一个运动参数集。在一些实施例中,通过将大cu划分为子cu并且推导大cu的所有子cu的运动信息,在编码器中考虑两个子cu级别运动矢量预测方法。可选时域运动矢量预测(atmvp)方法允许每个cu从小于并置参考图片中的当前cu的多个块提取运动信息的多个集合。在空时运动矢量预测(stmvp)方法中,通过使用时域运动矢量预测值和空域相邻运动矢量来递归地推导子cu的运动矢量。在一些实施例中并且为了保留子cu运动预测的更准确的运动场,可以禁用参考帧的运动压缩。
[0096]
2.1.1可选时域运动矢量预测(atmvp)的示例
[0097]
在atmvp方法中,通过从小于当前cu的块提取运动信息(包括运动矢量和参考索引)的多个集合来修改时域运动矢量预测(temporal motion vector prediction,tmvp)方法。
[0098]
图10示出了cu 1000的atmvp运动预测过程的示例。atmvp方法以两个步骤预测cu 1000内的子cu 1001的运动矢量。第一步骤是利用时域矢量识别参考图片1050中的对应块1051。参考图片1050也被称为运动源图片。第二步骤是将当前cu 1000划分为子cu 1001,并且从对应于每个子cu的块获得运动矢量以及每个子cu的参考索引。
[0099]
在第一步骤中,通过当前cu 1000的空域相邻块的运动信息确定参考图片1050和对应块。为了避免相邻块的重复扫描过程,使用当前cu 1000的merge候选列表中的第一merge候选。第一可用运动矢量及其相关联的参考索引被设置为时域矢量和运动源图片的索引。这样,与tmvp相比,可以更准确地识别对应块,其中对应块(有时称为并置块)总是在相对于当前cu的右下方或中心位置。
[0100]
在第二步骤中,通过向当前cu的坐标添加时域矢量,通过运动源图片1050中的时域矢量来识别子cu 1051的对应块。对于每个子cu,其对应块(例如,覆盖中心样点的最小运动网格)的运动信息用于推导子cu的运动信息。在识别了对应n
×
n块的运动信息之后,以与hevc的tmvp相同的方式将其转换为当前子cu的运动矢量和参考索引,其中运动缩放和其他过程适用。例如,解码器检查是否满足低延迟条件(例如,当前图片的所有参考图片的poc小于当前图片的poc)并且可能使用运动矢量mv
x
(例如,对应于参考图片列表x的运动矢量)来预测每个子cu的运动矢量mvy(例如,x等于0或1,y等于1-x)。
[0101]
2.1.2空时运动矢量预测(stmvp)的示例
[0102]
在stmvp方法中,按照光栅扫描顺序递归地推导子cu的运动矢量。图11示出了具有四个子块的一个cu和相邻块的示例。考虑包括四个4
×
4子cu a(1101)、b(1102)、c(1103)和d(1104)的8
×
8cu 1100。当前帧中的相邻4
×
4块被标记为a(1111)、b(1112)、c(1113)和d(1114)。
[0103]
子cu a的运动推导通过识别其两个空域邻居开始。第一邻居是子cu a(1101)的上侧的n
×
n块(块c 1113)。如果该块c(1113)不可用或者是帧内编码的,则检查子cu a(1101)的上侧的其他n
×
n块(从块c 1113开始,从左到右)。第二邻居是子cu a1101的左侧的块(块b 1112)。如果块b(1112)不可用或者是帧内编码的,则检查子cu a1101的左侧的其他块(从块b 1112开始,从上到下)。从每个列表的相邻块获得的运动信息被缩放到给定列表的第一参考帧。接下来,通过遵循与hevc中指定的tmvp推导的过程相同的过程来推导子块a1101的时域运动矢量预测值(temporal motion vector predictor,tmvp)。提取块d 1114处的并置块的运动信息并对应地缩放。最后,在检索和缩放运动信息之后,分别针对每个参考列表平均所有可用的运动矢量。指派平均的运动矢量为当前子cu的运动矢量。
[0104]
2.1.3子cu运动预测模式信令通知的示例
[0105]
在一些实施例中,启用子cu模式作为附加merge候选,并且不需要附加语法元素来信令通知该模式。将两个附加merge候选添加到每个cu的merge候选列表以表示atmvp模式和stmvp模式。在另一些实施例中,如果序列参数集指示启用了atmvp和stmvp,则使用多达七个merge候选。附加merge候选的编码逻辑与hm中的merge候选相同,这意味着,对于p条带或b条带中的每个cu,对于两个附加merge候选可能需要另外两个rd检查。在一些实施例中,例如jem,merge索引的所有二进制位通过cabac(基于上下文的自适应二进制算术编码)进行上下文编码。在另一些实施例中,例如,hevc,仅对第一个二进制位进行上下文编码,并且对剩余的二进制位进行上下文旁路编码。
[0106]
2.2自适应运动矢量差分辨率的示例
[0107]
在一些实施例中,当条带报头中的use_integer_mv_flag等于0时,以四分之一亮度样点为单位信令通知(pu的运动矢量和预测的运动矢量之间的)运动矢量差(motion vector difference,mvd)。在jem中,引入了局部自适应运动矢量分辨率(lamvr)。在jem中,mvd可以以四分之一亮度样点、整数亮度样点或四亮度样点为单位而编码。在编码单元(cu)级别控制mvd分辨率,并且对于具有至少一个非零mvd分量的每个cu有条件地信令通知mvd分辨率标志。
[0108]
对于具有至少一个非零mvd分量的cu,信令通知第一标志以指示在cu中是否使用四分之一亮度样点mv精度。当第一标志(等于1)指示不使用四分之一亮度样点mv精度时,信令通知另一标志以指示是使用整数亮度样点mv精度还是使用四亮度样点mv精度。
[0109]
当cu的第一mvd分辨率标志为零或不针对cu而编码(意味着cu中的所有mvd是零)时,四分之一亮度样点mv分辨率用于cu。当cu使用整数亮度样点mv精度或四亮度样点mv精度时,cu的amvp候选列表中的mvp被取整到对应精度。
[0110]
在编码器中,cu级别rd检查用于确定哪个mvd分辨率要用于cu。即,对于每个mvd分辨率执行三次cu级别rd检查。为了加快编码器速度,在jem中应用以下编码方案:
[0111]
‑‑
在具有常规四分之一亮度样点mvd分辨率的cu的rd检查期间,存储当前cu的运动信息(整数亮度样点精度)。存储的(在取整之后的)
[0112]
运动信息在具有整数亮度样点和4亮度样点mvd分辨率的相同cu的rd检查期间用作进一步小范围运动矢量细化的开始点,使得耗时的运动估计过程不重复三次。
[0113]
‑‑
有条件地调用具有4亮度样点mvd分辨率的cu的rd检查。对于cu,当整数亮度样点mvd分辨率的rd成本比四分之一亮度样点mvd分辨率的rd成本大得多时,跳过cu的4亮度
样点mvd分辨率的rd检查。
[0114]
2.3更高的运动矢量存储精度的示例
[0115]
在hevc中,运动矢量精度为四分之一像素(对于4:2:0视频,四分之一亮度样点和八分之一色度样点)。在jem中,内部运动矢量存储和merge候选的精度增加到1/16像素。更高的运动矢量精度(1/16像素)用于以跳过/merge模式编码的cu的运动补偿帧间预测。对于以常规amvp模式而编码的cu,使用整数像素或四分之一像素运动。
[0116]
具有与hevc运动补偿插值滤波器相同的滤波器长度和归一化因子的shvc上采样插值滤波器被用作附加分数像素位置的运动补偿插值滤波器。在jem中色度分量运动矢量精度为1/32样点,通过使用两个相邻的1/16像素分数位置的滤波器的平均来推导1/32像素分数位置的附加插值滤波器。
[0117]
2.4重叠块运动补偿(obmc)的示例
[0118]
在jem中,可以使用cu级别的语法来打开和关闭obmc。当在jem中使用obmc时,除了cu的右侧边界和底部边界之外,对所有运动补偿(motion compensation,mc)块边界执行obmc。此外,它还应用于亮度和色度分量两者。在jem中,mc块对应于编码块。当用子cu模式(包括子cu merge、仿射和fruc模式)编码cu时,cu的每个子块是mc块。为了以统一的方式处理cu边界,对于所有mc块边界以子块级别执行obmc,其中子块尺寸被设置为等于4
×
4,如图12a和图12b所示。
[0119]
图12a示出了cu/pu边界处的子块,并且阴影子块是obmc应用的位置。类似地,图12b示出了atmvp模式中的子pus。
[0120]
当obmc应用于当前子块时,除了当前运动矢量之外,四个连接的相邻子块的运动矢量(如果可用且与当前运动矢量不同)也用于推导当前子块的预测块。组合基于多个运动矢量的这些多个预测块以生成当前子块的最终预测信号。
[0121]
将基于相邻子块的运动矢量的预测块表示为pn,其中n指示相邻的上侧、下侧、左侧和右侧子块的索引,并且将基于当前子块的运动矢量的预测块表示为pc。当pn是基于包含与当前子块相同的运动信息的相邻子块的运动信息时,不从pn执行obmc。否则,将pn的每个样点添加到pc中的相同样点,即将pn的四行/列添加到pc。加权因子{1/4,1/8,1/16,1/32}用于pn,并且加权因子{3/4,7/8,15/16,31/32}用于pc。例外是小mc块(即,当编码块的高度或宽度等于4或cu是用子cu模式编码的时),对其仅将pn的两行/列添加到pc。在这种情况下,加权因子{1/4,1/8}用于pn,并且加权因子{3/4,7/8}用于pc。对于基于垂直(水平)相邻子块的运动矢量生成的pn,将pn的相同行(列)中的样点添加到具有相同加权因子的pc。
[0122]
在jem中,对于尺寸小于或等于256个亮度样点的cu,信令通知cu级别标志以指示是否对当前cu应用obmc。对于尺寸超过256个亮度样点或未使用amvp模式进行编码的cu,默认应用obmc。在编码器处,当将obmc应用于cu时,在运动估计阶段期间考虑其影响。由obmc使用顶部相邻块和左侧相邻块的运动信息形成的预测信号用于补偿当前cu的原始信号的顶部边界和左侧边界,然后应用常规运动估计处理。
[0123]
2.5局部光照补偿(lic)的示例
[0124]
lic是基于使用缩放因子a和偏移b的、用于光照变化的线性模型。并且针对每个帧间模式编码的编码单元(cu)自适应地启用或禁用它。
[0125]
当lic应用于cu时,采用最小平方误差方法来通过使用当前cu的相邻样点及其对
应参考样点来推导参数a和b。图13示出了用来推导ic算法的参数的相邻样点的示例。更具体地并且如图13所示,使用cu的子采样(2:1子采样)相邻样点和参考图片中的(由当前cu或子cu的运动信息识别的)对应样点。推导ic参数并将其分别应用于每个预测方向。
[0126]
当用merge模式编码cu时,以类似于merge模式中的运动信息复制的方式从相邻块复制lic标志;否则,向cu信令通知lic标志以指示是否应用lic。
[0127]
当针对图片启用lic时,需要附加cu级别rd检查以确定是否将lic应用于cu。当为cu启用lic时,分别针对整数像素运动搜索和分数像素运动搜索,使用去均值绝对差之和(mean-removed sum of absolute difference,mr-sad)和去均值绝对哈达玛变换差之和(mean-removed sum of absolute hadamard-transformed difference,mr-satd),而不是sad和satd。
[0128]
为了降低编码复杂度,在jem中应用以下编码方案:
[0129]
‑‑
当当前图片与其参考图片之间没有明显的光照变化时,对于整个图片禁用lic。为了识别这种情形,在编码器处计算当前图片和当前图片的每个参考图片的直方图。如果当前图片与当前图片的每个参考图片之间的直方图差小于给定阈值,则对当前图片禁用lic;否则,对当前图片启用lic。
[0130]
2.6仿射运动补偿预测的示例
[0131]
在hevc中,仅将平移运动模型应用于运动补偿预测(motion compensation prediction,mcp)。然而,相机和物体可以具有多种运动,例如放大/缩小、旋转、透视运动和/或其他不规则运动。另一方面,jem应用简化的仿射变换运动补偿预测。图14示出了块1400的由两个控制点运动矢量v0和v1描述的仿射运动场的示例。块1400的运动矢量场(mvf)可以通过以下等式描述:
[0132][0133]
如图14所示,(v
0x
,v
0y
)是左上角控制点的运动矢量,并且(v
1x
,v
1y
)是右上角控制点的运动矢量。为了简化运动补偿预测,可以应用基于子块的仿射变换预测。子块尺寸m
×
n如下推导:
[0134][0135]
这里,mvpre是运动矢量分数精度(例如,jem中的1/16)。(v
2x
,v
2y
)是左下角控制点的运动矢量,根据等式(1)而计算。如果需要,可以向下调整m和n,使其分别为w和h的除数。
[0136]
图15示出了块1500的每个子块的仿射mvf的示例。为了推导每个m
×
n子块的运动矢量,可以根据等式(1)计算每个子块的中心样点的运动矢量,并且将其取整到运动矢量分数精度(例如,jem中的1/16)。然后,可以应用运动补偿插值滤波器以用推导的运动矢量生成每个子块的预测。在mcp之后,对每个子块的高精度运动矢量进行取整,并且将其以与常规运动矢量相同的精度保存。
[0137]
2.6.1af_inter模式的实施例
[0138]
在jem中,存在两种仿射运动模式:af_inter模式和af_merge模式。对于宽度和高度都大于8的cu,可以应用af_inter模式。在比特流中信令通知cu级别中的仿射标志以指示是否使用af_inter模式。在af_inter模式中,使用相邻块来构建具有运动矢量对{(v0,v1)|v0={va,vb,vc},v1={v
d,
ve}}的候选列表。
[0139]
图16示出了af_inter模式中的块1600的运动矢量预测(mvp)的示例。如图16所示,从子块a、b或c的运动矢量选择v0。可以根据参考列表缩放来自相邻块的运动矢量。还可以根据相邻块的参考的图片顺序计数(poc)、当前cu的参考的poc和当前cu的poc之间的关系来缩放运动矢量。从相邻子块d和e选择v1的方法是类似的。如果候选列表的数量小于2,则由通过复制每个amvp候选而组成的运动矢量对填充列表。当候选列表大于2时,可以首先根据相邻运动矢量(例如,基于对候选(pair candidate)中的两个运动矢量的相似性)对候选进行排序。在一些实施方式中,保留前两个候选。在一些实施例中,速率失真(rate distortion,rd)成本检查用来确定选择哪个运动矢量对候选作为当前cu的控制点运动矢量预测(control point motion vector prediction,cpmvp)。可以在比特流中信令通知指示cpmvp在候选列表中的位置的索引。在确定当前仿射cu的cpmvp之后,应用仿射运动估计并找到控制点运动矢量(control point motion vector,cpmv)。然后在比特流中信令通知cpmv和cpmvp的差。
[0140]
在af_inter模式中,当使用4/6参数仿射模式时,需要2/3个控制点,因此需要针对这些控制点编码2/3个mvd,如图17a和图17b所示。在现有实施方式中[5],mv可以如下推导,例如,它从mvd0预测mvd1和mvd2。
[0141][0142][0143][0144]
本文中,mvdi和mv1是预测的运动矢量,左上方像素(i=0)、右上方像素(i=1)或左下方像素(i=2)的运动矢量差和运动矢量分别如图18b所示。在一些实施例,添加两个运动矢量(例如,mva(xa,ya)和mvb(xb,yb))等于两个分量各自地的和。例如,newmv=mva+mvb暗示newmv的两个分量被分别设置为(xa+xb)和(ya+yb)。
[0145]
2.6.2af_inter模式中的快速仿射me算法的示例
[0146]
在仿射模式的一些实施例中,需要联合确定2个或3个控制点的mv。直接联合搜索多个mv是计算复杂的。在示例中,提出一种快速仿射me算法[6],并且将其纳入vtm/bms。
[0147]
例如,针对4-参数仿射模型描述了快速仿射me算法,并且该思想可以扩展到6-参数仿射模型。
[0148][0149][0150]
用a’替换(a-1)使得运动矢量能够被重写为:
[0151][0152]
如果假设两个控制点(0,0)和(0,w)的运动矢量是已知的,则根据等式(5),仿射参数可以被推导为:
[0153][0154]
可以以矢量形式将运动矢量重写为:
[0155][0156]
本文中,p=(x,y)是像素位置。
[0157]
以及等式(8)
[0158][0159]
在一些实施例中,并且在编码器处,可以迭代地推导af_inter的mvd。将mvi(p)表示为在位置p的第i次迭代中推导的mv,并且将dmv
ci
表示为在第i次迭代中mvc的更新的增量。然后在第(i+1)次迭代中,
[0160][0161]
将pic
ref
表示为参考图片,并将pic
cur
表示为当前图片,并且表示q=p+mvi(p)。如果mse用作匹配准则,则需要最小化的函数可以写为:
[0162][0163]
如果假设足够小,则可以被重写为基于1阶泰勒展开的近似值,如下:
[0164][0165]
本文中,如果采用符号e
i+1
(p)=pic
cur
(p)-pic
ref
(q),则:
[0166][0167]
项可以通过将误差函数的导数设置为零,然后根据计算控制点(0,0)和(0,w)的增量mv而推导,如下:
[0168][0169][0170][0171][0172]
在一些实施例中,该mvd推导过程可以迭代n次,并且最终mvd可以如下计算:
[0173][0174][0175][0176][0177]
在前述实施方式中[5],从由mvd0表示的控制点(0,0)的增量mv预测由mvd1表示的控制点(0,w)的增量mv,引起对于mvd1,仅,仅被编码。
[0178]
2.6.3af_merge模式的实施例
[0179]
当在af_merge模式中应用cu时,其从有效的相邻重构块得到以仿射模式编码的第一块。图18a示出了当前cu 1800的候选块的选择顺序的示例。如图18a所示,选择顺序可以是从当前cu 1800的左侧(1801)、上侧(1802)、右上侧(1803)、左下角(1804)到左上侧(1805)。图18b示出了af_merge模式中的当前cu 1800的候选块的另一示例。如果相邻的左下角块1801以仿射模式而编码,如图18b所示,则推导包含子块1801的cu的左上角、右上角和左下角的运动矢量v2、v3和v4。基于v2、v3和v4计算当前cu 1800的左上角的运动矢量v0。可以相应地计算当前cu的右上侧的运动矢量v1。
[0180]
在根据等式(1)中的仿射运动模型计算当前cu v0和v1的cpmv之后,可以生成当前cu的mvf。为了识别当前cu是否以af_merge模式而编码,当存在至少一个相邻块以仿射模式而编码时,可以在比特流中信令通知仿射标志。
[0181]
2.7模式匹配的运动矢量推导(pmmvd)的示例
[0182]
pmmvd模式是基于帧速率上转换(fruc)方法的特殊merge模式。利用该模式,在解码器侧推导块的运动信息,而不是信令通知块的运动信息。
[0183]
当cu的merge标志为真时,可以向cu信令通知fruc标志。当fruc标志为假时,可以
信令通知merge索引并使用常规merge模式。当fruc标志为真时,可以信令通知附加fruc模式标志以指示将使用哪种方法(例如,双边匹配或模板匹配)来推导该块的运动信息。
[0184]
在编码器侧,关于是否对cu使用fruc merge模式的决定是基于对常规merge候选所做的rd成本选择。例如,通过使用rd成本选择来针对cu检查多个匹配模式(例如,双边匹配和模板匹配)。引起最小成本的匹配模式与其他cu模式进一步比较。如果fruc匹配模式是最有效的模式,则对于cu将fruc标志设置为真,并且使用相关的匹配模式。
[0185]
通常,fruc merge模式中的运动推导过程具有两个步骤:首先执行cu级别运动搜索,然后进行子cu级别运动细化。在cu级别处,基于双边匹配或模板匹配,为整个cu推导初始运动矢量。首先,生成mv候选的列表,并且选择引起最小匹配成本的候选作为进一步cu级别细化的起点。然后,在起点附近执行基于的双边匹配或模板匹配的局部搜索。将引起最小匹配成本的mv结果作为整个cu的mv。随后,以推导的cu运动矢量作为起点,在子cu级别处进一步细化运动信息。
[0186]
例如,对于w
×
hcu运动信息推导执行以下推导过程。在第一阶段,推导整个w
×
hcu的mv。在第二阶段,该cu进一步被划分为m
×
m子cu。m的值如等式(3)而计算,d是预定义的划分深度,在jem中默认设置为3。然后推导每个子cu的mv。
[0187][0188]
图19示出了在帧速率上转换(fruc)方法中使用的双边匹配的示例。通过在两个不同参考图片(1910、1911)中沿当前cu(1900)的运动轨迹找到两个块之间的最接近匹配,使用双边匹配来推导当前cu的运动信息。在连续运动轨迹的假设下,指向两个参考块的运动矢量mv0(1901)和mv1(1902)与当前图片和两个参考图片之间的时域距离(例如,td0(1903)和td1(1904))成比例。在一些实施例中,当当前图片1900在时域上在两个参考图片(1910、1911)之间并且从当前图片到两个参考图片的时域距离相同时,双边匹配成为基于镜像的双向mv。
[0189]
图20示出了在帧速率上转换(fruc)方法中使用的模板匹配的示例。模板匹配可以用来通过找到当前图片中的模板(例如,当前cu的顶部和/或左侧相邻块)与参考图片2010中的块(例如,与模板的尺寸相同)之间的最接近匹配来推导当前cu 2000的运动信息。除了前述fruc merge模式之外,模板匹配也可以应用于amvp模式。在jem和hevc两者中,amvp具有两个候选。利用模板匹配方法,新的候选可以被推导。如果模板匹配新推导的候选与第一现有amvp候选不同,则将其插入amvp候选列表的最开始处,然后将列表尺寸设置为二(例如,通过移除第二现有amvp候选)。当应用于amvp模式时,仅应用cu级别搜索。
[0190]
cu级别处的mv候选集可以包括以下:(1)如果当前cu处于amvp模式,则原始amvp候选,(2)所有merge候选,(3)插值mv场中的几个mv(稍后描述),以及顶部和左侧相邻运动矢量。
[0191]
当使用双边匹配时,可以将merge候选的每个有效mv用作输入,以生成假设双边匹配的情况下的mv对。例如,在参考列表a处,merge候选的一个有效mv是(mva,refa)。然后,在另一参考列表b中找到其配对的双边mv的参考图片refb,使得refa和refb在时域上位于当前图片的不同侧。如果这样的refb在参考列表b中不可用,则refb被确定为与refa不同的参考,并且其到当前图片的时域距离是列表b中的最小值。在确定refb之后,通过基于当前图片与
refa、refb之间的时域距离来缩放mva来推导mvb。
[0192]
在一些实施例中,来自插值mv场的四个mv也可以被添加到cu级别候选列表。更具体地,添加当前cu的位置(0,0)、(w/2,0)、(0,h/2)和(w/2,h/2)处的插值mv。当fruc应用于amvp模式中时,原始amvp候选也被添加到cu级别mv候选集。在一些实施例中,在cu级别处,amvp cu的15个mv和merge cu的13个mv可以被添加到候选列表。
[0193]
子cu级别处的mv候选集包括从cu级别搜索确定的mv,(2)顶部、左侧、左上角和右上角相邻mv,(3)来自参考图片的并置mv的缩放版本,(4)一个或多个atmvp候选(例如,多达四个),和(5)一个或多个stmvp候选(例如,多达四个)。来自参考图片的缩放mv如下推导。遍历两个列表中的参考图片。参考图片中的子cu的并置位置处的mv被缩放到起始cu级别mv的参考。atmvp和stmvp候选可以是前四个。在子cu级别处,一个或多个mv(例如,多达17个)被添加到候选列表。
[0194]
插值mv场的生成。在对帧进行编码之前,基于单边me为整个图片生成插值运动场。然后,运动场可以稍后用作cu级别或子cu级别mv候选。
[0195]
在一些实施例中,两个参考列表中的每个参考图片的运动场以4
×
4块级别遍历。图21示出了fruc方法中的单边运动估计(motion estimation,me)2100的示例。对于每个4
×
4块,如果与块相关联的运动通过当前图片中的4
×
4块并且块未被分配任何插值运动,则参考块的运动根据时域距离td0和td1(以与hevc中的tmvp的mv缩放的方式相同的方式)被缩放到当前图片,并且缩放的运动被分配给当前帧中的块。如果没有缩放的mv被分配给4
×
4块,则在插值运动场中将块的运动标记为不可用。
[0196]
插值和匹配成本。当运动矢量指向分数样点位置时,需要运动补偿插值。为了降低复杂度,可以将双线性插值而不是常规8抽头hevc插值用于双边匹配和模板匹配。
[0197]
匹配成本的计算在不同步骤处有点不同。当从cu级别处的候选集中选择候选时,匹配成本可以是双边匹配或模板匹配的绝对和差(absolute sum difference,sad)。在确定起始mv之后,子cu级别搜索处的双边匹配的匹配成本c如下计算:
[0198][0199]
这里,w是加权因子。在一些实施例中,w可以被经验主义地设置为4。mv和mvs分别指示当前mv和起始mv。sad仍可以用作子cu级别搜索处的模板匹配的匹配成本。
[0200]
在fruc模式中,仅通过使用亮度样点来推导mv。推导的运动将用于mc帧间预测的亮度和色度两者。在决定mv之后,对于亮度使用8抽头插值滤波器并且对于色度使用4抽头插值滤波器来执行最终mc。
[0201]
mv细化是基于模式的mv搜索,具有双边匹配成本或模板匹配成本的准则。在jem中,对于cu级别处和子cu级别处的mv细化,分别支持两种搜索模式—无限制中心偏置菱形搜索(unrestricted center-biased diamond search,ucbds)和自适应交叉搜索。对于cu和子cu级别mv细化两者,以四分之一亮度样点mv精度直接搜索mv,并且接着是八分之一亮度样点mv细化。将用于cu和子cu步骤的mv细化的搜索范围设置为等于8亮度样点。
[0202]
在双边匹配merge模式中,应用双向预测,因为cu的运动信息是基于两个不同的参考图片中沿当前cu的运动轨迹的两个块之间的最接近匹配推导的。在模板匹配merge模式中,编码器可以从来自列表0的单向预测、来自列表1的单向预测、或双向预测当中为cu选
择。选择可以如下基于模板匹配成本:
[0203]
如果costbi《=factor*min(cost0,cost1)
[0204]
则使用双向预测;
[0205]
否则,如果cost0《=cost1
[0206]
则使用来自列表0的单向预测;
[0207]
否则,
[0208]
使用来自列表1的单向预测;
[0209]
这里,cost0是列表0模板匹配的sad,cost1是列表1模板匹配的sad,并且costbi是双向预测模板匹配的sad。例如,当factor的值等于1.25时,这意味着选择过程偏向于双向预测。帧间预测方向选择可以应用于cu级别模板匹配过程。
[0210]
3.现有实施方式的缺点
[0211]
在一些现有实施方式中,当可以从仿射编码块的多个mv/mvd精度的集合选择mv/mv差(mvd)时,仍然不确定如何可以获得更准确的运动矢量。
[0212]
在其他现有实施方式中,mv/mvd精度信息在确定应用于仿射模式的amvr的整体编码增益时也起着重要作用,但是实现这一目标仍然不确定。
[0213]
4.用于具有amvr的仿射模式的mv预测值的示例方法
[0214]
本公开技术的实施例克服了现有实施方式的缺点,从而为视频编码提供了更高的编码效率。基于所公开的技术的、具有自适应运动矢量分辨率(amvr)的仿射模式的运动矢量预测值的推导和信令通知可以增强现有和未来视频编码标准,其在针对各种实施方式描述的以下示例中进行了阐述。下面提供的所公开的技术的示例解释了一般概念,并且不意味着被解释为限制性的。在示例中,除非明确地相反指示,否则可以组合在这些示例中描述的各种特征。
[0215]
在一些实施例中,当应用amvr时,以下示例可以应用于仿射模式或常规模式。这些示例假设精度prec(即,mv具有1/(2^prec)精度)用于在af_inter模式中编码mvd或在常规帧间模式中编码mvd。运动矢量预测值(例如,从相邻块mv继承)及其精度分别由mvpred(mvpred
x
,mvpredy)和predprec表示。
[0216]
示例1。提出了最终mv精度可以保持不变,即,与要存储的运动矢量的精度相同。
[0217]
(a)在一个示例中,最终mv精度可以被设置为1/16像素或1/8像素。
[0218]
(b)在一个示例中,可以首先缩放信令通知的mvd,然后将其添加到mvp以形成一个块的最终mv。
[0219]
示例2。可以首先修改从相邻块(例如,空域或时域)直接推导的mvp或默认mvp,然后将其添加到信令通知的mvd以形成(当前)块的最终mv。
[0220]
(a)可替代地,对于prec的不同值,是否应用以及如何应用mvp的修改可以不同。
[0221]
(b)在一个示例中,如果prec大于1(即,mvd具有分数精度),则相邻mv的精度不变,并且不执行缩放。
[0222]
(c)在一个示例中,如果prec等于1(即,mvd具有1像素精度),则需要缩放mv预测值(即,相邻块的mv)。
[0223]
(d)在一个示例中,如果prec小于1(即,mvd具有4像素精度),则需要缩放mv预测值(即,相邻块的mv)。
[0224]
示例3。在一个示例中,如果信令通知的mvd的精度与存储的mv的精度相同,则在仿射mv被重构之后不需要缩放,否则,以信令通知的mvd的精度来重构mv然后将其缩放到存储的mv的精度。
[0225]
示例4。在一个示例中,常规帧间模式和af_inter模式可以基于上述不同示例来选择实施方式。
[0226]
示例5。在一个示例中,可以用以下语义来信令通知指示仿射模式的mv/mvd精度的语法元素(或包括例如2个比特的多于一个比特的字段):
[0227]
(a)在一个示例中,等于0、1和2的语法元素分别指示1/4像素、1/16像素和1像素mv精度。
[0228]
(b)可替代地,在仿射模式中,等于0、1和2的语法元素分别指示1/4像素、1像素和1/16像素mv精度。
[0229]
(c)可替代地,在仿射模式中,等于0、1和2的语法元素分别指示1/16像素、1/4像素和1像素mv精度。
[0230]
示例6。在一个示例中,可以在sps、pps、vps、序列/图片/条带报头/片等中信令通知是否启用或禁用仿射模式的amvr。
[0231]
示例7。在一个示例中,可以在sps、pps、vps、序列/图片/条带报头/片等中信令通知允许的mv/mvd精度的指示。
[0232]
(a)可以针对每个编码树单元(coding tree unit,ctu)和/或每个区域信令通知选择的mvd精度的指示。
[0233]
(b)允许的mv/mvd精度的集合可以取决于当前块的编码模式(例如,仿射或非仿射)。
[0234]
(c)允许的mv/mvd精度的集合可以取决于条带类型/时域层索引/低延迟检查标志。
[0235]
(d)允许的mv/mvd精度的集合可以取决于当前或相邻块的块尺寸和/或块形状。
[0236]
(e)允许的mv/mvd精度的集合可以取决于要存储在解码图片缓冲器中的mv的精度。
[0237]
(i)在一个示例中,如果存储的mv是x像素,则允许的mv/mvd精度集合可以至少具有x像素。
[0238]
可以在例如可以在视频解码器或视频编码器处实施的方法2200和2300的下面描述的方法的上下文中并入上述示例。
[0239]
图22示出了用于视频解码的示例性方法的流程图。方法2200包括,在步骤2210处,对于当前视频块和当前视频块的比特流表示之间的转换,使用自适应地选择与当前视频块相关联的每个运动矢量的分辨率的编码工具来确定最终运动矢量,最终运动矢量的精度与当前视频块的存储的运动矢量的精度相同。
[0240]
方法2200包括,在步骤2220处,基于最终运动矢量来执行比特流表示和当前视频块之间的转换。
[0241]
图23示出了用于视频解码的另一示例性方法的流程图。方法2300包括,在步骤2310处,对于当前视频块和当前视频块的比特流表示之间的转换,使用自适应地选择与当前视频块相关联的每个运动矢量的分辨率的编码工具来确定最终运动矢量,当前视频块以
仿射模式而编码,并且比特流表示包括指示与当前视频块相关联的运动矢量或运动矢量差的精度的、包括多于一个比特的字段。
[0242]
方法2300包括,在步骤2320处,基于最终运动矢量来执行比特流表示和当前视频块之间的转换。
[0243]
在一些实施例中,可以实施以下技术方案:
[0244]
a1.一种用于视频处理的方法(例如,图22中的方法2200),包括:对于当前视频块和当前视频块的比特流表示之间的转换,使用自适应地选择与当前视频块相关联的每个运动矢量的分辨率的编码工具来确定(2210)最终运动矢量,其中最终运动矢量的精度与当前视频块的存储的运动矢量的精度相同;以及基于最终运动矢量来执行(2220)比特流表示和当前视频块之间的转换。
[0245]
a2.根据解决方案a1所述的方法,其中最终运动矢量的精度为1/16像素。
[0246]
a3.根据解决方案a1所述的方法,其中最终运动矢量的精度为1/8像素。
[0247]
a4.根据解决方案a1至a3中任一项所述的方法,其中最终运动矢量基于将运动矢量预测值(mvp)添加到运动矢量差(mvd)。
[0248]
a5.根据解决方案a4所述的方法,其中在将mvp添加到mvd之前,mvd被缩放。
[0249]
a6.根据解决方案a4所述的方法,其中mvp是从空域或时域上相邻的块推导的。
[0250]
a7.根据解决方案a4所述的方法,其中mvp是默认mvp。
[0251]
a8.根据解决方案a6或a7所述的方法,其中在将mvp添加到mvd之前,mvp被修改。
[0252]
a9.根据解决方案a7所述的方法,其中修改mvp是基于mvd的精度的。
[0253]
a10.根据解决方案a9所述的方法,进一步包括:在确定mvd的精度为分数时,绕过针对mvp的缩放操作。
[0254]
a11.根据解决方案a9所述的方法,进一步包括:在确定mvd的精度小于或等于1时,缩放mvp。
[0255]
a12.根据解决方案a4所述的方法,进一步包括:在确定mvd的精度与存储的运动矢量的精度相同时,绕过针对最终运动矢量的缩放操作。
[0256]
a13.根据解决方案a4所述的方法,进一步包括:在确定mvd的精度不同于存储的运动矢量的精度时,缩放最终运动矢量。
[0257]
a14.根据解决方案a1至a13中任一项所述的方法,其中当前视频块是以非仿射帧间模式或仿射帧间模式而编码的。
[0258]
a15.根据解决方案a1至a14中任一项所述的方法,其中自适应地选择每个运动矢量的分辨率的编码工具是自适应运动矢量分辨率(amvr)工具。
[0259]
a16.根据解决方案a1至a15中任一项所述的方法,其中该转换从比特流表示生成当前视频块。
[0260]
a17.根据解决方案a1至a15中任一项所述的方法,其中该转换从当前视频块生成比特流表示。
[0261]
a18.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中该指令在由处理器运行时使得处理器实施根据解决方案a1至a17中任一项所述的方法。
[0262]
a19.一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于执行根据解决方案a1至a17中任何一项所述的方法的程序代码。
[0263]
除了上述解决方案之外,在一些实施例中,还可以实施以下解决方案:
[0264]
b1.一种用于视频处理的方法,包括:对于当前视频块和当前视频块的比特流表示之间的转换,使用自适应地选择与当前视频块相关联的每个运动矢量的分辨率的编码工具来确定最终运动矢量,其中当前视频块是以仿射模式而编码的,并且其中比特流表示包括指示与当前视频块相关联的运动矢量或运动矢量差的精度的、包括多于一个比特的字段;以及基于最终运动矢量来执行比特流表示和当前视频块之间的转换。
[0265]
b2.根据解决方案b1所述的方法,其中字段的不同值指示运动矢量或运动矢量差的精度为1/4像素、1/16像素或1像素。
[0266]
b3.根据解决方案b2所述的方法,其中字段的值0、1或2分别对应于运动矢量的精度为1/4像素、1/16像素和1像素。
[0267]
b4.根据解决方案b2所述的方法,其中字段的值0、1或2分别对应于运动矢量的精度为1/4像素、1像素和1/16像素。
[0268]
b5.根据解决方案b2所述的方法,其中字段的值0、1或2分别对应于运动矢量的精度为1/16像素、1/4像素和1像素。
[0269]
b6.根据解决方案b1至b5中任一项所述的方法,其中仿射模式的编码工具是基于序列参数集(sps)、图片参数集(pps)、视频参数集(vps)、条带报头、片报头、序列报头或图片报头中的信令而启用的。
[0270]
b7.根据解决方案b1至b5中任一项所述的方法,其中仿射模式或非仿射模式的运动矢量或运动矢量差的精度的允许的值的集合是在序列参数集(sps)、图片参数集(pps)、视频参数集(vps)、条带报头、片报头、序列报头或图片报头中信令通知的。
[0271]
b8.根据解决方案b7所述的方法,其中允许的值的集合是针对当前块的每个编码树单元(ctu)而信令通知的。
[0272]
b9.根据解决方案b7所述的方法,其中允许的值的集合基于当前块的编码模式或维度。
[0273]
b10.根据解决方案b9所述的方法,其中编码模式是仿射模式或非仿射模式。
[0274]
b11.根据解决方案b7所述的方法,其中允许的值的集合基于条带类型、时域层索引或低延迟检查标志。
[0275]
b12.根据解决方案b7所述的方法,其中允许的值的集合基于存储在解码图片缓冲器中的运动矢量的精度。
[0276]
b13.根据解决方案b1至b12中任一项所述的方法,其中自适应地选择每个运动矢量的分辨率的编码工具是自适应运动矢量分辨率(amvr)工具。
[0277]
b14.根据解决方案b1至b13中任一项所述的方法,其中该转换从比特流表示生成当前视频块。
[0278]
b15.根据解决方案b1至b13中任一项所述的方法,其中该转换从当前视频块生成比特流表示。
[0279]
b16.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中该指令在由处理器运行时使得处理器实施根据解决方案b1至b15中任一项所述的方法。
[0280]
b17.一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于执行根据解决方案b1至b15中任何一项所述的方法的程序代码。
[0281]
5.所公开的技术的示例实施方式
[0282]
图24是视频处理装置2400的框图。装置2400可以用来实施本文描述的方法中的一种或多种。装置2400可以体现在智能电话、平板电脑、计算机、物联网(internet of things,iot)接收器等中。装置2400可以包括一个或多个处理器2402、一个或多个存储器2404、以及视频处理硬件2406。(多个)处理器2402可以被配置为实施本文档中描述的一种或多种方法(包括但不限于方法2200和2300)。存储器(多个存储器)2404可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件2406可以用来在硬件电路中实施本文档中描述的一些技术。
[0283]
在一些实施例中,视频编码方法可以使用在如关于图24描述的硬件平台上实施的装置而实施。
[0284]
图25是示出可以在其中实施本文公开的各种技术的示例视频处理系统2500的框图。各种实施方式可以包括系统2500的一些或所有组件。系统2500可以包括用于接收视频内容的输入2502。视频内容可以以例如8或10比特多分量像素值的原始或未压缩格式而接收,或者可以是压缩或编码格式。输入2502可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(passive optical network,pon)等的有线接口和诸如wi-fi或蜂窝接口的无线接口。
[0285]
系统2500可以包括可以实施本文档中描述的各种编码方法的编码组件2504。编码组件2504可以将来自输入2502的视频的平均比特率减小到编码组件2504的输出,以产生视频的编码表示。编码技术因此有时被称为视频压缩或视频转码技术。编码组件2504的输出可以被存储,或者经由如由组件2506表示的通信连接而发送。在输入2502处接收的视频的存储或通信传送的比特流(或编码)表示可以由组件2508用于生成像素值或传送到显示接口2510的可显示视频。从比特流表示生成用户可视视频的过程有时被称为视频解压缩。此外,虽然某些视频处理操作被称为“编码”操作或工具,但是将理解,编码工具或操作在编码器处被使用,并且反转编码结果的对应的解码工具或操作将由解码器执行。
[0286]
外围总线接口或显示接口的示例可以包括通用串行总线(universal serial bus,usb)、或高清晰度多媒体接口(high definition multimedia interface,hdmi)、或显示端口(displayport)等。存储接口的示例包括sata(serial advanced technology attachment,串行高级技术附件)、pci、ide接口等。本文档中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型电脑、智能电话、或能够执行数字数据处理和/或视频显示的其他设备。
[0287]
根据前述内容,将理解,本文已经出于说明的目的描述了本公开技术的特定实施例,但是在不脱离本发明的范围的情况下可以进行各种修改。因此,本公开技术不受除了所附权利要求之外的限制。
[0288]
本专利文档中描述的主题和功能操作的实施方式可以在各种系统、数字电子电路中、或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施方式可以实施为一个或多个计算机程序产品,即在有形且非暂时性计算机可读介质上编码的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置运行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器
可读传播信号的物质的组合、或它们中的一个或多个的组合。术语“数据处理单元”或“数据处理装置”包含用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。
[0289]
计算机程序(也已知为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言)编写,并且其可以以任何形式部署,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署以在一个计算机上或在位于一个站点上或跨多个站点分布并通过通信网络互连的多个计算机上运行。
[0290]
本说明书中描述的过程和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以实施为专用逻辑电路,例如,fpga(field programmable gate array,现场可编程门阵列)或asic(application specific integrated circuit,专用集成电路)。
[0291]
适合于运行计算机程序的处理器包括例如通用和专用微处理器、以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘),或可操作地耦合以从该一个或多个大容量存储设备接收数据或向该一个或多个大容量存储设备传递数据、或者从其接收数据并向其传递数据。然而,计算机不需要这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
[0292]
旨在将说明书与附图一起视为仅示例性的,其中示例性意味着示例。如本文所使用的,“或”的使用旨在包括“和/或”,除非上下文另外明确地指示。
[0293]
虽然本专利文档包含许多细节,但这些细节不应被解释为对任何发明或可能要求保护的范围的限制,而是作为特定于特定发明的特定实施例的特征的描述。在本专利文档中在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或以任何合适的子组合实施。此外,尽管特征可以在上面描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合排除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变化。
[0294]
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示的特定顺序或以先后顺序执行这样的操作或者执行所有示出的操作以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例
中都需要这样的分离。
[0295]
仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容来进行其他实施方式、增强和变化。

技术特征:
1.一种用于视频处理的方法,包括:对于当前视频块和所述当前视频块的比特流表示之间的转换,使用自适应地选择与所述当前视频块相关联的每个运动矢量的分辨率的编解码工具来确定最终运动矢量,并且其中所述比特流表示包括指示与所述当前视频块相关联的运动矢量或运动矢量差的精度的、包括多于一个比特的字段;以及基于最终运动矢量来执行所述比特流表示和所述当前视频块之间的转换,其中,所述运动矢量或运动矢量差的精度的允许的值的集合基于所述当前视频块的编解码模式,所述编解码模式是仿射模式或非仿射模式;其中,所述允许的值的集合还基于所述当前视频块的尺寸和形状。2.根据权利要求1所述的方法,其中,所述字段的不同值指示运动矢量或运动矢量差的精度为1/4像素、1/16像素或1像素,以及其中,所述字段的值0、1或2分别对应于运动矢量的精度为1/4像素、1/16像素和1像素,或者其中,所述字段的值0、1或2分别对应于运动矢量的精度为1/4像素、1像素和1/16像素,或者其中,所述字段的值0、1或2分别对应于运动矢量的精度为1/16像素、1/4像素和1像素。3.根据权利要求1或2所述的方法,其中,仿射模式的编解码工具是基于序列参数集(sps)、图片参数集(pps)、视频参数集(vps)、条带报头、片报头、序列报头或图片报头中的信令而启用的,以及其中,仿射模式或非仿射模式的运动矢量或运动矢量差的精度的允许的值的集合是在序列参数集(sps)、图片参数集(pps)、视频参数集(vps)、条带报头、片报头、序列报头或图片报头中信令通知的,以及其中,所述允许的值的集合是针对所述当前视频块的每个编解码树单元(ctu)而信令通知的,以及其中,所述允许的值的集合基于条带类型、时域层索引或低延迟检查标志,或者,所述允许的值的集合基于存储在解码图片缓冲器中的运动矢量的精度。4.根据权利要求1或2所述的方法,其中,自适应地选择每个运动矢量的分辨率的编解码工具是自适应运动矢量分辨率(amvr)工具,以及其中,所述转换从所述比特流表示生成所述当前视频块,或者,所述转换从所述当前视频块生成所述比特流表示。5.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中所述指令在由处理器运行时使得所述处理器实施根据权利要求1至4中任一项所述的方法。6.一种用于视频处理的方法,包括:对于当前视频块的信令通知的运动矢量差mvd,从精度集合中确定第一精度;基于所述第一精度,获取具有预定义的第二精度的运动矢量,其中所述第二精度与用于块预测的存储的运动矢量的精度相同,其中所述运动矢量基于将运动矢量预测值mvp添加到所述运动矢量差mvd;以及基于所述运动矢量,对所述当前视频块进行编解码。7.根据权利要求6所述的方法,其中,所述第二精度是1/16像素精度。
8.根据权利要求6所述的方法,其中,在将所述mvp添加到所述mvd之前,所述mvd被缩放。9.根据权利要求6所述的方法,其中,所述mvp基于所述第一精度在将所述mvp添加到所述mvd之前被修改。10.根据权利要求6所述的方法,其中,是否以及如何修改所述mvp是基于所述第一精度。11.根据权利要求10所述的方法,还包括:在确定所述第一精度比1像素精度粗糙或等于1像素精度时缩放所述mvp。12.根据权利要求6所述的方法,其中,所述mvp是从空域相邻块或时域相邻块中的至少一个推导的,或者是默认mvp。13.根据权利要求6所述的方法,其中,所述精度集合包括1/16像素精度、1/4像素精度和1像素精度。14.根据权利要求6所述的方法,其中,所述第一精度在比特流中被指示。15.根据权利要求6所述的方法,其中,所述当前视频块以仿射帧间模式进行编解码。16.根据权利要求6所述的方法,其中,所述第一精度是使用自适应运动矢量分辨率(amvr)工具来确定的。17.根据权利要求6所述的方法,其中,所述编解码包括将所述当前视频块编码为比特流表示。18.根据权利要求6所述的方法,其中,所述编解码包括从比特流表示解码所述当前视频块。19.一种用于视频处理的装置,包括处理器和其上具有指令的非暂时性存储器,其中所述指令在由所述处理器执行时使得所述处理器执行根据权利要求6-18中任一项所述的方法。20.一种存储指令的非暂时性计算机可读存储介质,所述指令使得处理器执行根据权利要求6-18中任一项所述的方法。

技术总结
描述了用于数字视频编码的设备、系统和方法,其包括具有自适应运动矢量分辨率的运动矢量精度指示的信令通知。用于视频处理的示例性方法包括:对于当前视频块和当前视频块的比特流表示之间的转换,使用自适应地选择与当前视频块相关联的每个运动矢量的分辨率的编码工具来确定最终运动矢量,其中最终运动矢量的精度与当前视频块的存储的运动矢量的精度相同;以及基于最终运动矢量来执行比特流表示和当前视频块之间的转换。前视频块之间的转换。前视频块之间的转换。


技术研发人员:刘鸿彬 张莉 张凯 王悦
受保护的技术使用者:字节跳动有限公司
技术研发日:2019.09.23
技术公布日:2023/8/28
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐