掌桥专利:专业的专利平台
掌桥专利
首页

使用更高比特深度精度的运动矢量推导

文献发布时间:2023-06-19 12:14:58


使用更高比特深度精度的运动矢量推导

相关申请的交叉引用

根据适用的《专利法》和/或《巴黎公约》的规定,本申请及时要求于2018年12月21日提交的国际专利申请号PCT/CN2018/122740的优先权和利益。根据美国法律,将上述申请的全部公开以引用方式并入本文,作为本申请公开的一部分。

技术领域

本专利文档涉及视频编解码技术、设备和系统。

背景技术

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

发明内容

描述了与数字视频编解码相关的设备、系统和方法,特别是与选择和应用用于视频编解码的运动矢量范围相关的设备、系统和方法。所描述的方法可以应用于现有的视频编解码标准(例如,高效视频编解码(HEVC))和未来的视频编解码标准或视频编解码器。

在一个代表性方面中,所公开的技术可用于提供用于视频处理的方法。该方法包括:基于多个亮度块的未剪切的先前计算的亮度运动矢量,导出与视频的当前视频块相关联的色度块的色度运动矢量;以及基于色度运动矢量执行当前视频块与视频的比特流表示之间的转换。

在另一代表性方面中,所公开的技术可用于提供用于视频处理的方法。该方法包括:确定与视频的当前视频块相关的一个或多个运动矢量的运动矢量精度;基于运动矢量精度选择运动矢量范围;以及基于运动矢量范围执行当前视频块和视频的比特流表示之间的转换。

在另一代表性方面中,所公开的技术可用于提供用于视频处理的方法。该方法包括:确定使用与视频的当前视频块相关的一个或多个运动矢量的内部比特深度,其中内部比特深度具有M比特,M大于16,并且当前视频块使用时域运动矢量预测;以及基于至少M比特运动矢量执行当前视频块和视频的比特流表示之间的转换。

在另一代表性方面中,所公开的技术可用于提供用于视频处理的方法。该方法包括:确定将运动矢量精度值用于视频的视频单元的当前视频块与视频的编解码之间的转换的运动矢量的精度;以及基于根据运动矢量精度值的运动矢量的精度执行转换,其中,视频单元级的语法元素指示运动矢量精度值。

在另一代表性方面中,所公开的技术可用于提供用于视频处理的方法。该方法包括:为视频的当前视频块和当前视频块的比特流表示之间的转换确定参数;以及基于参数执行转换,其中,确定参数基于包括当前视频块的当前图片的高度或宽度。

在另一代表性方面中,所公开的技术可用于提供用于视频处理的方法。该方法包括:剪切临时运动矢量以生成剪切的运动矢量;至少基于剪切的运动矢量导出与视频的当前视频块相关联的运动矢量;以及基于与当前视频块相关联的运动矢量执行视频的当前视频块和视频的比特流表示之间的转换,其中,剪切临时运动矢量基于当前视频块的参考图片的高度(H)或宽度(W)、当前视频块的左上位置(x0,y0)、或运动矢量的运动矢量精度或内部比特深度(M)中的至少一个。

在另一代表性方面中,所公开的技术可用于提供用于视频处理的方法。该方法包括:执行视频的当前视频块和视频的比特流表示之间的转换,其中转换使用缩放处理从来自第二参考图片的运动矢量差中获得第一参考图片的运动矢量差,并且其中缩放处理使用剪切操作来限制第一参考图片的运动矢量差落在范围[-((1<<(M-1))),(1<<(M-1))-1]内,其中M是大于16的数字。

在另一代表性方面中,所公开的技术可用于提供用于视频处理的方法。该方法包括:确定为视频的视频单元的当前视频块和视频的比特流表示之间的转换使用一个或多个运动矢量的内部比特深度;以及使用一个或多个运动矢量执行转换,其中,视频单元级的语法元素指示内部比特深度。

在另一代表性方面中,所公开的技术可用于提供用于视频处理的方法。该方法包括:确定为视频的视频单元的当前视频块和视频的比特流表示之间的转换使用仿射运动参数的内部比特深度;以及基于确定执行转换,其中,仿射运动参数的内部比特深度具有与非仿射运动参数相同的范围。

在又一代表性方面中,上述方法以处理器可执行代码的形式实现并存储在计算机可读程序介质中。

在又一代表性方面中,公开了一种被配置或可操作以执行上述方法的设备。该设备可以包括被编程以实现该方法的处理器。

在又一代表性方面中,视频解码器装置可以实现如本文所述的方法。

在附图、说明书和权利要求中更详细地描述了所公开技术的上述和其他方面及特征。

附图说明

图1示出了构造Merge候选列表的示例。

图2示出了空域候选的位置的示例。

图3示出了经受空域Merge候选的冗余检查的候选对的示例。

图4A和4B示出了基于当前块的尺寸和形状的第二预测单元(PU)的位置的示例。

图5示出了时域Merge候选的运动矢量缩放的示例。

图6示出了时域Merge候选的候选位置的示例。

图7示出了生成组合双向预测Merge候选的示例。

图8示出了构造运动矢量预测候选的示例。

图9示出了空域运动矢量候选的运动矢量缩放的示例。

图10示出了使用编解码单元(CU)的可选时域运动矢量预测(ATMVP)算法的运动预测的示例。

图11示出了具有由空时运动矢量预测(STMVP)算法使用的子块和临近块的编解码单元(CU)的示例。

图12A和12B分别示出了简化的4参数仿射模型和简化的6参数仿射模型的示例。

图13示出了每个子块的仿射运动矢量场(MVF)的示例。

图14A和14B分别示出了4参数和6参数仿射模型的示例。

图15示出了继承仿射候选的AF_INTER的运动矢量预测的示例。

图16示出了构造仿射候选的AF_INTER的运动矢量预测的示例。

图17A和17B分别示出了AF_Merge模式的示例候选块和CPMV预测器推导。

图18示出了仿射Merge模式的候选位置的示例。

图19示出UMVE搜索处理的示例。

图20示出UMVE搜索点的示例。

图21示出了基于所公开技术的一些实现的视频处理的示例方法的流程图。

图22A至22E示出了基于所公开技术的一些实现的视频处理的示例方法的流程图。

图23A至23C示出了基于所公开技术的一些实现的视频处理的示例方法的流程图。

图24A和24B示出了用于实现本文中描述的视觉媒体解码或视觉媒体编码技术的硬件平台的示例。

具体实施方式

由于对高分辨率视频的需求日益增加,视频编解码方法和技术在现代技术中无处不在。视频编解码器通常包括压缩或解压缩数字视频的电子电路或软件,并且不断地被改进以提供更高的编码效率。视频编解码器将未压缩的视频转换为压缩格式,或反之亦然。视频质量、用于表示视频的数据量(由比特率决定)、编码和解码算法的复杂度、对数据丢失和错误的敏感度、易于编辑、随机访问和端到端延迟(等待时间(latency))之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如,高效视频编解码(HEVC)标准(也称为H.265或MPEG-H第2部分)[1]、待定案多功能视频编解码标准(VVC)或其它当前和/或未来的视频编解码标准。

所公开技术的实施例可以应用于现有的视频编解码标准(例如,HEVC,H.265)和未来的标准,以改进运行时间性能。本文中使用章节标题以提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实现)仅限于各个章节。

1.HEVC/H.265中帧间预测的示例

多年来,视频编解码标准有了显著的改进,并且现在部分地提供了高编解码效率和对更高分辨率的支持。最近的标准(诸如HEVC和H.265)是基于混合视频编解码结构,其中使用时域预测加转换编解码。

1.1预测模式的示例

每个帧间预测的PU(预测单元)都有一个或两个参考图片列表的运动参数。在一些实施例中,运动参数包括运动矢量和参考图片索引。在其它实施例中,两个参考图片列表之一的使用也可以使用inter_pred_idc发信令通知。在其它实施例中,运动矢量可显式地编解码为相对于预测器的增量。

当CU采用跳过模式编解码时,一个PU与CU相关联,并且没有显著的残差系数,没有编解码运动矢量增量或参考图片索引。规定了一种Merge模式,通过该模式,可以从临近的PU(包括空域和时域候选)中获取当前PU的运动参数。Merge模式可以应用于任何帧间预测的PU,而不仅仅是跳过模式。Merge模式的另一种选择是运动参数的显式传输,其中运动矢量、每个参考图片列表的对应的参考图片索引、以及参考图片列表的使用都会根据每个PU显式地发信令通知。

当信令指示要使用两个参考图片列表中的一个时,从一个样点块中生成PU。这被称为“单向预测”。单向预测对P条带(slice)和B条带都可用[2]。

当信令指示要使用两个参考图片列表时,从两个样点块中生成PU。这被称为“双向预测”。双向预测仅对B条带可用。

在HEVC中,术语帧间预测被用来表示从参考图片而不是当前解码图片的数据元素(例如,样点值或运动矢量)中导出的预测。如在H.264/AVC中,可以从多个参考图片中预测图片。将用于帧间预测的参考图片组织在一个或多个参考图片列表中。参考索引识别列表中的哪个参考图片应当被用于创建预测信号。

将单个参考图片列表(列表0)用于P条带,并且将两个参考图片列表(列表0和列表1)用于B条带。应当注意的是,包括在列表0/1中的参考图片可以按照捕获/显示顺序来自于过去和未来的图片。

1.1.1Merge模式的构造候选的实施例

当使用Merge模式预测PU时,从比特流中解析指向Merge候选列表中条目的索引,并且使用该索引检索运动信息。可按以下步骤顺序概括此列表的构造:

步骤1:初始候选推导

步骤1.1:空域候选推导

步骤1.2:空域候选冗余检查

步骤1.3:时域候选推导

步骤2:附加候选插入

步骤2.1:创建双向预测候选

步骤2.2:插入零运动候选

图1示出了基于以上概括的步骤顺序构造Merge候选列表的示例。对于空域Merge候选推导,在位于五个不同位置的候选中最多选择四个Merge候选。对于时域Merge候选推导,在两个候选中最多选择一个Merge候选。由于在解码器处假定每个PU的候选数为常量,因此当候选数未达到条带标头中信令通知的最大Merge候选数(maxNumMergeCand)时,生成附加的候选。由于候选数是恒定的,所以最佳Merge候选的索引使用截断的一元二值化(TU)进行编码。如果CU的尺寸等于8,则当前CU的所有PU都共享一个Merge候选列表,这与2N×2N预测单元的Merge候选列表相同。

1.1.2构造空域Merge候选

在空域Merge候选的推导中,在位于图2所示位置的候选中最多选择四个Merge候选。推导顺序为A

为了降低计算的复杂度,在所提到的冗余检查中并不考虑所有可能的候选对。相反,只有与图3中的箭头链接的对才会被考虑,并且只有当用于冗余检查的对应候选没有相同的运动信息时,才将候选添加到列表中。复制运动信息的另一个来源是与2Nx2N不同的分割相关的“第二PU”。例如,图4A和4B分别描述了N×2N和2N×N情况下的第二PU。当当前的PU被划分为N×2N时,对于列表构造不考虑位置A

1.1.3构造时域Merge候选

在此步骤中,只有一个候选被添加到列表中。特别地,在这个时域Merge候选的推导中,基于属于与给定参考图片列表中当前图片具有最小POC差的图片的并置PU导出了缩放运动矢量。用于推导并置PU的参考图片列表在条带标头中显式地发信令通知。

图5示出了时域Merge候选的缩放运动矢量的推导的示例(如虚线)。其使用POC距离tb和td从并置PU的运动矢量进行缩放,其中tb定义为当前图片的参考图片和当前图片之间的POC差,并且td定义为并置图片的参考图片与并置图片之间的POC差。时域Merge候选的参考图片索引设置为零。对于B条带,得到两个运动矢量(一个是对于参考图片列表0,另一个是对于参考图片列表1)并将其组合使其成为双向预测Merge候选。

在属于参考帧的并置PU(Y)中,在候选C

1.1.4构造附加类型的Merge候选

除了空时Merge候选,还有两种附加类型的Merge候选:组合双向预测Merge候选和零Merge候选。组合双向预测Merge候选是利用空时Merge候选生成的。组合双向预测Merge候选仅用于B条带。通过将初始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数相结合,生成组合双向预测候选。如果这两个元组(tuple)提供不同的运动假设,它们将形成新的双向预测候选。

图7示出了该处理的示例,其中原始列表(710,在左侧)中具有mvL0和refIdxL0或mvL1和refIdxL1的两个候选被用于创建添加到最终列表(720,在右侧)中的组合双向预测Merge候选。

插入零运动候选以填充Merge候选列表中的其余条目,从而达到MaxNumMergeCand的容量。这些候选具有零空域位移和从零开始并且每次将新的零运动候选添加到列表中时都会增加的参考图片索引。这些候选使用的参考帧的数目对于单向预测和双向预测分别是1和2。在一些实施例中,对这些候选不执行冗余检查。

1.2高级运动矢量预测(AMVP)的实施例

AMVP利用运动矢量与临近的PU的空时相关性,其用于运动参数的显式传输。首先通过检查左上方的时域临近的PU位置的可用性、去掉多余的候选并且加上零矢量以使候选列表长度恒定来构造运动矢量候选列表。然后,编码器可以从候选列表中选择最佳的预测器,并发送指示所选候选的对应索引。与Merge索引信令类似,最佳运动矢量候选的索引使用截断的一元进行编码。在这种情况下,要编码的最大值是2(参见图8)。在以下各章节中,提供了关于运动矢量预测候选的推导处理的细节。

1.2.1推导AMVP候选的示例

图8概括了运动矢量预测候选的推导处理,并且可以将refidx作为输入为每个参考图片实现。

在运动矢量预测中,考虑了两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选的推导,基于位于先前图2所示的五个不同位置的每个PU的运动矢量最终推导出两个运动矢量候选。

对于时域运动矢量候选的推导,从两个候选中选择一个运动矢量候选,这两个候选是基于两个不同的并置位置推导出的。在作出第一个空时候选列表后,移除列表中重复的运动矢量候选。如果潜在候选的数量大于二,则从列表中移除相关联的参考图片列表中参考图片索引大于1的运动矢量候选。如果空时运动矢量候选数小于二,则会在列表中添加附加的零运动矢量候选。

1.2.2构造空域运动矢量候选

在推导空域运动矢量候选时,在五个潜在候选中最多考虑两个候选,这五个候选来自先前图2所示位置上的PU,这些位置与运动Merge的位置相同。当前PU左侧的推导顺序定义为A

--无空域缩放

(1)相同的参考图片列表,并且相同的参考图片索引(相同的POC)

(2)不同的参考图片列表,但是相同的参考图片(相同的POC)

--空域缩放

(3)相同的参考图片列表,但是不同的参考图片(不同的POC)

(4)不同的参考图片列表,并且不同的参考图片(不同的POC)

首先检查无空域缩放的情形,然后检查允许空域缩放的情形。当POC在临近PU的参考图片与当前PU的参考图片之间不同时,都会考虑空域缩放,而不管参考图片列表如何。如果左侧候选的所有PU都不可用或是帧内编解码,则允许对上述运动矢量进行缩放,以帮助左侧和上方MV候选的平行推导。否则,不允许对上述运动矢量进行空域缩放。

如图9中的示例所示,对于空域缩放的情形,以与时域缩放类似的方式缩放临近PU的运动矢量。一个区别是,给出当前PU的参考图片列表和索引作为输入;实际的缩放处理与时域缩放处理相同。

1.2.3构造时域运动矢量候选

除了参考图片索引的推导外,时域Merge候选的所有推导处理与空域运动矢量候选的推导处理相同(如图6中的示例所示)。在一些实施例中,将参考图片索引信令通知给解码器。

2.联合探索模型(JEM)中帧间预测方法的示例

在一些实施例中,使用称为联合探索模型(JEM)[3][4]的参考软件来探索未来的视频编解码技术。在JEM中,基于子块的预测被用于各种编解码工具中,诸如仿射预测、可选时域运动矢量预测(ATMVP)、空时运动矢量预测(STMVP)、双向光流(BIO)、帧速率上转换(FRUC)、局部自适应运动矢量分辨率(LAMVR)、重叠块运动补偿(OBMC)、局部照明补偿(LIC)和解码器侧运动矢量细化(DMVR)。

2.1基于子CU的运动矢量预测的示例

在具有四叉树加二叉树(QTBT)的JEM中,每个CU对于每个预测方向最多可以具有一组运动参数。在一些实施例中,通过将大的CU划分成子CU并推导该大CU的所有子CU的运动信息,编码器中考虑了两种子CU级的运动矢量预测方法。可选时域运动矢量预测(ATMVP)方法允许每个CU从并置参考图片中多个小于当前CU的块中提取多组运动信息。该ATMVP方法也称为SbTMVP(子块时域运动矢量预测)。在空时运动矢量预测(STMVP)方法中,通过利用时域运动矢量预测器和空域临近运动矢量递归地推导子CU的运动矢量。在一些实施例中,为了为子CU运动预测的保持更精确的运动场,可以禁用参考帧的运动压缩。

2.1.1可选时域运动矢量预测(ATMVP)的示例

在ATMVP方法中,通过从小于当前CU的块中提取多组运动信息(包括运动矢量和参考索引),修改时域运动矢量预测(TMVP)方法。

图10示出了CU 1000的ATMVP运动预测处理的示例。ATMVP方法分两步预测CU 1000内子CU 1001的运动矢量。第一步是用时域矢量识别参考图片1050中的对应块1051。参考图片1050也被称为运动源图片。第二步是将当前的CU 1000划分为子CU 1001,并从每个子CU对应的块中获取每个子CU的运动矢量和参考索引。

在第一步中,参考图片1050和对应的块由当前CU 1000的空间临近块的运动信息确定。为了避免临近块的重复扫描处理,使用当前CU 1000的Merge候选列表中的第一个Merge候选。第一个可用的运动矢量及其相关联的参考索引被设置为时域矢量和运动源图片的索引。这样,与TMVP相比,可以更准确地识别对应的块,其中对应的块(有时称为并置块)始终位于相对于当前CU的右下角或中心位置。

在第二步中,通过将时域矢量添加到当前CU的坐标中,通过运动源图片1050中的时域矢量识别子CU 1051的对应块。对于每个子CU,使用其对应块的运动信息(例如,覆盖中心样点的最小运动网格)来导出子CU的运动信息。在识别出对应N×N块的运动信息后,将其转换为当前子CU的运动矢量和参考索引,与HEVC的TMVP方法相同,其中应用运动缩放和其他处理。例如,解码器检查是否满足低延迟条件(例如,当前图片的所有参考图片的POC都小于当前图片的POC),并可能使用运动矢量MVx(例如,与参考图片列表X对应的运动矢量)来为每个子CU预测运动矢量MVy(例如,X等于0或1且Y等于1-X)。

2.1.2空时运动矢量预测(STMVP)的示例

在STMVP方法中,子CU的运动矢量按照光栅扫描顺序递归导出。图11示出具有四个子块和临近块的一个CU的例子。考虑8×8的CU 1100,其包括四个4×4子CU A(1101)、B(1102)、C(1103)和D(1104)。当前帧中临近的4×4块标记为a(1111)、b(1112)、c(1113)和d(1114)。

子CU A的运动推导由识别其两个空间邻居开始。第一个邻居是子CU A 1101上方的N×N块(块c 1113)。如果该块c(1113)不可用或是内部编解码的,则检查子CU A(1101)上方的其他N×N块(从左到右,从块c 1113处开始)。第二个邻居是子CU A 1101左侧的一个块(块b 1112)。如果块b(1112)不可用或是内部编解码的,则检查子CU A 1101左侧的其他块(从上到下,从块b 1112处开始)。每个列表从临近块获得的运动信息被缩放到给定列表的第一个参考帧。接下来,按照HEVC中规定的与TMVP相同的程序,推导出子块A 1101的时间运动矢量预测(TMVP)。提取块D 1104处的并置块的运动信息并进行相应的缩放。最后,在检索和缩放运动信息后,对每个参考列表分别平均所有可用的运动矢量。将平均运动矢量分配为当前子CU的运动矢量。

2.1.3子CU运动预测模式信令的示例

在一些实施例中,子CU模式作为附加的Merge候选启用,并且不需要附加的语法元素来信令通知该模式。将两个附加的Merge候选添加到每个CU的Merge候选列表中,以表示ATMVP模式和STMVP模式。在其他实施例中,如果序列参数集指示启用了ATMVP和STMVP,则最多可以使用七个Merge候选。附加的Merge候选的编码逻辑与HM中的Merge候选的编码逻辑相同,这意味着对于P或B条带中的每个CU,可能需要对两个附加的Merge候选进行两次额外的RD检查。在一些实施例中,例如JEM,Merge索引的所有块(bin)都由CABAC(基于文本的自适应二进制算术编码)进行上下文编解码的。在其他实施例中,例如HEVC,只有第一个块是上下文编解码的,并且其余的块是上下文旁路编解码的。

2.2VVC中帧间预测方法的示例

存在几种新的用于帧间预测改进的编解码工具,诸如用于信令通知MVD的自适应运动矢量差分辨率(AMVR)、仿射预测模式、三角预测模式(TPM)、ATMVP、广义双向预测(GBI)、双向光流(BIO)。

2.2.1自适应运动矢量差分辨率的示例

在一些实施例中,当在条带报头中use_integer_MV_flag等于0时,运动矢量差(MVD)(在PU的运动矢量和预测运动矢量之间)以四分之一亮度样点为单位信令通知。在JEM中,引入了局部自适应运动矢量分辨率(LAMVR)。在JEM中,MVD可以用四分之一亮度样点、整数亮度样点或四亮度样点的单位进行编解码。MVD分辨率控制在编解码单元(CU)级别,并且有条件地为每个具有至少一个非零MVD分量的CU信令通知MVD分辨率标志。

对于具有至少一个非零MVD分量的CU,将信令通知第一个标志以指示CU中是否使用四分之一亮度样点MV精度。当第一个标志(等于1)指示不使用四分之一亮度样点MV精度时,信令通知另一个标志以指示是使用整数亮度样点MV精度还是使用四亮度样点MV精度。

当CU的第一个MVD分辨率标志为零或没有为CU编解码(意味着CU中的所有MVD都为零)时,CU使用四分之一亮度样点MV分辨率。当一个CU使用整数亮度样点MV精度或四亮度样点MV精度时,该CU的AMVP候选列表中的MVP将被舍入到对应的精度。

2.2.2仿射运动补偿预测的示例

在HEVC中,仅将平移运动模型应用于运动补偿预测(MCP)。然而,相机和对象可能具有多种运动,例如放大/缩小、旋转、透视运动和/或其他不规则运动。在VVC中,采用具有4参数仿射模型和6参数仿射模型的简化的仿射变换运动补偿预测。如图12A和12B所示,块的仿射运动场分别由两个(在使用变量a、b、e和f的4参数仿射模型中)或三个(在使用变量a、b、c、d、e和f的6参数仿射模型中)控制点运动矢量来描述。

块的运动矢量场(MVF)由以下等式分别用具有4参数仿射模型和6参数仿射模型描述:

这里,(mv

图13示出了块1300的每个子块的仿射MVF的示例,其中为了进一步简化运动补偿预测,应用基于子块的仿射变换预测。为了导出每个M×N子块的运动矢量,可以根据等式(1)和(2)计算每个子块的中心样点的运动矢量,并取整到运动矢量分数精度(例如,在JEM中为1/16)。然后应用运动补偿插值滤波器,利用导出的运动矢量生成各子块的预测。通过仿射模式引了1/16像素的插值滤波器。在MCP之后,将每个子块的高精度运动矢量取整,并保存为与常规运动矢量相同的精度。

2.2.3仿射预测的信令的示例

与平移运动模型类似,仿射预测也有两种模式用于信令通知附带信息。它们是AFFINE_INTER模式和AFFINE_MERGE模式。

2.2.4AF_INTER模式的示例

对于宽度和高度都大于8的CU,可以应用AF_INTER模式。在比特流中,信令通知CU级的仿射标志,以指示是否使用AF_INTER模式。

在此模式中,对于每个参考图片列表(列表0或列表1),按照以下顺序用三种类型的仿射运动预测器构造仿射AMVP候选列表,其中每个候选包括当前块的估计的CPMV。信令通知在编码器侧发现的最佳CPMV的差(例如图16中的mv012)、以及估计的CPMV。此外,进一步信令通知从中导出估计的CPMV的仿射AMVP候选的索引。

1)继承的仿射运动预测器

检查顺序与在HEVC AMVP列表构造中空域MVP的检查顺序相似。首先,从{A1,A0}中的第一个块导出左继承的仿射运动预测器,该块是仿射编解码的,并且具有与当前块相同的参考图片。其次,从{B1,B0,B2}中的第一块导出上述继承的仿射运动预测器,该块是仿射编解码的,并且具有与当前块相同的参考图片。图15描绘了五个块A1、A0、B1、B0、B2。

一旦发现临近块是仿射编解码的,则利用覆盖临近块的编解码单元的CPMV来推导当前块的CPMV的预测器。例如,如果A1用非仿射模式编解码,并且A0用4参数仿射模式编解码,则将从A0导出左继承的仿射MV预测器。在这种情况下,覆盖A0的CU的CPMV(如图17B中对于左上CPMV用

2)构造的仿射运动预测器

如图16所示,构造的仿射运动预测器由从具有相同参考图片的临近帧间编解码块导出的控制点运动矢量(CPMV)组成。如果当前仿射运动模型为4参数仿射,则CPMV的数目为2;否则,如果当前仿射运动模型为6参数仿射,则CPMV的数目为3。左上CPMV

–如果当前仿射运动模型是4参数仿射,则只有当

–如果当前仿射运动模型是6参数仿射,则只有当

在将构造的仿射运动预测器插入候选列表中时,不应用修剪处理。

3)常规AMVP运动预测器

以下内容适用,直到仿射运动预测器的数目达到最大值。

1)通过将所有CPMV设置为等于

2)通过将所有CPMV设置为等于

3)通过将所有CPMV设置为等于

4)通过将所有CPMV设置为等于HEVC TMVP(如果可用)来导出仿射运动预测器。

5)通过将所有CPMV设置为等于零MV来导出仿射运动预测器。

注意,已在构造的仿射运动预测器中导出

在AF_INTER模式中,当使用4/6参数仿射模式时,需要2/3个控制点,并且因而需要对这些控制点编解码2/3个MVD,如图14A和14B所示。在现有实现[5]中,可以如下导出MV,例如,从mvd

其中,

2.2.5AF_MERGE模式的示例

当在AF_MERGE模式中应用CU时,它从有效的临近重构块中获得以仿射模式编解码的第一个块。并且候选块的选择顺序是从左、上、右上、左下到左上,如图17A所示(依次表示为A、B、C、D、E)。例如,如果临近左下块用仿射模式编解码(如图17B中A0表示的),则提取包含块A的临近CU/PU的左上、右上和左下的控制点(CP)运动矢量mv

在计算出当前CU的CPMV v

在一些实施例中(例如,JVET-L0142和JVET-L0632),用以下步骤来构造仿射Merge候选:

1)插入继承的仿射候选

继承的仿射候选是指该候选是从其有效临近仿射编解码块的仿射运动模型导出的。从临近块的仿射运动模型中导出最大的两个仿射候选并插入候选列表中。对于左侧预测器,扫描顺序是{A0,A1};对于上方预测,扫描顺序是{B0,B1,B2}。

2)插入构造的仿射候选

如果仿射Merge候选列表中的候选数目小于MaxNumAffineCand(本文中设为5),则将构造仿射候选插入候选列表中。构造仿射候选是指该候选是通过组合每个控制点的临近运动信息构造的。

a)首先从图18所示的规定的空域邻居和时域邻居导出控制点的运动信息。CPk(k=1,2,3,4)表示第k个控制点。A0、A1、A2、B0、B1、B2和B3是用于预测CPk(k=1,2,3)的空域位置;T是用于预测CP4的时域位置。

CP1、CP2、CP3和CP4的坐标分别为(0,0),(W,0),(H,0)和(W,H),其中W和H是当前块的宽度和高度。

按照以下优先顺序获得每个控制点的运动信息:

对于CP1,检查优先级为B2->B3->A2。如果B2可用,则使用B2。否则,如果B2不可用,则使用B3。如果B2和B3都不可用,则使用A2。如果三个候选都不可用,则无法获得CP1的运动信息。

对于CP2,检查优先级为B1->B0;

对于CP3,检查优先级为A1->A0;

对于CP4,使用T。

b)其次,使用控制点的组合来构造仿射Merge候选。

I.需要三个控制点的运动信息来构造6参数仿射候选。可以从以下四个组合中的一个来选择这三个控制点({CP1,CP2,CP4}、{CP1,CP2,CP3}、{CP2,CP3,CP4}、{CP1,CP3,CP4})。组合{CP1,CP2,CP3}、{CP2,CP3,CP4}、{CP1,CP3,CP4}将被转换到由左上、右上和左下控制点表示的6参数运动模型。

II.需要两个控制点的运动信息来构造4参数仿射候选。可以从以下六个组合中的一个来选择这两个控制点({CP1,CP4}、{CP2,CP3}、{CP1,CP2}、{CP2,CP4}、{CP1,CP3}、{CP3,CP4})。组合{CP1,CP4}、{CP2,CP3}、{CP2,CP4}、{CP1,CP3}、{CP3,CP4}将被转换到由左上和右上控制点表示的4参数运动模型。

III.按以下顺序将构造仿射候选的组合插入到候选列表中:

{CP1,CP2,CP3}、{CP1,CP2,CP4}、{CP1,CP3,CP4}、{CP2,CP3,CP4}、{CP1,CP2}、{CP1,CP3}、{CP2,CP3}、{CP1,CP4}、{CP2,CP4}、{CP3,CP4}。

i.对于组合的参考列表X(X为0或1),选择控制点中使用率最高的参考索引作为列表X的参考索引,并且缩放指向不同参考图片的运动矢量。

在导出候选之后,执行完全修剪处理,以检查是否已将相同的候选插入到列表中。如果存在相同的候选,则丢弃导出的候选。

3)填充零运动矢量

如果仿射Merge候选列表中的候选数目小于5,则在候选列表中插入具有零参考索引的零运动矢量,直到列表满为止。

更具体地,对于子块Merge候选列表,4参数Merge候选的MV设置为(0,0)且预测方向设置为来自列表0的单向预测(对于P条带)和双向预测(对于B条带)。

2.2.6色度仿射编解码块的子块尺寸的示例

在VTM 3.0采用的提案JVET-L0265中,将色度子块的尺寸从2x2修改为4x4。4×4色度子块的MV计算为四个对应的4×4亮度子块的MV的平均。随着扩展的子块尺寸,最坏情况下的带宽减少;例如,

MV_Chroma=Average(clipped(MV_luma0)+clipped(MV_luma1)+clipped(MV_luma2)+clipped(MV_luma3))

2.4运动矢量差Merge(Merge with Motion Vector Difference,MMVD)的示例

在JVET-L0054中,提出了最终运动矢量表达(UMVE,也称为MMVD)。UMVE与提出的运动矢量表达方法被用于跳过或Merge模式。

UMVE重用与VVC中常规Merge候选列表中包含的Merge候选相同的Merge候选。在Merge候选中,可以选择基础候选,并通过所提出的运动矢量表达方法进一步扩展。

UMVE提供了一种新的运动矢量差(MVD)表示方法,其中使用起点、运动幅度和运动方向来表示MVD。

这个提出的技术按原样使用Merge候选列表。但是只有默认Merge类型(MRG_TYPE_DEFAULT_N)的候选才被考虑用于UMVE的扩展。

基础候选索引定义了起点。基础候选索引指示列表中候选的最佳候选,如下所示。

表1基础候选IDX

如果基础候选的数目等于1,则不信令通知基础候选IDX。

距离索引是运动幅度信息。距离索引指示距离起点信息的预定义的距离。预定义的距离如下所示:

表2距离IDX

方向索引表示MVD相对于起点的方向。方向索引可以表示如下所示的四个方向。

表3方向IDX

在一些实施例中,在发送跳过标志或Merge标志之后立即信令通知UMVE标志。如果跳过或Merge标志为真,则解析UMVE标志。如果UMVE标志等于1,则解析UMVE语法。但是,如果不是1,则解析仿射标志。如果仿射标志等于1,则是仿射模式,但是,如果不是1,则为VTM的跳过/Merge模式解析跳过/Merge索引。

由于UMVE候选而导致的附加线缓冲区是不需要的。因为软件的跳过/Merge候选被直接用作基础候选。通过使用输入UMVE索引,在运动补偿前判定MV的补充。不需要为此保留长线缓冲区。

在当前普通测试条件下,可以选择Merge候选列表中的第一个或第二个Merge候选作为基础候选。

2.5MVD推导处理的细节

以下文字来自JVET-L1001-v6。

亮度Merge运动矢量差mMvdL0和mMvdL1导出如下:

–如果predFlagL0和predFlagL1都等于1,则以下适用:

currPocDiffL0=DiffPicOrderCnt(currPic,RefPicList0[refIdxL0])(8-272)

currPocDiffL1=DiffPicOrderCnt(currPic,RefPicList1[refIdxL1])(8-273)

–如果-currPocDiffL0*currPocDiffL1大于0,则以下适用:

mMvdL0[0]=MmvdOffset[0] (8-274)

mMvdL0[1]=MmvdOffset[1] (8-275)

mMvdL1[0]=-MmvdOffset[0] (8-276)

mMvdL1[1]=-MmvdOffset[1] (8-277)

–否则(–currPocDiffL0*currPocDiffL1小于0),则以下适用:

mMvdL0[0]=MmvdOffset[0] (8-278)

mMvdL0[1]=MmvdOffset[1] (8-279)

mMvdL1[0]=MmvdOffset[0] (8-280)

mMvdL1[1]=MmvdOffset[1] (8-281)

–如果Abs(currPocDiffL0)大于Abs(currPocDiffL1),则以下适用:

td=Clip3(-128,127,currPocDiffL0) (8-282)

tb=Clip3(-128,127,currPocDiffL1) (8-283)

tx=(16384+(Abs(td)>>1))/td (8-284)

distScaleFactor=Clip3(-4096,4095,(tb*tx+32)>>6)(8-285)

mMvdL1[0]=Clip3(-2

mMvdL1[0])*((Abs(distScaleFactor*mMvdL1[0])+127)>>8))(8-286)

mMvdL1[1]=Clip3(-2

mMvdL1[1])*((Abs(distScaleFactor*mMvdL1[1])+127)>>8))(8-287)

–否则,如果Abs(currPocDiffL0)小于Abs(currPocDiffL0),则以下适用:

td=Clip3(-128,127,currPocDiffL1) (8-288)

tb=Clip3(-128,127,currPocDiffL0) (8-289)

tx=(16384+(Abs(td)>>1))/td (8-290)

distScaleFactor=Clip3(-4096,4095,(tb*tx+32)>>6)(8-291)

mMvdL0[0]=Clip3(-2

mMvdL0[0])*

((Abs(distScaleFactor*mMvdL0[0])+127)>>8))

(8-292)

mMvdL0[1]=Clip3(-2

mMvdL0[1])*

((Abs(distScaleFactor*mMvdL0[1])+127)>>8))

(8-293)

–否则(predFlagL0或predFlagL1等于1),以下适用于X为0或1:

mMvdLX[0]=(predFlagLX==1)?MmvdOffset[0]:0(8-294)

mMvdLX[1]=(predFlagLX==1)?MmvdOffset[1]:0(8-295)

3.现有实现的缺陷

在现有的实现中(例如,VTM3.0),由于MV精度增加到1/16像素,MV范围的原始限制对于8K分辨率视频来说是没有意义的。此外,对于4x4子PU预测(即仿射模式),最小色度子块尺寸不限于4x4。将四个亮度运动矢量一起平均,形成对应的色度4x4子块的单个运动矢量。通过在平均以形成色度矢量之前剪切亮度运动矢量(剪切然后平均),即使对于MV不超过限制范围的大多数情况,每个解码器也必须实现该剪切以获得匹配。

4.为视频编解码选择和应用运动矢量范围的示例方法

目前公开的技术的实施例克服了现有实现的缺点,从而提供了具有更高编解码效率的视频编解码。基于所公开的技术,在为各种实现所描述的以下示例中阐明了可以增强现有和未来的视频编解码标准二者的视频编解码的运动矢量范围的选择和应用。下面提供的公开技术的示例解释了一般概念,并且不意图被解释为限制性的。在示例中,除非明确表示相反,否则可以组合这些示例中描述的各种特征。应当注意的是,所提出的一些技术可以应用到现有的候选列表构造处理中。

(a)在一个示例中,如何导出子块的色度分量的运动矢量取决于诸如4:2:0、4:2:2或4:4:4的颜色格式。

i.在一个示例中,利用四个M x N亮度块的运动矢量来导出M x N色度块的运动矢量。可替代地,另外,可以在4:2:0颜色子采样格式的条件下调用它。

ii.在一个示例中,利用两个M x N亮度块的运动矢量来导出M x N色度块的运动矢量。可替代地,另外,可以在4:2:2颜色子采样格式的条件下调用它。

iii.在一个示例中,使用一个M x N亮度块的运动矢量作为M x N色度块的运动矢量。可替代地,另外,可以在4:4:4颜色格式下调用它。

(b)在一个示例中,可以应用多个亮度运动矢量的线性函数来导出色度运动矢量。

(c)可替代地,另外,在用于色度块的运动补偿之前,可以进一步剪切导出的色度运动矢量。

(d)以上方法可应用于基于子块的技术,例如仿射、ATMVP、STMVP等。可替代地,此外,M x N可以表示子块尺寸,并且多个亮度/色度块可以表示多个亮度子块和一个色度子块。

(e)在一个示例中,对于仿射模式,MV_Chroma可以设置为四个对应的亮度块的平均,诸如Average(MV_luma0+MV_luma1+MV_luma2+MV_luma3)。

(f)上述亮度/色度分量可以指Y/Cb/Cr或其它颜色表示,诸如G/R/B。

(a)在一个示例中,可以基于AMVR的使用来定义不同的MV范围,并且对于不同的配置文件/级别它可以是不同的。

(b)对于不同的模式(诸如仿射或非仿射),MV范围可以不同。

(c)当限制范围不同时,可以使用不同的输入参数应用运动矢量的剪切(即,基于范围)。

(a)在一个示例中,对于AMVP处理,当从与目标参考图片不同的参考图片相关联的运动矢量导出运动矢量预测候选时,可以将运动矢量的每个分量缩放到范围为[-((1<<(M-1)),(1<<(M-1))-1]的目标参考图片。在一个实现中,M被设置为18,并且范围[-((1<<(M-1)),(1<<(M-1))-1]是[-131072,131071]。

(b)在一个示例中,对于AMVP/Merge模式和/或ATMVP/STMVP任一个的TMVP处理,当从与来自目标参考图片的时域参考图片相关联的运动矢量导出运动矢量预测候选时,可以将运动矢量缩放到范围为[-((1<<(M-1))),(1<<(M-1))-1]的目标参考图片。

(c)在一个示例中,对于MMVD的MVD推导处理,当一个参考图片列表的MVD被缩放到另一个参考图片列表时,可将缩放的MVD限制在[-((1<<(M-1))),(1<<(M-1))-1]的范围内。

(d)在一个示例中,当对序列/图片/条带/片启用仿射时,可以调用以上方法。

(a)在不同的标准配置文件/级别/层次中,MV精度可以不同。

(a)在不同的标准配置文件/级别/层次中,MV的内部比特深度可以不同。

(a)例如,假设参考图片的宽度和高度为W和H,并且当前块的左上角位置为(x0,y0),MV精度为1/(1<

i.PicMinH=(-x0+1+Offset1)<

ii.PicMaxH=(W-1-x0+Offset2)<

iii.PicMinV=(-y0+1+Offset3)<

iv.PicMaxV=(H-1-y0+Offset4)<

这里,Offset1、Offset2、Offset3和Offset4是可以取决于填充方法的偏移。例如,Offset1=-CW-8,Offset3=-CH-8,Offset2=Offset4=8。

MVMinH=max(PicMinH,-((1<<(M-1)))),

MVMinV=max(PicMinV,-((1<<(M-1)))),

MVMaxH=min(PicMaxH,((1<<(M-1)))-1),并且

MVMaxV=min(PicMaxV,((1<<(M-1)))-1).

MV的x分量可以剪切为在范围[MVMinH,MVMaxH]内,并且MV的y分量可以剪切为在范围[MVMinV,MVMaxV]内。

(a)在一个示例中,控制点运动矢量可以限制在范围[-2

上述示例可并入下文所述方法的上下文中,例如,方法2100和2200,其可在视频解码器或视频编码器处实现。

图21示出用于视频处理的示例性方法的流程图。方法2100包括:在步骤2110,基于多个亮度块的未剪切的先前计算的亮度运动矢量,导出与视频的当前视频块相关联的色度块的色度运动矢量。方法2100包括:在步骤2120,基于色度运动矢量执行当前视频块与视频的比特流表示之间的转换。

图22A示出用于视频处理的示例性方法的流程图。方法2200包括:在步骤2202,确定与视频的当前视频块相关的一个或多个运动矢量的运动矢量精度。方法2200包括:在步骤2204,基于运动矢量精度选择运动矢量范围。方法2200包括:在步骤2206,基于运动矢量范围执行当前视频块和视频的比特流表示之间的转换。

图22B示出用于视频处理的示例性方法的流程图。方法2210包括:在步骤2212,确定使用与视频的当前视频块相关的一个或多个运动矢量的内部比特深度,其中内部比特深度具有M比特,M大于16,并且当前视频块使用时域运动矢量预测。方法2210还包括:在步骤2214,基于至少M比特运动矢量执行当前视频块和视频的比特流表示之间的转换。

图22C示出用于视频处理的示例性方法的流程图。方法2220包括:在步骤2222,确定将运动矢量精度值用于视频的视频单元的当前视频块与视频的编码表示之间的转换的运动矢量的精度。方法2220还包括:在步骤2224,基于根据运动矢量精度值的运动矢量的精度执行转换。在一些实现中,视频单元级的语法元素指示运动矢量精度值。

图22D示出用于视频处理的示例性方法的流程图。方法2230包括:在步骤2232,为视频的当前视频块和当前视频块的比特流表示之间的转换确定参数。方法2230还包括:在步骤2234,基于参数执行转换。在一些实现中,确定参数基于包括当前视频块的当前图片的高度或宽度。

图22E示出用于视频处理的示例性方法的流程图。方法2240包括:在步骤2242,剪切临时运动矢量以生成剪切的运动矢量。方法2240还包括:在步骤2244,至少基于剪切的运动矢量导出与视频的当前视频块相关联的运动矢量。方法2240还包括:在步骤2246,基于与当前视频块相关联的运动矢量执行视频的当前视频块和视频的比特流表示之间的转换。在一些实现中,剪切临时运动矢量基于当前视频块的参考图片的高度(H)或宽度(W)、当前视频块的左上位置(x0,y0)、或运动矢量的运动矢量精度或内部比特深度(M)中的至少一个。

图23A示出用于视频处理的示例性方法的流程图。方法2300包括:在步骤2302,执行视频的当前视频块和视频的比特流表示之间的转换,其中转换使用缩放处理从来自第二参考图片的运动矢量差中获得第一参考图片的运动矢量差,并且其中缩放处理使用剪切操作来限制第一参考图片的运动矢量差落在范围[-((1<<(M-1))),(1<<(M-1))-1]内,其中M是大于16的数字。

图23B示出用于视频处理的示例性方法的流程图。方法2310包括:在步骤2312,确定为视频的视频单元的当前视频块和视频的比特流表示之间的转换使用一个或多个运动矢量的内部比特深度。方法2310还包括:在步骤2314,使用一个或多个运动矢量执行转换。在一些实现中,视频单元级的语法元素指示内部比特深度。

图23C示出用于视频处理的示例性方法的流程图。方法2320包括:在步骤2322,确定为视频的视频单元的当前视频块和视频的比特流表示之间的转换使用仿射运动参数的内部比特深度。方法2320还包括:在步骤2324,基于确定执行转换,其中仿射运动参数的内部比特深度具有与非仿射运动参数相同的范围。

5.公开技术的示例实现

在一些实施例中,JVET-L1001-v6规范中的修改如下所示,分别用\begin{DELETE}和\end{ADD}标记来指示删除和添加。

8.3.3子块运动矢量分量和参考索引的推导处理

8.3.3.1概述

该处理的输入为:

–当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),

–变量cbWidth,其指定亮度样点中当前编解码块的宽度,

–变量cbHeight,其指定亮度样点中当前编解码块的高度。

该处理的输出为:

–参考索引refIdxL0和refIdxL1,

–水平方向和垂直方向上的亮度编解码子块数目numSbX、numSbY,

–预测列表使用标志阵列predFlagL0[xSbIdx][ySbIdx]和predFlagL1[xSbIdx][ySbIdx],其中xSbIdx=0..numSbX-1,ySbIdx=0..numSbX-1,

–1/16分数采样精度的亮度子块运动矢量阵列mvL0[xSbIdx][ySbIdx]和mvL1[xSbIdx][ySbIdx],其中xSbIdx=0..numSbX-1,ySbIdx=0..numSbY-1,

–1/32分数采样精度的色度子块运动矢量阵列mvCL0[xSbIdx][ySbIdx]和mvCL1[xSbIdx][ySbIdx],其中xSbIdx=0..numSbX-1,ySbIdx=0..numSbY-1,

–双向预测加权索引gbiIdx。

对于变量mvL0[xSbIdx][ySbIdx]、mvL1[xSbIdx][ySbIdx]、mvCL0[xSbIdx][ySbIdx]和mvCL1[xSbIdx][ySbIdx]refIdxL0refIdxL1numSbXnumSbYpredFlagL0[xSbIdx][ySbIdx]和predFlagL1[xSbIdx][ySbIdx]的推导,以下适用:

–如果merge_subblock_flag[xCb][yCb]等于1,则以亮度编解码块位置(xCb,yCb)、亮度编解码块宽度cbWidth和亮度编解码块高度cbHeight作为输入,以水平方向和垂直方向的亮度编解码子块数目numSbX和numSbY,参考索引refIdxL0、refIdxL1,预测列表使用标志阵列predFlagL0[xSbIdx][ySbIdx]和predFlagL1[xSbIdx][ySbIdx],亮度子块运动矢量阵列mvL0[xSbIdx][ySbIdx]和mvL0[xSbIdx][ySbIdx],以及色度子块运动矢量阵列mvCL0[xSbIdx][ySbIdx]和mvCL1[xSbIdx][ySbIdx](其中xSbIdx=0..numBx-1,ySbIdx=0..numSbY-1),以及双向预测加权索引gbiIdx作为输出,调用8.3.3.2中规定的子块Merge模式中的运动矢量和参考索引的推导处理。

–否则(merge_subblock_flag[xCb][yCb]等于0),由于变量predFlagLX、cpMvLX、MvdCpLX、和refIdxLX中,以及语法元素ref_idx_LX中的X被0或1替换,以下顺序步骤适用:

–对于控制点运动矢量的数目numCpMv、控制点运动矢量cpMvLX[cpIdx](其中cpIdx在从0到numCpMv–1的范围内)、refIdxLX、predFlagLX[0][0]的推导,以下适用:

1.将控制点运动矢量的数目numCpMv设置为等于MotionModelIdc[xCb][yCb]+1。

2.变量refIdxLX和predFlagLX导出如下:

-如果inter_pred_idc[xCb][yCb]等于PRED_LX或PRED_BI,则

refIdxLX=ref_idx_lX[xCb][yCb] (8-347)

predFlagLX[0][0]=1 (8-348)

-否则,变量refIdxLX和predFlagLX由以下指定:

refIdxLX=-1 (8-349)

predFlagLX[0][0]=0 (8-350)

3.变量cpMvLX[cpIdx](其中cpIdx在从0到numCpMv–1的范围内)推导如下:

mvdCpLX[cpIdx][0]=MvdCpLX[xCb][yCb][cpIdx][0](8-351)

mvdCpLX[cpIdx][1]=MvdCpLX[xCb][yCb][cpIdx][1](8-352)

4.当predFlagLX[0][0]等于1时,则以亮度编解码块位置(xCb,yCb)、以及变量cbWidth、cbHeight、refIdxLX和控制点运动矢量的数目numCpMv作为输入,并且输出为mvpCpLX[cpIdx],其中cpIdx在从0到numCpMv-1的范围内,调用第8.3.3.7条中规定的亮度仿射控制点运动矢量预测器的推导处理。

5.当predFlagLX[0][0]等于1时,亮度运动矢量mvpCpLX[cpIdx](其中cpIdx在从0到numCpMv-1的范围内)推导如下:

–变量numSbX和numSbY推导如下:

numSbX=(cbWidth>>2) (8-357)

numSbY=(cbHeight>>2) (8-358)

–对于xSbIdx=0..numSbX-1,ySbIdx=0..numSbY-1,以下适用:

predFlagLX[xSbIdx][ySbIdx]=predFlagLX[0][0] (8-359)

–当predFlagLX[0][0]等于1时,则以亮度编解码块位置(xCb,yCb)、亮度编解码块宽度cbWidth、亮度预测块高度cbHeight、控制点运动矢量的数目numCpMv,控制点运动矢量cpMvLX[cpIdx](cpIdx为0..2)、水平方向和垂直方向的亮度编解码子块数目numSbX和numSbY作为输入,并且亮度运动矢量阵列mvLX[xSbIdx][ySbIdx]和色度运动矢量阵列mvCLX[xSbIdx][ySbIdx](其中xSbIdx=0..numSbX-1,ySbIdx=0..numSbY-1)作为输出,调用子条款8.3.3.9中规定的从仿射控制点运动矢量推导运动矢量阵列的处理。

–将双向预测加权索引gbiIdx设置为等于gbi_idx[xCb][yCb]。

图24A是视频处理装置2400的框图。装置2400可用于实现本文所述的一种或多种方法。装置2400可实施于智能手机、平板电脑、计算机、物联网(IoT)接收器等中。装置2400可以包括一个或多个处理器2402、一个或多个存储器2404和视频处理硬件2406。处理器2402可以被配置成实现如本文所述的图21至23C所示的一个或多个方法。存储器2404可用于存储用于实现本文所述的方法和技术的数据和代码。视频处理硬件2406可用于在硬件电路中实现本文中描述的一些技术。

图24B是可以实现所公开的技术的视频处理系统的框图的另一示例。图24B是示出其中可以实现本文公开的各种技术的示例性视频处理系统3100的框图。各种实现可以包括系统3100的部分或全部组件。系统3100可以包括用于接收视频内容的输入3102。视频内容可以原始或未压缩格式(例如,8或10比特多分量像素值)接收,或者可以压缩或编码格式接收。输入3102可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(PON)等有线接口和诸如Wi-Fi或蜂窝接口的无线接口。

系统3100可包括可实现本文中所描述的各种编解码或编码方法的编解码组件3104。编解码组件3104可以降低从输入3102到编解码组件3104的输出的视频的平均比特率,以产生视频的编解码。因此,编码技术有时被称为视频压缩或视频转码技术。编解码组件3104的输出可以被存储,也可以通过连接的通信进行传输,如组件3106所示。输入3102处接收的视频的存储或通信比特流(或编解码)表示可由组件3108用于生成像素值或发送到显示接口3110的可显示视频。从比特流表示生成用户可观看视频的处理有时称为视频解压缩。此外,尽管某些视频处理操作被称为“编解码”操作或工具,但应当理解的是,编解码工具或操作被用于编码器处,并且逆向编解码结果的相应的解码工具或操作将由解码器执行。

外围总线接口或显示接口的示例可以包括通用串行总线(USB)或高清晰度多媒体接口(HDMI)或显示端口等。存储接口的示例包括SATA(串行高级技术附件)、PCI、IDE接口等。本文中所述的技术可实施在各种电子设备中,例如移动电话、笔记本电脑、智能手机或其他能够执行数字数据处理和/或视频显示的设备。

在一些实施例中,视频编解码方法可以使用如关于图24A或24B描述的在硬件平台上实现的设备来实现。

可以使用以下基于条款的格式来描述各种技术和实施例。

第一组条款描述在先前章节中列出的公开技术的某些特征和方面,包括例如示例1和3(a)。

1.一种用于视频处理的方法,包括:

基于多个亮度块的未剪切的先前计算的亮度运动矢量,导出与视频的当前视频块相关联的色度块的色度运动矢量;以及

基于所述色度运动矢量执行所述当前视频块与所述视频的比特流表示之间的转换。

2.根据条款1所述的方法,其中,用于导出所述色度运动矢量的所述方法还基于所述当前视频块的颜色格式。

3.根据条款2所述的方法,其中,所述当前视频块的所述颜色格式为4:2:0、4:2:2或4:4:4。

4.根据条款1所述的方法,其中,所述导出所述色度运动矢量基于所述未剪切的先前计算的亮度运动矢量的四个亮度运动矢量。

5.根据条款4所述的方法,其中,所述颜色格式为4:2:0。

6.根据条款1所述的方法,其中,所述导出所述色度运动矢量基于所述未剪切的先前计算的亮度运动矢量的两个亮度运动矢量。

7.根据条款6所述的方法,其中,所述颜色格式为4:2:2。

8.根据条款1所述的方法,其中,所述导出所述色度运动矢量基于所述未剪切的先前计算的亮度运动矢量的一个亮度运动矢量。

9.根据条款8所述的方法,其中,所述颜色格式为4:4:4。

10.根据条款1所述的方法,其中,所述导出所述色度运动矢量基于多个亮度运动矢量的线性函数。

11.根据条款1所述的方法,还包括:

剪切所述色度运动矢量以生成剪切的色度运动矢量,

其中,所述执行所述转换包括基于所述剪切的色度运动矢量的运动补偿。

12.根据条款1至11中任一项所述的方法,其中,所述当前视频块包括子块,并且其中,所述执行所述转换基于仿射预测、子块时域运动矢量预测(SbTMVP)、或空时运动矢量预测(STMVP)中的至少一个。

13.根据条款12所述的方法,其中,所述执行所述转换基于所述仿射预测,并且将所述色度运动矢量设置为四个对应亮度块的运动矢量的平均。

14.根据条款1至11中任一项所述的方法,其中,所述色度块和所述多个亮度块对应于Y/Cb/Cr颜色空间。

15.根据条款1至11中任一项所述的方法,其中,所述色度块和所述多个亮度块对应于R/G/B颜色空间。

16.一种用于视频处理的方法,包括:

确定使用与视频的当前视频块相关的一个或多个运动矢量的内部比特深度,所述内部比特深度是M比特,其中M大于16;以及

基于高级运动矢量预测(AMVP)处理和所述M比特运动矢量执行所述当前视频块和所述视频的比特流表示之间的转换。

17.根据条款16所述的方法,其中,从运动矢量预测器导出所述一个或多个运动矢量中的至少一个,并且其中,将所述运动矢量预测器缩放到范围[—(1<<(M-1)),(1<<(M-1))-1]。

18.根据条款17所述的方法,其中,M是18,并且所述范围是[-131072、131071]。

19.根据条款17所述的方法,其中,所述运动矢量预测器与具有不同于所述当前视频块的目标参考图片的参考图片的块相关联。

20.根据条款1至19中任一项所述的方法,其中,所述转换包括从所述比特流表示生成所述当前视频块的像素值。

21.根据条款1至19中任一项所述的方法,其中,所述转换包括从所述当前视频块的像素值生成所述比特流表示。

22.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,当其上的所述指令被所述处理器执行时,使所述处理器实现条款1至21中的一项或多项所述的方法。

23.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于实现条款1至21中的一项或多项所述的方法的程序代码。

第二组条款描述在先前章节中列出的公开技术的某些特征和方面,例如,包括示例2、3(b)、4、6和8。

1.一种用于视频处理的方法,包括:

确定与视频的当前视频块相关的一个或多个运动矢量的运动矢量精度;

基于所述运动矢量精度选择运动矢量范围;以及

基于所述运动矢量范围执行所述当前视频块和所述视频的比特流表示之间的转换。

2.根据条款1所述的方法,其中,所述执行所述转换使用自适应运动矢量差分辨率(AMVR)编解码工具。

3.根据条款1所述的方法,其中,所述选择所述运动矢量范围还基于AMVR编解码工具的配置文件或级别。

4.根据条款1所述的方法,其中,所述选择所述运动矢量范围还基于所述当前视频块的编解码模式。

5.根据条款1所述的方法,还包括:

在所述执行所述转换之前,基于所述运动矢量范围剪切所述一个或多个运动矢量。

6.根据条款5所述的方法,其中使用基于运动矢量范围确定的输入参数来执行对一个或多个运动矢量的剪切。

7.一种用于视频处理的方法,包括:

确定使用与视频的当前视频块相关的一个或多个运动矢量的内部比特深度,其中所述内部比特深度具有M比特,M大于16,并且所述当前视频块使用时域运动矢量预测;以及

基于至少M比特运动矢量执行所述当前视频块和所述视频的比特流表示之间的转换。

8.根据条款7所述的方法,其中,基于所述当前视频块的高级运动矢量预测(AMVP)模式的时域运动矢量预测执行所述转换。

9.根据条款7所述的方法,其中,基于所述当前视频块的Merge模式的时域运动矢量预测执行所述转换。

10.根据条款7所述的方法,其中,基于所述当前视频块的可选时域运动矢量预测(ATMVP)模式的时域运动矢量预测执行所述转换,其中,所述ATMVP模式允许要从小于当前编解码单元的块导出至少一组运动信息。

11.根据条款7所述的方法,其中,基于所述当前视频块的空时运动矢量预测(STMVP)模式的时域运动矢量预测执行所述转换。

12.根据条款7所述的方法,其中,从运动矢量预测候选导出所述一个或多个运动矢量,至少基于与时域参考图片相关联的运动矢量导出所述运动矢量预测候选,将所述运动矢量缩放到目标参考图片,并且剪切所述缩放的运动矢量使其在[-((1<<(M-1))),(1<<(M-1))-1]的范围内。

13.根据条款12所述的方法,其中,M是18,并且所述范围是[-131072、131071]。

14.一种视频处理方法,包括:

确定将运动矢量精度值用于视频的视频单元的当前视频块与所述视频的编解码表示之间的转换的运动矢量的精度;以及

基于根据所述运动矢量精度值的所述运动矢量的精度执行所述转换,其中,所述视频单元级的语法元素指示所述运动矢量精度值。

15.根据条款14所述的方法,其中,所述视频单元对应于视频序列、视频图片、条带、片、编解码树单元行或编解码树单元。

16.根据条款14所述的方法,其中,所述语法元素位于视频参数集、图片参数集、条带标头、片组标头、片标头、编解码树单元标头或编解码树单元标头中。

17.根据条款14至16中任一项所述的方法,其中,所述确定使用所述运动矢量精度值基于用于所述转换的配置文件、级别或层。

18.一种用于视频处理的方法,包括:

为视频的当前视频块和所述当前视频块的比特流表示之间的转换确定参数;以及

基于所述参数执行所述转换,

其中,所述确定所述参数基于包括所述当前视频块的当前图片的高度或宽度。

19.根据条款18所述的方法,其中,所述参数是在所述转换期间使用的一个或多个运动矢量的运动矢量精度。

20.根据条款18所述的方法,其中,所述参数是在所述转换期间使用的一个或多个运动矢量的内部比特深度。

21.一种用于视频处理的方法,包括:

剪切临时运动矢量以生成剪切的运动矢量;

至少基于所述剪切的运动矢量导出与视频的当前视频块相关联的运动矢量;以及

基于与所述当前视频块相关联的所述运动矢量执行视频的所述当前视频块和所述视频的比特流表示之间的转换,

其中,所述剪切所述临时运动矢量基于所述当前视频块的参考图片的高度(H)或宽度(W)、所述当前视频块的左上位置(x0,y0)、或者所述运动矢量的运动矢量精度或内部比特深度(M)中的至少一个。

22.根据条款21所述的方法,其中,所述运动矢量精度是1/(1<

其中MVMinH=max(PicMinH,-(1<<(M-1))),

MVMinV=max(PicMinV,-(1<<(M-1))),

MVMaxH=min(PicMaxH,(1<<(M-1))-1),并且

MVMaxV=min(PicMaxV,(1<<(M-1))-1),

其中PicMinH=(-x0+1+Offset1)<

PicMaxH=(W-1-x0+Offset2)<

PicMinV=(-y0+1+Offset3)<

PicMaxV=(H-1-y0+Offset4)<

其中Offset1、Offset2、Offset3和Offset4是基于一个或多个填充方法的非负整数。

23.根据条款22所述的方法,其中,Offset1=-CW-8、Offset3=-CH-8、Offset2=8并且Offset4=8。

24.根据条款1至23中任一项所述的方法,其中,所述转换包括从所述比特流表示生成所述当前视频块的像素值。

25.根据条款1至23中任一项所述的方法,其中,所述转换包括从所述当前视频块的像素值生成所述比特流表示。

26.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,当其上的所述指令被所述处理器执行时,使所述处理器实现条款1至25中的一项或多项所述的方法。

27.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于实现条款1至25中的一项或多项所述的方法的程序代码。

第三组条款描述在先前章节中列出的公开技术的某些特征和方面,例如,包括示例3(c)-(d)、5、7和9。

1.一种用于视频处理的方法,包括:

执行视频的当前视频块和所述视频的比特流表示之间的转换,

其中,所述转换使用缩放处理从来自第二参考图片的运动矢量差中获得第一参考图片的运动矢量差,并且其中,所述缩放处理使用剪切操作来限制所述第一参考图片的所述运动矢量差落在范围[-((1<<(M-1))),(1<<(M-1))-1]内,其中M是大于16的数字。

2.根据条款1所述的方法,其中,所述第一参考图片与第一参考图片列表相关联。

3.根据条款1所述的方法,其中,所述第一参考图片与第二参考图片列表相关联。

4.根据条款3所述的方法,其中,所述第一参考图片列表与所述第二参考图片列表不同。

5.根据条款1所述的方法,其中,为所述转换启用仿射编解码工具。

6.根据条款5所述的方法,其中,所述比特流表示中的字段指示所述仿射编解码工具被启用。

7.根据条款1所述的方法,其中,基于运动矢量差Merge(MMVD)模式的运动矢量差(MVD)推导处理来执行所述转换,并且所述MMVD模式包括运动矢量表达,所述运动矢量表达包括所述当前视频块的起点、运动矢量距离和运动方向。

8.根据条款7所述的方法,其中,基于所述当前视频块的所述运动矢量距离或所述运动方向中的至少一个,导出所述第一参考图片或所述第二参考图片的所述运动矢量差中的至少一个。

9.根据条款8所述的方法,其中,基于所述运动矢量表达选择至少一个Merge候选,并且通过所述运动矢量差中的所述至少一个进一步细化所述至少一个Merge候选。

10.根据条款1所述的方法,其中,在视频参数集(VPS)、图片参数集(PPS)、条带标头、片、片组、编解码树单元(CTU)或CTU行中信令通知所述一个或多个运动矢量的内部比特深度。

11.一种用于视频处理的方法,包括:

确定为视频的视频单元的当前视频块和所述视频的比特流表示之间的转换使用一个或多个运动矢量的内部比特深度;以及

使用所述一个或多个运动矢量执行所述转换,

其中,视频单元级的语法元素指示所述内部比特深度。

12.根据条款11所述的方法,其中,所述视频单元对应于视频序列、视频图片、条带、片、编解码树单元行或编解码树单元。

13.根据条款12所述的方法,还包括:相应地,所述语法元素位于视频参数集、图片参数集、条带标头、片组标头、片标头、编解码树单元标头或编解码树单元标头中。

14.根据条款11或12所述的方法,其中,所述确定使用所述内部比特深度基于用于所述转换的配置文件、或级别或层。

15.根据条款11或12所述的方法,其中,所述内部比特深度基于包含所述当前视频块的当前图片的高度或宽度。

16.一种用于视频处理的方法,包括:

确定为视频的视频单元的当前视频块和所述视频的比特流表示之间的转换使用仿射运动参数的内部比特深度;以及

基于所述确定执行所述转换,

其中,所述仿射运动参数的所述内部比特深度具有与非仿射运动参数相同的范围。

17.根据条款16所述的方法,其中,所述范围为[-2

18.根据条款16所述的方法,其中,所述范围为[-2

19.根据条款16所述的方法,其中,所述仿射运动参数包括仿射运动矢量、仿射所述运动矢量预测器、或控制点运动矢量(CPMV)中的至少一个。

20.根据条款1至19中任一项所述的方法,其中,所述转换包括从所述比特流表示生成所述当前视频块的像素值。

21.根据条款1至19中任一项所述的方法,其中,所述转换包括从所述当前视频块的像素值生成所述比特流表示。

22.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,当其上的所述指令被所述处理器执行时,使所述处理器实现条款1至21中的一项或多项所述的方法。

23.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于实现条款1至21中的一项或多项所述的方法的程序代码。

由上可知,应当理解的是,为了说明的目的,本文描述了本公开技术的具体实施例,但是可以在不偏离本发明的范围的情况下进行各种修改。因此,除了所附权利要求外,本公开的技术不受限制。

本专利文件中描述的主题和功能操作的实现可以在各种系统、数字电子电路或计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等效物,或者一个或多个的组合。本说明书中描述的主题的实现可以被实现为一个或多个计算机程序产品,即,编码在有形和非暂时性计算机可读介质上的一个或多个计算机程序指令模块,用于由数据处理设备执行或控制数据处理设备的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质的组合,或者它们中的一个或多个的组合。术语“数据处理单元”或“数据处理设备”包括用于处理数据的所有设备、装置和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除硬件外,设备还可以包括为所述计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或其中一个或多个的组合的代码。

计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。

本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。

例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。

本说明书连同附图仅被视为示例性的,其中示例性是指示例。如本文所用,除非上下文另有明确指示,“或”的使用意欲包括“和/或”。

虽然本专利文件包含许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的一些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在一些组合中起作用,甚至最初要求是这样,但在一些情况下,可以从组合中移除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。

同样,尽管附图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。

仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中描述和说明的内容做出。

相关技术
  • 使用更高比特深度精度的运动矢量推导
  • 对于高精度数据使用比特深度变量而简化处理加权预测语法和语义
技术分类

06120113224102