基于图片头中的信息启用dmvr
1.相关申请的交叉引用
2.根据适用的专利法和/或依据巴黎公约的规则,本技术旨在及时要求2019年3月3日提交的国际专利申请no.pct/cn2019/076788和2019年3月4日提交的国际专利申请no.pct/cn2019/076860的优先权和利益。国际专利申请no.pct/cn2019/076788和no.pct/cn2019/076860的全部公开通过引用而并入作为本技术的公开的一部分。
技术领域
3.本专利文档涉及视频编解码技术、设备和系统。
背景技术:
4.目前,正在努力提高当前视频编解码器技术的性能,以提供更好的压缩比或者提供允许更低复杂度或并行实施的视频编解码和解码方案。行业专家最近已经提出了几种新的视频编解码工具,并且目前正在进行测试以确定它们的有效性。
技术实现要素:
5.描述了与数字视频编解码相关,并且具体地,与运动矢量的管理相关的设备、系统和方法。所描述的方法可以被应用于现有的视频编解码标准(例如,高效视频编解码(hevc)或通用视频编解码)和未来的视频编解码标准或视频编解码器。
6.在一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:执行当前视频块和当前视频块的比特流表示之间的转换,其中,解码器运动信息的使用在比特流表示中的标志中被指示,使得标志的第一值指示解码器运动信息在该转换期间被启用,并且标志的第二值指示解码器运动信息在该转换期间被禁用。
7.在另一个代表性方面,所公开的技术可以用于提供另一种用于视频处理方法。该方法包括:执行当前视频块和当前视频块的比特流表示之间的转换,其中,解码器运动信息的使用在比特流表示中的标志中被指示,使得标志的第一值指示解码器运动信息在该转换期间被启用,并且标志的第二值指示解码器运动信息在该转换期间被禁用,以及响应于确定视频块的初始运动矢量具有子像素精度,跳过与从初始运动矢量和候选运动矢量差推导的临时运动矢量相关联的检查,其中,临时运动矢量具有整数像素精度或子像素精度。
8.在另一个代表性方面,所公开的技术可以用于提供另一种用于视频处理方法。该方法包括:基于信令通知的信息,为视频的第一块和视频的第一块的比特流表示之间的转换确定是否和/或如何应用解码器侧运动矢量细化(dmvr);以及基于该确定来执行该转换。
9.在另一个代表性方面,所公开的技术可以用于提供另一种用于视频处理方法。该方法包括:基于信令通知的信息,为视频的第一块和视频的第一块的比特流表示之间的转换确定是否和/或如何应用双向光流(bio);以及基于该确定来执行该转换。
10.在另一个代表性方面,所公开的技术可以用于提供另一种用于视频处理方法。该方法包括:基于以下中的至少一个,为视频的第一块和视频的第一块的比特流表示之间的
转换确定解码器侧运动矢量细化(dmvr)过程被启用还是禁用:与第一块相关联的一个或多个初始运动矢量和与第一块相关联的一个或多个参考图片,初始运动矢量包括在应用dmvr过程之前的运动矢量;以及基于该确定来执行该转换。
11.在另一个代表性方面,所公开的技术可以用于提供另一种用于视频处理方法。该方法包括:基于以下中的至少一个,为视频的第一块和视频的第一块的比特流表示之间的转换确定双向光流(bio)过程被启用还是禁用:与第一块相关联的一个或多个初始运动矢量和与第一块相关联的一个或多个参考图片,初始运动矢量包括在应用bio过程之前的运动矢量和/或在应用解码器侧运动矢量细化(dmvr)过程之前的解码运动矢量;以及基于该确定来执行该转换。
12.在另一个代表性方面,所公开的技术可以用于提供另一种用于视频处理方法。该方法包括:基于与视频的第一块相关联的初始运动矢量和一个或多个细化运动矢量之间的一个或多个运动矢量差,为视频的第一块和视频的第一块的比特流表示之间的转换确定双向光流(bio)过程被启用还是禁用,初始运动矢量包括在应用bio过程和/或应用dmvr过程之前的运动矢量,细化运动矢量包括在应用dmvr过程之后的运动矢量;以及基于该确定来执行该转换。
13.此外,在代表性方面,公开了一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器。该指令在由处理器执行时使得处理器实施所公开的方法中的任何一种或多种。
14.此外,公开了一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于执行所公开的方法中的任何一种或多种的程序代码。
15.在附图、说明书和权利要求中更详细地描述了所公开的技术的以上以及其他方面和特征。
附图说明
16.图1示出了构建merge候选列表的示例。
17.图2示出了空域候选的位置的示例。
18.图3示出了对其进行空域merge候选的冗余检查的候选对的示例。
19.图4a和图4b示出了基于当前块的尺寸和形状的第二预测单元(prediction unit,pu)的位置的示例。
20.图5示出了用于时域merge候选的运动矢量缩放的示例。
21.图6示出了时域merge候选的候选位置的示例。
22.图7示出了生成组合的双向预测merge候选的示例。
23.图8示出了构建运动矢量预测候选的示例。
24.图9示出了用于空域运动矢量候选的运动矢量缩放的示例。
25.图10示出了用于推导局部照明补偿参数邻近样点的示例。
26.图11a和图11b分别示出了与4参数仿射模型和6参数仿射模型有关的图示。
27.图12示出了每个子块的仿射运动矢量场的示例。
28.图13a和图13b分别示出了4参数仿射模型和6参数仿射模型的示例。
29.图14示出了用于继承的仿射候选的仿射帧间模式的运动矢量预测的示例。
30.图15示出了用于构建的仿射候选的仿射帧间模式的运动矢量预测的示例。
31.图16a和图16b示出了与仿射merge模式有关的图示。
32.图17示出了仿射merge模式的候选位置的示例。
33.图18示出了具有运动矢量差的merge(merge with motion vector differences,mmvd)模式搜索过程的示例。
34.图19示出了mmvd搜索点的示例。
35.图20示出了jem7中的解码器侧运动视频细化(decoder
‑
side motion video refinement,dmvr)的示例。
36.图21示出了与dmvr有关的运动矢量差(mvd)的示例。
37.图22示出了说明运动矢量的检查的示例。
38.图23示出了dmvr中的参考样点的示例。
39.图24是用于实施在本文档中描述的可视媒体解码或可视媒体编码技术的硬件平台的示例的框图。
40.图25示出了用于视频编解码的示例方法的流程图。
41.图26示出了用于视频编解码的示例方法的流程图。
42.图27示出了用于视频编解码的示例方法的流程图。
43.图28示出了用于视频编解码的示例方法的流程图。
44.图29示出了用于视频编解码的示例方法的流程图。
45.图30示出了用于视频编解码的示例方法的流程图。
具体实施方式
46.1.hevc/h.265中的视频编解码
47.视频编解码标准主要是通过众所周知的itu
‑
t和iso/iec标准的发展而演变的。itu
‑
t产生了h.261和h.263,iso/iec产生了mpeg
‑
1和mpeg
‑
4visual,并且这两个组织联合产生了h.262/mpeg
‑
2视频和264/mpeg
‑
4高级视频编解码(advanced video coding,avc)标准和h.265/hevc标准。自h.262以来,视频编解码标准基于混合视频编解码结构,其中利用了时域预测加变换编解码。为了探索hevc以外的未来的视频编解码技术,vceg和mpeg于2015年联合成立了联合视频探索小组(joint video exploration team,jvet)。此后,jvet采用了许多新方法,并将其放入到命名为联合探索模型(joint exploration model,jem)的参考软件中。2018年4月,建立了vceg(q6/16)和iso/iec jtc1 sc29/wg11(mpeg)之间的联合视频专家小组(joint video expert team,jvet)以致力于vvc标准,目标是与hevc相比的50%比特率降低。
48.vvc草案的最新版本(即,通用视频编解码(草案4))可以在以下处找到:http://phenix.it
‑
sudparis.eu/jvet/doc_end_user/documents/13_marrakesh/wg11/jvet
‑
m1001
‑
v5.zip。vvc的最新参考软件(称为vtm)可以在以下处找到:https://vcgit.hhi.fraunhofer.de/jvet/vvcsoftware_vtm/tree/vtm
‑
4.0。
49.2.1.hevc/h.265中的帧间预测
50.每个帧间预测pu具有一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。对两个参考图片列表之一的使用也可以使用inter_pred_idc进行信令
通知。运动矢量可以被显示地编解码为相对于预测值的增量。
51.当以跳过模式对cu进行编解码时,一个pu与cu相关联,并且没有显著的残差系数,没有编解码的运动矢量增量或参考图片索引。指定了merge模式,由此从包括空域和时域候选的邻近pu获得当前pu的运动参数。merge模式可以被应用于任何帧间预测pu,而不仅是针对跳过模式。merge模式的替代方案是运动参数的显式传输,其中,运动矢量(更确切地说,与运动矢量预测值相比的运动矢量差(motion vector difference,mvd))、每个参考图片列表的对应参考图片索引和参考图片列表使用按每pu被显式地信令通知。这样的模式在本公开中被命名为高级运动矢量预测(advanced motion vector prediction,amvp)。
52.当信令指示要使用两个参考图片列表之一时,从一个样点块产生pu。这被称为“单向预测”。单向预测适用于p条带和b条带两者。
53.当信令指示要使用两个参考图片列表时,从两个样点块产生pu。这被称为“双向预测”。双向预测仅适用于b条带。
54.以下文本提供了关于在hevc中指定的帧间预测模式的细节。描述将以merge模式开始。
55.2.1.1.参考图片列表
56.在hevc中,术语帧间预测用于表示从除当前解码的图片之外的参考图片的数据元素(例如,样点值或运动矢量)推导的预测。如在h.264/avc中,可以从多个参考图片预测图片。用于帧间预测的参考图片被组织在一个或多个参考图片列表中。参考索引标识列表中的哪个参考图片应该用于创建预测信号。
57.单个参考图片列表(列表0)用于p条带,并且两个参考图片列表(列表0和列表1)用于b条带。应该注意的是,列表0/1中包括的参考图片在捕捉/显示顺序方面可以根据过去和将来的图片。此外,当前图片可以在hevc版本4中的参考图片的列表上。
58.2.1.2.merge模式
59.2.1.2.1.merge模式的候选的推导
60.当使用merge模式预测pu时,从比特流中解析指向merge候选列表中的条目的索引,并将其用于检索运动信息。该列表的构建在hevc标准中被指定,并且可以根据以下步骤序列进行总结:
61.·
步骤1:初始候选推导
62.о步骤1.1:空域候选推导
63.о步骤1.2:空域候选的冗余检查
64.о步骤1.3:时域候选推导
65.·
步骤2:附加候选插入
66.о步骤2.1:创建双向预测候选
67.о步骤2.2:插入零运动候选
68.在图1中也示意性描绘了这些步骤。对于空域merge候选推导,从位于五个不同位置的候选当中选择最多四个merge候选。对于时域merge候选推导,在两个候选当中选择最多一个merge候选。由于在解码器处假设每个pu的候选数量是恒定的,所以在从步骤1获得的候选数量没有达到在条带头中信令通知的merge候选的最大数量(maxnummergecand)时生成附加候选。由于候选数量是恒定的,所以最佳merge候选的索引使用截断一元二值化
(truncated unary,tu)进行编码。如果cu的尺寸等于8,则当前cu的所有pu共享单个merge候选列表,这与2n
×
2n预测单元的merge候选列表相同。
69.在下文中,详细描述了与前述步骤相关联的操作。
70.2.1.2.2.空域候选推导
71.在空域merge候选的推导中,从位于图2中描绘的位置的候选当中选择最多四个merge候选。推导的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任一pu不可用(例如,因为它属于另一条带或片)或是帧内编解码的时,才考虑位置b2。在位置a1处的候选被添加之后,对剩余候选的添加进行冗余检查,该冗余检查确保具有相同运动信息的候选被排除在列表之外,从而提高编解码效率。为了降低计算复杂度,在提到的冗余检查中不考虑所有可能的候选对。相反,仅考虑在图3中用箭头链接的对,并且仅当用于冗余检查的候选没有相同的运动信息时,才向列表添加对应候选。重复运动信息的另一源是与不同于2n
×
2n的分区相关联的“第二pu”。作为示例,图4描绘了n
×
2n和2n
×
n的情况的第二pu。当当前pu被分割为n
×
2n时,位置a1处的候选不被考虑用于列表构建。事实上,通过添加该候选将导致两个预测单元具有相同的运动信息,这对于在编解码单元中仅具有一个pu是冗余的。类似地,当当前pu被分割为2n
×
n时,不考虑位置b1。
72.2.1.2.3.时域候选推导
73.在该步骤中,只有一个候选被添加到列表中。具体地,在该时域merge候选的推导中,基于属于与给定参考图片列表内的当前图片具有最小poc差的图片的并置pu来推导缩放的运动矢量。在条带头中显示地信令通知将用于并置pu的推导的参考图片列表。如图5中的虚线所示获得时域merge候选的缩放运动矢量,该运动矢量是使用poc距离tb和td从并置pu的运动矢量缩放的,其中tb被定义为当前图片的参考图片和当前图片之间的poc差,td被定义为并置图片的参考图片和并置图片之间的poc差。时域merge候选的参考图片索引被设置为零。在hevc规范中描述了缩放过程的实际实现。对于b条带,获得两个运动矢量,一个用于参考图片列表0,另一个用于参考图片列表1,并将其组合以形成双向预测merge候选。
74.如图6所描绘的,在属于参考帧的并置pu(y)中,在候选c0和c1之间选择时域候选的位置。如果位置c0处的pu不可用、是帧内编解码的或在当前编解码树单元(ctu,又名lcu,最大编解码单元)行之外,则使用位置c1。否则,在时域merge候选的推导中使用位置c0。
75.2.1.2.4.附加候选插入
76.除了空时merge候选以外,还有两种附加类型的merge候选:组合的双向预测merge候选和零merge候选。组合的双向预测merge候选通过利用空时merge候选而生成。组合的双向预测merge候选仅用于b条带。组合的双向预测候选通过将初始候选的第一参考图片列表运动参数与另一个的第二参考图片列表运动参数进行组合而生成。如果这两个元组提供不同的运动假设,它们将形成新的双向预测候选。作为示例,图7描绘了原始列表(在左侧)中的具有mvl0和refidxl0或mvl1和refidxl1的两个候选用于创建添加到最终列表(在右侧)的组合的双向预测merge候选的情况。有被考虑以生成这些附加merge候选的关于组合的许多规则。
77.零运动候选被插入以填充merge候选列表中的剩余条目,并因此达到maxnummergecand容量。这些候选具有零空域位移和参考图片索引,该参考图片索引从零开始,并且每当新的零运动候选被添加到该列表时就增加。最后,不对这些候选执行冗余检
查。
78.2.1.3.amvp
79.amvp利用运动矢量与邻近pu的空时相关性,其用于运动参数的显式传输。对于每个参考图片列表,通过首先检查左侧、上方时域邻近pu位置的可用性、移除冗余候选、以及添加零矢量以使候选列表为恒定长度,构建运动矢量候选列表。然后,编码器可以从候选列表选择最佳预测值,并发送指示所选择的候选的对应索引。类似于merge索引信令,最佳运动矢量候选的索引使用截断一元编码。在这种情况下,要编码的最大值是2(参见图8)。在以下章节中,提供了关于运动矢量预测候选的推导过程的细节。
80.2.1.3.1.amvp候选的推导
81.图8总结了运动矢量预测候选的推导过程。
82.在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选推导,基于位于如图2所描绘的五个不同位置的每个pu的运动矢量来最终推导两个运动矢量候选。
83.对于时域运动矢量候选推导,从两个候选选择一个运动矢量候选,这两个候选是基于两个不同的并置位置而推导的。在生成第一个空时候选列表之后,移除列表中的重复运动矢量候选。如果潜在候选的数量大于2,则从相关联的参考图片列表移除列表内参考图片索引大于1的运动矢量候选。如果空时运动矢量候选的数量小于两个,则将附加的零运动矢量候选添加到列表中。
84.2.1.3.2.空域运动矢量候选
85.在空域运动矢量候选的推导中,在五个潜在候选当中考虑最多两个候选,这五个潜在候选是从位于如图2所描绘的位置的pu推导的,这些位置与运动merge的位置相同。当前pu左侧的推导顺序被定义为a0、a1和缩放的a0、缩放的a1。当前pu的上方的推导顺序被定义为b0、b1、b2、缩放的b0、缩放的b1、缩放的b2。因此,对于每一侧,有四种情况可以用作运动矢量候选,其中两种情况没有使用空域缩放,两种情况使用空域缩放。这四种不同的情况总结如下:
86.·
无空域缩放
87.–
(1)相同的参考图片列表和相同的参考图片索引(相同的poc)
88.–
(2)不同的参考图片列表但相同的参考图片(相同的poc)
89.·
空域缩放
90.–
(3)相同的参考图片列表但不同的参考图片(不同的poc)
91.–
(4)不同的参考图片列表和不同的参考图片(不同的poc)
92.首先检查无空域缩放情况,随后检查空域缩放。不管参考图片列表如何,当邻近pu的参考图片和当前pu的参考图片之间的poc不同时,考虑空域缩放。如果左侧候选的所有pu都不可用或者是帧内编解码的,则允许对上方运动矢量进行缩放,以帮助左侧和上方mv候选的并行推导。否则,不允许对上方运动矢量进行空域缩放。
93.如图9所描绘的,在空域缩放过程中,以与时域缩放类似的方式缩放邻近pu的运动矢量。主要差别在于,参考图片列表和当前pu的索引作为输入被给出;实际缩放过程与时域缩放的缩放过程相同。
94.2.1.3.3.时域运动矢量候选
95.除了参考图片索引推导以外,用于推导时域merge候选的所有过程与用于推导空域运动矢量候选的过程相同(参见图6)。参考图片索引被信令通知给解码器。
96.2.2.jem中的局部照明补偿
97.局部照明补偿(lic)基于照明变化的线性模型,使用缩放因子a和偏移b。并且其对每个帧间模式编解码的编解码单元(cu)而自适应地启用或禁用。
98.当lic应用于cu时,采用最小二乘法通过使用当前cu的邻近样点及其对应的参考样点来推导参数a和b。更具体地,如图10所示,使用参考图片中的cu的子采样(2:1子采样)的邻近样点和对应样点(由当前cu或子cu的运动信息标识)。
99.2.2.1预测块的推导
100.分别对每个预测方向推导和应用lic参数。对于每个预测方向,利用解码的运动信息生成第一预测块,然后经由应用lic模型获得临时预测块。之后,利用两个临时预测块来推导最终预测块。
101.当以merge模式对cu进行编解码时,以类似于merge模式中的运动信息复制的方式,从邻近块复制lic标志;否则,lic标志被信令通知给cu以指示lic是否适用。
102.当对图片启用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,被分别用于整数像素运动细化和分数像素运动细化。
103.为了降低编码复杂度,在jem应用以下编码方案。
104.·
当当前图片与其参考图片之间没有明显的照明变化时,对整个图片禁用lic。为了标识这种情况,在编码器处计算当前图片和当前图片的每个参考图片的直方图。如果当前图片和当前图片的每个参考图片之间的直方图差小于给定阈值,则对当前图片禁用lic;否则,对当前图片启用lic。
105.2.3.vvc中的帧间预测方法
106.有几种用于帧间预测改进的新编解码工具,诸如用于信令通知mvd的自适应运动矢量差分辨率(adaptive motion vector difference resolution,amvr)、仿射预测模式、三角预测模式(triangular prediction mode,tpm)、高级tmvp(atmvp,又名sbtmvp)、广义双向预测(generalized bi
‑
prediction,gbi)、双向光流(bio)。
107.2.3.1.vvc中的编解码块结构
108.在vvc中,采用四叉树/二叉树/多类型树(qt/bt/tt)结构将图片分为正方形或矩形块。
109.除了qt/bt/tt以外,单独树(又名双重编解码树)在vvc中也用于i条带/片。在单独树的情况下,编解码块结构是针对亮度和色度分量而分开信令通知的。
110.2.3.2.自适应运动矢量差分辨率
111.在hevc中,当条带头中use_integer_mv_flag等于0时,以四分之一亮度样点为单位信令通知(pu的运动矢量和预测运动矢量之间的)运动矢量差(mvd)。在vvc中,引入了局部自适应运动矢量分辨率(amvr)。在vvc中,mvd可以以四分之一亮度样点、整数亮度样点或四亮度样点(即,1/4像素、1像素、4像素)为单位进行编解码。mvd分辨率在编解码单元(cu)
级别被控制,并且对于具有至少一个非零mvd分量的每个cu,有条件地信令通知mvd分辨率标志。
112.对于具有至少一个非零mvd分量的cu,信令通知第一标志以指示cu中是否使用四分之一亮度样点mv精度。当第一标志(等于1)指示没有使用四分之一亮度样点mv精度时,另一标志被信令通知以指示是使用整数亮度样点mv精度还是四亮度样点mv精度。
113.当cu的第一mvd分辨率标志为零,或未针对cu进行编解码(意味着cu中的所有mvd都为零)时,cu使用四分之一亮度样点mv分辨率。当cu使用整数亮度样点mv精度或四亮度样点mv精度时,cu的amvp候选列表中的mvp被取整到对应的精度。
114.2.3.3.仿射运动补偿预测
115.在hevc中,只有平移运动模型被应用于运动补偿预测(motion compensation prediction,mcp)。虽然在真实世界中,有许多种类的运动,例如放大/缩小、旋转、透视运动和其它不规则运动。在vvc中,使用4参数仿射模型和6参数仿射模型来应用简化的仿射变换运动补偿预测。如图11所示,块的仿射运动场由4参数仿射模型的两个控制点运动矢量(cpmv)和6参数仿射模型的3个cpmv描述。
116.块的运动矢量场(mvf)分别用等式(1)中的4参数仿射模型(其中4参数被定义为变量a、b、e和f)和等式(2)中的6参数仿射模型(其中4参数被定义为变量a、b、c、d、e和f)通过以下等式进行描述:
[0117][0118][0119]
其中(mv
h0
,mv
h0
)是左上角控制点的运动矢量,并且(mv
h1
,mv
h1
)是右上角控制点的运动矢量,并且(mv
h2
,mv
h2
)是左下角控制点的运动矢量,所有三个运动矢量被称为控制点运动矢量(cpmv),(x,y)表示代表点相对于当前块内的左上方样点的坐标,并且(mv
h
(x,y),mv
v
(x,y))是为位于(x,y)的样点推导的运动矢量。cp运动矢量可以被信令通知(如在仿射amvp模式下)或即时推导(如在仿射merge模式下)。w和h是当前块的宽度和高度。在实践中,除法是通过右移和取整运算实施的。在vtm中,代表点被定义为子块的中心位置,例如,当子块的左上角相对于当前块内的左上方样点的坐标为(xs,ys)时,代表点的坐标被定义为(xs 2,ys 2)。对于每个子块(即,在vtm中为4
×
4),利用代表点来推导整个子块的运动矢量。
[0120]
为了进一步简化运动补偿预测,应用了基于子块的仿射变换预测。为了推导每个m
×
n(在当前vvc中,m和n都被设置为4)子块的运动矢量,每个子块的中心样点的运动矢量(如图12所示)可以根据等式(1)和(2)进行计算,并被取整到1/16分数精度。然后,可以应用1/16像素的运动补偿插值滤波器来生成具有推导的运动矢量的每个子块的预测。仿射模式引入了1/16像素的插值滤波器。
[0121]
在mcp之后,每个子块的高精度运动矢量被取整并保存为与标准运动矢量相同的精度。
[0122]
2.3.3.1.仿射预测的信令通知
[0123]
类似于平移运动模型,由于仿射预测,也有两种模式用于信令通知边信息。它们是affine_inter和affine_merge模式。
[0124]
2.3.3.2.af_inter模式
[0125]
对于宽度和高度都大于8的cu,可以应用af_inter模式。在比特流中信令通知cu级别的仿射标志,以指示是否使用af_inter模式。
[0126]
在这种模式下,对于每个参考图片列表(列表0或列表1),仿射amvp候选列表以下列顺序用三种类型的仿射运动预测值进行构建,其中每个候选包括当前块的估计的cpmv。在编码器侧发现的最佳cpmv(诸如图15中的mv0mv1mv2)和估计的cpmv的差被信令通知。此外,进一步信令通知从其推导出估计的cpmv的仿射amvp候选的索引。
[0127]
1)继承的仿射运动预测值
[0128]
检查顺序与hevc amvp列表中的空域mvp的检查顺序类似。第一,从{a1,a0}中被仿射编解码并且具有与当前块中相同的参考图片的第一块推导左侧的继承的仿射运动预测值。第二,从{b1,b0,b2}中被仿射编解码并且具有与当前块中相同的参考图片的第一块推导上方的继承的仿射运动预测值。图14中描绘了这五个块a1、a0、b1、b0、b2。
[0129]
一旦发现邻近块以仿射模式而编解码,覆盖邻近块的编解码单元的cpmv用于推导当前块的cpmv的预测值。例如,如果a1以非仿射模式而编解码,而a0以4参数仿射模式而编解码,则左侧的继承的仿射mv预测值将从a0推导。在这种情况下,覆盖a0的cu的cpmv(如在图16b中由表示的左上方cpmv和由表示的右上方cpmv)用于推导当前块的估计的cpmv,由表示当前块的左上方(坐标为(x0,y0))、右上方(坐标为(x1,y1))和右下方位置(坐标为(x2,y2))。
[0130]
2)构建的仿射运动预测值
[0131]
如图15所示,构建的仿射运动预测值包含从具有相同参考图片的邻近帧间编解码块推导的控制点运动矢量(control
‑
point motion vector,cpmv)。如果当前仿射运动模型是4参数仿射,则cpmv的数量是2,否则如果当前仿射运动模型是6参数仿射,则cpmv的数量是3。左上方cpmv由组{a,b,c}中被帧间编解码并且具有与当前块中相同的参考图片的第一块处的mv推导。右上方cpmv由组{d,e}中被帧间编解码并且具有与当前块中相同的参考图片的第一块处的mv推导。左下方cpmv由组{f,g}中被帧间编解码并且具有与当前块中相同的参考图片的第一块处的mv推导。
[0132]
–
如果当前仿射运动模型是4参数仿射,则仅当和两者都建立时,才将构建的仿射运动预测值插入到候选列表中,即,和用作当前块的左上方(坐标为(x0,y0))、右上方(坐标为(x1,y1))位置的估计的cpmv。
[0133]
–
如果当前仿射运动模型是6参数仿射,则仅当和都建立时,才将构建的仿射运动预测值插入到候选列表中,即,和用作当前块的左上方(坐标为(x0,y0))、右上方(坐标为(x1,y1))和右下方(坐标为(x2,y2))位置的估计的cpmv。
[0134]
当将构建的仿射运动预测值插入到候选列表中时,不应用修剪过程。
[0135]
3)正常amvp运动预测值
[0136]
以下适用,直到仿射运动预测值的数量达到最大值。
[0137]
1)如果可用,通过将所有cpmv设置为等于来推导仿射运动预测值。
[0138]
2)如果可用,通过将所有cpmv设置为等于来推导仿射运动预测值。
[0139]
3)如果可用,通过将所有cpmv设置为等于来推导仿射运动预测值。
[0140]
4)如果可用,通过将所有cpmv设置为等于hevc tmvp来推导仿射运动预测值。
[0141]
5)通过将所有cpmv设置为零mv来推导仿射运动预测值。
[0142]
请注意,已经在构建的仿射运动预测值中被推导。
[0143]
在af_inter模式下,当使用4/6参数仿射模式时,使用2/3个控制点,因此需要为这些控制点编解码2/3mvd,如图13所示。提出如下推导mv,即,从mvd0预测mvd1和mvd2。
[0144][0145][0146][0147]
其中,mvd
i
和mv1分别是左上方像素(i=0)、右上方像素(i=1)或左下方像素(i=2)的预测运动矢量、运动矢量差和运动矢量,如图13b所示。请注意,两个运动矢量(例如,mva(xa,ya)和mvb(xb,yb))的相加等于两个分量的分开求和,即,newmv=mva mvb,并且newmv的两个分量被分别设置为(xa xb)和(ya yb)。
[0148]
2.3.3.3.af_merge模式
[0149]
当cu被应用于af_merge模式时,它从有效邻近重构块得到以仿射模式编解码的第一块。并且候选块的选择顺序是从左侧、上方、右上方、左下方到左上方,如图16a所示(由a、b、c、d、e按顺序表示)。例如,如果邻近左下方块如图16b中的a0所表示的在仿射模式下被编解码,则获取包含块a的邻近cu/pu的左上角、右上角和左下角的控制点(cp)运动矢量mv
0n
、mv
1n
和mv
2n
。并且基于mv
0n
、mv
1n
和mv
2n
计算当前cu/pu上的左上角/右上方/左下方的运动矢量mv
0c
、mv
1c
和mv
2c
(仅用于6参数仿射模型)。应当注意,在当前vtm中,位于左上角的子块(例如,vtm中的4
×
4块)存储mv0,如果当前块是仿射编解码的,则位于右上角的子块存储mv1。如果当前块以6参数仿射模型而编解码,则位于左下角的子块存储mv2;否则(用4参数仿射模型),lb存储mv2’。其它子模块存储用于mc的mv。
[0150]
在根据等式(1)和(2)中的简化的仿射运动模型推导当前cu的cpmv mv
0c
、mv
1c
和mv
2c
之后,生成当前cu的mvf。为了标识当前cu是否用af_merge模式编解码,当存在至少一个邻近块以仿射模式编解码时,在比特流中信令通知仿射标志。
[0151]
仿射merge候选列表用以下步骤构建:
[0152]
1)插入继承的仿射候选
[0153]
继承的仿射候选是指该候选是从其有效邻近仿射编解码块的仿射运动模型推导的。从邻近块的仿射运动模型中推导最大两个继承的仿射候选,并将其插入到候选列表中。对于左侧预测值,扫描顺序为{a0,a1};对于上方预测值,扫描顺序为{b0,b1,b2}。
[0154]
2)插入构建的仿射候选
[0155]
如果仿射merge候选列表中的候选的数量少于maxnumaffinecand(例如,5),则构建的仿射候选被插入到候选列表中。构建的仿射候选是指通过组合每个控制点的邻近运动信息来构建候选。
[0156]
a)控制点的运动信息首先从图17所示的指定空域邻居和时域邻居进行推导。cpk(k=1,2,3,4)表示第k个控制点。a0、
[0157]
a1、a2、b0、b1、b2和b3是用于预测cpk(k=1,2,3)的空域位置;t是预测cp4的时域位置。
[0158]
cp1、cp2、cp3和cp4的坐标分别是(0,0)、(w,0)、(h,0)和(w,h),其中w和h是当前块的宽度和高度。
[0159]
每个控制点的运动信息根据以下优先级顺序而获得:
[0160]
–
对于cp1,检查优先级为b2
‑
>b3
‑
>a2。如果b2可用的话,则使用b2。否则,如果b2可用,则使用b3。如果b2和b3都不可用,则使用a2。如果所有三个候选都不可用,则不能获得cp1的运动信息。
[0161]
–
对于cp2,检查优先级为b1
‑
>b0。
[0162]
–
对于cp3,检查优先级为a1
‑
>a0。
[0163]
–
对于cp4,使用t。
[0164]
b)其次,使用控制点的组合来构建仿射merge候选。
[0165]
i.需要三个控制点的运动信息来构建6参数仿射候选。三个控制点可从以下四种组合之一选择({cp1,cp2,cp4}、{cp1,cp2,cp3}、{cp2,cp3,cp4}、{cp1,cp3,cp4})。组合{cp1,cp2,cp3}、{cp2,cp3,cp4}、{cp1,cp3,cp4}将被转换为由左上方、右上方和左下方控制点表示的6参数运动模型。
[0166]
ii.需要两个控制点的运动信息来构建4参数仿射候选。两个控制点可以从两个组合({cp1,cp2}、{cp1,cp3})中的一个进行选择。该两个组合将被转换为由左上方和右上方控制点表示的4参数运动模型。
[0167]
iii.构建的仿射候选的组合按以下顺序被插入到候选列表中:{cp1,cp2,cp3}、{cp1,cp2,cp4}、{cp1,cp3,cp4}、{cp2,cp3,cp4}、{cp1,cp2}、{cp1,cp3}
[0168]
i.对于每个组合,检查每个cp的列表x的参考索引,如果它们都相同,则该组合对于列表x具有有效的cpmv。如果该组合对于列表0和列表1都不具有有效的cpmv,则该组合被标记为无效。否则,它是有效的,并且cpmv被放到子块merge列表中。
[0169]
3)用零运动矢量填充
[0170]
如果仿射merge候选列表中的候选的数量小于5,则具有零参考索引的零运动矢量被插入到候选列表中,直到列表满为止。
[0171]
更具体地,对于子块merge候选列表,mv被设置为(0,0)并且预测方向被设置为来自列表0的单向预测(对于p条带)和双向预测(对于b条带)的4参数merge候选。
[0172]
在vtm4中,仿射cu的cpmv被存储在单独的缓冲器中。存储的cpmv仅用于为最近编解码的cu在仿射merge模式和仿射amvp模式下生成继承的cpmvp。从cpmv继承的子块mv用于运动补偿、平移mv的merge/amvp列表的mv推导以及去方块。为了避免附加cpmv的图片线缓冲器,与来自正常邻近cu的继承不同地处理来自上方ctu的cu的仿射运动数据继承。如果用于仿射运动数据继承的候选cu在上方ctu线中,则代替cpmv,线缓冲器中的左下方和右下方
子块mv用于仿射mvp推导。这样,cpmv仅被存储在本地缓冲器中。如果候选cu是6参数仿射编解码的,则仿射模型被降级为4参数模型。
[0173]
2.3.4.具有运动矢量差的merge(mmvd)
[0174]
在jvet
‑
l0054中,给出了最终运动矢量表达(ultimate motion vector expression,umve,也称为mmvd)。umve与一种提出的运动矢量表达方法用于跳过或merge模式。
[0175]
图18示出了最终矢量表达(umve)搜索过程的示例。图19示出了umve搜索点的示例。在vvc中,umve重用与被包括在常规merge候选列表中的那些相同的merge候选。在这些merge候选当中,可以选择基本候选,并通过提出的运动矢量表达方法被进一步扩展。
[0176]
umve提供了一种新的运动矢量差(mvd)表示方法,其中,用起始点、运动幅度和运动方向来表示mvd。
[0177]
这种提出的技术按原样使用merge候选列表。但是只有默认merge类型(mrg_type_default_n)的候选才被考虑用于umve的扩展。
[0178]
基本候选索引定义了起始点。基本候选索引指示列表中的候选当中的最佳候选,如下所示。
[0179]
表1.基本候选idx
[0180]
基本候选idx0123第n mvp第1mvp第2mvp第3mvp第4mvp
[0181]
如果基本候选的数量等于1,则基本候选idx不被信令通知。
[0182]
距离索引是运动幅度信息。距离索引指示距起始点信息的预定义距离。预定义距离如下所示:
[0183]
表2.距离idx
[0184][0185]
方向索引表示mvd相对于起始点的方向。方向索引可以表示如下所示的四个方向。
[0186]
表3.方向idx
[0187]
方向idx00011011x轴
–
n/an/ay轴n/an/a
–
[0188]
在传送跳过标志或merge标志之后立即信令通知umve标志。如果跳过或merge标志为真(true),则解析umve标志。如果umve标志等于1,则解析umve语法。但如果不是1,则解析affine(仿射)标志。如果affine标志等于1,即是affine模式,但如果不是1,跳过/merge索引被解析为vtm的跳过/merge模式。
[0189]
不需要由于umve候选的附加线缓冲器。因为软件的跳过/merge候选被直接用作基本候选。使用输入的umve索引,在运动补偿之前立即决定mv的补充。没有必要为此保留长的线缓冲器。
[0190]
在当前的通用测试条件下,可以选择merge候选列表中的第一个或第二个merge候选作为基本候选。
[0191]
umve也被称为具有mv差的merge(mmvd)。
[0192]
此外,在条带头中向解码器信令通知标志tile_group_fpel_mmvd_enabled_flag,是否使用分数距离。当分数距离被禁用时,默认表中的距离全部乘以4,即使用距离表{1,2,4,8,16,32,64,128}像素。因为距离表的尺寸不变,所以距离索引的熵编解码不变。
[0193]
2.3.5.解码器侧运动矢量细化(dmvr)
[0194]
在双向预测操作中,对于一个块区域的预测,分别使用列表0的运动矢量(mv)和列表1的mv形成的两个预测块被组合以形成单个预测信号。在解码器侧运动矢量细化(dmvr)方法中,双向预测的两个运动矢量被进一步细化。
[0195]
2.3.5.1.jem中的dmvr
[0196]
在jem设计中,通过双边模板匹配过程来细化运动矢量。双边模板匹配应用于解码器中,以在双边模板和参考图片中的重构样点之间执行基于失真的搜索,以便在没有附加运动信息的传输的情况下获得细化的mv值。图20中描绘了一个示例。双边模板被生成作为分别来自列表0的初始mv0和列表1的初始mv1的两个预测块的加权组合(即平均),如图20所示。模板匹配操作包含计算生成的模板和参考图片中的样点区域(初始预测块周围)之间的代价度量。对于两个参考图片中的每一个,产生最小模板代价的mv被认为是该列表的更新的mv,以替换原始mv。在jem中,为每个列表搜索九个mv候选。九个mv候选包括原始mv和在水平方向或垂直方向或两个方向上距原始mv一个亮度样点偏移的8个周围mv。最后,如图20所示的两个新的mv(即mv0
′
和mv1
′
)用于生成最终双向预测结果。绝对差之和(sad)用作代价度量。请注意,当计算由一个周围mv生成的预测块的代价时,实际上使用取整的mv(到整数像素)来获得预测块,而不是实际的mv。
[0197]
2.3.5.2.vvc中的dmvr
[0198]
对于vvc中的dmvr,假设在列表0和列表1之间镜像的mvd,如图21所示,并且执行双边匹配以细化mv,即,在几个mvd候选当中找到最佳mvd。以mvl0(l0x,l0y)和mvl1(l1x,l1y)表示两个参考图片列表的mv。列表0的由(mvdx,mvdy)表示的能够最小化代价函数(例如,sad)的mvd被定义为最佳mvd。对于sad函数,它被定义为列表0的参考块和列表1的参考块之间的sad,其中列表0的参考块是用列表0参考图像中的运动矢量(l0x mvdx,l0y mvdy)推导的,列表1的参考块是用列表1参考图像中的运动矢量(l1x
‑
mvdx,l1y
‑
mvdy)推导的。
[0199]
运动矢量细化过程可以迭代两次。在每次迭代中,可以以两步检查最多6个mvd(具有整数像素精度),如图22所示。在第一步骤中,检查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决定如下:
[0200]
mvdx=
‑
1;
[0201]
mvdy=
‑
1;
[0202]
if(sad(1,0)<sad(
‑
1,0))
[0203]
mvdx=1;
[0204]
if(sad(0,1)<sad(0,
‑
1))
[0205]
mvdy=1;
[0206]
在第一次迭代中,起始点是信令通知的mv,并且在第二次迭代中,起始点是信令通知的mv加上第一次迭代中的所选择的最佳mvd。dmvr仅在一个参考图片是前一图片而另一个参考图片是后一图片并且两个参考图片具有到当前图片的相同的图片顺序计数距离时适用。
[0207]
此外,如上所述,vvc中的dmvr首先执行整数mvd细化。这是第一步骤。之后,有条件地执行对分数精度的mvd细化以进一步细化运动矢量。这是第二步骤。是否执行第二步骤的条件基于当前迭代之后的mvd是否为零mv。如果它为零mv(mv的垂直分量和水平分量为0),则将执行第二步骤。
[0208]
分数mvd细化的细节如下给出。应该注意,mvd表示在运动补偿中使用的初始运动矢量和最终运动矢量之间的差。
[0209]
使用整数距离位置和在这些位置上评估的代价来拟合参数误差表面,然后将其用于确定1/16
th
像素精确子像素偏移。
[0210]
所提出的方法总结如下:
[0211]
1.仅当中心位置是给定迭代中的最佳代价位置时,才计算参数误差表面拟合。
[0212]
2.中心位置代价和距中心的(
‑
1,0)、(0,
‑
1)、(1,0)和(0,1)位置处的代价用于拟合形状的2
‑
d抛物线误差表面等式
[0213]
e(x,y)=a(x
‑
x0)2 b(y
‑
y0)2 c
[0214]
其中(x0,y0)对应于最少代价的位置,并且c对应于最小代价值。通过求解5个未知数中的5个等式,(x0,y0)被计算为:
[0215]
x0=(e(
‑
1,0)
‑
e(1,0))/(2(e(
‑
1,0) e(1,0)
‑
2e(0,0)))
[0216]
y0=(e(0,
‑
1)
‑
e(0,1))/(2((e(0,
‑
1) e(0,1)
‑
2e(0,0)))
[0217]
(x0,y0)可以通过调整执行除法的精度(即,计算多少比特的商)而计算到任何所需的子像素精度。对于1/16
th
像素精度,仅需计算商的绝对值中的4比特,这使其适合于每个cu关联的2个除法的基于快速移位减法的实施。
[0218]
3.将计算出的(x0,y0)加到整数距离细化mv,以得到子像素精确的细化增量mv。
[0219]
推导的分数运动矢量的幅度被约束为小于或等于半像素。
[0220]
为了进一步简化dmvr的过程,jvet
‑
m0147提出了对jem中的设计的几个改变。更具体地,vtm
‑
4.0采用的dmvr设计(即将发布)具有以下主要特征:
[0221]
·
当列表0和列表1之间的(0,0)位置sad小于阈值时的提前终止。
[0222]
·
当列表0和列表1之间的sad对于某个位置为零时的提前终止。
[0223]
·
dmvr的块尺寸:w*h>=64&&h>=8,其中w和h是块的宽度和高度。
[0224]
·
将cu划分为cu尺寸>16*16的dmvr的16
×
16子块的倍数。如果仅cu的宽度或高度大于16,它仅在垂直或水平方向上被划分。
[0225]
·
参考块尺寸(w 7)*(h 7)(对于亮度)。
[0226]
·
25点基于sad的整数像素搜索(即(
‑
2)细化搜索范围,单阶段(stage))
[0227]
·
基于双线性插值的dmvr。
[0228]
·
基于“参数误差表面等式”的子像素细化。仅当最小sad代价不等于零,并且在最后一次mv细化迭代中最佳mvd为(0,0)时,才执行此过程。
[0229]
·
亮度/色度mc w/参考块填充(如果需要)。
[0230]
●
仅用于mc和tmvp的细化的mv。
[0231]
2.3.5.2.1dmvr的使用
[0232]
当以下条件都为真时,可以启用dmvr:
[0233]
–
sps中的dmvr启用标志(即,sps_dmvr_enabled_flag)等于1
[0234]
–
tpm标志、帧间仿射标志和子块merge标志(atmvp或仿射merge)、mmvd标志都等于0
[0235]
–
merge标志等于1
[0236]
–
当前块是双向预测的,并且当前图片和列表1中的参考图片之间的poc距离等于列表0中的参考图片和当前图片之间的poc距离
[0237]
–
当前cu的高度大于或等于8
[0238]
–
亮度样点数(cu宽度*高度)大于或等于64
[0239]
2.3.5.2.2.dmvr中的参考样点
[0240]
对于尺寸为w*h的块,假设最大允许mvd值为 /
‑
offset(例如,在vvc中为2),并且滤波器尺寸为filtersize(例如,在vvc中,对于亮度为8,以及对于色度为4),然后可以使用(w 2*offset filtersize
–
1)*(h 2*offset filtersize
–
1)个参考样点。为了减少内存带宽,仅提取中心(w filtersize
–
1)*(h filtersize
–
1)个参考样点,并且通过重复所提取的样点的边界来生成其他像素。8x8块的示例如图23所示。
[0241]
在运动矢量细化期间,使用这些参考样点来执行双线性运动补偿。同时,还使用这些参考样点来执行最终运动补偿。
[0242]
2.3.6.组合的帧内和帧间预测
[0243]
在jvet
‑
l0100中,提出了多假设预测,其中组合的帧内和帧间预测是生成多假设的一种方式。
[0244]
当应用多假设预测来改进帧内模式时,多假设预测组合一个帧内预测和一个merge索引的预测。在merge cu中,当标志为真时,为merge模式信令通知一个标志,以从帧内候选列表选择帧内模式。对于亮度分量,帧内候选列表从包括dc、平面、水平和垂直模式的4种帧内预测模式推导,并且取决于块形状,帧内候选列表的尺寸可以是3或4。当cu宽度大于cu高度的两倍时,水平模式不包括帧内模式列表,当cu高度大于cu宽度的两倍时,从帧内模式列表移除垂直模式。使用加权平均来组合由帧内模式索引选择的一个帧内预测模式和由merge索引选择的一个merge索引预测。对于色度分量,总是应用dm而不需要额外的信令。用于组合预测的权重描述如下。当选择了dc或平面模式,或者cb宽度或高度小于4时,将应用相等权重。对于cb宽度和高度大于或等于4的那些cb,当选择水平/垂直模式时,首先将一个cb垂直/水平地划分为四个等面积区域。每个权重集(表示为(w_intra
i
,w_inter
i
),其中i是从1到4并且(w_intra1,w_inter1)=(6,2)、(w_intra2,w_inter2)=(5,3)、(w_intra3,w_inter3)=(3,5)以及(w_intra4,w_inter4)=(2,6))将被应用于对应的区域。(w_intra1,w_inter1)用于最靠近参考样点的区域,而(w_intra4,w_inter4)用于最远离参考样点的区域。然后,可以通过将两个加权预测相加并右移3位来计算组合预测。此外,可以保存预测值的帧内假设的帧内预测模式,以供随后的邻近cu参考。
[0245]
3.现有实施方式的缺点
[0246]
在对运动矢量进行细化期间,dmvr和bio不涉及原始信号,这可能产生具有不准确的运动信息的编解码块。此外,dmvr和bio有时采用运动细化之后的分数运动矢量,而屏幕视频通常具有整数运动矢量,这使得当前运动信息更加不准确,并且使得编解码性能更差。
[0247]
4.示例技术和实施例
[0248]
下面描述的详细实施例应该被认为是解释一般概念的示例。这些实施例不应该被狭义地解释。此外,这些实施例可以以任何方式被组合。
[0249]
除了下面提到的dmvr和bio之外,下面描述的方法还可以适用于其他解码器运动信息推导技术。
[0250]
1.是否和/或如何对预测单元/编解码块/区域应用dmvr可以取决于诸如在序列(例如,sps)/条带(例如,条带头)/片组(例如,片组头)/图片级别(例如,图片头)/块级别(例如,ctu或cu)中信令通知的消息(例如,标志)。
[0251]
a.在一个示例中,可以信令通知标志以指示dmvr是否被启用。此外,可替代地,当这样的标志指示dmvr被禁用时,dmvr的过程被跳过,并且dmvr的使用被推断为禁用。
[0252]
b.在一个示例中,指示是否和/或如何应用mmvd的信令通知的消息也可以控制其他技术(诸如dmvr)的使用。
[0253]
i.例如,指示在具有运动矢量差的merge(mmvd,又名umve)中是否允许分数运动矢量差(mvd)的标志(例如,tile_group_fpel_mmvd_enabled_flag)也可以指示是否和/或如何应用dmvr。
[0254]
c.在一个示例中,如果tile_group_fpel_mmvd_enabled_flag指示分数mvd不被允许用于mmvd,则可以跳过dmvr的过程。
[0255]
2.是否和/或如何对预测单元/编解码块/区域应用bio可以取决于诸如在序列(例如,sps)/条带(例如,条带头)/片组(例如,片组头)/图片级别(例如,图片头)/块级别(例如,ctu或cu)中信令通知的消息(例如,标志)。
[0256]
a.在一个示例中,信令通知标志以指示bio被启用。此外,可替代地,当这样的标志指示bio被禁用时,bio的过程被跳过,并且bio被推断为禁用。
[0257]
b.在一个示例中,指示是否和/或如何应用mmvd的信令通知的消息也可以控制其他技术(诸如bio技术)的使用。
[0258]
1.例如,指示在具有运动矢量差的merge(mmvd,又名umve)中是否允许分数运动矢量差(mvd)的标志(例如,tile_group_fpel_mmvd_enabled_flag)也可以指示是否和/或如何应用bio。
[0259]
c.在一个示例中,如果tile_group_fpel_mmvd_enabled_flag指示分数mvd不被允许用于mmvd,则可以跳过bio的过程。
[0260]
3.可以基于初始运动矢量(即,在应用dmvr之前的解码运动矢量)和/或参考图片来确定启用或禁用预测单元/编解码块/区域的dmvr过程。
[0261]
a.在一个示例中,当两个初始运动矢量都是整数运动矢量时,可以禁用dmvr的使用。
[0262]
b.在一个示例中,当参考图片不指向某些图片时,诸如当参考图片索引不等于0时,dmvr总是被禁用。
[0263]
c.在一个示例中,当初始运动矢量的幅度大于t时,可以禁用dmvr的使用。
[0264]
i.在一个示例中,“一个运动矢量的幅度大于t”的定义是mv.x>t和/或mv.y>t,其中分别地,mv.x是运动矢量的水平分量的幅度并且mv.y是当前运动矢量的垂直分量的幅度。
[0265]
ii.在一个示例中,“一个运动矢量的幅度大于t”的定义是mv.x和mv.y的总和大于t,其中分别地,mv.x是运动矢量的水平分量的幅度并且mv.y是当前运动矢量的垂直分量的幅度。
[0266]
iii.此外,可替代地,当初始运动矢量的幅度大于t或/和初始运动矢量是整数运动矢量时,可以禁用dmvr的使用。t可以基于:
[0267]
a)当前块大小
[0268]
b)当前量化参数
[0269]
c)初始运动矢量的幅度
[0270]
d)邻近块的运动矢量的幅度
[0271]
e)可替代地,可以从编码器向解码器信令通知t。
[0272]
4.可以基于初始运动矢量(即,在应用bio之前的运动矢量)和/或参考图片来确定启用或禁用预测单元/编解码块/区域的bio过程。
[0273]
a.在一个示例中,当两个初始运动矢量都是整数运动矢量时,可以禁用bio的使用。
[0274]
b.可替代地,可以基于初始运动矢量和细化运动矢量之间的运动矢量差来确定启用或禁用预测单元/编解码块/区域的bio过程。在一个示例中,当这样的运动矢量差为子像素时,预测样点/重构样点的更新被跳过。
[0275]
c.在一个示例中,当参考图片不指向某些图片时,诸如当参考图片索引不等于0时,bio总是被禁用。
[0276]
d.在一个示例中,当初始运动矢量的幅度大于t时,可以禁用bio的使用。
[0277]
i.在一个示例中,“一个运动矢量的幅度大于t”的定义是mv.x>t和/或mv.y>t,其中分别地,mv.x是运动矢量的水平分量的幅度并且mv.y是当前运动矢量的垂直分量的幅度。
[0278]
ii.在一个示例中,“一个运动矢量的幅度大于t”的定义是mv.x和mv.y的总和大于t,其中分别地,mv.x是运动矢量的水平分量的幅度并且mv.y是当前运动矢量的垂直分量的幅度。
[0279]
iii.此外,可替代地,当初始运动矢量的幅度大于t或/和初始运动矢量是整数运动矢量时,可以禁用bio的使用。t可以基于:
[0280]
a)当前块大小
[0281]
b)当前量化参数
[0282]
c)初始运动矢量的幅度
[0283]
d)邻近块的运动矢量的幅度
[0284]
e)可替代地,可以从编码器向解码器信令通知t。
[0285]
5.可以基于诸如在序列(例如,sps)/条带(例如,条带头)/片组(例如,片组头)/图片级别(例如,图片头)/块级别(例如,ctu或cu)中信令通知的消息(例如,标志)来确定对预测单元/编解码块/区域启用或禁用dmvr中的第二步骤。
[0286]
a.在一个示例中,信令通知标志以指示是否应用dmvr中的第二步骤。
[0287]
i.在一个示例中,当这样的标志
[0288]
(tile_group_subpixel_refinement_enabled_flag等)指示dmvr中的第二步骤被禁用时,dmvr中的分数细化的过程被跳过。
[0289]
b.在一个示例中,指示启用或禁用dmvr中的第二步骤的信令通知的标志也可以指示与dmvr中的第二步骤不相关的信息。
[0290]
i.在一个示例中,指示在具有运动矢量差的merge(mmvd,又名umve)中是否允许分数运动矢量差(mvd)的标志(例如,tile_group_fpel_mmvd_enabled_flag)也可以指示是否应用dmvr中的第二步骤。
[0291]
ii.在一个示例中,如果tile_group_fpel_mmvd_enabled_flag指示分数mvd被禁用,则dmvr中的第二步骤被跳过。
[0292]
iii.在一个示例中,指示在具有运动矢量差的merge(mmvd,又名umve)中是否允许分数运动矢量差(mvd)的标志(例如,tile_group_fpel_mmvd_enabled_flag)也可以指示是否应用dmvr中的第二步骤。
[0293]
6.可以基于dmvr中的整数运动细化的结果来确定对预测单元/编解码块/区域启用或禁用dmvr中的第二步骤。
[0294]
c.在一个示例中,当在dmvr中的整数运动细化之后没有改变初始运动矢量时,可以禁用dmvr中的第二步骤的使用。
[0295]
d.在一个示例中,可以允许分数运动矢量的幅度大于半像素,其中可以将分数运动矢量的幅度约束为小于或等于t像素。
[0296]
i.在一个示例中,t>=0,并且t是浮点数。(例如,t=1.5)。
[0297]
ii.在一个示例中,“一个运动矢量的幅度小于t”的定义是mv.x<t和/或mv.y<t,其中分别地,mv.x是运动矢量的水平分量的幅度并且mv.y是当前运动矢量的垂直分量的幅度。
[0298]
iii.在一个示例中,“一个运动矢量的幅度小于t”的定义是mv.x和mv.y的总和小于t,其中分别地,mv.x是运动矢量的水平分量的幅度并且mv.y是当前运动矢量的垂直分量的幅度。
[0299]
iv.此外,可替代地,当分数运动矢量的幅度小于t时,可以允许分数运动矢量的幅度大于半像素。t可以基于:
[0300]
a)当前块大小
[0301]
b)当前量化参数
[0302]
c)初始运动矢量的幅度
[0303]
d)邻近块的运动矢量的幅度
[0304]
e)可替代地,可以从编码器向解码器信令通知t。
[0305]
e.在一个示例中,当初始运动矢量和在dmvr中的整数运动细化中获得的运动矢量之间的距离小于t时,可以禁用dmvr中的第二步骤。
[0306]
i.在一个示例中,“一个运动矢量的幅度小于t”的定义是mv.x<t和/或mv.y<t,其中分别地,mv.x是运动矢量的水平分量的幅度并且mv.y是当前运动矢量的垂直分量的幅度。
[0307]
ii.在一个示例中,“一个运动矢量的幅度小于t”的定义是mv.x和mv.y的总和小于t,其中分别地,mv.x是运动矢量的水平分量的幅度并且mv.y是当前运动矢量的垂直分量的幅度。
[0308]
iii.此外,可替代地,当初始运动矢量和在dmvr中的整数运动细化中获得的运动矢量之间的距离小于t时,可以禁用dmvr中的第二步骤。t可以基于:
[0309]
a)当前块大小
[0310]
b)当前量化参数
[0311]
c)初始运动矢量的幅度
[0312]
d)邻近块的运动矢量的幅度
[0313]
e)可替代地,可以从编码器向解码器信令通知t。
[0314]
7.可以基于dmvr中的初始运动矢量来确定对预测单元/编解码块/区域启用或禁用dmvr中的第二步骤。
[0315]
a.在一个示例中,当两个初始运动矢量都是整数运动矢量时,可以禁用dmvr中的第二步骤的使用。
[0316]
b.在一个示例中,当参考图片不指向某些图片时,诸如当参考图片索引不等于0时,dmvr中的第二步骤总是被禁用。
[0317]
c.在一个示例中,当初始运动矢量的幅度大于t时,可以禁用dmvr中的第二步骤的使用。
[0318]
i.在一个示例中,“一个运动矢量的幅度大于t”的定义是mv.x>t和/或mv.y>t,其中分别地,mv.x是运动矢量的水平分量的幅度并且mv.y是当前运动矢量的垂直分量的幅度。
[0319]
ii.在一个示例中,“一个运动矢量的幅度大于t”的定义是mv.x和mv.y的总和大于t,其中分别地,mv.x是运动矢量的水平分量的幅度并且mv.y是当前运动矢量的垂直分量的幅度。
[0320]
iii.此外,可替代地,当初始运动矢量的幅度大于t或/和初始运动矢量是整数运动矢量时,可以禁用dmvr中的第二步骤。t可以基于:
[0321]
a)当前块大小
[0322]
b)当前量化参数
[0323]
c)初始运动矢量的幅度
[0324]
d)邻近块的运动矢量的幅度
[0325]
e)可替代地,可以从编码器向解码器信令通知t。
[0326]
8.可以基于诸如在序列(例如,sps)/条带(例如,条带头)/片组(例如,片组头)/图片级别(例如,图片头)/块级别(例如,ctu或cu)中信令通知的信令通知的消息来确定dmvr中的初始运动矢量的精度。
[0327]
f.在一个示例中,信令通知标志以指示dmvr中的初始运动矢量是否被取整为整数运动矢量。
[0328]
g.在一个示例中,指示dmvr中的初始运动矢量是否被取整为整数运动矢量的信令通知的标志也可以指示与dmvr中的初始运动矢量不相关的信息。
[0329]
i.在一个示例中,指示在具有运动矢量差的merge(mmvd,又名umve)中是否允许分
数运动矢量差(mvd)的标志(例如,tile_group_fpel_mmvd_enabled_flag)也可以指示bio和/或dmvr中的初始运动矢量是否被取整为整数运动矢量。
[0330]
9.bio中的初始运动矢量的精度可以取决于诸如在序列(例如,sps)/条带(例如,条带头)/片组(例如,片组头)/图片级别(例如,图片头)/块级别(例如,ctu或cu)中信令通知的信令通知的消息。
[0331]
h.在一个示例中,信令通知标志以指示bio中的初始运动矢量是否被取整为整数运动矢量。
[0332]
i.在一个示例中,指示bio中的初始运动矢量是否被取整为整数运动矢量的信令通知的标志也可以指示与bio中的初始运动矢量不相关的信息。
[0333]
i.在一个示例中,指示在具有运动矢量差的merge(mmvd,又名umve)中是否允许分数运动矢量差(mvd)的标志(例如,tile_group_fpel_mmvd_enabled_flag)也可以指示bio和/或dmvr中的初始运动矢量是否被取整为整数运动矢量。
[0334]
10.可以自适应地改变哪些mvd候选(诸如在第一步骤和/或第二步骤中使用的那些mvd候选)基于初始化的运动矢量的精度。
[0335]
j.在一个示例中,当初始化的运动矢量是子像素运动矢量时,如果(从初始化的运动矢量和一个mvd候选推导的)临时运动矢量是整数像素运动矢量,则可以跳过该临时运动矢量的检查。
[0336]
k.可选地,当初始化的运动矢量是子像素运动矢量时,如果(从初始化的运动矢量和一个mvd候选推导的)临时运动矢量是子像素运动矢量,则可以跳过该临时运动矢量的检查。
[0337]
5.附加实施例
[0338]
vvc草案中的文本改变在下表中以带下划线的加粗斜体字体示出。
[0339]
7.3.2.原始字节序列有效负载、结尾比特和字节对齐语法
[0340]
7.3.2.1.序列参数集rbsp语法
[0341]
[0342][0343][0344]
[0345][0346]
等于1的sps_subpixel_refinement_enabled_flag指定自适应子像素mvd细化可以用于片中。sps_fpel_mmvd_enabled_flag指定自适应子像素mvd细化不可以用于片中。
[0347]
7.3.4.片组头语法
[0348]
7.3.4.1.通用片组头语法
[0349]
[0350][0351]
[0352]
[0353][0354]
[0355][0356]
等于1的tile_group_subpixel_refinement_enabled_flag指定可以在当前片组中启用子像素mvd细化。等于0的tile_group_fpel_mmvd_enabled_flag指定不可以在当前片组中启用子像素mvd细化。当不存在时,tile_group_fpel_mmvd_enabled_flag的值被推断为1。
[0357]
8.5.3.解码器侧运动矢量细化过程
[0358]
8.5.3.1.通用
[0359]
该过程的输入是:
[0360]
–
亮度位置(xsb,ysb),指定当前编解码子块相对于当前图片的左上方亮度样点的
左上方样点,
[0361]
–
变量sbwidth,指定亮度样点中的当前编解码子块的宽度,
[0362]
–
变量sbheight,指定亮度样点中的当前编解码子块的高度,
[0363]
–
1/16分数样点精度中的亮度运动矢量mvl0和mvl1,
[0364]
–
所选择的亮度参考图片样点阵列refpicl0l和refpicl1l。
[0365]
该过程的输出是:
[0366]
–
增量(delta)亮度运动矢量dmvl0和dmvl1。
[0367]
变量subpelflag被设置为0。并且变量srrange、offseth0、offseth1、offsetv0和offsetv1都被设置为等于2。
[0368]
增量亮度运动矢量dmvl0和dmvl1的两个分量都被设置为等于零,并且被修改如下:
[0369]
–
对于为0或1的每个x,通过以亮度位置(xsb,ysb)、设置为等于(sbwidth 2*srrange)的预测块宽度、设置为等于(sbheight 2*srrange)的预测块高度、参考图片样点阵列refpiclx
l
、运动矢量mvlx和细化搜索范围srrange作为输入,调用在8.5.3.2.1中指定的分数样点双线性插值过程来推导预测亮度样点值的(sbwidth 2*srrange)x(sbheight 2*srrange)阵列predsampleslx
l
。
[0370]
–
通过以sbwidth、sbheight、offseth0、offseth1、offsetv0、offsetv1、predsamplesl0
l
和predsamplesl1
l
作为输入,调用在8.5.3.3中指定的绝对差之和计算过程来推导列表sadlist[i](其中i=0..8)。
[0371]
–
当sadlist[4]大于或等于sbheight*sbwidth时,以下适用:
[0372]
–
是通过调用以列表sadlist[i](其中i=0..8)作为输入,调用在第8.5.3.4节中指定的阵列条目选择过程来推导变量bestidx。
[0373]
–
如果bestidx等于4,则subpelflag被设置为等于1。
[0374]
–
否则,以下适用:
[0375]
dx=bestidx%3
‑1[0376]
dy=bestidx/3
‑1[0377]
dmvl0[0] =16*dx
[0378]
dmvl0[1] =16*dy
[0379]
offseth0 =dx
[0380]
offsetv0 =dy
[0381]
offseth1
‑
=dx
[0382]
offsetv1
‑
=dy
[0383]
–
通过以sbwidth、sbheight、offseth0、offseth1、offsetv0、offsetv1、predsamplesl0
l
和predsamplesl1
l
作为输入,调用在8.5.3.3中指定的绝对差之和计算过程来修改列表sadlist[i](其中i=0..8)。
[0384]
–
通过以列表sadlist[i](其中i=0..8)作为输入,调用在第8.5.3.4节中指定的阵列条目选择过程来修改变量bestidx。
[0385]
–
如果bestidx等于4,则subpelflag被设置为等于1。
[0386]
–
否则(bestidx不等于4),以下适用:
[0387]
dmvl0[0] =16*(bestidx%3
‑
1)
[0388]
dmvl0[1] =16*(bestidx/3
‑
1)
[0389]
–
如果tile_group_subpixel_refinement_enabled_flag等于1
[0390]
–
当subpelflag等于1时,以列表sadlist[i](其中i=0..8)和增量运动矢量dmvl0作为输入并以修改的dmvl0作为输出,调用在第8.5.3.5节中指定的参数运动矢量细化过程。
[0391]
–
增量运动矢量dmvl1被推导如下:
[0392]
dmvl1[0]=
‑
dmvl0[0]
[0393]
dmvl1[1]=
‑
dmvl0[1]
[0394]
9.所公开的技术的示例实施方式
[0395]
图24是视频处理装置2400的框图。装置2400可以用来实施本文描述的方法中的一种或多种。装置2400可以体现在智能电话、平板电脑、计算机、物联网(internet of things,iot)接收器等中。装置2400可以包括一个或多个处理器2402、一个或多个存储器2404、以及视频处理硬件2406。(多个)处理器2402可以被配置为实施本文档中描述的一种或多种方法。存储器(多个存储器)2404可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件2406可以用来以硬件电路实施本文档中描述的一些技术,并且可以部分地或完全作为处理器2402的一部分(例如,图形处理器核心gpu或其他信号处理电路)。
[0396]
在本文档中,术语“视频处理”可以指代视频编码、视频解码、视频压缩或视频解压缩。例如,可以在从视频的像素表示到对应比特流表示的转换期间应用视频压缩算法,反之亦然。当前视频块的比特流表示可以,例如对应于比特流内并置的或分散在不同位置的比特,如语法所定义的。例如,宏块可以按照变换和编解码误差残差值并且还使用头和比特流中的其他字段中的比特而编码。
[0397]
应当理解,通过允许使用在本文档中公开的技术,所公开的方法和技术将有益于并入视频处理设备(诸如智能电话、膝上型电脑、台式电脑和类似设备)内的视频编码器和/或解码器实施例。
[0398]
图25是视频处理的示例方法2500的流程图。方法2500包括,在2510,执行当前视频块和当前视频块的比特流表示之间的转换,其中,解码器运动信息的使用在比特流表示中的标志中被指示,使得标志的第一值指示解码器运动信息在该转换期间被启用,并且标志的第二值指示解码器运动信息在该转换期间被禁用。
[0399]
可以使用以下基于条款的格式来描述一些实施例。
[0400]
1.一种可视媒体处理的方法,包括:
[0401]
执行当前视频块和当前视频块的比特流表示之间的转换,其中,解码器运动信息的使用在比特流表示中的标志中被指示,使得标志的第一值指示解码器运动信息在该转换期间被启用,并且标志的第二值指示解码器运动信息在该转换期间被禁用。
[0402]
2.根据条款1所述的方法,其中,解码器运动信息包括解码器运动视频细化(dmvr)或双向光流(bio)。
[0403]
3.根据条款1
‑
2中任一项所述的方法,其中,该标志被表示为tile_group_fpel_mmvd_enabled_flag。
[0404]
4.根据条款1
‑
3中任一项所述的方法,其中,该标志指示在具有运动矢量差的merge(mmvd)模式下是否允许分数运动矢量差(mvd)。
[0405]
5.根据条款1
‑
3中任一项所述的方法,其中,该标志指示在具有运动矢量差的merge(mmvd)模式下是否不允许分数运动矢量差(mvd)。
[0406]
6.根据条款2所述的方法,其中,解码器运动信息推导包括以下中的至少一个:与视频块相关联的一个或多个初始运动矢量、或与视频块相关联的一个或多个参考图片,其中,一个或多个初始运动矢量是在使用dmvr或bio之前的解码运动矢量。
[0407]
7.根据条款6所述的方法,其中,与视频块相关联的一个或多个初始运动矢量包括两个初始运动矢量,还包括:
[0408]
响应于确定两个初始运动矢量都是整数值,跳过dmvr。
[0409]
8.根据条款6所述的方法,还包括:
[0410]
响应于确定与视频块相关联的一个或多个参考图片的索引为非零,跳过dmvr。
[0411]
9.根据条款6所述的方法,还包括:
[0412]
响应于确定与视频块相关联的一个或多个初始运动矢量的幅度大于阈值,跳过dmvr。
[0413]
10.根据条款9所述的方法,其中,与视频块相关联的一个或多个初始运动矢量的幅度包括运动矢量的水平分量的幅度(表示为mv.x)和运动矢量的垂直分量的幅度(表示为mv.y),其中,运动矢量被包括在一个或多个初始运动矢量中,其中mv.x>t和/或mv.y>t,并且其中t表示阈值。
[0414]
11.根据条款9所述的方法,其中,与视频块相关联的一个或多个初始运动矢量的幅度包括运动矢量的水平分量的幅度(表示为mv.x)和运动矢量的垂直分量的幅度(表示为mv.y),其中,运动矢量被包括在一个或多个初始运动矢量中,其中sum(mv.x,mv.y)>t,其中t表示阈值,并且其中sum(x,y)=x y。
[0415]
12.根据条款10
‑
11中任一项所述的方法,其中,运动矢量是当前视频块的运动矢量。
[0416]
13.根据条款10
‑
12中任一项所述的方法,其中,阈值基于以下中的一个或多个:视频块的大小、量化参数、与视频块相关联的一个或多个初始运动矢量的幅度、与邻近于视频块的块相关联的运动矢量的幅度、或从可视媒体处理编码器向可视媒体处理解码器信令通知的值。
[0417]
14.根据条款6所述的方法,其中,与视频块相关联的一个或多个初始运动矢量包括两个初始运动矢量,还包括:
[0418]
响应于确定两个初始运动矢量都是整数值,跳过bio。
[0419]
15.根据条款6所述的方法,其中,与视频块相关联的一个或多个初始运动矢量包括初始运动矢量和初始运动矢量的细化,还包括:
[0420]
基于计算初始运动矢量和细化的差,启用或跳过bio。
[0421]
16.根据条款15所述的方法,还包括:
[0422]
响应于确定初始运动矢量和细化的差是子像素,跳过与视频块相关联的预测。
[0423]
17.根据条款6所述的方法,还包括:
[0424]
响应于确定与视频块相关联的一个或多个参考图片的索引为非零,跳过bio。
[0425]
18.根据条款6所述的方法,还包括:
[0426]
响应于确定与视频块相关联的一个或多个初始运动矢量的幅度大于阈值,跳过bio。
[0427]
19.根据条款18所述的方法,其中,与视频块相关联的一个或多个初始运动矢量的幅度包括运动矢量的水平分量的幅度(表示为mv.x)和运动矢量的垂直分量的幅度(表示为mv.y),其中,运动矢量被包括在一个或多个初始运动矢量中,其中mv.x>t和/或mv.y>t,并且其中t表示阈值。
[0428]
20.根据条款18所述的方法,其中,与视频块相关联的一个或多个初始运动矢量的幅度包括运动矢量的水平分量的幅度(表示为mv.x)和运动矢量的垂直分量的幅度(表示为mv.y),其中,运动矢量被包括在一个或多个初始运动矢量中,其中sum(mv.x,mv.y)>t,其中t表示阈值,并且其中sum(x,y)=x y。
[0429]
21.根据条款19
‑
20中任一项所述的方法,其中,运动矢量是当前视频块的运动矢量。
[0430]
22.根据条款19
‑
20中任一项所述的方法,其中,阈值基于以下中的一个或多个:视频块的大小、量化参数、与视频块相关联的一个或多个初始运动矢量的幅度、与邻近于视频块的块相关联的运动矢量的幅度、或从可视媒体处理编码器向可视媒体处理解码器信令通知的值。
[0431]
23.根据条款1
‑
2中任一项所述的方法,其中,dmvr包括分数细化的第二步骤,其中,该标志指示是否跳过分数细化。
[0432]
24.根据条款23所述的方法,其中,该标志被表示为tile_group_subpixel_refinement_enabled_flag。
[0433]
25.根据条款23所述的方法,其中,该标志指示与分数细化的第二步骤不相关的信息。
[0434]
26.根据条款25所述的方法,其中,该标志指示在具有运动矢量差的merge(mmvd)模式下是否允许分数运动矢量差(mvd)。
[0435]
27.根据条款26所述的方法,其中,该标志被表示为tile_group_fpel_mmvd_enabled_flag。
[0436]
28.根据条款25所述的方法,其中,如果该标志指示分数运动矢量差(mvd)是否被禁用,则分数细化的第二步骤被跳过。
[0437]
29.根据条款26所述的方法,其中,该标志被表示为tile_group_fpel_mmvd_enabled_flag。
[0438]
30.根据条款1
‑
2中任一项所述的方法,其中,dmvr包括基于整数运动细化的结果的分数细化的第二步骤。
[0439]
31.根据条款30所述的方法,还包括:
[0440]
响应于确定在整数运动细化之后没有改变视频块的初始运动矢量,跳过dmvr的第二步骤。
[0441]
32.根据条款31所述的方法,其中,分数运动矢量的幅度大于半个像素,并且其中,分数运动矢量的幅度被约束为小于或等于阈值。
[0442]
33.根据条款31所述的方法,其中,阈值是非零浮点数。
[0443]
34.根据条款32所述的方法,其中,与视频块相关联的分数运动矢量的幅度包括分数运动矢量的水平分量的幅度(表示为mv.x)和分数运动矢量的垂直分量的幅度(表示为mv.y),并且其中mv.x<t和/或mv.y<t,并且其中t表示阈值。
[0444]
35.根据条款32所述的方法,其中,与视频块相关联的分数运动矢量的幅度包括分数运动矢量的水平分量的幅度(表示为mv.x)和分数运动矢量的垂直分量的幅度(表示为mv.y),并且其中sum(mv.x,mv.y)<t,其中t表示阈值,并且其中sum(x,y)=x y。
[0445]
36.根据条款32
‑
35中任一项所述的方法,其中,阈值基于以下中的一个或多个:视频块的大小、量化参数、与视频块相关联的一个或多个初始运动矢量的幅度、与邻近于视频块的块相关联的运动矢量的幅度、或从可视媒体处理编码器向可视媒体处理解码器信令通知的值。
[0446]
37.根据条款30所述的方法,其中,差矢量被计算为视频块的初始运动矢量和在整数运动细化之后获得的运动矢量之间的差,还包括:
[0447]
响应于确定差矢量的幅度小于阈值,跳过dmvr的第二步骤。
[0448]
38.根据条款37所述的方法,其中,与视频块相关联的差矢量的幅度包括差矢量的水平分量的幅度(表示为mv.x)和差矢量的垂直分量的幅度(表示为mv.y),并且其中mv.x<t和/或mv.y<t,并且其中t表示阈值。
[0449]
39.根据条款37所述的方法,其中,与视频块相关联的差矢量的幅度包括差矢量的水平分量的幅度(表示为mv.x)和差矢量的垂直分量的幅度(表示为mv.y),并且其中sum(mv.x,mv.y)<t,其中t表示阈值,并且其中sum(x,y)=x y。
[0450]
40.根据条款37
‑
39中任一项所述的方法,其中,阈值基于以下中的一个或多个:视频块的大小、量化参数、与视频块相关联的一个或多个初始运动矢量的幅度、与邻近于视频块的块相关联的运动矢量的幅度、或从可视媒体处理编码器向可视媒体处理解码器信令通知的值。
[0451]
41.根据条款1
‑
2中任一项所述的方法,其中,该标志指示与视频块相关联的初始运动矢量的精度。
[0452]
42.根据条款41所述的方法,其中,该标志指示初始运动矢量是否被取整为整数值。
[0453]
43.根据条款42所述的方法,其中,该标志指示与初始运动矢量不相关的信息。
[0454]
44.根据条款43所述的方法,其中,该标志指示在具有运动矢量差的merge(mmvd)模式下是否允许分数运动矢量差(mvd)。
[0455]
45.根据条款44所述的方法,其中,该标志被表示为tile_group_fpel_mmvd_enabled_flag。
[0456]
46.一种可视媒体处理的方法,包括:
[0457]
执行当前视频块和当前视频块的比特流表示之间的转换,其中,解码器运动信息的使用在比特流表示中的标志中被指示,使得标志的第一值指示解码器运动信息在该转换期间被启用,并且标志的第二值指示解码器运动信息在该转换期间被禁用;以及
[0458]
响应于确定视频块的初始运动矢量具有子像素精度,跳过与从初始运动矢量和候选运动矢量差推导的临时运动矢量相关联的检查,其中,临时运动矢量具有整数像素精度或子像素精度。
[0459]
47.根据条款1
‑
46中的任一项或多项所述的方法,其中,该标志被包括在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、图片头、片组头、条带头、编解码树单元行或与编解码树单元相关联的区域中
[0460]
48.根据条款1至47中的任一项或多项所述的方法,其中,可视媒体处理是编码器侧实施方式。
[0461]
49.根据条款1至47中的任一项或多项所述的方法,其中,可视媒体处理是解码器侧实施方式。
[0462]
50.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中该指令在由处理器执行时使得处理器实施根据条款1至49中的任一项或多项所述的方法。
[0463]
51.一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于执行根据条款1至49中的任一项或多项所述的方法的程序代码。
[0464]
图26是视频处理的示例方法2600的流程图。方法2600包括,在2602,基于信令通知的信息,为视频的第一块和视频的第一块的比特流表示之间的转换确定是否和/或如何应用解码器侧运动矢量细化(dmvr);以及在2604,基于该确定来执行该转换。
[0465]
在一些示例中,信令通知的信息包括存在于比特流表示中的标志。
[0466]
在一些示例中,信令通知的信息在以下中的至少一个中被信令通知:包括序列参数集(sps)的序列级别、包括条带头的条带级别、包括片组头的片组级别、包括图片头的图片级别、以及包括编解码树单元和编解码单元的块级别。
[0467]
在一些示例中,在该转换期间,dmvr被应用于预测单元、编解码块和区域中的至少一个。
[0468]
在一些示例中,标志被信令通知以指示dmvr被启用还是禁用。
[0469]
在一些示例中,当标志指示dmvr被禁用时,dmvr的过程被跳过,并且dmvr的使用被推断为禁用。
[0470]
在一些示例中,指示是否和/或如何应用dmvr的信令通知的信息用于控制其他解码器运动信息推导技术的使用。
[0471]
在一些示例中,其他解码器运动信息推导技术包括双向光流(bio)。
[0472]
在一些示例中,指示在具有运动矢量差的merge(mmvd)模式下是否允许分数运动矢量差(mvd)的标志用于确定是否和/或如何应用dmvr。
[0473]
在一些示例中,该标志为tile_group_fpel_mmvd_enabled_flag。
[0474]
在一些示例中,如果该标志指示分数mvd不被允许用于mmvd,则dmvr的过程在该转换期间被跳过。
[0475]
在一些示例中,该标志为tile_group_fpel_mmvd_enabled_flag。
[0476]
在一些示例中,该转换从比特流表示生成视频的第一块。
[0477]
在一些示例中,该转换从视频的第一块生成比特流表示。
[0478]
图27是视频处理的示例方法2700的流程图。方法2700包括,在2702,基于信令通知的信息,为视频的第一块和视频的第一块的比特流表示之间的转换确定是否和/或如何应用双向光流(bio);以及在2704,基于该确定来执行该转换。
[0479]
在一些示例中,信令通知的信息包括存在于比特流表示中的标志。
[0480]
在一些示例中,信令通知的信息在以下中的至少一个中被信令通知:包括序列参
数集(sps)的序列级别、包括条带头的条带级别、包括片组头的片组级别、包括图片头的图片级别、以及包括编解码树单元和编解码单元的块级别。
[0481]
在一些示例中,在该转换期间,bio被应用于预测单元、编解码块和区域中的至少一个。
[0482]
在一些示例中,标志被信令通知以指示bio被启用还是禁用。
[0483]
在一些示例中,当该标志指示bio被禁用时,bio的过程被跳过,并且bio的使用被推断为禁用。
[0484]
在一些示例中,指示是否和/或如何应用bio的信令通知的信息用于控制其他解码器运动信息推导技术的使用。
[0485]
在一些示例中,其他解码器运动信息推导技术包括解码器运动视频细化(dmvr)。
[0486]
在一些示例中,指示在具有运动矢量差的merge(mmvd)模式下是否允许分数运动矢量差(mvd)的标志用于确定是否和/或如何应用bio。
[0487]
在一些示例中,该标志为tile_group_fpel_mmvd_enabled_flag。
[0488]
在一些示例中,如果该标志指示分数mvd不被允许用于mmvd,则bio的过程在该转换期间被跳过。
[0489]
在一些示例中,该标志为tile_group_fpel_mmvd_enabled_flag。
[0490]
在一些示例中,该转换从比特流表示生成视频的第一块。
[0491]
在一些示例中,该转换从视频的第一块生成比特流表示。
[0492]
图28是视频处理的示例方法2800的流程图。方法2800包括,在2802,基于以下中的至少一个,为视频的第一块和视频的第一块的比特流表示之间的转换确定解码器侧运动矢量细化(dmvr)过程被启用还是禁用:与第一块相关联的一个或多个初始运动矢量和与第一块相关联的一个或多个参考图片,初始运动矢量包括在应用dmvr过程之前的运动矢量;以及在2804,基于该确定来执行该转换。
[0493]
在一些示例中,在该转换期间,dmvr过程被应用于与第一块相关联的预测单元、编解码块和区域中的至少一个。
[0494]
在一些示例中,初始运动矢量包括第一方向上的第一初始运动矢量和/或第二方向上的第二初始运动矢量。
[0495]
在一些示例中,当两个初始运动矢量都是整数运动矢量时,dmvr过程被禁用。
[0496]
在一些示例中,当参考图片没有指向某些图片时,dmvr过程被禁用。
[0497]
在一些示例中,当参考图片索引不等于0时,dmvr过程被禁用。
[0498]
在一些示例中,当一个或多个初始运动矢量的幅度大于阈值(t)时,dmvr过程被禁用。
[0499]
在一些示例中,每个初始运动矢量的幅度包括水平分量的幅度(mv.x)和垂直分量的幅度(mv.y)。
[0500]
在一些示例中,当初始运动矢量的水平分量mv.x和垂直分量mv.y中的一个或多个大于阈值t时,dmvr过程被禁用。
[0501]
在一些示例中,当初始运动矢量的水平分量mv.x和垂直分量mv.y的总和大于阈值t时,dmvr过程被禁用。
[0502]
在一些示例中,当一个或多个初始运动矢量的幅度大于阈值(t)和/或初始运动矢
量是整数运动矢量时,dmvr过程被禁用。
[0503]
在一些示例中,t是基于以下中的至少一个而确定的:第一块的大小、当前量化参数、一个或多个初始运动矢量的幅度、以及第一块的邻近块的运动矢量的幅度。
[0504]
在一些示例中,t是从编码器向解码器信令通知的。
[0505]
在一些示例中,dmvr过程包括其中执行具有整数精度的整数运动矢量差(mvd)细化的第一步骤和其中执行具有分数精度的分数mvd细化的第二步骤。
[0506]
在一些示例中,该方法还包括:基于信令通知的信息来确定dmvr过程的第二步骤被启用还是禁用。
[0507]
在一些示例中,信令通知的信息包括存在于比特流表示中的标志。
[0508]
在一些示例中,信令通知的信息在以下中的至少一个中被信令通知:包括序列参数集(sps)的序列级别、包括条带头的条带级别、包括片组头的片组级别、包括图片头的图片级别、以及包括编解码树单元和编解码单元的块级别。
[0509]
在一些示例中,标志被信令通知以指示dmvr过程的第二步骤被启用还是禁用。
[0510]
在一些示例中,该标志为tile_group_subpixel_refinement_enabled_flag。
[0511]
在一些示例中,当标志指示dmvr过程的第二步骤被禁用时,dmvr过程中的分数细化的过程被跳过。
[0512]
在一些示例中,指示dmvr过程中的第二步骤被启用还是禁用的标志还指示除了dmvr过程中的第二步骤之外的附加信息。
[0513]
在一些示例中,指示在具有运动矢量差的merge(mmvd)模式下是否允许分数mvd的标志用于指示dmvr过程的第二步骤被启用还是禁用。
[0514]
在一些示例中,该标志为tile_group_fpel_mmvd_enabled_flag。
[0515]
在一些示例中,该方法还包括:基于dmvr过程的第一步骤中的整数运动细化的结果来确定如何执行dmvr过程的第二步骤。
[0516]
在一些示例中,当在dmvr过程的第一步骤中的整数运动细化之后没有改变初始运动矢量时,dmvr过程中的第二步骤被禁用。
[0517]
在一些示例中,在第二步骤之后获得的运动矢量的幅度被允许大于半像素并且小于或等于第二阈值t2像素。
[0518]
在一些示例中,t2>=0,并且t2是浮点数。
[0519]
在一些示例中,运动矢量的幅度包括水平分量的幅度(mv.x)和垂直分量的幅度(mv.y)。
[0520]
在一些示例中,运动矢量的水平分量mv.x和垂直分量mv.y中的一个或多个被约束为小于t2像素。
[0521]
在一些示例中,运动矢量的水平分量mv.x和垂直分量mv.y的总和被约束为小于t2像素。
[0522]
在一些示例中,当初始运动矢量和在dmvr过程的第一步骤中的整数运动细化之后获得的运动矢量之间的距离小于第二阈值t2时,dmvr过程中的第二步骤被禁用。
[0523]
在一些示例中,该距离包括水平分量的幅度(mv.x)和垂直分量的幅度(mv.y)。
[0524]
在一些示例中,当该距离的水平分量mv.x和垂直分量mv.y中的一个或多个小于阈值t2时,dmvr过程中的第二步骤被禁用。
[0525]
在一些示例中,当水平分量mv.x和垂直分量mv.y的总和小于阈值t2时,dmvr过程中的第二步骤被禁用。
[0526]
在一些示例中,t2是基于以下中的至少一个而确定的:第一块的大小、当前量化参数、一个或多个初始运动矢量的幅度、以及第一块的邻近块的运动矢量的幅度。
[0527]
在一些示例中,t2是从编码器向解码器信令通知的。
[0528]
在一些示例中,该方法还包括:基于dmvr过程中的一个或多个初始运动矢量来确定dmvr过程的第二步骤被启用还是禁用。
[0529]
在一些示例中,当两个初始运动矢量都是整数运动矢量时,dmvr过程的第二步骤被禁用。
[0530]
在一些示例中,当参考图片没有指向某些图片时,dmvr过程的第二步骤被禁用。
[0531]
在一些示例中,当参考图片索引不等于0时,dmvr过程的第二步骤被禁用。
[0532]
在一些示例中,当一个或多个初始运动矢量的幅度大于第三阈值(t3)时,dmvr过程的第二步骤被禁用。
[0533]
在一些示例中,每个初始运动矢量的幅度包括水平分量的幅度(mv.x)和垂直分量的幅度(mv.y)。
[0534]
在一些示例中,当初始运动矢量的水平分量mv.x和垂直分量mv.y中的一个或多个大于阈值t3时,dmvr过程的第二步骤被禁用。
[0535]
在一些示例中,当初始运动矢量的水平分量mv.x和垂直分量mv.y的总和大于阈值t3时,dmvr过程的第二步骤被禁用。
[0536]
在一些示例中,当一个或多个初始运动矢量的幅度大于第三阈值(t3)和/或初始运动矢量是整数运动矢量时,dmvr过程的第二步骤被禁用。
[0537]
在一些示例中,t3是基于以下中的至少一个而确定的:第一块的大小、当前量化参数、一个或多个初始运动矢量的幅度、以及第一块的邻近块的运动矢量的幅度。
[0538]
在一些示例中,t3是从编码器向解码器信令通知的。
[0539]
在一些示例中,dmvr过程中的初始运动矢量的精度基于信令通知的信息而确定。
[0540]
在一些示例中,信令通知的信息包括存在于比特流表示中的标志。
[0541]
在一些示例中,信令通知的信息在以下中的至少一个中被信令通知:包括序列参数集(sps)的序列级别、包括条带头的条带级别、包括片组头的片组级别、包括图片头的图片级别、以及包括编解码树单元和编解码单元的块级别。
[0542]
在一些示例中,标志被信令通知以指示dmvr过程中的初始运动矢量是否被取整为整数运动矢量。
[0543]
在一些示例中,指示dmvr过程中的初始运动矢量是否被取整为整数运动矢量的标志还指示除了dmvr过程中的初始运动矢量之外的附加信息。
[0544]
在一些示例中,指示在具有运动矢量差的merge(mmvd)模式下是否允许分数mvd的标志用于指示dmvr过程中的初始运动矢量是否被取整为整数运动矢量。
[0545]
在一些示例中,该标志为tile_group_fpel_mmvd_enabled_flag。
[0546]
在一些示例中,是否使用mvd候选基于初始运动矢量的精度而自适应地改变。
[0547]
在一些示例中,mvd候选包括在dmvr过程的第一步骤和/或第二步骤中使用的mvd候选。
[0548]
在一些示例中,当初始运动矢量是子像素运动矢量时,如果临时运动矢量是整数像素运动矢量,则临时运动矢量的检查被跳过,临时运动矢量是从初始运动矢量和一个mvd候选推导的。
[0549]
在一些示例中,当初始运动矢量是子像素运动矢量时,如果临时运动矢量是子像素运动矢量,则临时运动矢量的检查被跳过,临时运动矢量是从初始运动矢量和一个mvd候选推导的。
[0550]
图29是视频处理的示例方法2900的流程图。方法2900包括,在2902,基于以下中的至少一个,为视频的第一块和视频的第一块的比特流表示之间的转换确定双向光流(bio)过程被启用还是禁用:与第一块相关联的一个或多个初始运动矢量和与第一块相关联的一个或多个参考图片,初始运动矢量包括在应用bio过程之前的运动矢量和/或在应用解码器侧运动矢量细化(dmvr)过程之前的解码运动矢量;以及在2904,基于该确定来执行该转换。
[0551]
在一些示例中,在该转换期间,bio过程被应用于与第一块相关联的预测单元、编解码块和区域中的至少一个。
[0552]
在一些示例中,初始运动矢量包括第一方向上的第一初始运动矢量和/或第二方向上的第二初始运动矢量。
[0553]
在一些示例中,当两个初始运动矢量都是整数运动矢量时,bio过程被禁用。
[0554]
在一些示例中,当参考图片没有指向某些图片时,bio过程总是被禁用。
[0555]
在一些示例中,当参考图片索引不等于0时,bio过程被禁用。
[0556]
在一些示例中,当一个或多个初始运动矢量的幅度大于第四阈值(t4)时,bio过程被禁用。
[0557]
在一些示例中,每个初始运动矢量的幅度包括水平分量的幅度(mv.x)和垂直分量的幅度(mv.y)。
[0558]
在一些示例中,当初始运动矢量的水平分量mv.x和垂直分量mv.y中的一个或多个大于阈值t时,bio过程被禁用。
[0559]
在一些示例中,当初始运动矢量的水平分量mv.x和垂直分量mv.y的总和大于阈值t4时,bio过程被禁用。
[0560]
在一些示例中,当一个或多个初始运动矢量的幅度大于第四阈值(t4)和/或初始运动矢量是整数运动矢量时,bio过程被禁用。
[0561]
在一些示例中,t4是基于以下中的至少一个而确定的:第一块的大小、当前量化参数、一个或多个初始运动矢量的幅度、以及第一块的邻近块的运动矢量的幅度。
[0562]
在一些示例中,t4是从编码器向解码器信令通知的。
[0563]
在一些示例中,bio过程中的初始运动矢量的精度基于信令通知的信息而确定。
[0564]
在一些示例中,信令通知的信息包括存在于比特流表示中的标志。
[0565]
在一些示例中,信令通知的信息在以下中的至少一个中被信令通知:包括序列参数集(sps)的序列级别、包括条带头的条带级别、包括片组头的片组级别、包括图片头的图片级别、以及包括编解码树单元和编解码单元的块级别。
[0566]
在一些示例中,标志被信令通知以指示bio过程中的初始运动矢量是否被取整为整数运动矢量。
[0567]
在一些示例中,指示bio过程中的初始运动矢量是否被取整为整数运动矢量的标
志还指示除了bio过程中的初始运动矢量之外的附加信息。
[0568]
在一些示例中,指示在具有运动矢量差的merge(mmvd)模式下是否允许分数mvd的标志用于指示bio过程中的初始运动矢量是否被取整为整数运动矢量。
[0569]
在一些示例中,该标志为tile_group_fpel_mmvd_enabled_flag。
[0570]
图30是视频处理的示例方法3000的流程图。方法3000包括,在3002,基于与视频的第一块相关联的初始运动矢量和一个或多个细化运动矢量之间的一个或多个运动矢量差,为视频的第一块和视频的第一块的比特流表示之间的转换确定双向光流(bio)过程被启用还是禁用,初始运动矢量包括在应用bio过程和/或应用dmvr过程之前的运动矢量,细化运动矢量包括在应用dmvr过程之后的运动矢量;以及在3004,基于该确定来执行该转换。
[0571]
在一些示例中,在该转换期间,bio过程被应用于与第一块相关联的预测单元、编解码块和区域中的至少一个。
[0572]
在一些示例中,当运动矢量差是子像素时,预测样点或重构样点的更新被跳过。
[0573]
在一些示例中,该转换从比特流表示生成视频的第一块。
[0574]
在一些示例中,该转换从视频的第一块生成比特流表示。
[0575]
本文档中描述的所公开的以及其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路中、或者在计算机软件、固件或硬件(包括本文档中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中被实施。所公开的以及其他实施例可以被实施为一个或多个计算机程序产品,即编码在计算机可读介质上的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组合、或它们中的一个或多个的组合。术语“数据处理装置”包含用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。传播信号是被生成以对信息进行编码以用于发送到合适的接收器装置的人工生成的信号,例如机器生成的电信号、光学信号或电磁信号。
[0576]
计算机程序(也已知为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言)编写,并且其可以以任何形式部署,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署以在一个计算机上或在位于一个站点上或跨多个站点分布并通过通信网络互连的多个计算机上执行。
[0577]
本文档书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实施为专用逻辑电路,例如,fpga(field programmable gate array,现场可编程门阵列)或asic(专用集成电路)。
[0578]
适合于执行计算机程序的处理器包括例如通用和专用微处理器、以及任何类型的
数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘),或可操作地耦合以从该一个或多个大容量存储设备接收数据或向该一个或多个大容量存储设备传递数据、或者从其接收数据并向其传递数据。然而,计算机不需要这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可换式磁盘;磁光盘;以及cd rom和dvd
‑
rom磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
[0579]
虽然本专利文档包含许多细节,但这些细节不应被解释为对任何主题或可能要求保护的范围的限制,而是作为特定于特定技术的特定实施例的特征的描述。在本专利文档中在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合实施。此外,尽管特征可以在上面描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合排除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变化。
[0580]
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示的特定顺序或以先后顺序执行这样的操作或者执行所有示出的操作以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离。
[0581]
仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容来进行其他实施方式、增强和变化。
再多了解一些
本文用于企业家、创业者技术爱好者查询,结果仅供参考。