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

预测精度改进视频编解码

文献发布时间:2023-06-19 11:24:21


预测精度改进视频编解码

相关申请的交叉引用

根据适用专利法和/或适用于巴黎公约的规则,本申请及时要求2018年11月5日提交的国际专利申请No.PCT/CN2018/113928号的优先权和权益。出于美国法律的所有目的,上述申请的全部公开作为本申请公开的一部分通过引用并入。

技术领域

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

背景技术

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

发明内容

本公开涉及与数字视频编解码有关的设备、系统和方法,并且具体地,描述了用于视频编解码的线性模式预测的协调。所描述的方法可以应用于现有视频编解码标准(例如,高效视频编解码(HEVC))和未来视频编解码标准或视频编解码器。

在一个代表性的方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:确定将第一线性优化模型用于视频的当前块和视频的比特流表示之间的转换,以用于使用第一编解码模式的转换,所述第一线性优化模型是从第二线性优化模型中推导的,所述第二线性优化模型用于使用第二编解码模式的转换;以及基于所述确定来执行所述转换。

在另一个代表性的方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:基于与视频的当前块的图片相关联的一个或多个图片顺序计数(POC)参数,启用第一预测模式或不同于所述第一预测模式的第二预测模式,所述第一预测模式为使用光流的编解码模式;以及基于所述第一模式或所述第二模式,执行所述当前块和所述视频的比特流表示之间的转换。

在另一个代表性的方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:基于与视频的当前块相关联的编解码信息,连续推导与所述当前块的参考图片相关联的一个或多个速度矢量(v

在另一个代表性的方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:在确定已经为视频的当前块启用了使用光流的编解码模式时,对所述当前块的每个颜色分量使用单一类型的插值滤波器进行滤波操作;以及基于所述滤波操作,执行所述当前块和所述视频的比特流表示之间的转换。

在另一个代表性的方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:在确定已经为视频的当前块启用了使用光流的编解码模式时,对所述当前块的每个颜色分量使用单一类型的插值滤波器进行滤波操作;在确定当前块的至少一个样点位于预定范围之外时,执行填充操作;以及基于所述滤波操作和填充操作,在当前块和视频的比特流表示之间进行转换。

在另一个代表性的方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:对于在视频的当前块和所述视频的比特流表示之间的转换,确定使用光流工具的梯度值计算算法;以及基于所述确定,执行所述转换。

在另一个代表性的方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:基于视频的当前块的子块的一个或多个绝对差之和(SAD)计算,做出关于所述当前块的双向光流(BDOF)预测模式的选择性启用的决策;以及基于所述决策,执行所述当前块和所述当前块的比特流表示之间的转换。

在另一个代表性的方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:基于视频的当前块的通用双向预测改进(GBi)过程的选择性启用,推导所述当前块的使用光流的编解码模式的一个或多个参数;以及基于使用光流的编解码模式的所述一个或多个参数,执行所述当前块和所述视频的比特流表示之间的转换。

在另一个代表性的方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:对于以使用光流的编解码模式进行编解码的视频的当前块,对所述使用光流的编解码模式的最终预测输出的校正项进行裁剪操作;以及基于所述最终预测输出,执行所述当前块和所述视频的比特流表示之间的转换。在又一代表性方面,上述方法以处理器可执行代码的形式体现并存储在计算机可读程序介质中。

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

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

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

附图说明

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

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

图3示出了经受空间Merge候选的冗余校验的候选对的示例。

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

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

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

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

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

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

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

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

图12A和12B示出了当使用重叠块运动补偿(OBMC)算法时子块的示例快照。

图13示出了用于推导局部照明补偿(LIC)算法的参数的相邻样点的示例。

图14示出了简化的仿射运动模式的示例。

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

图16示出了AF_INTER仿射运动模式的运动矢量预测(MVP)的示例。

图17A和17B示出了AF_MERGE仿射运动模式的示例候选。

图18示出了模式匹配运动矢量推导(PMMVD)模式中的双边匹配的示例,其是基于帧速率上转换(FRUC)算法的特殊Merge模式。

图19示出了FRUC算法中的模板匹配的示例。

图20示出了FRUC算法中的单边运动估计的示例。

图21示出了由双向光流(BDOF)算法使用的光流轨迹的示例。

图22A和22B示出了使用没有块扩展的双向光流(BDOF)算法的示例快照。

图23示出了在BDOF中使用的插值样点的示例。

图24示出了基于双边模板匹配的解码器侧运动矢量细化(DMVR)算法的示例。

图25示出了在线性预测模式下用于推导线性模式的参数(α和β)的样点的位置的示例。

图26示出了最大和最小亮度值之间的直线的示例(代表线性模式)。

图27示出了在BDOF中使用的插值样点的另一示例。

图28A-28I示出了用于视频处理的示例方法的流程图。

图29是用于实现本文中描述的可视媒体解码或可视媒体编码技术的硬件平台的示例的框图。

图30是其中可以实现所公开的技术的示例视频处理系统的框图。

具体实施方式

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

所公开的技术的实施例可以应用于现有视频编解码标准(例如,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。这被称为“单向预测(uni-prediction)”。单向预测可用于P条带和B条带两者。

当信令指示将使用两个参考图片列表时,从两个样点块产生PU。这被称为“双向预测(bi-prediction)”。双向预测仅适用于B条带。

1.1.1.1建构用于Merge模式的候选的实施例

当使用Merge模式预测PU时,从比特流解析指向Merge候选列表中的条目的索引并将其用于检索运动信息。该列表的建构(construction)可以根据以下步骤顺序进行总结:

·步骤1:原始候选推导

ο步骤1.1:空间候选推导

ο步骤1.2:空间候选的冗余校验

ο步骤1.3:时间候选推导

·步骤2:插入额外的候选

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

ο步骤2.2:插入零运动候选

图1示出了基于上面总结的步骤序列建构Merge候选列表的示例。对于空间Merge候选推导,在位于五个不同位置的候选当中选择最多四个Merge候选。对于时间Merge候选推导,在两个候选当中选择最多一个Merge候选。由于在解码器处假设恒定数量的候选用于每个PU,因此当候选的数量未达到在条带报头中用信令通知的最大Merge候选数量(MaxNumMergeCand)时,生成额外的候选。由于候选的数量是恒定的,因此使用截断的一元二值化(Truncated Unary binarization,TU)来编码最佳Merge候选的索引。如果CU的尺寸等于8,则当前CU的所有PU共享单个Merge候选列表,其与2N×2N预测单元的Merge候选列表相同。

1.1.2建构空间Merge候选

在空间Merge候选的推导中,在位于图2描绘的位置的候选当中选择最多四个Merge候选。推导的顺序是A

为了降低计算复杂度,在所提到的冗余校验中并未考虑所有可能的候选对。相反,仅考虑图3中用箭头连接的对,并且仅在用于冗余校验的对应候选具有不一样的运动信息时,才将候选添加到列表。重复运动信息的另一来源是与不同于2N×2N的分区相关联的“第二PU”。作为示例,图4A和4B描绘了分别针对N×2N和2N×N的情况的第二PU。当当前PU被分区为N×2N时,位置A

1.1.1.3建构时间Merge候选

在该步骤中,只有一个候选被添加到列表中。具体地,在该时间Merge候选的推导中,基于共位的PU来推导缩放的运动矢量,该共位的PU属于给定参考图片列表内与当前图片具有最小POC差的图片。在条带报头中明确地用信令通知要用于推导共位的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条带。通过将原始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数组合来生成组合的双向预测候选。如果这两个元组提供不同的运动假设,它们将形成一个新的双向预测候选。

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

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

1.1.5用于并行处理的运动估计区域的示例

为了加速编码处理,可以并行执行运动估计,从而同时推导给定区域内的所有预测单元的运动矢量。从空间邻域推导Merge候选可能干扰并行处理,因为一个预测单元直到其相关联的运动估计完成时才能从相邻PU推导运动参数。为了减轻编解码效率和处理等待时间之间的折衷,可以定义运动估计区域(Motion Estimation Region,MER),MER的尺寸在图片参数集(PPS)中使用“log2_parallel_merge_level_minus2”语法元素信令通知。当定义MER时,落入同一区域的Merge候选被标记为不可用,因此在列表建构中不予考虑。

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

AMVP利用运动矢量与相邻PU的时空相关性,其用于运动参数的显式传输。其通过首先校验在时间上相邻的PU位置的上方,左侧的可用性,移除冗余候选并添加零矢量以使候选列表为恒定长度来建构运动矢量候选列表。然后,编码器可以从候选列表中选择最佳预测器,并发送指示所选候选的对应索引。与Merge索引信令类似,使用截断的一元来编码最佳运动矢量候选的索引。在这种情况下要编码的最大值是2(参见图8)。在以下部分中,提供了关于运动矢量预测候选的推导过程的细节。

1.2.1建构运动矢量预测候选的示例

图8总结了运动矢量预测候选的推导过程,并且可以针对每个参考图片列表以索引作为输入来实现。

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

对于时间运动矢量候选推导,从两个候选中选择一个运动矢量候选,其是基于两个不同的共位的位置推导的。在产生时空候选的第一列表之后,移除列表中的重复的运动矢量候选。如果潜在候选的数量大于2,则从列表中移除相关联的参考图片列表内的其参考图片索引大于1的运动矢量候选。如果空-时运动矢量候选的数量小于2,则将额外的零运动矢量候选添加到列表中。

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)的参考软件来探索未来的视频编解码技术。在JEM中,在若干编解码工具中采用基于子块的预测,诸如仿射预测、可选时间运动矢量预测(ATMVP)、空-时运动矢量预测(STMVP)、双向光流(BDOF或BIO)、帧速率上转换(FRUC)、局部自适应运动矢量分辨率(LAMVR)、重叠块运动补偿(OBMC)、局部照明补偿(LIC)和解码器侧运动矢量细化(DMVR)。

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

在具有四叉树加二叉树(QTBT)的JEM中,每个CU可以针对每个预测方向具有至多一组运动参数。在一些实施例中,通过将大CU划分成子CU并且推导大CU的所有子CU的运动信息,在编码器中考虑两个子CU级运动矢量预测方法。可选时间运动矢量预测(Alternative Temporal Motion Vector Prediction,ATMVP)方法允许每个CU从比并置参考图片中的当前CU小的多个块中提取多组运动信息。在空-时运动矢量预测(Spatial-Temporal Motion Vector Prediction,STMVP)方法中,通过使用时间运动矢量预测值和空间相邻运动矢量来递归地推导子CU的运动矢量。在一些实施例中,为了保留用于子CU运动预测的更准确的运动场,可能禁用参考帧的运动压缩。

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

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

图10示出了CU 1000的ATMVP运动预测过程的示例。该ATMVP 1000方法以两个步骤预测CU 1000内的子CU 1001的运动矢量。第一步是利用时间矢量识别参考图片1050中的对应块1051。参考图片1050也被称为运动源图片。第二步是将当前CU 1000划分成子CU 1001,并从对应于每个子CU的块中获得运动矢量以及每个子CU的参考索引。

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

在第二步骤中,通过向当前CU的坐标添加时间矢量,通过运动源图片1050中的时间矢量来识别子CU 1051的对应块。对于每个子CU,其对应块(例如,覆盖中心样点的最小运动网格)的运动信息用于推导子CU的运动信息。在识别出对应的N×N块的运动信息之后,以与HEVC的TMVP相同的方式将其转换为当前子CU的参考索引和运动矢量,其中运动缩放和其他过程也适用。例如,解码器校验是否满足低时延条件(例如,当前图片的所有参考图片的POC小于当前图片的POC)并且可能使用运动矢量MV

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

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

子CU A的运动推导通过识别其两个空间邻居开始。第一邻居是子CU A1101上方的N×N块(块c 1103)。如果该块c(1113)不可用或者是帧内编解码,则(从块c 1113开始,从左到右)校验子CU A(1101)上方的其他N×N个块。第二邻居是子CU A1101左侧的块(块b1112)。如果块b(1112)不可用或者是帧内编解码,则(从块b 1112开始,从上到下)校验子CUA1101左侧的其他块。从每个列表的相邻块获得的运动信息被缩放到给定列表的第一参考帧。接下来,通过遵循与HEVC中指定的TMVP推导相同的过程来推导子块A 1101的时间运动矢量预测(Temporal Motion Vector Predictor,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.2自适应运动矢量差分分辨率

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

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

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

在编码器中,CU级RD校验用于确定将哪个MVD分辨率用于CU。即,对于每个MVD分辨率,执行三次CU级RD校验。为了加快编解码器速度,在JEM中应用以下编解码方案。

-在具有正常四分之一亮度样点MVD分辨率的CU的RD校验期间,存储当前CU的运动信息(整数亮度样点准确度)。存储的运动信息(在取整之后)被用作在RD校验期间针对具有整数亮度样点和4亮度样点MVD分辨率的相同CU的进一步小范围运动矢量细化的起点,使得耗时的运动估计过程不重复三次。

-有条件地调用具有4亮度样点MVD分辨率的CU的RD校验。对于CU,当RD成本整数亮度样点MVD分辨率远大于四分之一亮度样点MVD分辨率时,跳过针对CU的4亮度样点MVD分辨率的RD校验。

2.3更高的运动矢量存储准确度的示例

在HEVC中,运动矢量准确度是四分之一像素(4:2:0视频的四分之一亮度样点和八分之一色度样点)。在JEM中,内部运动矢量存储和Merge候选的准确度增加到1/16像素。更高的运动矢量准确度(1/16像素)用于以跳过/Merge模式编解码的CU的运动补偿帧间预测。对于使用正常AMVP模式编解码的CU,使用整数像素或四分之一像素运动。

具有与HEVC运动补偿插值滤波器相同的滤波器长度和归一化因子的SHVC上样点插值滤波器被用作额外的分数像素位置的运动补偿插值滤波器。在JEM中色度分量运动矢量准确度是1/32样点,通过使用两个相邻的1/16像素分数位置的滤波器的平均来推导1/32像素分数位置的额外的插值滤波器。

2.4重叠块运动补偿OBMC(Overlapped Block Motion Compensation)的示例

在JEM中,可以使用CU级的语法来打开和关闭OBMC。当在JEM中使用OBMC时,除了CU的右边界和下边界之外,对所有运动补偿(Motion Compensation,MC)块边界执行OBMC。此外,它还应用于亮度和色度分量。在JEM中,MC块对应于编解码块。当用子CU模式(包括子CUMerge、仿射和FRUC模式)编解码CU时,CU的每个子块是MC块。为了以统一的方式处理CU边界,针对所有MC块边界以子块级执行OBMC,其中子块尺寸被设置为等于4×4,如图12A和12B所示。

图12A示出了CU/PU边界处的子块,阴影子块是OBMC应用的位置。类似地,图12B示出了ATMVP模式中的子块。

当OBMC应用于当前子块时,除了当前运动矢量之外,四个连接的相邻子块的运动矢量(如果可用且与当前运动矢量不同)也用于推导当前子块的预测块。组合基于多个运动矢量的这些多个预测块以生成当前子块的最终预测信号。

将基于相邻子块的运动矢量的预测块表示为P

在JEM中,对于尺寸小于或等于256个亮度样点的CU,信令通知CU级标志以指示是否对当前CU应用OBMC。对于尺寸超过256个亮度样点或未使用AMVP模式进行编解码的CU,默认应用OBMC。在编码器处,当将OBMC应用于CU时,在运动估计阶段期间考虑其影响。由OBMC使用上侧相邻块和左侧相邻块的运动信息形成的预测信号用于补偿当前CU的原始信号的上边界和左边界,然后应用正常运动估计处理。

2.5局部照明补偿(LIC)的示例

照明补偿LIC是基于用于光照变化的线性模型,使用缩放因子a和偏移b。并且针对每个帧间模式编解码的编解码单元(CU)自适应地启用或禁用它。

当LIC应用于CU时,采用最小平方误差方法来通过使用当前CU的相邻样点及其对应的参考样点来推导参数a和b。图13示出了用于推导IC算法的参数的相邻样点的示例。更具体地,如图13所示,使用CU的子样点(2:1子样点)的相邻样点和参考图片中的(由当前CU或子CU的运动信息识别的)对应样点。推导IC参数并将其分别应用于每个预测方向。

当用Merge模式编解码CU时,以类似于Merge模式中的运动信息复制的方式从相邻块复制LIC标志;否则,向CU信令通知LIC标志以指示是否应用LIC。

当针对图片启用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。

为了降低编码复杂度,在JEM中应用以下编码方案:

-当当前图片与其参考图片之间没有明显的光照变化时,对于整个图片禁用LIC。为了识别这种情况,在编码器处计算当前图片和当前图片的每个参考图片的直方图。如果当前图片与当前图片的每个参考图片之间的直方图差小于给定阈值,则对当前图片禁用LIC;否则,对当前图片启用LIC。

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

在HEVC中,仅将平移运动模型应用于运动补偿预测(Motion CompensationPrediction,MCP)。然而,相机和对象可能存在多种运动,例如放大/缩小、旋转、透视运动和/或其他不规则运动。另一方面,在JEM中,应用简化的仿射变换运动补偿预测。图14示出了块1400的仿射运动场由两个控制点运动矢量V

如图14所示,(v

为了进一步简化运动补偿预测,可以应用基于子块的仿射变换预测。子块尺寸M×N如以下推导:

这里,MvPre是运动矢量分数准确度(例如,在JEM中是1/16),(v

图15示出了块1500的每个子块的仿射MVF的示例。为了推导每个M×N子块的运动矢量,根据等式1计算每个子块的中心样点的运动矢量,并取整到运动矢量分数准确度(例如,JEM中的1/16)。然后,应用运动补偿插值滤波器,以利用所推导的运动矢量生成每个子块的预测。

在MCP之后,对每个子块的高准确度运动矢量进行取整,并将其以与正常运动矢量相同的准确度保存。

2.6.1AF_INTER模式的实施例

在JEM中,存在两种仿射运动模式:AF_INTER模式和AF_MERGE模式。对于宽度和高度都大于8的CU,可以应用AF_INTER模式。在比特流中用信令通知CU级的仿射标志以指示是否使用AF_INTER模式。在AF_INTER模式中,使用相邻块构造具有运动矢量对{(v

图16示出了AF_INTER模式中的块1600的运动矢量预测(MVP)的示例。如图16所示,从子块A、B或C的运动矢量中选择v

当在AF_MERGE模式中应用CU时,它从有效的相邻重建块获得用仿射模式编解码的第一个块。图17A示出了当前CU 1700的候选块的选择顺序的示例。如图17A所示,选择顺序可以是从当前CU 1700的左(1701)、上(1702)、右上(1703)、左下(1704)到左上(1705)。图17B示出了AF_MERGE模式中的当前CU 1700的候选块的另一示例。如果相邻左下块1701以仿射模式进行编解码,如图17B所示,推导包含块A的CU的左上角、右上角和左下角的运动矢量v

在根据等式(1)中的仿射运动模型计算当前CU的CPMV v

2.7模式匹配的运动矢量推导(PMMVD)的示例

PMMVD模式是基于帧速率上转换(Frame-Rate Up Conversion,FRUC)方法的特殊Merge模式。利用该模式,在解码器侧推导块的运动信息,而不是发信令通知块的运动信息。

当CU的Merge标志为真时,可以向CU信令通知FRUC标志。当FRUC标志为假时,可以信令通知Merge索引并使用常规Merge模式。当FRUC标志为真时,可以信令通知额外的FRUC模式标志以指示将使用哪种方法(例如,双边匹配或模板匹配)来推导该块的运动信息。

在编码器侧,关于是否对CU使用FRUC Merge模式的决定是基于对正常Merge候选所做的RD成本选择。例如,通过使用RD成本选择来校验CU的多种匹配模式(例如,双边匹配和模板匹配)。引起最小成本的匹配模式与其他CU模式进一步比较。如果FRUC匹配模式是最有效的模式,则对于CU将FRUC标志设置为真,并且使用相关的匹配模式。

典型地,FRUC Merge模式中的运动推导过程具有两个步骤:首先执行CU级运动搜索,然后进行子CU级运动细化。在CU级,基于双边匹配或模板匹配,推导整个CU的原始运动矢量。首先,生成MV候选列表,并且选择引起最小匹配成本的候选作为进一步CU级细化的起点。然后,在起点附近执行基于的双边匹配或模板匹配的局部搜索。将最小匹配成本的MV结果作为整个CU的MV。随后,以推导的CU运动矢量作为起点,进一步在子CU级细化运动信息。

例如,对于W×H CU运动信息推导执行以下推导过程。在第一阶段,推导整个W×HCU的MV。在第二阶段,该CU进一步被划分成M×M个子CU。M的值的计算方法如(3)所示,D是预定义的划分深度,在JEM中默认设置为3。然后推导每个子CU的MV。

图18示出了在帧速率上转换(FRUC)方法中使用的双边匹配的示例。,通过在两个不同参考图片(1810,1811)中沿当前CU(1800)的运动轨迹找到两个块之间的最接近匹配,使用双边匹配来推导当前CU的运动信息。在连续运动轨迹的假设下,指向两个参考块的运动矢量MV0(1801)和MV1(1802)与当前图片和两个参考图片之间的时间距离(例如,TD0(1803)和TD1(1804))成比例。在一些实施例中,当当前图片1800在时间上在两个参考图片(1810,1811)之间并且从当前图片到两个参考图片的时间距离相同时,双边匹配成为基于镜像的双向MV。

图19示出了在帧速率上转换(FRUC)方法中使用的模板匹配的示例。模板匹配用于通过找到当前图片1910中的模板(当前CU的顶部和/或左侧相邻块)与参考图片中的块(例如,与模板的尺寸相同)之间的最接近匹配来推导当前CU 1900的运动信息。除了上述FRUCMerge模式之外,模板匹配也可以应用于AMVP模式。在JEM和HEVC两者中所做的那样,AMVP有两个候选。通过模板匹配方法,推导新的候选。如果由模板匹配新推导的候选与第一现有AMVP候选不同,则将其插入AMVP候选列表的最开始处,然后将列表尺寸设置为2(例如,通过移除第二现有AMVP候选)。当应用于AMVP模式时,仅应用CU级搜索。

在CU级处设置的MV候选可以包括以下:(1)如果当前CU处于AMVP模式,则为原始AMVP候选,(2)所有Merge候选,(3)插值MV场中的几个MV(稍后描述),以及顶部和左侧相邻运动矢量。

当使用双边匹配时,可以将Merge候选的每个有效MV用作输入,以生成假设双边匹配的情况下的MV对。例如,在参考列表A中,Merge候选的一个有效MV是(MVa,ref

在一些实施例中,来自插值MV场的四个MV也可以被添加到CU级候选列表。更具体地,添加当前CU的位置(0,0)、(W/2,0)、(0,H/2)和(W/2,H/2)处的插值MV。当FRUC应用于AMVP模式时,原始AMVP候选也被添加到CU级MV候选集。在一些实施例中,在CU级,对于AMVPCU,将15个MV添加到候选列表,对于MergeCU,将13个MV添加到候选列表。

在子CU级处设置的MV候选包括:(1)从CU级搜索确定的MV,(2)顶部、左侧、左上角和右上角的相邻MV,(3)来自参考图片的并置MV的缩放版本,(4)一个或多个4个ATMVP候选(最多4个),(5)一个或多个STMVP候选(例如,最多4个)。来自参考图片的缩放MV如下推导。遍历两个列表中的参考图片。参考图片中的子CU的并置位置处的MV被缩放到起始CU级MV的参考。ATMVP和STMVP候选可以仅限于前四个。在子CU级,一个或多个MV(例如,最多17个)被添加到候选列表中。

在一些实施例中,两个参考列表中的每个参考图片的运动场以4×4块级遍历。图20示出了FRUC方法中的单边运动估计(ME)2000的示例。对于每个4×4块,如果与块相关联的运动通过当前图片中的4×4块并且块未被分配任何插值运动,则参考块的运动根据时间距离TD0和TD1(以与HEVC中的TMVP的MV缩放的方式相同的方式)被缩放到当前图片,并且将缩放的运动分配给当前帧中的块。如果没有缩放的MV被分配给4×4块,则在插值运动场中将块的运动标记为不可用。

匹配成本的计算在不同步骤处有点不同。当从CU级的候选集中选择候选时,匹配成本可以是双边匹配或模板匹配的绝对和差(Absolute Sum Difference,SAD)。在确定起始MV之后,子CU级搜索的双边匹配的匹配成本C计算如下:

这里,w是加权因子。在一些实施例中,w可以设置为4。MV和MV

在FRUC模式中,仅通过使用亮度样点来推导MV。推导的运动将用于MC帧间预测的亮度和色度两者。在确定MV之后,使用用于亮度的8抽头插值滤波器和用于色度的4抽头插值滤波器来执行最终MC。

MV细化是基于模式的MV搜索,以双边匹配成本或模板匹配成本为标准。在JEM中,支持两种搜索模式—无限制中心偏置菱形搜索(Unrestricted Center-Biased DiamondSearch,UCBDS)和自适应交叉搜索,分别在CU级和子CU级进行MV细化。对于CU和子CU级MV细化两者,以四分之一亮度样点MV精度直接搜索MV,并且接着是八分之一亮度样点MV细化。将用于CU和子CU步骤的MV细化的搜索范围设置为等于8个亮度样点。

在双边匹配Merge模式中,应用双向预测,因为CU的运动信息是基于在两个不同的参考图片中沿当前CU的运动轨迹的两个块之间的最近匹配推导的。在模板匹配Merge模式中,编码器可以从列表0中的单向预测、列表1中的单向预测或双向预测当中为CU选择。可以选择基于如下的模板匹配成本:

如果costBi<=factor*min(cost0,cost1)

则使用双向预测;

否则,如果cost0<=cost1

则使用列表0中的单向预测;

否则,

使用列表1中的单向预测;

这里,cost0是列表0模板匹配的SAD,cost1是列表1模板匹配的SAD,costBi是双向预测模板匹配的SAD。例如,当factor的值等于1.25时,这意味着选择过程偏向于双向预测。帧间预测方向选择可以应用于CU级模板匹配过程。

2.8广义双向预测改进(GBi)的示例

在VTM-3.0中采用了广义双向预测改进(GBi)。GBi在双向预测模式中对来自L0和L1的预测器应用不相等的权重。在帧间预测模式下,基于速率失真优化(RDO)评估包括相等权重对(1/2,1/2)的多个权重对,并将所选权重对的GBi索引用信令通知给解码器。在Merge模式下,从邻近的CU继承GBi索引。预测器生成公式如公式(5)所示。

P

这里,P

对于非低时延图片,权重集尺寸从5减小为3,其中w

2.8.1GBi编码器错误修复

为了减少GBi编码时间,在当前的编码器设计中,编码器将存储根据等于4/8的GBi权重估算的单向预测运动矢量,并将其重新用于其他GBi权重的单向预测搜索。这种快速编码方法同时应用于平移运动模式和仿射运动模式。在VTM2.0中,采用了6参数仿射模型和4参数仿射模型。当GBi权重等于4/8时,当BMS2.1编码器存储单向预测仿射MV时,BMS2.1编码器不区分4参数仿射模型和6参数仿射模型。因此,在用权重为4/8的GBi的编码之后,可以用6-参数仿射MV覆盖4-参数仿射MV。对于其他权重的GBi,可以将所存储的6-参数仿射MV用于的4-参数仿射ME,或者可以将所存储的4-参数仿射MV用于6-参数仿射ME。所提出的GBi编码器错误修复是将4参数仿射和6参数仿射MV分开存储。当GBi权重等于4/8时,编码器将基于仿射模式类型存储这些仿射MV,并针对其他权重的GBi,将基于仿射模式类型重用对应的仿射MV。

2.8.2GBi编码器加速

在该现有实现中,提出了五种编码器加速方法以减少启用GBi时的编码时间。

(1)有条件地针对某些GBi权重的跳过仿射运动估计

在BMS2.1中,对所有GBi权重执行包括4参数和6参数仿射ME的仿射ME。对于一些不相等的GBi权重(权重不等于4/8),我们建议有条件地跳过仿射ME。具体地,当且仅当仿射模式被选择为当前最佳模式并且在评估权重为4/8的GBi之后它不是仿射Merge模式时,才对其他GBi权重执行仿射ME。如果当前图片是非低时延图片,则当执行仿射ME时,对于不相等的GBi权重,将跳过平移模式的双向预测ME。如果未将仿射模式选择为当前最佳模式,或者将仿射Merge选择为当前最佳模式,则将为所有其他GBi权重跳过仿射ME。

(2)减少用于1像素和4像素MVD精度的编码中的低时延图片的RD成本检查的权数

对于低时延图片,对于包括1/4像素、1像素和4像素在内的所有MVD精度,有五个权重用于RD成本检查。编码器将首先检查1/4像素MVD精度的RD成本。我们建议跳过GBi权重的一部分,以进行1像素和4像素MVD精度的RD成本检查。我们根据他们的RD成本以1/4像素MVD精度订购这些不相等的权重。在以1像素和4像素MVD精度进行编码时,仅会评估RD成本最小的前两个权重以及权重为4/8的GBi。因此,对于低时延图片,将针对1像素和4像素MVD精度最多评估三个权重。

(3)当L0和L1参考图片相同时,有条件地跳过双向预测搜索

对于RA中的一些图片,在两个参考图片列表(列表-0和列表-1)中可能出现相同的图片。例如,对于CTC中的随机访问编解码配置,以下列出了第一组图片(GOP)的参考图片结构。

POC:16,TL:0,[L0:0][L1:0]

POC:8,TL:1,[L0:0 16][L1:16 0]

POC:4,TL:2,[L0:0 8][L1:8 16]

POC:2,TL:3,[L0:0 4][L1:4 8]

POC:1,TL:4,[L0:0 2][L1:2 4]

POC:3,TL:4,[L0:2 0][L1:4 8]

POC:6,TL:3,[L0:4 0][L1:8 16]

POC:5,TL:4,[L0:4 0][L1:6 8]

POC:7,TL:4,[L0:6 4][L1:8 16]

POC:12,TL:2,[L0:8 0][L1:16 8]

POC:10,TL:3,[L0:8 0][L1:12 16]

POC:9,TL:4,[L0:8 0][L1:10 12]

POC:11,TL:4,[L0:10 8][L1:12 16]

POC:14,TL:3,[L0:12 8][L1:12 16]

POC:13,TL:4,[L0:12 8][L1:14 16]

POC:15,TL:4,[L0:14 12][L1:16 14]

注意,图片16、8、4、2、1、12、14和15在两个列表中具有相同的参考图片。对于这些图片的双向预测,L0和L1参考图片可能相同。我们建议,当1)双向预测中的两个参考图片相同且2)时间层大于1且3)MVD精度为1/4像素时,编码器将针对不相等的GBi权重跳过双向预测ME。对于仿射双向预测ME,此快速跳过方法仅适用于4参数仿射ME。

(4)基于时间层和参考图片与当前图片之间的POC距离,针对不相等的GBi权重,跳过RD成本检查

我们建议,当时间层等于4(RA中最高的时间层)或参考图片(列表0或列表1)与当前图像之间的POC距离等于1且编解码QP大于32时,针对那些不相等的GBi权重,跳过那些RD成本评估。

(5)在ME期间,针对不相等的GBi权重,将浮点计算更改为定点计算

对于现有的双向预测搜索,编码器将固定一个列表的MV,并在另一个列表中优化MV。在ME之前修改目标以降低计算复杂度。例如,如果列表1的MV是固定的,而编码器将细化列表0的MV,则用等式(6)修改列表0MV的目标。O是原始信号,P

T=((O<<3)-w*P

这里,项(1/(8-w))以浮点精度存储,这增加了计算复杂度。我们建议像公式(7)一样将公式(6)更改为定点。

T=(O*a

其中a

γ=(1<<N)/(8-w);a

2.8.3GBi的CU尺寸约束

在这种方法中,对于小型CU,禁用GBi。在帧间预测模式下,如果使用双向预测并且CU区域小于128个亮度样点,则GBi将被禁用,而不会发送任何信令。

2.9双向光流(BDOF)的示例

在双向光流(BDOF或BIO)中,首先执行运动补偿以生成当前块的第一预测(在每个预测方向上)。第一预测用于推导块内每个子块/像素的空间梯度、时间梯度和光流,然后使用其生成第二预测,例如,子块/像素的最终预测。细节描述如下。

BDOF是样点方式的运动细化,其在用于双向预测的逐块运动补偿之上执行。在一些实施例中,样点级运动细化不使用信令。

设I

将此光流等式与每个样点运动轨迹的埃尔米特插值相结合,得到唯一的三阶多项式,该三阶多项式最后匹配函数值I

图24示出了双向光流(BDOF)方法中的示例光流轨迹。这里,τ

通过最小化点A和B中的值之间的差Δ来确定运动矢量场(v

上述等式中的所有值都取决于样点位置,表示为(i′,j′)。假设运动在局部周围区域是一致的,在以当前预测点为中心的(2M+1)×(2M+1)的方形窗口Ω内最小化Δ,其中M等于2:

对于该优化问题,JEM使用简化方法,首先在垂直方向上进行最小化,然后在水平方向上进行最小化。由此产生以下:

其中,

为了避免除以零或非常小的值,在等式(9)和(10)中可以引入正则化参数r和m。

r=500·4

m=700·4

这里d是视频样点的比特深度。

为了使BDOF的存储器访问与常规双向预测运动补偿保持相同,仅针对当前块内的位置计算所有预测和梯度值

利用BDOF,可以针对每个样点细化运动场。为了降低计算复杂度,在JEM中使用基于块的BDOF设计。可以基于4×4的块计算运动细化。在基于块的BDOF中,可以聚合4×4的块中的所有样点的等式(9)中的s

这里b

在一些情景下,由于噪音或不规则运动,BDOF的MV团(MV regiment)可能不可靠。因此,在BDOF中,MV团的尺寸被阈值裁剪。基于当前图片的参考图片是否都来自一个方向来确定阈值。例如,如果当前图片的所有参考图片都来自一个方向,则将阈值的值设置为12×2

可以利用使用与HEVC运动补偿过程(例如,2D可分离有限脉冲响应(FIR))一致的操作的运动补偿插值来同时计算BDOF的梯度。在一些实施例中,根据块运动矢量的分数部分,该2D可分离FIR的输入是与运动补偿过程和分数位置(fracX,fracY)相同的参考帧样点。对于水平梯度

表1:用于BDOF(或BIO)中梯度计算的示例性滤波器

表2:用于BDOF(或BIO)中预测信号生成的示例性插值滤波器

在JEM中,当两个预测来自不同的参考图片时,BDOF可以应用于所有双预测块。当为CU启用局部照明补偿(LIC)时,可以禁用BDOF。

在一些实施例中,OBMC在正常MC过程之后应用于块。为了降低计算复杂度,在OBMC过程中可以不应用BDOF。这意味着BDOF仅在使用其自身的MV时才应用于块的MC过程,并且在OBMC过程中使用相邻块的MV时不应用于MC过程。

2.9.1VTM-3.0中的BDOF示例

如果满足以下条件,则BIO不适用:

·当前视频块是仿射编解码或ATMVP编解码

·(iPOC-iPOC

·H==4或(W==4和H==8)

·具有加权预测

·GBi权重不是(1,1)

如果两个参考块之间的总SAD(表示为R

对于W×H块,将插值(W+2)×(H+2)个样点。

与正常运动补偿一样,内部W×H样点通过8抽头插值滤波器进行插值。

样点的四个侧面外线(图23中的黑色圆圈)插值有双线性滤波器。

对于每个位置,在两个参考块(R

Gx0(x,y)=(R0(x+1,y)-R0(x-1,y))>>4

Gy0(x,y)=(R0(x,y+1)-R0(x,y-1))>>4

Gx1(x,y)=(R1(x+1,y)-R1(x-1,y))>>4

Gy1(x,y)=(R1(x,y+1)-R1(x,y-1))>>4

对于每个位置,内部值计算如下:

T1=(R0(x,y)>>6)-(R1(x,y)>>6),T2=(Gx0(x,y)+Gx1(x,y))>>3,

T3=(Gy0(x,y)+Gy1(x,y))>>3;并且

B1(x,y)=T2*T2,B2(x,y)=T2*T3,B3(x,y)=-T1*T2,B5(x,y)=T3*T3,

B6(x,y)=-T1*T3

如果两个4×4参考块之间的SAD小于阈值,则对于4×4块跳过BDOF。

计算Vx和Vy。

计算4×4块中每个位置的最终预测:

b(x,y)=(Vx(Gx

P(x,y)=(R

这里,b(x,y)被称为校正项。

2.9.2VTM-3.0中BDOF(或BIO)的替代示例

--如果predFlagL0和predFlagL1等于1,则DiffPicOrderCnt(currPic,refPicList0[refIdx0])*DiffPicOrderCnt(currPic,refPicList1[refIdx1])<0,MotionModelIdc[xCb][yCb]等于0,且MergeModeList[merge_idx[xCb][yCb]]不等于SbCol,将bioAvailableFlag的值设置为真(TRUE)。

--否则,将bioAvailableFlag的值设置为假(FALSE)。

--如果bioAvailableFlag等于TRUE,则应用以下内容:

--将变量移位设置为等于Max(2,14-bitDepth)。

--变量cuLevelAbsDiffThres和subCuLevelAbsDiffThres设置为等于(1<<(bitDepth–8+shift))*cbWidth*cbHeight and 1<<(bitDepth–3+shift)。变量cuLevelSumAbsoluteDiff设置为0。

--对于xSbIdx=0..(cbWidth>>2)-1和ySbIdx=0..(cbHeight>>2)-1,变量subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx]和当前子块的双向光流利用标志bioUtilizationFlag[xSbIdx][ySbIdx]推导为:

subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx]=

bioUtilizationFlag[xSbIdx][ySbIdx]=subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx]>=subCuLevelAbsDiffThrescuLevelSumAbsoluteDiff+=subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx]

--如果cuLevelSumAbsoluteDiff小于cuLevelAbsDiffThres,则将bioAvailableFlag设置为FALSE。

--如果bioAvailableFlag等于TRUE,则使用亮度编解码子块宽度sbWidth、亮度编解码子块高度sbHeight、以及样点阵列predSamplesL0L和predSamplesL1L、以及变量predFlagL0,predFlagL1,refIdxL0,refIdxL1,通过调用第8.3.4.5节中指定的双向光流样点预测过程推导得到当前亮度编解码子块内的预测样点,其具有xL=0..sbWidth–1和yL=0..sbHeight–1的predSamplesL[xL+xSb][yL+ySb]。

8.3.4.3.1概述

该过程的输入是:

–亮度位置(xSb,ySb),用于指定相对于当前图片的左上亮度样点的当前编解码子块的左上样点的,

–变量sbWidth,用于指定亮度样点中当前编解码子块的宽度,

–变量sbHeight,用于指定亮度样点中当前编解码子块的高度,

–以1/16亮度样点单位给出的亮度运动矢量mvLX,

–以1/32色度样点单位给出的色度运动矢量mvCLX,

–所选参考图片样点阵列refPicLXL、阵列refPicLXCb和refPicLXCr。

–双向光流,启用标志bioAvailableFlag。

该过程的输出是:

–当bioAvailableFlag为FALSE时,为预测亮度样点值的(sbWidth)x(sbHeight)阵列predSamplesLXL,或者当bioAvailableFlag为TRUE时,为预测亮度样点值的(sbWidth+2)×(sbHeight+2)阵列predSamplesLXL。

–预测色度样点值的两个(sbWidth/2)×(sbHeight/2)阵列predSamplesLXCb和predSamplesLXCr。

令(xIntL,yIntL)是以全样点单位给出的亮度位置,而(xFracL,yFracL)是以1/16样点单位给出的偏移。这些变量用来只在该条款用于指定参考样点阵列refPicLXL、refPicLXCb和refPicLXCr内部的分数样点位置。

当bioAvailableFlag等于TRUE时,对于预测亮度样点阵列predSamplesLXL内的每个亮度样点位置(xL=-1..sbWidth,yL=-1..sbHeight),相应的预测亮度样点值predSamplesLXL[xL][yL]的推导如下:

–变量xIntL、yIntL、xFracL和yFracL的推导如下:

xIntL=xSb-1+(mvLX[0]>>4)+xL

yIntL=ySb-1+(mvLX[1]>>4)+yL

xFracL=mvLX[0]&15

yFracL=mvLX[1]&15

–bilinearFiltEnabledFlag的值推导如下:

–如果xL等于-1或sbWidth,或yL等于-1或sbHeight,将bilinearFiltEnabledFlag的值设置为TRUE。

–否则,将bilinearFiltEnabledFlag的值设置为FALSE

–通过以(xIntL,yIntL)、(xFracL,yFracL)、refPicLXL和bilinearFiltEnabledFlag作为输入,调用第8.3.4.3.2节中指定的过程,推导得出预测亮度样点值predSamplesLXL[xL][yL]。

当bioAvailableFlag等于FALSE时,对于预测亮度样点阵列predSamplesLXL内的每个亮度样点位置(xL=0..sbWidth-1,yL=0..sbHeight-1),相应的预测亮度样点值predSamplesLXL[xL][yL]的推导如下:

–变量xIntL、yIntL、xFracL和yFracL的得出如下:

xIntL=xSb+(mvLX[0]>>4)+xL

yIntL=ySb+(mvLX[1]>>4)+yL

xFracL=mvLX[0]&15

yFracL=mvLX[1]&15

–变量bilinearFiltEnabledFlag设置为FALSE。

–通过以(xIntL,yIntL)、(xFracL,yFracL),以及refPicLXL和bilinearFiltEnabledFlag作为输入,调用第8.3.4.3.2节中指定的过程,推导得出预测亮度样点值predSamplesLXL[xL][yL]。

该过程的输入是:

–两个变量nCbW和nCbH,用于指定当前编解码块的宽度和高度,

–两个(nCbW+2)×(nCbH+2)亮度预测样点阵列predSamplesL0和predSamplesL1,

–预测列表利用标志,predFlagL0和predFlagL1,

–参考索引refIdxL0和refIdxL1,

–双向光流利用标志bioUtilizationFlag[xSbIdx][ySbIdx],其中xSbIdx=0..(nCbW>>2)-1,ySbIdx=0..(nCbH>>2)-1

该过程的输出是亮度预测样点值的(nCbW)x(nCbH)阵列pbSamples。

变量bitDepth被设置为等于BitDepthY。

变量shift2被设置为等于Max(3,15-bitDepth),变量offset2被设置为等于1<<(shift2-1)。

变量mvRefineThres被设置为等于1<<(13-bitDepth)。

对于xSbIdx=0..(nCbW>>2)-1和ySbIdx=0..(nCbH>>2)-1,

–如果bioUtilizationFlag[xSbIdx][ySbIdx]为FALSE,则对于x=xSb..xSb+3,y=ySb..ySb+3,按如下方式推导得出当前预测单元的预测样点值:

pbSamples[x][y]=Clip3(0,(1<

(predSamplesL0[x][y]+predSamplesL1[x][y]+offset2)>>shift2)

–否则,如下推导得出当前预测单元的预测样点值:

–相对于预测样点阵列predSamplesL0和predSampleL1的左上样点,用于指定当前子块的左上样点的位置(xSb,ySb)按如下方式推导得出:

xSb=(xSbIdx<<2)+1

ySb=(ySbIdx<<2)+1

–对于x=xSb–1..xSb+4,y=ySb-1..ySb+4,将应用以下内容:

–预测样点阵列内每个对应样点(x,y)的位置(hx,vy)按如下方

式推导得出:

hx=Clip3(1,nCbW,x)

vy=Clip3(1,nCbH,y)

–变量gradientHL0[x][y]、gradientVL0[x][y]、gradientHL1[x][y]和gradientVL1[x][y]的推导如下:

gradientHL0[x][y]=(predSamplesL0[hx+1][vy]–predSampleL0[hx-1][vy])>>4

gradientVL0[x][y]=(predSampleL0[hx][vy+1]-predSampleL0[hx][vy-1])>>4

gradientHL1[x][y]=(predSamplesL1[hx+1][vy]–predSampleL1[hx-1][vy])>>4

gradientVL1[x][y]=(predSampleL1[hx][vy+1]–predSampleL1[hx][vy-1])>>4

–变量temp、tempX和tempY的推导如下:

temp[x][y]=(predSamplesL0[hx][vy]>>6)–(predSamplesL1[hx][vy]>>6)

tempX[x][y]=(gradientHL0[x][y]+gradientHL1[x][y])>>3

empY[x][y]=(gradientVL0[x][y]+gradientVL1[x][y])>>3

–变量sGx2、sGy2、sGxGy、sGxdI和sGydI的推导如下:

sGx2=∑

sGy2=∑

sGxGy=∑

sGxdI=∑

sGydI=∑

–当前子块的水平和垂直运动细化的推导如下:

vx=sGx2>0?Clip3(-mvRefineThres,mvRefineThres,-(sGxdI<<3)>>Floor(Log2(sGx2))):0

vy=sGy2>0?Clip3(-mvRefineThres,mvRefineThres,((sGydI<<3)-((vx*sGxGym)<<12+vx*sGxGys)>>1)>>Floor(Log2(sGy2))):0

sGxGym=sGxGy>>12;

sGxGys=sGxGy&((1<<12)-1)

对于x=xSb-1..xSb+2,y=ySb-1..ySb+2,适用以下条件:

sampleEnh=Round((vx*(gradientHL1[x+1][y+1]-gradientHL0[x+1][y+1]))>>1)+Round((vy*(gradientVL1[x+1][y+1]-gradientVL0[x+1][y+1]))>>1)

pbSamples[x][y]=Clip3(0,(1<>shift2)

2.10解码器侧运动矢量细化(DMVR)的示例

在双向预测操作中,对于一个块区域的预测,将分别使用list0的运动矢量(MV)和list1的MV形成的两个预测块进行组合以形成单个预测信号。在解码器侧运动矢量细化(Decoder-Side Motion Vector Refinement,DMVR)方法中,通过双边模板匹配过程进一步细化双向预测的两个运动矢量。双边模板匹配应用在解码器中,以在双边模板和参考图片中的重建样点之间执行基于失真的搜索,以便获得细化的MV而无需传输附加的运动信息。

在DMVR中,分别从列表0的原始MV0和列表1的MV1,将双边模板生成为两个预测块的加权组合(即平均),如图24所示。模板匹配操作包括计算所生成的模板与参考图片中的(在原始预测块周围的)样点区域之间的成本度量。对于两个参考图片中的每个,将产生最小模板成本的MV考虑为该列表的更新MV以替换原始MV。在JEM中,对每个列表搜索九个MV候选。该九个MV候选包括原始MV和8个与原始MV在水平或垂直方向上或两个方向上具有一个亮度样点偏移的环绕的MV。最后,将两个新的MV,即如图24中所示的MV0'和MV1',用于生成最终的双向预测结果。将绝对差之和(SAD)用作成本度量。请注意,在计算由一个环绕的MV生成的预测块的成本时,舍入的MV(到整数像素)实际上用于获取预测块,而不是实际的MV。

将DMVR应用于双向预测的Merge模式,其中一个MV来自过去的参考图片,另一MV来自未来的参考图片,而无需传输额外的语法元素。在JEM中,当对CU启用LIC、仿射运动、FRUC或子CU Merge候选时,不应用DMVR。

3.与所公开的技术相关的示例实施例

3.1跨分量线性模型(CCLM)预测的示例

为了减少跨分量冗余,在JEM中使用CCLM预测模式(也称为LM),对于该模式,通过使用以下线性模型基于相同CU的重构亮度样点来预测色度样点:

pred

本文中,pred

这里,L(n)表示向降采样的(对颜色格式4:2:0或4:2:2)或原始的(对颜色格式4:4:4)顶部和左侧相邻重构亮度样点,C(n)表示顶部和左侧相邻的重构色度样点,并且N的值等于当前色度编解码块的宽度和高度的最小值的两倍。对于正方形的编解码块,直接应用上述两个公式。对于非正方形编解码块,首先对较长边界的相邻样点进行子采样,以具有与较短边界相同数量的样点。图25示出了左侧和上方重构样点的位置以及CCLM模式中所涉及的当前块的样点。

这个回归误差最小化计算作为解码过程的一部分执行,而不仅仅是编码器搜索操作,因此不使用语法来传达α和β值。CCLM预测模式还包括两个色度分量之间的预测,即,从Cb分量预测Cr分量。CCLM Cb到Cr的预测在残差域中应用,而不是使用重构的样点信号。这通过将加权的重构Cb残差添加到原始Cr帧内预测上以形成最终Cr预测来实现的:

这里,resi

缩放因子α以与CCLM亮度到色度预测相似的方式推导。唯一的区别是在误差函数中增加了相对于默认α值的回归成本,使得推导的缩放因子偏向默认值-0.5,如下所示:

这里,Cb(n)表示相邻的重构Cb样点,Cr(n)表示相邻的重构Cr样点,并且λ等于∑(Cb(n)·Cb(n))>>9。

CCLM亮度到色度预测模式作为一种附加的色度帧内预测模式而添加。在编码器侧,为选择色度帧内预测模式增加了针对色度分量的另一RD成本检查。当将CCLM亮度到色度预测模式以外的帧内预测模式用于CU的色度分量时,CCLM Cb到Cr预测将用于Cr分量预测。

3.2简化的CCLM示例

在一些现有的实施方式中,用直线方程代替线性模型参数α和β的LMS算法。这两个点(亮度和色度对)(A,B)是相邻亮度样点集合内的最小值和最大值,如图26所示。这里,线性模型参数α和β根据以下公式获得:

可以通过相乘和移位来代替并避免除法。

对于当前的VTM实现,为了推导色度预测器,将乘法替换为如下的整数运算:

pred

然而,由于移位S始终具有相同的值,因此该实施方式也比当前的VTM实施方式更简单。就复杂度而言,所提出的算法减少了运算次数,如下表所示:

虽然减少了运算次数,但是所提出的方法需要进行数次比较以获得相邻样点的最小和最大亮度值。

4.现有实施方式的缺点

一些现有的实施方式存在以下缺点:

(1)BIO和CCLM都需要线性回归,但是简化方式不同。

(2)VTM中的BIO实施方式没有考虑POC距离。

(3)将Ref 0上的速度表示为

(4)BIO中的速度v

(5)BIO中v

(6)知道了v

(7)引入了附加的插值滤波器(双线性滤波器)来对像素和边界进行插值。

(8)BIO过程中缺少一些舍入和裁剪操作。

(9)内部运算的精度可以进一步降低。

(10)可以简化用于BIO计算的SAD。

(11)当应用GBi时,在BIO推导过程中未适当考虑加权值。

5.对于具有细化的帧间预测的示例方法

当前公开的技术的实施例克服了现有实施方式的缺点,协调BIO和CCLM中的线性回归过程,并提出了BIO修改,从而提供具有更高编解码效率的视频编解码。基于所公开的技术,线性模式预测的协调可以增强现有和未来的视频编解码标准,在以下针对各种实施方式所描述的示例中阐明。以下提供的所公开技术的示例解释了一般概念,并不意味着被解释为限制。在示例中,除非明确地指示为相反,否则可以组合这些示例中描述的各种特征。

令来自列表0和列表1的当前图片的参考图片分别表示为Ref0和Ref1,表示τ

将Shift(x,s)定义为Shift(x,s)=(x+off)>>s

SignShift(x,s)定义为:

这里,off表示整数偏移,例如0或2

Clip3(x,min,max)定义为:

(a)线性优化模块涉及一组样点u

u

a=v

b=v

这里,G

(b)在一个示例中,在BIO中使用的线性优化模块用于推导CCLM的参数。从等式(18)、等式(19),符号可写为:

u

v

w

a=a

b=β

(c)可替代地,可以使用另一个编解码工具(诸如CCLM)中使用的线性优化模块来推导BIO中的v

(a)如果abs(τ

(b)如果abs(τ

(c)如果abs(τ

(d)如果abs(abs(τ

(e)如果abs(τ

其中G

(i)在VTM-3.0的BIO设计中,

(ii)在一个示例中:

本文中,在HEVC中,除法可以被实现为乘法和移位,作为MV缩放操作。

a.在一个示例中,在第i步骤中推导的v

b.可替代地,在第i步骤中推导的v

c.在同一步骤中是使用v

d.在一个示例中,

i.例如,可以简化除法运算。替换为JEM-3.0中的MSB移位。

ii.可以在除法操作之后进行剪切操作。

e.在一个示例中,

ε是整数或小数,例如1/2或1/4。

i.例如,可以简化除法运算。替换为JEM-3.0中的MSB移位。

ii.可以在除法操作之后进行剪切操作。

f.推导是迭代进行的,直到i达到前缀数字(诸如2)为止。

g.可替代地,推导是迭代进行的,直到一轮推导之前和之后v

a.在BIO中针对块或子块(诸如4×4块)得出的v

i.在一个示例中,MV0’=MV0+(v

ii.在一个示例中,MV0’=MV0-(v

iii.在一个示例中,MV0’=MV0+Scale(v

iv.在一个示例中,MV0’=MV0-Scale(v

v.在一个示例中,MV0’=Clip(MV0+Scale(v

vi.在一个示例中,MV0’=Clip(MV0-Scale(v

b.可替代地,针对块或子块(诸如4×4块)的DMVR、双边匹配或其他解码器侧运动推导方法的输出MV可用于推导在BIO中使用的v

i.在一个示例中,(v

ii.在一个示例中,(v

iii.在一个示例中,(v

iv.在一个示例中,(v

v.在一个示例中,(v

vi.在一个示例中,(v

MV1’))/2;

a.可以迭代完成推导和细化过程,直到一轮推导之前和之后的v

b.假设Ref0和Ref1的原始MV为MV0和MV1,则表示为MV0'和MV1'的MV可以得到细化的预测和梯度,可以计算为

i.在一个示例中,MV0’=MV0+(v

ii.在一个示例中,MV0’=MV0-(v

iii.在一个示例中,MV0’=MV0+Scale(v

iv.在一个示例中,MV0’=MV0-Scale(v

v.在一个示例中,MV0’=Clip(MV0+Scale(v

vi.在一个示例中,MV0’=Clip(MV0-Scale(v

a.在一个示例中,当应用BIO时,在亮度分量上仅使用8抽头插值滤波器。

b.可替代地,此外,为了减小存储器带宽,建议将要提取的样点的尺寸/范围限制为小于插值滤波器所需的尺寸/范围。

c.可替代地,此外,如果某些样点位于给定尺寸/范围之外的位置,则可以应用填充。

d.假设当前块为M×N,子样点的所需尺寸为(M+G)×(N+G),L抽头插值滤波器的所需尺寸应为(M+G+L-1)×(N+G+L-1)。建议利用BIO过程中提取的整数亮度样点的允许的尺寸与是(M+L-1+k)×(N+L-1+k)。例如,k为0或1,并且k小于G。如果插值过程需要整数亮度样点,但不允许提取整数亮度样点,则整数亮度样点将由相邻的亮度样点填充。

i.图27示出了BIO过程中的插值滤波的示例。在示例中,当前块尺寸为M×N,M=N=8。由于梯度计算,子样点的所需尺寸为(M+2)×(N+2)。因此,通过插值滤波器所需的整数样点是(M+2+7)×(N+2+7),其在该示例中等于17×17。然而,仅(M+7)×(N+7),在该示例中等于15×15,需要提取整数样点。插值滤波器所需的其他样点(滤波器中的黑圈)将被相邻的已提取样点填充。

e.在一个示例中,不计算x=-1或y=-1或x=W或y=H的位置(x,y)的梯度,并且不对这些位置施加BIO。假设当前块的左上角是(0,0),当前块的宽度/高度是W/H。

f.在一个实例中,其中,x=-1或y=-1或x=W或Y=H的位置(x,y)的梯度被以不同的方式计算。例如,

οgradientHL0[x][y]=(predSamplesL0[hx+1][vy]–predSampleL0[hx][vy])>>4,如果hx==1,(predSamplesL0[hx][vy]–predSampleL0[hx-1][vy])>>4,如果hx==nCbW,(predSamplesL0[hx+1][vy]–predSampleL0[hx-1][vy])>>4,其他情况下。

οgradientVL0[x][y]=(predSampleL0[hx][vy+1]-predSampleL0[hx][vy])>>4,如果vy==1,(predSampleL0[hx][vy]-predSampleL0[hx][vy-1])>>4,如果vy==nCbH,(predSampleL0[hx][vy+1]-predSampleL0[hx][vy-1])>>4,其他情况下。

οgradientHL1[x][y]=(predSamplesL1[hx+1][vy]–predSampleL1[hx][vy])>>4,如果hx==1,(predSamplesL1[hx][vy]–predSampleL1[hx-1][vy])>>4,如果hx==nCbW,(predSamplesL0[hx+1][vy]–predSampleL1[hx-1][vy])>>4,其他情况下。

οgradientVL1[x][y]=(predSampleL1[hx][vy+1]–predSampleL1[hx][vy])>>4,如果vy==1,(predSampleL1[hx][vy]–predSampleL1[hx][vy-1])>>4,如果vy==nCbH,(predSampleL1[hx][vy+1]–predSampleL1[hx][vy-1])>>4,其他情况下。

在其他示例中,

οgradientHL0[x][y]=(predSamplesL0[hx+1][vy]–predSampleL0[hx][vy])>>3,如果hx==1,(predSamplesL0[hx][vy]–predSampleL0[hx-1][vy])>>3,如果hx==nCbW,(predSamplesL0[hx+1][vy]–predSampleL0[hx-1][vy])>>4,其他情况下。

οgradientVL0[x][y]=(predSampleL0[hx][vy+1]-predSampleL0[hx][vy])>>3,如果vy==1,(predSampleL0[hx][vy]-predSampleL0[hx][vy-1])>>3,如果vy==nCbH,(predSampleL0[hx][vy+1]-predSampleL0[hx][vy-1])>>4,其他情况下。

οgradientHL1[x][y]=(predSamplesL1[hx+1][vy]–predSampleL1[hx][vy])>>3,如果hx==1,(predSamplesL1[hx][vy]–predSampleL1[hx-1][vy])>>3,如果hx==nCbW,(predSamplesL0[hx+1][vy]–predSampleL1[hx-1][vy])>>4,其他情况下。

οgradientVL1[x][y]=(predSampleL1[hx][vy+1]–predSampleL1[hx][vy])>>3,如果vy==1,(predSampleL1[hx][vy]–predSampleL1[hx][vy-1])>>3,如果vy==nCbH,(predSampleL1[hx][vy+1]–predSampleL1[hx][vy-1])>>4,其他情况下。

g.在一个示例中,在计算梯度之前,外部样点(图23中的黑色圆圈)不通过填充进行内插。

i.例如,对于所有的有效hx和vy:

predSampleL0[0][vy]=predSampleL0[1][vy],

predSampleL0[nCbW+1][vy]=predSampleL0[nCbW][vy],

predSampleL0[hx][0]=predSampleL0[hx][1],

predSampleL0[hx][nCbH+1]=predSampleL0[hx][nCbH]and

predSampleL1[0][vy]=predSampleL1[1][vy],

predSampleL1[nCbW+1][vy]=predSampleL1[nCbW][vy],

predSampleL1[hx][0]=predSampleL1[hx][1],

predSampleL1[hx][nCbH+1]=predSampleL1[hx][nCbH]。

h.在一个示例中,BIO中的梯度计算方法和自适应环路滤波器(ALF)中的梯度计算方法是相同的方法。

i.在一个示例中,VTM-3中BIO的梯度计算方法也用于计算ALF的梯度。

ii.在一个示例中,还使用了VTM-3中ALF的梯度计算方法来计算BIO的梯度。

a.梯度值可以用4以外的一个不同的值进行移位。在一个示例中,变量gradientHL0[X][Y]、gradientVL0[X][Y]、gradientHL1[X][Y]和gradientVL1[X][Y]推导如下:

gradientHL0[x][y]=SignShift(predSamplesL0[hx+1][vy]–predSampleL0[hx-1][vy],S)

gradientVL0[x][y]=SignShift(predSampleL0[hx][vy+1]-predSampleL0[hx][vy-1],S)

gradientHL1[x][y]=SignShift(predSamplesL1[hx+1][vy]–predSampleL1[hx-1][vy],S)

gradientVL1[x][y]=SignShift(predSampleL1[hx][vy+1]–predSampleL1[hx][vy-1],S)

i.在一个示例中,S是诸如4或5的固定数。

ii.在一个示例中,S取决于样点比特深度。例如,S等于B-P,其中B是诸如8、10或12的样点比特深度,P是诸如6的整数。

b.梯度值应在一定范围内。在一个示例中,必须保证变量gradientHL0[x][y]、gradientVL0[x][y]、gradientHL1[x][y]和gradientVL1[x][y]

由K位整数来表示,例如K=8或16。

i.例如,在推导之后,将梯度裁剪为

gradientHL0[x][y]=Clip3(-2

gradientVL0[x][y]=Clip3(-2

gradientHL1[x][y]=Clip3(-2

gradientVL1[x][y]=Clip3(-2

c.内部变量temp、tempX和tempY推导如下:

temp[x][y]=SignShift(predSamplesL0[hx][vy]–predSamplesL1[hx][vy],S1)

tempX[x][y]=SignShift(gradientHL0[x][y]+gradientHL1[x][y],S2)

tempY[x][y]=SignShift(gradientVL0[x][y]+gradientVL1[x][y],S3)

i.在一个示例中,S1、S2和S3是固定数,诸如S1=6,S2=S3=3。

ii.在一个示例中,S1、S2和S3取决于样点比特深度。例如,S1=B-P1,S2=B-P2和S3=B-P3,其中B是诸如8、10或12的样点比特深度,并且P1、P2和P3是整数,例如,P1=4,P2=P3=7。

d.必须保证内部变量temp、tempX和tempY用K1位整数、K2位整数和K3位整数表示,例如K1=8或16,K2=8或16,K3=8或16。

i.例如,将内部变量在推导之后裁剪为

temp[x][y]=Clip3(-2

tempX[x][y]=Clip3(-2

tempY[x][y]=Clip3(-2

e.内部变量sGx2、sGy2、sGxGy、sGxdI和sGydI应在一定范围内。在一个示例中,必须保证这些变量由K1位整数、K2位整数、K3位整数、K4位整数和K5位整数表示,例如K1=8或16,K2=8或16,K3=8或16。

i.例如,将内部变量在推导之后进行如下右移

sGx2=Shift(sGx2,S1)

sGy2=Shift(sGy2,S2)

sGxGy=SignShift(sGxGy,S3)

sGxdI=SignShift(sGxdI,S4)

sGydI=SignShift(sGydI,S5)

在一个示例中,S1、S2、S3、S4和S5是诸如4或5的固定数字。

可替代地,S1、S2、S3、S4和S5取决于样点比特深度。例如,S1=B-P1,S2=B-P2,S3=B-P3,S4=B-P4且S5=B-P5,其中B是诸如8、10或12的样点比特深度,P1、P2、P3、P4和P5是整数。

ii.例如,将内部变量在推导之后裁剪为

sGx2=Clip3(0,2

sGy2=Clip3(0,2

sGxGy=Clip3(-2

sGxdI=Clip3(-2

sGydI=Clip3(-2

f.仅针对选定位置推导变量gradientHL0[x][y]、gradientVL0[x][y]、gradientHL1[x][y]和gradientVL1[x][y]。

i.在一个示例中,仅针对x%Q==0的位置(x,y)处的样点计算它们。例如,Q=2

ii.在一个示例中,仅针对x%Q==1的位置(x,y)处的样点计算它们。例如,Q=2

iii.在一个示例中,仅针对y%Q==0的位置(x,y)处的样点计算它们。例如,Q=2

iv.在一个示例中,仅针对y%Q==1的位置(x,y)处的样点计算它们。例如,Q=2

v.在一个示例中,仅针对y%Q==0或y%Q==3的位置(x,y)处的样点计算它们。例如,Q=4;

g.仅针对选定位置推导内部变量temp[x[y]、tempX[x][y]和tempY[x][y]:

i.在一个示例中,仅针对x%Q==0的位置(x,y)处的样点计算它们。例如,Q=2;

ii.在一个示例中,仅针对x%Q==1的位置(x,y)处的样点计算它们。例如,Q=2;

iii.在一个示例中,仅针对y%Q==0的位置(x,y)处的样点计算它们。例如,Q=2;

iv.在一个示例中,仅针对y%Q==1的位置(x,y)处的样点计算它们。例如,Q=2;

v.在一个示例中,仅针对y%Q==0或y%Q==3的位置(x,y)处的样点计算它们。例如,Q=4;

vi.在一个示例中,针对在相同位置(例如,示例g.i~g.v中的位置)处的样点计算temp[x[y]、tempX[x][y]和tempY[x][y]、gradientHL0[x][y]、gradientVL0[x][y]、gradientHL1[x][y]、gradientVL1[x][y]。

h.仅对选定位置上的累积样点计算内部变量sGx2、sGy2、sGxGy、sGxdI和sGydI,其公式形式为

sGx2=∑

sGy2=∑

sGxGy=∑

sGxdI=∑

sGydI=∑

其中S是选定位置的集合。

i.在一个示例中,选定位置为x=0,1,2,3并且y=0,1,2,3;

ii.在一个示例中,选定位置为x=0,2并且y=0,1,2,3;

iii.在一个示例中,选定位置为x=1,2并且y=0,1,2,3;

iv.在一个示例中,选定位置为x=1,3并且y=0,1,2,3;

v.在一个示例中,选定位置为x=2,3并且y=0,1,2,3;

vi.在一个示例中,选定位置为x=0,3并且y=0,1,2,3;

vii.在一个示例中,选定位置为y=0,2并且x=0,1,2,3;

viii.在一个示例中,选定位置为y=1,2并且x=0,1,2,3;

ix.在一个示例中,选定位置为y=1,3并且x=0,1,2,3;

x.在一个示例中,选定位置为y=2,3并且x=0,1,2,3;

xi.在一个示例中,选定位置为y=0,3并且x=0,1,2,3;

xii.在一个示例中,选定位置为x=-1,4并且y=-1,0,1,2,3,4;

xiii.在一个示例中,选定位置为x=0,3并且y=-1,0,1,2,3,4;

xiv.在一个示例中,选定位置为x=1,2并且y=-1,0,1,2,3,4;

xv.在一个示例中,选定位置为x=-1,1,3并且y=-1,0,1,2,3,4;

xvi.在一个示例中,选定位置为x=0,2,4并且y=-1,0,1,2,3,4;

xvii.在一个示例中,选定位置为x=-1,1,2,4并且y=-1,0,1,2,3,4;

xviii.在一个示例中,选定位置为x=0,1,2,3并且y=-1,0,1,2,3,4;

xix.在一个示例中,选定位置为y=-1,4并且x=-1,0,1,2,3,4;

xx.在一个示例中,选定位置为y=0,3并且x=-1,0,1,2,3,4;

xxi.在一个示例中,选定位置为y=1,2并且x=-1,0,1,2,3,4;

xxii.在一个示例中,选定位置为y=-1,1,3并且x=-1,0,1,2,3,4;

xxiii.在一个示例中,选定位置为y=0,2,4,并且x=-1,0,1,2,3,4;

xxiv.在一个示例中,选定位置为y=-1,1,2,4并且x=-1,0,1,2,3,4;

xxv.在一个示例中,选定位置为y=0,1,2,3并且x=-1,0,1,2,3,4;

i.用于推导v

i.在一个示例中,vx=sGx2>0?Clip3(-mvRefineThres,mvRefineThres,-(sGxdI<<3)>>M):0。根据sGx2的值,M可以是Floor(Log2(sGx2))或Ceiling(Log2(sGx2))。例如,如果3*sGx2大于2

1.可替代地,vx=sGx2>0?Clip3(-mvRefineThres,mvRefineThres,-((sGxdI<<3)+Offset)>>M):0。Offset为整数,诸如1<<(M-1)。

a.Offset可以取决于sGx2。

ii.在一个示例中,vy=sGy2>0?Clip3(-mvRefineThres,mvRefineThres,((sGydI<<3)-((vx*sGxGym)<<12+vx*sGxGys)>>1)>>M:0。根据sGy2的值,M可以是Floor(Log2(sGy2))或Ceiling(Log2(sGy2))。例如,如果3*sGy2大于2

1.可替代地,vy=sGy2>0?Clip3(-mvRefineThres,mvRefineThres,(((sGydI<<3)-((vx*sGxGym)<<12+vx*sGxGys)>>1)+Offset)>>M:0。Offset为整数,诸如1<<(M-1)。

a.Offset可以取决于sGy2。

iii.sGxGym和sGxGys是根据sGxGy的符号来计算的。假设如果x>=0则sign(x)=1,如果x<0则sign(x)=-1,则sGxGym=sign(sGxGy)*|sGxGy|>>W;sGxGys=sign(sGxGy)*(|sGxGy|&((1<

1.W可以是诸如12的固定数字。或者它可以取决于样点比特深度。

iv.BIO过程中的除法运算是通过查找表计算。

(i)CCLM中也使用相同的查找表来代替除法运算。

a.subCuLevelSumAbsoluteDiff[xSbIdx][SbIdx]=∑

其中S是选定位置的集合。

i.在一个示例中,选定位置为i=0,2并且j=0,1,2,3;

ii.在一个示例中,选定位置为i=1,2并且j=0,1,2,3;

iii.在一个示例中,选定位置为i=1,3并且j=0,1,2,3;

iv.在一个示例中,选定位置为i=2,3并且j=0,1,2,3;

v.在一个示例中,选定位置为i=0,3并且j=0,1,2,3;

vi.在一个示例中,选定位置为j=0,2并且i=0,1,2,3;

vii.在一个示例中,选定位置为j=1,2并且i=0,1,2,3;

viii.在一个示例中,选定位置为j=1,3并且i=0,1,2,3;

ix.在一个示例中,选定位置为j=2,3并且i=0,1,2,3;

x.在一个示例中,选定位置为j=0,3并且i=0,1,2,3;

xi.在一个示例中,选定位置为i=0,3并且j=0,3;

xii.在一个示例中,选定位置为i=1,2并且j=1,2;

b.可替代地,subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx]=max

其中S是选定位置的集合。

c.可替代地,subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx]=min

其中S是选定位置的集合。

d.阈值subCuLevelAbsDiffThres可以是自适应的。

i.它可以取决于诸如QP和POC距离的编解码信息。

ii.可以在VPS/SPS/PPS/条带报头/片组报头/片/CTU CU中将其从编码器发送到解码器。

a.此外,可替代地,每个子块的SAD计算可以仅涉及一个子块内的部分样点。

b.cuLevelSumAbsoluteDiff=∑

其中,S是选定子块的集合。

i.在一示例中,选定位置为xSbIdx%2==0;

ii.在一示例中,选定位置为xSbIdx%2==1;

iii.在一示例中,选定位置为xSbIdx%4==0;

iv.在一个示例中,选定位置为xSbIdx==0或xSbIdx==(cbWidth>>2)-1;

v.在一个示例中,选定位置为xSbIdy%2==0;

vi.在一示例中,选定位置为xSbIdy%2==1;

vii.在一示例中,选定位置为xSbIdy%4==0;

viii.在一个示例中,选定位置为xSbIdy==0或xSbIdy==(cbHeight>>2)-1;

ix.在一个示例中,选定位置为(xSbIdy==0或xSbIdy==(cbHeight>>2)-1),且(xSbIdy==0或xSbIdy==(cbHeight>>2)-1);

c.cuLevelSumAbsoluteDiff=Max

d.cuLevelSumAbsoluteDiff=Min

e.阈值cuLevelAbsDiffThres可以是自适应的。

i.它可以取决于诸如QP和POC距离的编解码信息

ii.它可以取决于编解码模式,如AMVP模式、Merge模式或MMVD(具有MV差异的Merge)模式。

iii.可以在VPS/SPS/PPS/条带报头/片组报头/片/CTU CU中将其从编码器发送到解码器。

a.此外,可替代地,对于具有不同加权值的GBi,推导可以不同。

b.假设GBi过程中Ref0和Ref1的加权值为W0和W1,则在推导BIO过程中使用的变量(诸如SAD计算,梯度计算)之前,首先对预测块进行加权。

i.用predSamplesL0[x][y]和predSamplesL1[x][y]表示两个预测块。W0*predSamplesL0[x][y]和predSamplesL1[x][y]和W1*predSamplesL1[x][y]用作BIO的输入。

c.可替代地,在推导用于BIO过程的变量之前,将predSamplesL0[x][y]预先计算为Shift(W0*predSamplesL0[x][y],S0),并将predSamplesL1[x][y]预先计算为Shift(W1*predSamplesL1[x][y],S1)。

i.S0和S1可以取决于样点比特深度。

ii.S0和S1可以取决于W0和W1。

iii.S0和S1可以是诸如2的固定数字。

d.可替代地,当生成一个块的最终预测块时,也可以对校正项的值进行加权。

i.当推导用于BIO过程的参数时,在现有技术中,将两个未加权的预测块作为BIO的输入。然而,最终预测块是由预测块的加权值和校正项的加权值生成的。

ii.应用于校正项的权重可以与用于预测块的权重相同。可替代地,可以将不同的权重应用于校正项。

(a)例如,将校正项裁剪为[minCorrection,maxCorrection]。

i.minCorrection和maxCorrection可以是固定的,例如-32和32;

ii.minCorrection和maxCorrection可以取决于样点比特深度。例如,minCorrection=-(32<<(BitDepth-8)),maxCorrection=32<<(BitDepth-8)。

iii.minCorrection和maxCorrection可以取决于块的宽度和/或高度。

iv.minCorrection和maxCorrection可以在VPS/SPS/PPS/条带报头/片组报头/片/CTU行/CTU/CU中从编码器用信令通知到解码器。

(b)例如,如果校正项超出范围,则将其除以一个因子或进行右移。

(a)例如,将BIO中的最终预测输出裁剪为[minPred,maxPred]。

i.minPred和maxPred可以是固定数字,诸如-32和32;

ii.minPred和maxPred可以取决于样点比特深度。例如,minPred=-(32<<(BitDepth-8)),maxCorrection=32<<(BitDepth-8)。

iii.minPred和maxPred可以取决于块的宽度和/或高度。

iv.minPred和maxPred可以在VPS/SPS/PPS/条带报头/片组报头/片/CTU行/CTU/CU中从编码器用信令通知到解码器。

可以将上述示例结合到在下面描述的方法例如方法2810、2820、2830、2840、2850和2860的上下文中,该方法可以在视频解码器或视频编码器处实现。

图28A示出了用于视频处理的示例性方法的流程图。方法2810包括,在步骤2812,确定将第一线性优化模型用于视频的当前块和视频的比特流表示之间的转换,以用于使用第一编解码模式的转换,该第一线性优化模型是从第二线性优化模型中推导的,第二线性优化模型用于使用第二编解码模式的转换。

方法2810包括,在步骤2814,基于该确定来执行转换。

图28B示出了用于视频处理的示例性方法的流程图。方法2820包括,在步骤2822,基于与视频的当前块的图片相关联的一个或多个图片顺序计数(POC)参数,启用第一预测模式或不同于第一预测模式的第二预测模式,第一预测模式为使用光流的编解码模式。

方法2820包括,在步骤2824,基于第一模式或第二模式,执行当前块和视频的比特流表示之间的转换。

图28C示出了用于视频处理的示例性方法的流程图。方法2830包括,在步骤2832,基于与视频的当前块相关联的编解码信息,连续推导与当前块的参考图片相关联的一个或多个速度矢量(v

方法2830包括,在步骤2834,基于一个或多个速度矢量,在当前块和视频的比特流表示之间执行转换,该编解码信息包括当前块的运动矢量的水平分量的值、当前块的运动矢量的垂直分量的值或当前块的尺寸。

图28D示出了用于视频处理的示例性方法的流程图。方法2840包括,在步骤2842,在确定已经为视频的当前块启用了使用光流的编解码模式时,对所述当前块的每个颜色分量使用单一类型的插值滤波器进行滤波操作。

方法2840包括,在步骤2844,基于滤波操作,执行当前块和视频的比特流表示之间的转换。

图28E示出了用于视频处理的示例性方法的流程图。方法2850包括,在步骤2852,对于在视频的当前块和所述视频的比特流表示之间的转换,确定使用光流工具的梯度值计算算法。

方法2850包括,在步骤2854中,基于该确定来执行转换。

图28F示出了用于视频处理的示例性方法的流程图。方法2860包括,在步骤2862,基于视频的当前块的子块的一个或多个绝对差之和(SAD)计算,做出关于所述当前块的使用光流的编解码模式的选择性启用的决策。

方法2860包括,在步骤2864,基于该决策,执行所述当前块和所述当前块的比特流表示之间的转换。

图28G示出了用于视频处理的示例性方法的流程图。方法2870包括,在步骤2872,基于视频的当前块的通用双向预测改进(GBi)过程的选择性启用,推导所述当前块的使用光流的编解码模式的一个或多个参数。

方法2870包括,在步骤2874,基于所述使用光流的编解码模式的一个或多个参数,执行所述当前块和所述视频的比特流表示之间的转换。

图28H示出了用于视频处理的示例性方法的流程图。方法2880包括,在步骤2882,对于以使用光流的编解码模式进行编解码的视频的当前块,对使用光流的编解码模式的最终预测输出的校正项执行裁剪操作。

方法2880包括,在步骤2884,基于最终预测输出,执行当前块和视频的比特流表示之间的转换。

图28I示出了用于视频处理的示例性方法的流程图。该方法2890包括,在步骤2892,在确定已经为视频的当前块启用了使用光流的编解码模式时,对所述当前块的每个颜色分量使用单一类型的插值滤波器进行滤波操作。

该方法2890包括,在步骤2894,在确定当前块的至少一个样点位于预定范围之外时,执行填充操作。

该方法2890包括,在步骤2896,基于所述滤波操作和填充操作,在当前块和视频的比特流表示之间进行转换。

在一些实施例中,可以实施以下技术方案:

A1.一种视频处理方法,包括:确定将第一线性优化模型用于视频的当前块和视频的比特流表示之间的转换,以用于使用第一编解码模式的转换,其中,第一线性优化模型是从第二线性优化模型中推导的,第二线性优化模型用于使用第二编解码模式的转换;以及基于确定来执行转换。

A2.根据方案A1的方法,其中,第二编解码模式是双向光流(BDOF)预测模式。

A3.根据方案A2的方法,其中,第二线性优化模型包括作为输入的N组样点(u

A4.根据方案A3的方法,其中u

A5.根据方案A3的方法,其中,u

A6.根据方案A1的方法,其中,第二编解码模式是跨分量线性模型预测模式。

A7.一种视频处理的方法,包括:基于与视频的当前块的图片相关联的一个或多个图片顺序计数(POC)参数,启用第一预测模式或不同于第一预测模式的第二预测模式,其中第一预测模式为使用光流的编解码模式;以及基于第一模式或第二模式,执行当前块和视频的比特流表示之间的转换。

A8.根据方案A7的方法,还包括:避免启用使用光流的编解码模式,其中,第一参考图片(R

A9.根据方案A8的方法,其中,abs(τ

A10.根据方案A8的方法,其中,abs(τ

A11.根据方案A9或A10的方法,其中,T

A12.根据方案A8的方法,其中,abs(τ

A13.根据方案A12的方法,其中,T

A14.根据方案A8的方法,其中,abs(abs(τ

A15.根据方案A14的方法,其中,T

A16.根据方案A8的方法,其中,abs(τ

A17.根据方案A16的方法,其中,T

A18.根据方案A9至A17中的任一项的方法,其中,在视频参数集(VPS)、序列参数集(SPS)、图片参数集(PPS)、条带报头、片组报头、片、编解码单元(CU)或编解码树单元(CTU)中用信令通知T

A19.根据方案A7的方法,其中,启用了使用光流的编解码模式,其中,包括当前块的当前图片的一个或多个速度矢量(v

A20.根据方案A19的方法,其中,τ

其中

A21.根据方案A19的方法,其中,一个或多个速度矢量以迭代方式推导。

A22.根据方案A19的方法,其中,一个或多个速度矢量是基于第三预测模式,并且其中,第三预测模式是DMVR或双边匹配。

A23.根据方案A22的方法,其中,MV0和MV1分别是用于第一参考图片和第二参考图片的运动矢量,并且其中MV0'和MV1'是用于第三预测模式的初始运动矢量。

A24.根据方案A23的方法,其中,MV0'=MV0+(v

A25.根据方案A23的方法,其中,MV0'=MV0-(v

A26.根据方案A7的方法,其中,使用光流的编解码模式被启用并且被应用于当前块的样点的子集,其中,样点的子集不包括当前块的所有样点。

A27.根据方案A26的方法,其中,样点的子集不包括当前块的第一行、最后一行、第一列或最后一列中的样点。

A28.根据方案A7的方法,其中,使用光流的编解码模式被启用并且被应用于当前块的子块的样点的子集,其中,样点的子集不等同于当前块的子块的所有样点。

A29.根据方案A28的方法,其中,样点的子集不包括当前块的子块的第一行、最后一行、第一列或最后一列中的样点。

A30.根据方案A1-A29中任一项的方法,其中,使用光流的编解码模式是双向光流(BDOF)预测模式。

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

基于与视频的当前块相关联的编解码信息,连续推导与当前块的参考图片相关联的一个或多个速度矢量(v

基于一个或多个速度矢量,在当前块和视频的比特流表示之间执行转换,

其中,编解码信息包括当前块的运动矢量的水平分量的值、当前块的运动矢量的垂直分量的值或当前块的尺寸。

A32.根据方案A31的方法,其中首先推导v

A33.根据方案A31的方法,还包括:

基于一个或多个速度矢量,细化参考图片的至少一种预测或至少一种梯度;以及

在细化之后,基于参考图片推导一个或多个速度矢量。

A34.根据方案A33的方法,其中,多次执行细化和推导,直到一个或多个速度矢量中的一个的连续值之间的差小于预定阈值为止。

A35.根据方案A1至A34中的任一项的方法,其中,转换从比特流表示生成当前块。

A36.根据方案A1至A34中的任一项的方法,其中,转换从当前块生成比特流表示。

A37.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,指令在由处理器执行时使处理器实现根据方案A1至A36中的一项或多项的方法。

A38.一种存储在非暂时性计算机可读介质上的计算机程序产品,算机程序产品包括用于进行根据方案A1至A36中的一项或多项的方法的程序代码。

在一些实施例中,可以实施以下技术方案:

B1.一种视频处理的方法,包括:在确定已经为视频的当前块启用了使用光流的编解码模式时,对当前块的每个颜色分量使用单一类型的插值滤波器进行滤波操作;以及基于滤波操作,执行当前块和视频的比特流表示之间的转换。

B2.根据方案B1的方法,其中,颜色分量包括亮度分量,并且单一类型的插值滤波器包括8抽头插值滤波器。

B3.根据方案B1的方法,其中,用于滤波操作的当前块的样点的第一数量小于单一类型的插值滤波器所需的样点的第二数量,从而减小了滤波操作的存储器带宽。

B4.根据方案B3的方法,其中,当不应用使用光流的编解码模式时,样点的第二数量等于用于滤波操作的当前块的样点数量。

B5.根据方案B1的方法,其中将当前块的多个样点用于滤波操作,并且其中方法还包括:在确定应用使用光流的编解码模式时执行填充操作。

B6.根据方案B1的方法,其中,当前块的尺寸是M×N,其中,梯度计算所需的样点的第一数量是(M+G)×(N+G),其中,单一类型的插值滤波器包括L个抽头,其中滤波操作所需的样点的第二数量是(M+G+L-1)×(N+G+L-1),其中用于滤波操的样点的第三数量是(M+L-1+k)×(N+L-1+k),其中M、N、G和L是正整数,其中k是小于G的整数,并且其中包括样点的第二数量和样点的第三数量之间的差的第四数量的样点被填充。

B7.根据方案B6的方法,其中,M=N=8,L=8并且G=2。

B8.根据方案B6或B7的方法,其中,k=0或k=1。

B9.根据方案B1的方法,其中,当前块的左上像素的坐标是(0,0),并且其中,方法还包括:

避免计算梯度值并将使用光流的编解码模式应用于预定位置的像素。

B10.根据方案B9的方法,其中,预定位置的x坐标是-1或W,其中,W是当前块的宽度,并且其中,W是正整数。

B11.根据方案B9的方法,其中,预定位置的y坐标是-1或H,其中,H是当前块的高度,并且其中,H是正整数。

B12.根据方案B1的方法,其中,当前块的左上像素的坐标是(0,0),并且其中,方法还包括:对预定位置中像素,修改梯度值的计算。

B13.根据方案B12的方法,其中,预定位置的x坐标是-1或W,其中,W是当前块的宽度,并且其中,W是正整数。

B14.根据方案B12的方法,其中,预定位置的y坐标是-1或H,其中,H是当前块的高度,并且其中,H是正整数。

B15.根据方案B13或B14的方法,其中,梯度值的计算包括:

其中W是当前块的宽度,其中predSampleL0是包括参考列表L0中当前块的亮度预测样点的数组,其中gradientHL0是从参考列表L0推导的梯度值的水平分量,并且其中hx和vy是整数坐标索引。

B16.根据方案B13或B14的方法,其中,梯度值的计算包括:

其中W是当前块的宽度,其中predSampleL0是包括来自当前块的亮度预测样点的数组,其中gradientVL0是从参考列表L0推导的梯度值的垂直分量,并且其中hx和vy是整数坐标索引。

B17.根据方案B1的方法,还包括:在计算梯度值之前,对当前块的一个或多个外部样点进行填充,而不是对一个或多个外部样点进行插值。

B18.根据方案B1的方法,其中,在使用光流的编解码模式中使用的一个或多个梯度计算与在自适应环路滤波器(ALF)中使用的那些相同。

B19.一种视频处理的方法,包括:在确定已经为视频的当前块启用了使用光流的编解码模式时,对当前块的每个颜色分量使用单一类型的插值滤波器进行滤波操作;在确定当前块的至少一个样点位于预定范围之外时,执行填充操作;以及基于滤波操作和填充操作,在当前块和视频的比特流表示之间进行转换。

B20.根据方案B19的方法,其中,在执行梯度计算之前执行填充操作。

B21.根据方案B19的方法,其中,预定范围是基于当前块的高度或宽度。

B22.根据方案B1至B21中的任一项的方法,其中,使用光流的编解码模式包括双向光流(BDOF)预测模式。

B23.根据方案B1至B22中的任一项的方法,其中,转换从比特流表示生成当前块。

B24.根据方案B1至B22中的任一项的方法,其中,转换从当前块生成比特流表示。

B25.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,指令在由处理器执行时使处理器实现如方案B1至B24中的一项或多项的方法。

B26.一种存储在非暂时性计算机可读介质上的计算机程序产品,计算机程序产品包括用于执行如方案B1至B24中的一项或多项的方法的程序代码。

在一些实施例中,可以实施以下技术方案:

C1.一种视频处理方法,包括:对于在视频的当前块和视频的比特流表示之间的转换,确定使用光流工具的梯度值计算算法;以及基于确定,执行转换,其中,梯度值计算算法不同于传统的梯度值计算算法,包括:

gradientHL0[x][y]=(predSampleL0[hx+1][vy]–predSampleL0[hx-1][vy])>>4,

gradientVL0[x][y]=(predSampleL0[hx][vy+1]–predSampleL0[hx][vy–1])>>4,

gradientHL1[x][y]=(predSampleL1[hx+1][vy]–predSampleL1[hx–1][vy])>>4,和

gradientVL1[x][y]=(predSampleL1[hx][vy+1]–predSampleL1[hx][vy-1])>>4,

其中,gradientHL0是从参考列表L0推导的梯度值的水平分量,其中gradientVL0是从参考列表L0推导的梯度值的垂直分量,其中gradientHL1是从参考列表L1推导的梯度值的水平分量,其中gradientVL1是从参考列表L1推导的梯度值的垂直分量,其中predSampleL0是包括参考列表L0中当前块的亮度预测样点的数组,其中predSampleL1是包括参考列表L1中当前块的亮度预测样点的数组,并且其中hx和vy是整数坐标索引。

C2.根据方案C1的方法,其中,修改梯度值计算包括:将梯度值移位预定的正整数(S),并且其中,S≠4。

C3.根据方案C2的方法,其中,S=6。

C4.根据方案C2的方法,其中,S=B-P,其中,B是当前块的样点的比特深度,并且其中,P是正整数。

C5.根据方案C4的方法,其中,P=6,并且其中B=8或12。

C6.根据方案C1的方法,其中,修改梯度值计算包括:裁剪梯度值,使得梯度值可以表示为K位整数,并且其中,K是正整数。

C7.根据方案C6的方法,其中,K=8或16。

C8.根据方案C1的方法,其中,光流工具的梯度值计算算法包括对第一内部变量(temp)、第二内部变量(tempX)和第三内部变量(tempY)的计算,并且其中,计算定义为:

temp[x][y]=SignShift(predSampleL0[hx][vy]–predSampleL1[hx][vy],S1),

tempX[x][y]=SignShift(gradientHL0[x][y]+gradientHL1[x][y],S2),和

tempY[x][y]=SignShift(gradientVL0[x][y]+gradientVL1[x][y],S3),

其中S1、S2和S3是整数,并且其中SignShift(x,s)定义为:

其中off是整数。

C9.根据方案C8的方法,其中,S1=6并且S2=S3=3。

C10.根据方案C8的方法,其中,S1、S2和S3基于当前块(B)的样点比特深度。

C11.根据方案C10的方法,其中,S1=B-P1,S2=B-P2并且S3=B-P3,其中P1、P2和P3是整数。

C12.根据方案C11的方法,其中,B=8、10或12,并且其中P1=4并且P2=P3=7。

C13.根据方案C1的方法,其中,光流工具的梯度值计算算法包括:计算分别由K1位整数、K2位整数和K3位整数表示的第一内部变量(temp)、第二内部变量(tempX)和第三内部变量(tempY),并且其中K1、K2和K3是正整数。

C14.根据方案C13的方法,其中,K1=8或16,K2=8或16并且K3=8或16。

C15.根据方案C13或C14的方法,其中,在计算temp、tempX和tempY之后执行如下定义的裁剪运算:

temp[x][y]=Clip3(-2

tempX[x][y]=Clip3(-2

tempY[x][y]=Clip3(-2

其中Clip3(x,min,max)定义为:

C16.根据方案1的方法,其中,光流工具的梯度值计算算法包括:对多个内部变量的计算,多个内部变量包括分别由K1位整数、K2位整数、K3位整数、K4位整数和K5位整数来表示的sGx2、sGy2、sGxGy、sGxdI和sGydI,并且其中K1、K2、K3、K4和K5是正整数。

C17.根据方案C16的方法,其中,K1=8或16,K2=8或16,K3=8或16,K4=8或16并且K5=8或16。

C18.根据方案C16和C17的方法,其中,对sGx2、sGy2、sGxGy、sGxdI和sGydI的计算之后执行如下定义的移位运算:

sGx2=Shift(sGx2,S1),

sGy2=Shift(sGy2,S2),

sGxGy=SignShift(sGxGy,S3),

sGxdI=SignShift(sGxdI,S4),和

sGydI=SignShift(sGydI,S5),

其中S1、S2、S3、S4和S5是正整数,

其中Shift(x,s)=(x+off)>>s,并且其中SignShift(x,s)定义为:

其中off是整数。

C19.根据方案C18的方法,其中,S1、S2、S3、S4和S5等于4或5。

C20.根据方案C18的方法,其中,S1、S2、S3、S4和S5基于当前块(B)的样点比特深度。

C21.根据方案C8的方法,其中,S1=B-P1,S2=B-P2,S3=B-P3,S4=B-P4并且S5=B-P5,其中P1、P2、P3、P4和P5是整数。

C22.根据方案C21的方法,其中,B=8、10或12。

C23.根据方案C16和C17的方法,其中,对sGx2、sGy2、sGxGy、sGxdI和sGydI的计算之后执行如下定义的裁剪运算:

sGx2=Clip3(0,2

sGy2=Clip3(0,2

sGxGy=Clip3(-2

sGxdI=Clip3(-2

sGydI=Clip3(-2

其中Clip3(x,min,max)定义为:

C24.根据方案C1至C23中任一项的方法,其中,光流工具包括双向光流(BDOF)工具。

C25.一种视频处理方法,包括:基于视频的当前块的子块的一个或多个绝对差之和(SAD)计算,做出关于当前块的双向光流(BDOF)预测模式的选择性启用的决策;以及基于决策,执行当前块和当前块的比特流表示之间的转换。

C26.根据方案C25的方法,其中,SAD计算包括去除均值的绝对差之和(MR-SAD)计算。

C27.根据方案C25或C26的方法,其中,对当前块中的预定位置中的样点执行所述SAD计算。

C28.根据方案C25或C26的方法,其中,对当前块的子块中的预定位置中的样点执行所述SAD计算。

C29.一种视频处理方法,包括:基于视频的当前块的通用双向预测改进(GBi)过程的选择性启用,推导当前块的使用光流的编解码模式的一个或多个参数;以及基于使用光流的编解码模式的一个或多个参数,执行当前块和视频的比特流表示之间的转换。

C30.一种视频处理方法,包括:对于以使用光流的编解码模式进行编解码的视频的当前块,对使用光流的编解码模式的最终预测输出的校正项进行裁剪操作;以及基于最终预测输出,执行当前块和视频的比特流表示之间的转换。

C31.根据方案C30的方法,其中,将校正项裁剪到范围[minCorrection,maxCorrection],其中,minCorrection和maxCorrection是整数。

C32.根据方案C31的方法,其中,minCorrection=-32并且maxCorrection=32。

C33.根据方案C31的方法,其中,minCorrection和maxCorrection基于样点比特深度。

C34.根据方案C31的方法,其中,minCorrection和maxCorrection基于视频的当前块的高度或宽度。

C35.根据方案C31的方法,其中,在视频参数集(VPS)、序列参数集(SPS)、图片参数集(PPS)、条带报头、片组报头、片、编解码单元(CU)或编解码树单元(CTU)中用信令通知minCorrection和maxCorrection。

C36.根据方案C30的方法,其中,将最终预测输出裁剪到范围[minPred,maxPred],其中,minPred和maxPred是整数。

C37.根据方案C36的方法,其中,minPred=-32并且maxPred=32。

C38.根据方案C36的方法,其中,midPred和maxPred基于样点比特深度。

C39.根据方案C36的方法,其中,midPred和maxPred基于视频的当前块的高度或宽度。

C40.根据方案C36的方法,其中,在视频参数集(VPS)、序列参数集(SPS)、图片参数集(PPS)、条带报头、片组报头、片、编解码单元(CU)或编解码树单元(CTU)中用信令通知midPred和maxPred。

C41.根据方案C30至C40中任一项的方法,其中,校正项包括基于使用光流的编解码模式的样点推导的预测偏移。

C42.根据方案C25至C41中任一项的方法,其中,使用光流的编解码模式包括双向光流(BDOF)预测模式。

C43.根据方案C1至C42中任一项的方法,其中,转换从比特流表示生成当前块。

C44.根据方案C1至C42中任一项的方法,其中,转换从当前块生成比特流表示。

C45.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,指令在由处理器执行时使处理器实现根据方案C1至C44中的一项或多项的方法。

C46.一种存储在非暂时性计算机可读介质上的计算机程序产品,计算机程序产品包括用于进行根据方案C1至C44中的一项或多项的方法的程序代码。

6.所公开技术的示例实现

图29是视频处理装置2900的框图。装置2900可用于实现这里描述的一个或多个方法。装置2900可以体现在智能手机、平板电脑、计算机、物联网(IoT)接收器等中。装置2900可以包括一个或多个处理器2902、一个或多个存储器3704和视频处理硬件2906。处理器2902可以被配置为实现在本文中描述的一种或多种方法(包括但不限于方法2800)。可以将(一个或多个)存储器2904用于存储用于实现这里描述的方法和技术的数据和代码。视频处理硬件2906可用于在硬件电路中实现本文档中描述的一些技术。

在一些实施例中,视频编解码方法可以使用如关于图29所描述的在硬件平台上实现的装置来实现。

所公开技术的一些实施例包含做出决策或确定以启用视频处理工具或模式。在示例中,当启用视频处理工具或模式时,编码器将在视频块的处理中使用或实现该工具或模式,但是不一定基于该工具或模式的使用来修改结果比特流。也就是说,从视频块到视频的比特流表示的转换将在基于决策或确定启用视频处理工具或模式时使用视频处理工具或模式。在另一示例中,当启用视频处理工具或模式时,解码器将基于视频处理工具或模式已经知道比特流已被修改的情况下处理比特流。也就是说,将使用基于决策或确定而启用的视频处理工具或模式来执行从视频的比特流表示到视频块的转换。

所公开技术的一些实施例包含作出决策或确定以禁用视频处理工具或模式。在示例中,当禁用视频处理工具或模式时,编码器将在视频块到视频的比特流表示的转换中不使用该工具或模式。在另一示例中,当禁用视频处理工具或模式时,解码器将在知道尚未使用基于决策或确定启用的视频处理工具或模式修改比特流的情况下处理比特流。

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

系统3000可以包括可以实现本文中描述的各种编解码或编码方法的编解码组件3004。编解码组件3004可以减少从编解码组件3004的输入3002到输出的视频的平均比特率,以产生视频的编解码表示。因此,编解码技术有时称为视频压缩或视频转码技术。如组件3006所表示的,编解码组件3004的输出可以被存储或经由所连接的通信来发送。在输入3002处接收的视频的存储或传送的比特流(或编解码)表示可以被组件3008使用,以生成被发送到显示接口3010的像素值或可显示视频。从比特流表示中生成用户可见视频的过程有时称为视频解压缩。此外,尽管某些视频处理操作被称为“编解码”操作或工具,但是应当理解,在编码器处使用编解码工具或操作,并且将由解码器执行反向编码结果的相应解码工具或操作。

外围总线接口或显示接口的示例可以包括通用串行总线(USB)或高清多媒体接口(HDMI)或Displayport等。存储接口的示例包括SATA(串行高级技术附件)、PCI、IDE接口等。本文中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型计算机、智能电话或其他能够执行数字数据处理和/或视频显示的设备。

从前述内容可以理解,本文已经出于说明的目的描述了当前所公开的技术的具体实施例,但是在不脱离本发明的范围的情况下可以做出各种修改。因此,除了所附权利要求之外,当前所公开的技术不受限制。

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

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

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

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

旨在将说明书与附图一起仅视为示例性的,其中示例性意味着示例。如本文中所使用的,除非上下文另有明确说明,否则“或”的使用旨在包括“和/或”。

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

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

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

相关技术
  • 预测精度改进视频编解码
  • 基于改进熵权法提高风电功率组合预测精度的方法
技术分类

06120112918979