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

视频处理的方法

文献发布时间:2024-04-29 00:47:01


视频处理的方法

相关申请的交叉引用

本申请是申请日为2020年1月2日、申请号为202080007867.3、发明名称为“视频处理的方法”的发明专利申请的分案申请,其要求2019年1月2日提交的国际专利申请No.PCT/CN2019/070058号的优先权和权益。上述申请的全部公开通过引用而并入作为本申请公开的一部分。

技术领域

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

背景技术

运动补偿(MC)是视频处理中的技术,该技术通过考虑相机和/或视频中的对象的运动,在给定先前和/或未来帧的情况下预测视频中的帧。运动补偿可以用于视频数据的编码以用于视频压缩。

发明内容

本文档公开了与视频运动补偿中的基于子块的运动预测相关的方法、系统和设备。

在一个代表性方面,公开了一种处理视频数据的方法,包括:在视频的当前视频单元和所述视频的比特流之间的转换期间,基于仿射模式来确定所述当前视频单元的亮度块的控制点的运动矢量,其中所述当前视频单元的色彩格式为4:2:0,并且其中所述当前视频单元包括所述亮度块和色度块;将所述亮度块划分为亮度子块;将所述色度块划分为色度子块;基于所述控制点的运动矢量来确定每个亮度子块的亮度运动矢量,并且确定每个色度子块的色度运动矢量;以及基于每个亮度子块的亮度运动矢量来重构所述亮度块;其中,所述色度块包括至少一个色度组,并且包括在相同色度组中的四个色度子块共享相同的色度运动矢量,其中所述相同的色度运动矢量是基于对角线或反对角线位置处的两个对应亮度子块的两个亮度运动矢量来推导的。

在另一个代表性方面,公开了一种用于处理视频数据的装置,包括处理器和其上具有指令的非暂时性存储器,其中所述指令在由所述处理器执行时使得所述处理器:在视频的当前视频单元和所述视频的比特流之间的转换期间,基于仿射模式来确定所述当前视频单元的亮度块的控制点的运动矢量,其中所述当前视频单元的色彩格式为4:2:0,并且其中所述当前视频单元包括所述亮度块和色度块;将所述亮度块划分为亮度子块;将所述色度块划分为色度子块;基于所述控制点的运动矢量来确定每个亮度子块的亮度运动矢量,并且确定每个色度子块的色度运动矢量;以及基于每个亮度子块的亮度运动矢量来重构所述亮度块;其中,所述色度块包括至少一个色度组,并且包括在相同色度组中的四个色度子块共享相同的色度运动矢量,其中所述相同的色度运动矢量是基于对角线或反对角线位置处的两个对应亮度子块的两个亮度运动矢量来推导的。

在另一个代表性方面,公开了一种存储指令的非暂时性计算机可读存储介质,其中所述指令使得处理器:在视频的当前视频单元和所述视频的比特流之间的转换期间,基于仿射模式来确定所述当前视频单元的亮度块的控制点的运动矢量,其中所述当前视频单元的色彩格式为4:2:0,并且其中所述当前视频单元包括所述亮度块和色度块;将所述亮度块划分为亮度子块;将所述色度块划分为色度子块;基于所述控制点的运动矢量来确定每个亮度子块的亮度运动矢量,并且确定每个色度子块的色度运动矢量;以及基于每个亮度子块的亮度运动矢量来重构所述亮度块;其中,所述色度块包括至少一个色度组,并且包括在相同色度组中的四个色度子块共享相同的色度运动矢量,其中所述相同的色度运动矢量是基于对角线或反对角线位置处的两个对应亮度子块的两个亮度运动矢量来推导的。

在另一个代表性方面,公开了一种存储由视频处理装置执行的方法生成的视频的比特流的非暂时性计算机可读记录介质,其中所述方法包括:基于仿射模式来确定视频的当前视频单元的亮度块的控制点的运动矢量,其中所述当前视频单元的色彩格式为4:2:0,并且其中所述当前视频单元包括所述亮度块和色度块;将所述亮度块划分为亮度子块;将所述色度块划分为色度子块;基于所述控制点的运动矢量来确定每个亮度子块的亮度运动矢量,并且确定每个色度子块的色度运动矢量;基于每个亮度子块的亮度运动矢量来重构所述亮度块,以获得重构的亮度块;以及至少基于所述重构的亮度块来生成所述比特流;其中,所述色度块包括至少一个色度组,并且包括在相同色度组中的四个色度子块共享相同的色度运动矢量,其中所述相同的色度运动矢量是基于对角线或反对角线位置处的两个对应亮度子块的两个亮度运动矢量来推导的。

在另一个代表性方面,公开了一种用于存储视频的比特流的方法,包括:基于仿射模式来确定视频的当前视频单元的亮度块的控制点的运动矢量,其中所述当前视频单元的色彩格式为4:2:0,并且其中所述当前视频单元包括所述亮度块和色度块;将所述亮度块划分为亮度子块;将所述色度块划分为色度子块;基于所述控制点的运动矢量来确定每个亮度子块的亮度运动矢量,并且确定每个色度子块的色度运动矢量;基于每个亮度子块的亮度运动矢量来重构所述亮度块,以获得重构的亮度块;至少基于所述重构的亮度块来生成所述比特流;以及将所述比特流存储在非暂时性计算机可读记录介质中,其中,所述色度块包括至少一个色度组,并且包括在相同色度组中的四个色度子块共享相同的色度运动矢量,其中所述相同的色度运动矢量是基于对角线或反对角线位置处的两个对应亮度子块的两个亮度运动矢量来推导的。

在另一个代表性方面,公开了一种处理视频数据的方法,包括:推导属于视频的当前视频块的第一划分模式的子块的第一集合的一个或多个运动矢量;以及基于所述一个或多个运动矢量来执行所述当前视频块和所述视频的比特流之间的转换。

在另一个代表性方面,公开了一种用于处理视频数据的装置,包括处理器和其上具有指令的非暂时性存储器,其中所述指令在由所述处理器执行时使得所述处理器:推导属于视频的当前视频块的第一划分模式的子块的第一集合的一个或多个运动矢量;以及基于所述一个或多个运动矢量来执行所述当前视频块和所述视频的比特流之间的转换。

在另一个代表性方面,公开了一种存储指令的非暂时性计算机可读存储介质,其中所述指令使得处理器:推导属于视频的当前视频块的第一划分模式的子块的第一集合的一个或多个运动矢量;以及基于所述一个或多个运动矢量来执行所述当前视频块和所述视频的比特流之间的转换。

在另一个代表性方面,公开了一种存储由视频处理装置执行的方法生成的视频的比特流的非暂时性计算机可读记录介质,其中所述方法包括:推导属于视频的当前视频块的第一划分模式的子块的第一集合的一个或多个运动矢量;以及基于所述一个或多个运动矢量来生成所述比特流。

在另一个代表性方面,公开了一种用于存储视频的比特流的方法,包括:推导属于视频的当前视频块的第一划分模式的子块的第一集合的一个或多个运动矢量;基于所述一个或多个运动矢量来生成所述比特流;以及将所述比特流存储在非暂时性计算机可读记录介质中。

在另一个代表性方面,公开了一种用于视频处理的方法。该方法包括:推导属于视频的当前视频块的第一划分模式的子块的第一集合的一个或多个运动矢量;基于一个或多个运动矢量来执行当前视频块和视频的编解码表示之间的转换。

在另一个代表性方面,公开了一种用于视频处理的方法。该方法包括:划分第一色彩分量的视频块以获得第一色彩分量的子块的第一集合;划分第二色彩分量的对应视频块以获得第二色彩分量的子块的第二集合;基于子块的第二集合的一个或多个运动矢量,推导子块的第一集合的一个或多个运动矢量;以及基于子块的第一集合和子块的第二集合的一个或多个运动矢量,执行视频块和视频的编解码表示之间的转换。

在另一个代表性方面,公开了一种用于视频处理的方法。该方法包括:针对视频的当前视频块和视频的比特流表示之间的转换,根据依据当前视频块的高度(H)或宽度(W)的多个划分模式,将当前视频块划分为分割;以及使用多个分割的交织预测来执行该转换。

在另一个代表性方面,公开了一种用于视频处理的方法。该方法包括:确定对视频的当前视频块应用预测,预测包括根据划分模式将当前视频块划分为子块;确定在当前视频块的子块上应用位移位以生成预测块;以及执行当前视频块和视频的编解码表示之间的转换。

在另一个代表性方面,公开了一种用于视频处理的方法。该方法包括:基于视频的当前视频块的特性,确定是否对当前块和视频的编解码表示之间的转换使用交织预测工具;以及根据该确定来执行该转换,其中,在确定当前视频块的特性不满足条件时,该转换是通过禁用仿射预测工具和/或交织预测工具的使用而执行的。

在另一个代表性方面,公开了一种用于视频处理的方法。该方法包括:基于视频的当前视频块的特性,确定是否对当前块和视频的编解码表示之间的转换使用交织预测工具;以及根据该确定来执行该转换,其中,在确定当前视频块的特性满足条件时,该转换是通过使用仿射预测工具和/或交织预测工具而执行的。

在另一个代表性方面,公开了一种用于视频处理的方法。该方法包括:确定交织预测要被应用于视频的当前视频块;基于确定要应用交织预测,对当前视频块禁用双向预测;以及执行当前视频块和视频的编解码表示之间的转换。

在另一个代表性方面,公开了一种用于视频处理的方法。该方法包括:为视频的当前视频块和视频的编解码表示之间的转换确定当前视频块的细化运动信息;以及使用细化运动信息来执行该转换,其中,细化运动信息是基于交织预测工具而生成的,其中在该交织预测工具中当前视频块的分割的运动信息是使用多个模式生成的,并且其中,当前视频块的细化运动信息用于后续处理或者基于是否满足条件而选择性地存储。

在另一个代表性方面,公开了一种用于视频处理的方法。该方法包括:确定交织预测是否被应用于视频的当前视频块;基于确定交织预测是否被应用于当前视频块,确定对当前视频块使用滤波过程;以及基于确定使用滤波过程,执行当前视频块和视频的编解码表示之间的转换。

在另一个代表性方面,公开了一种用于视频处理的方法。该方法包括:确定交织预测是否被应用于视频的当前视频块;基于确定使用交织预测,确定是否对当前视频块使用局部照明补偿或加权预测;以及基于确定使用局部照明补偿或加权预测,执行当前视频块和视频的编解码表示之间的转换。

在另一个代表性方面,公开了一种用于视频处理的方法。该方法包括:确定加权预测被应用于视频的当前视频块或当前视频块的子块;以及通过禁用双向光流(BDOF)技术来执行当前视频块和视频的编解码表示之间的转换。

在另一个代表性方面,公开了一种包括处理器和其上具有指令的非暂时性存储器的装置。该指令在由处理器执行时使得处理器:从视频帧选择像素集合以形成块;根据第一模式将块分割为子块的第一集合;基于子块的第一集合来生成第一中间预测块;根据第二模式将块分割为子块的第二集合,其中,第二集合中的至少一个子块具有与第一集合中的子块不同的尺寸;基于子块的第二集合来生成第二中间预测块;以及基于第一中间预测块和第二中间预测块来确定预测块。

在又一个代表性方面,一种用于视频处理的方法包括:推导当前视频块的子块的第一集合的一个或多个运动矢量,其中,子块的第一集合中的每一个子块具有第一划分模式;以及基于一个或多个运动矢量来重构当前视频块。

在又一个代表性方面,在本文中描述的各种技术可以被体现为存储在非暂时性计算机可读介质上的计算机程序产品。该计算机程序产品包括用于执行在本文中描述的方法的程序代码。

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

在所附的附件、附图和下面的描述中阐明了一个或多个实施方式的细节。从说明书和附图中以及从权利要求书中,其他特征将显而易见。

附图说明

图1是示出基于子块的预测的示例的示意图。

图2示出了由两个控制点运动矢量描述的块的仿射运动场的示例。

图3示出了块的每个子块的仿射运动矢量场的示例。

图4示出了AF_INTER模式下的块400的运动矢量预测的示例。

图5A示出了当前编解码单元(CU)的候选块的选择顺序的示例。

图5B示出了AF_MERGE模式下的当前CU的候选块的另一示例。

图6示出了用于CU的可选时域运动矢量预测(ATMVP)运动预测过程的示例。

图7示出了具有四个子块的一个CU和临近块的示例。

图8示出了双向光流(BIO)方法中的示例光流轨迹。

图9A示出了块外部的访问位置的示例。

图9B示出了可以使用填充区域来避免额外的内存访问和计算。

图10示出了在帧速率上转换(FRUC)方法中使用的双边匹配的示例。

图11示出了在FRUC方法中使用的模板匹配的示例。

图12示出了FRUC方法中的单边运动估计(ME)的示例。

图13示出了根据所公开的技术的具有两个划分模式的交织预测的示例。

图14A示出了根据所公开的技术的其中块被划分为4×4个子块的示例划分模式。

图14B示出了根据所公开的技术的其中块被划分为8×8个子块的示例划分模式。

图14C示出了根据所公开的技术的其中块被划分为4×8个子块的示例划分模式。

图14D示出了根据所公开的技术的其中块被划分为8×4个子块的示例划分模式。

图14E示出了根据所公开的技术的其中块被划分为非均匀子块的示例划分模式。

图14F示出了根据所公开的技术的其中块被划分为非均匀子块的另一示例划分模式。

图14G示出了根据所公开的技术的其中块被划分为非均匀子块的又一示例划分模式。

图15A-图15D示出了部分交织预测的示例实施例。

图16A-图16C示出了从另一划分模式推导一个划分模式的MV的示例实施例。

图17A-图17C示出了基于当前视频块的大小来选择划分模式的示例实施例。

图18A和图18B示出了从另一划分模式内的另一分量中的子块的MV推导划分模式中的一个分量内的子块的MV的示例实施例。

图19是基于所公开的技术的一些实施方式的用于视频处理的方法的示例流程图。

图20是基于所公开的技术的一些其他实施方式的用于视频处理的方法的示例流程图。

图21A至图21D是基于所公开的技术的一些其他实施方式的用于视频处理的方法的示例流程图。

图22A至图22D是基于所公开的技术的一些其他实施方式的用于视频处理的方法的示例流程图。

图23和图24是用于实施在所公开的技术中描述的视频处理方法的硬件平台的示例的框图。

具体实施方式

全局运动补偿是运动补偿技术的变体中的一个,并且可以用于预测相机的运动。然而,全局运动补偿的各种实施方式不足以表示帧内的移动对象。诸如块运动补偿之类的局部运动估计可以用于说明在帧内移动的对象,其中在局部运动估计中,将帧分割为像素块以用于执行运动预测。

基于块运动补偿而开发的基于子块的预测首先由高效视频编解码(HEVC)附录I(3D-HEVC)引入视频编解码标准中。图1是示出基于子块的预测的示例的示意图。利用基于子块的预测,将诸如编解码单元(CU)或预测单元(PU)的块100划分为几个非重叠的子块101。可以向不同的子块分配不同的运动信息,诸如参考索引或运动矢量(MV)。然后针对每个子块单独执行运动补偿。

为了探索超HEVC的未来视频编解码技术,视频编解码专家组(VCEG)和运动图像专家组(MPEG)于2015年联合成立了联合视频探索小组(JVET)。JVET已经采用了许多方法,并且该许多方法被添加到名为联合探索模型(JEM)的参考软件中,在JEM中,几种编解码技术中采用了基于子块的预测,诸如仿射预测、可选时域运动矢量预测(ATMVP)、空时运动矢量预测(STMVP)、双向光流(BIO)和帧速率转换(FRUC),在下面进行详细讨论。

仿射预测

在HEVC中,只有平移运动模型被应用于运动补偿预测(Motion CompensationPrediction,MCP)。然而,相机和物体可能具有许多种类的运动,例如放大/缩小、旋转、透视运动和/或其它不规则运动。另一方面,JEM应用简化的仿射变换运动补偿预测。图2示出了由两个控制点运动矢量V

如图2所示,(v

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

图3示出了块300的每个子块的仿射MVF的示例。为了推导每个M×N子块的运动矢量,可以根据等式(1)来计算每个子块的中心样点的运动矢量,并将其取整到运动矢量分数精度(例如,在JEM中为1/16)。然后,运动补偿插值滤波器可以被应用于用推导出的运动矢量生成每个子块的预测。在MCP之后,每个子块的高精度运动矢量被取整并保存为与正常运动矢量相同的精度。

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

当在AF_MERGE模式下应用CU时,它从有效的临近重构块得到以仿射模式编解码的第一块。图5A示出了当前CU 500的候选块的选择顺序的示例。如图5A所示,选择顺序可以是从当前CU 500的左侧(501)、上侧(502)、右上方(503)、左下方(504)到左上方(505)。图5B示出了AF_MERGE模式下的当前CU 500的候选块的另一示例。如果临近的左下方块501以仿射模式被编解码,如图5B所示,则包含子块501的CU的左上角、右上角和左下角的运动矢量v

在根据等式(1)中的仿射运动模型来计算当前CU的CPMV v0和v1之后,可以生成当前CU的MVF。为了识别当前CU是否以AF_MERGE模式被编解码,当有至少一个临近块在仿射模式下被编解码时,在比特流中信令通知仿射标志。

可选时域运动矢量预测(ATMVP)

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

图6示出了用于CU 600的ATMVP运动预测过程的示例。ATMVP方法分两个步骤预测CU 600内的子CU 601的运动矢量。第一步骤是用时域矢量标识参考图片650中的对应块651。参考图片650也被称为运动源图片。第二步骤是将当前CU 600划分为子CU 601,并从对应于每个子CU的块获得每个子CU的运动矢量和参考索引。

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

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

空时运动矢量预测(STMVP)

在STMVP方法中,子CU的运动矢量按照光栅扫描顺序被递归地推导。图7示出了具有四个子块的一个CU和临近块的示例。考虑8×8CU 700,其包括四个4×4子CU A(701)、B(702)、C(703)和D(704)。当前帧中的临近4×4块被标记为a(711)、b(712)、c(713)和d(714)。

子CU A的运动推导从标识其两个空域邻居开始。第一个邻居是子CU A701上侧的N×N块(块c 713)。如果该块c(713)不可用或是帧内编解码的,则检查子CU A(701)上侧的其它N×N块(从左到右,从块c 713处开始)。第二个邻居是子CU A 701左侧的块(块b 712)。如果块b(712)不可用或是帧内编解码的,则检查子CU A 701左侧的其它块(从上到下,从块b712处开始)。从每个列表的临近块获得的运动信息被缩放到给定列表的第一参考帧。接下来,子块A 701的时域运动矢量预测值(TMVP)通过遵循与HEVC中指定的TMVP推导相同的流程而推导。块D 704处的并置块的运动信息被相应地获取和缩放。最后,在检索和缩放运动信息之后,针对每个参考列表分开对所有可用运动矢量进行平均。平均运动矢量被指定为当前子CU的运动矢量。

双向光流(BIO)

双向光流(BIO)方法是在双向预测的逐块运动补偿的基础上执行的逐样点运动细化。在一些实施方式中,样点级别运动细化不使用信令。

假设I

将该光流等式与用于每个样点的运动轨迹的Hermite插值组合,最终产生与函数值I

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

运动矢量场(v

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

对于该优化问题,JEM使用简化的方法,首先在垂直方向上最小化,然后在水平方向上最小化。这将导致下式:

其中,

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

r=500·4

m=700·4

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

为了保持对BIO的内存访问与常规双向预测运动补偿相同,所有预测和梯度值I

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

这里,b

在一些场景中,由于噪音或不规则运动,BIO的MV细化可能不可靠。因此,在BIO中,MV细化的幅度被裁剪到阈值。基于当前图片的参考图片是否都来自一个方向来确定阈值。例如,如果当前图片的所有参考图片都来自一个方向,则阈值的值被设置为12×2

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

表1:用于BIO中的梯度计算的示例滤波器

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

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

在一些实施例中,在正常的MC过程之后,OBMC被应用于块。为了降低计算复杂度,在OBMC过程期间可能不应用BIO。这意味着BIO在使用块自身的MV时被应用于块的MC过程中,而在OBMC过程期间使用临近块的MV时不应用于MC过程中。

帧速率上转换(FRUC)

当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×HCU运动信息推导执行以下推导过程。在第一阶段,推导整个W×HCU的MV。在第二阶段,该CU进一步被划分为M×M个子CU。如(16)计算M的值,D是预定义的划分深度,在JEM中默认设置为3。然后推导每个子CU的MV。

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

图11示出了在FRUC方法中使用的模板匹配的示例。模板匹配可以用于通过找到当前图片中的模板(例如,当前CU的顶部和/或左侧临近块)和参考图片1110中的块(与模板的尺寸相同)之间的最接近匹配来推导当前CU 1100的运动信息。除了上述FRUC Merge模式之外,模板匹配还可以被应用于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,refa)。然后,在其他参考列表B中找到其配对的双边MV的参考图片refb,使得refa和refb在时域上位于当前图片的不同侧。如果这样的refb在参考列表B中不可用,则refb被确定为与refa不同的参考,并且其到当前图片的时域距离是列表B中的最小值。在确定refb之后,通过基于当前图片refa和refb之间的时域距离来缩放MVa来推导MVb。

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

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

插值MV场的生成

在对帧进行编解码之前,基于单边ME为整个图片生成插值运动场。然后,运动场可以稍后用作CU级别或子CU级别MV候选。

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

插值和匹配成本

当运动矢量指向分数样点位置时,需要运动补偿插值。为了降低复杂度,代替常规8抽头HEVC插值,双线性插值可以用于双边匹配和模板匹配。

匹配成本的计算在不同步骤处有点不同。当从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模式下,编码器可以针对CU在根据列表0的单向预测、根据列表1的单向预测或者双向预测当中进行选择。选择可以基于如下的模板匹配成本:

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

则使用双向预测;

否则,如果cost0<=cost1

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

否则,

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

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

VVC中的去方块过程

8.6.2去方块滤波过程

8.6.2.1通用

该过程的输入是去方块之前的重构图片,即阵列recPictureL,并且当ChromaArrayType不等于0时,为阵列recPictureCb和recPictureCr。

该过程的输出是去方块之后的修改的重构图片,即阵列recPictureL,并且当ChromaArrayType不等于0时,为阵列recPictureCb和recPictureCr。

首先对图片中的垂直边缘进行滤波。然后,以通过垂直边缘滤波过程修改的样点作为输入,对图片中的水平边缘进行滤波。每个CTU的CTB中的垂直边缘和水平边缘基于编解码单元而分开处理。从编解码块左侧上的边缘开始以其几何顺序继续通过朝向编解码块右侧的边缘对编解码单元中的编解码块的垂直边缘进行滤波。从编解码块顶部上的边缘开始以其几何顺序继续通过朝向编解码块底部的边缘对编解码单元中的编解码块的水平边缘进行滤波。

注-尽管在本说明书中基于图片指定了滤波过程,但如果解码器正确地考虑处理依赖性性顺序以便产生相同的输出值,则可以基于编解码单元实施具有等效结果的滤波过程。

除了以下类型的边缘以外,将去方块滤波过程应用于图片的所有编解码子块边缘和变换块边缘:

-图片的边界处的边缘,

-当loop_filter_across_tiles_enabled_flag等于0时,与片边界重合的边缘,

-与片组的上边界或左边界重合的边缘,其中tile_group_loop_filter_across_tile_groups_enabled_flag等于0或tile_group_deblocking_filter_disabled_flag等于1,

-片组内的边缘,其中tile_group_deblocking_filter_disabled_flag等于1,

-不对应于所考虑的分量的8x8样点网格边界的边缘,

-色度分量内的边缘,边缘的两侧对该色度分量使用帧间预测,

-色度变换块的边缘,该边缘不是相关联的变换单元的边缘。

[Ed.(BB):一旦将片集成就修改语法。]

边缘类型(垂直或水平)由变量edgeType表示,如表8 17所指定的。

表8 17-edgeType的关联的名称

edgeTypeedgeType的名称

0(垂直边缘) EDGE_VER

1(水平边缘) EDGE_HOR

当当前片组的tile_group_deblocking_filter_disabled_flag等于0时,以下适用:

-变量treeType被推导如下:

-如果tile_group_type等于I并且qtbtt_dual_tree_intra_flag等于1,则treeType被设置为等于DUAL_TREE_LUMA。

-否则,treeType被设置为等于SINGLE_TREE。

-以变量treeType、去方块之前的重构图片(即阵列recPictureL,并且当ChromaArrayType不等于0或treeType等于SINGLE_TREE时为阵列recPictureCb和recPictureCr)以及设置为等于EDGE_VER的变量edgeType作为输入并以去方块之后的修改的重构图片(即阵列recPictureL,并且当ChromaArrayType不等于0或treeType等于SINGLE_TREE时为阵列recPictureCb和recPictureCr)作为输出,通过调用第8.6.2.2条中指定的一个方向的去方块滤波过程对垂直边缘进行滤波。

-以变量treeType、去方块之后的修改的重构图片(即阵列recPictureL,并且当ChromaArrayType不等于0或treeType等于SINGLE_TREE时为阵列recPictureCb和recPictureCr)以及设置为等于EDGE_HOR的变量edgeType作为输入并以去方块之后的修改的重构图片(即阵列recPictureL,并且当ChromaArrayType不等于0或treeType等于SINGLE_TREE时为阵列recPictureCb和recPictureCr)作为输出,通过调用第8.6.2.2条中指定的一个方向的去方块滤波过程对水平边缘进行滤波。

-当tile_group_type等于I并且qtbtt_dual_tree_intra_flag等于1时,以下适用:

-变量treeType被设置为等于DUAL_TREE_CHROMA

-以变量treeType、去方块之前的重构图片(即阵列recPictureCb和recPictureCr)以及设置为等于EDGE_VER的变量edgeType集作为输入并以去方块之后的修改的重构图片(即阵列recPictureCb和recPictureCr)作为输出,通过调用第8.6.2.2条中指定的一个方向的去方块滤波过程对垂直边缘进行滤波。

-以变量treeType、去方块之后的修改的重构图片(即阵列recPictureCb和recPictureCr)以及设置为等于EDGE_HOR的变量edgeType集作为输入并以去方块之后的修改的重构图片(即阵列recPictureCb和recPictureCr)作为输出,通过调用第8.6.2.2条中指定的一个方向的去方块滤波过程对水平边缘进行滤波。

8.6.2.2一个方向的去方块滤波过程

该过程的输入是:

-变量treeType,指定使用单树(SINGLE_TREE)还是双树来分割CTU,并且当使用双树时,指定当前处理亮度分量(DUAL_TREE_LUMA)还是色度分量(DUAL_TREE_CHROMA),

-当treeType等于SINGLE_TREE或DUAL_TREE_LUMA时,去方块之前的重构图片,即阵列recPictureL,

-当ChromaArrayType不等于0并且treeType等于SINGLE_TREE或DUAL_TREE_CHROMA时,阵列recPictureCb和recPictureCr,

-变量edgeType,指定对垂直(EDGE_VER)边缘还是水平(EDGE_HOR)边缘进行滤波。

该过程的输出是去方块之后的修改的重构图片,即:

-当treeType等于SINGLE_TREE或DUAL_TREE_LUMA时,阵列recPictureL,

-当ChromaArrayType不等于0并且treeType等于SINGLE_TREE或DUAL_TREE_CHROMA时,阵列recPictureCb和recPictureCr。

当edgeType等于EDGE_VER并且xCb%8等于0或者当edgeType等于EDGE_HOR并且yCb%8等于0时,对于具有编解码块宽度log2CbW、编解码块高度log2CbH和编解码块的左上方样点的位置(xCb,yCb)的每个编解码单元,通过以下有序步骤对边缘进行滤波:

1.编解码块宽度nCbW被设置为等于1<

2.变量filterEdgeFlag被推导如下:

-如果edgeType等于EDGE_VER,并且以下一个或多个条件为真,则将filterEdgeFlag设置为等于0:

-当前编解码块的左边界是图片的左边界。

-当前编解码块的左边界是片的左边界,并且loop_filter_across_tiles_enabled_flag等于0。

-当前编解码块的左边界是片组的左边界,并且tile_group_loop_filter_across_tile_groups_enabled_flag等于0。

-否则,如果edgeType等于EDGE_HOR并且以下一个或多个条件为真,则将变量filterEdgeFlag设置为等于0:

-当前亮度编解码块的顶部边界是图片的顶部边界。

-当前编解码块的顶部边界是片的顶部边界,并且loop_filter_across_tiles_enabled_flag等于0。

-当前编解码块的顶部边界是片组的顶部边界,并且tile_group_loop_filter_across_tile_groups_enabled_flag等于0。

-否则,将filterEdgeFlag设置为等于1。

[Ed.(BB):一旦将片集成就修改语法。]

3.二维(nCbW)x(nCbH)阵列edgeFlags的所有元素被初始化为等于零。

4.以设置为等于(0,0)的位置(xB0,yB0)、设置为等于nCbW的块宽度nTbW、设置为等于nCbH的块高度nTbH、变量treeType、变量filterEdgeFlag、阵列edgeFlags和变量edgeType作为输入并以修改的阵列edgeFlags作为输出,调用第8.6.2.3条中指定的变换块边界的推导过程。

5.以位置(xCb,yCb)、编解码块宽度nCbW、编解码块高度nCbH、阵列edgeFlags和变量edgeType作为输入并以修改的阵列edgeFlags作为输出,调用第8.6.2.4条中指定的编解码子块边界的推导过程。

6.图片样点阵列recPicture被推导如下:

-如果treeType等于SINGLE_TREE或DUAL_TREE_LUMA,则在对recPictureL进行去方块之前,recPicture被设置为等于重构亮度图片样点阵列。

-否则(treeType等于DUAL_TREE_CHROMA),在对recPictureCb进行去方块之前,recPicture被设置为等于重构色度图片样点阵列。

7.以图片样点阵列recPicture、亮度位置(xCb,yCb)、编解码块宽度nCbW、编解码块高度nCbH、变量edgeType和阵列edgeFlags作为输入并以(nCbW)x(nCbH)阵列verB作为输出,调用第8.6.2.5条中指定的边界滤波强度的推导过程。

8.如下调用边缘滤波过程:

-如果edgeType等于EDGE_VER,则以变量treeType、去方块之前的重构图片(即,当treeType等于SINGLE_TREE或DUAL_TREE_LUMA时为阵列recPictureL,并且当ChromaArrayType不等于0并且treeType等于SINGLE_TREE或DUAL_TREE_CHROMA时为阵列recPictureCb和recPictureCr)、位置(xCb,yCb)、编解码块宽度nCbW、编解码块高度nCbH和阵列verBs作为输入并以修改的重构图片(即,当treeType等于SINGLE_TREE或DUAL_TREE_LUMA时为阵列recPictureL,当ChromaArrayType不等于0并且treeType等于SINGLE_TREE或DUAL_TREE_CHROMA时为阵列recPictureCb和recPictureCr)作为输出,调用第8.6.2.6.1条中指定的编解码单元的垂直边缘滤波过程。

-否则,如果edgeType等于EDGE_HOR,则以变量treeType、去方块之前的修改的重构图片(即,当treeType为等于SINGLE_TREE或DUAL_TREE_LUMA时为阵列recPictureL,并且当ChromaArrayType不等于0并且treeType等于SINGLE_TREE或DUAL_TREE_CHROMA时为阵列recPictureCb和recPictureCr)、位置(xCb,yCb)、编解码块宽度nCbW、编解码块高度nCbH和阵列horBs作为输入并以修改的重构图片(即,当treeType等于SINGLE_TREE或DUAL_TREE_LUMA时为阵列recPictureL,并且当ChromaArrayType不等于0并且treeType等于SINGLE_TREE或DUAL_TREE_CHROMA时为阵列recPictureCb和recPictureCr)作为输出,调用第8.6.2.6.2条中指定的编解码单元的水平边缘滤波过程。

8.6.2.3变换块边界的推导过程

该过程的输入是:

-位置(xB0,yB0),指定当前块相对于当前编解码块的左上方样点的左上方样点,

-变量nTbW,指定当前块的宽度,

-变量nTbH,指定当前块的高度,

-变量treeType,指定使用单树(SINGLE_TREE)还是双树来分割CTU,并且当使用双树时,指定当前处理亮度分量(DUAL_TREE_LUMA)还是色度分量(DUAL_TREE_CHROMA),

-变量filterEdgeFlag,

-二维(nCbW)x(nCbH)阵列edgeFlags,

-变量edgeType,指定对垂直(EDGE_VER)边缘还是水平(EDGE_HOR)边缘进行滤波。

该过程的输出是修改的二维(nCbW)x(nCbH)阵列edgeFlags。

最大变换块尺寸maxTbSize被推导如下:

maxTbSize=(treeType==DUAL_TREE_CHROMA)?MaxTbSizeY/2:MaxTbSizeY(8862)

取决于maxTbSize,以下适用:

-如果nTbW大于maxTbSize或nTbH大于maxTbSize,则以下有序步骤适用。

1.变量newTbW和newTbH被推导如下:

newTbW=(nTbW>maxTbSize)?(nTbW/2):nTbW(8 863)

newTbH=(nTbH>maxTbSize)?(nTbH/2):nTbH(8 864)

2.以位置(xB0,yB0)、设置为等于newTbW的变量nTbW、设置为等于newTbH的变量nTbH、变量filterEdgeFlag、阵列edgeFlags和变量edgeType作为输入,调用本条中指定的变换块边界的推导过程,并且输出是阵列edgeFlags的修改的版本。

3.如果nTbW大于maxTbSize,则以设置为等于(xTb0+newTbW,yTb0)的亮度位置(xTb0,yTb0)、设置为等于newTbW的变量nTbW和设置为等于newTbH的变量nTbH、变量filterEdgeFlag、阵列edgeFlags以及变量edgeType作为输入,调用本条中指定的变换块边界的推导过程,并且输出是阵列edgeFlags的修改的版本。

4.如果nTbH大于maxTbSize,则以设置为等于(xTb0,yTb0+newTbH)的亮度位置(xTb0,yTb0)、设置为等于newTbW的变量nTbW和设置为等于newTbH的变量nTbH、变量filterEdgeFlag、阵列edgeFlags以及变量edgeType作为输入,调用本条中指定的变换块边界的推导过程,并且输出是阵列edgeFlags的修改的版本。

5.如果nTbW大于maxTbSize并且nTbH大于maxTbSize,则以设置为等于(xTb0+newTbW,yTb0+newTbH)的亮度位置(xTb0,yTb0)、设置为等于newTbW的变量nTbW和设置为等于newTbH的变量nTbH、变量filterEdgeFlag、阵列edgeFlags以及变量edgeType作为输入,调用本条中指定的变换块边界的推导过程,并且输出是阵列edgeFlags的修改的版本。

-否则,适用以下情况:

-如果edgeType等于EDGE_VER,则对于k=0..nTbH-1,edgeFlags[xB0][yB0+k]的值被推导如下:

-如果xB0等于0,则edgeFlags[xB0][yB0+k]被设置为等于filterEdgeFlag。

-否则,edgeFlags[xB0][yB0+k]被设置为等于1。

-否则(edgeType等于EDGE_HOR),对于k=0..nTbW-1,edgeFlags[xB0+k][yB0]的值被推导如下:

-如果yB0等于0,则edgeFlags[xB0+k][yB0]被设置为等于filterEdgeFlag。

-否则,edgeFlags[xB0+k][yB0]被设置为等于1。

8.6.2.4编解码子块边界的推导过程

该过程的输入是:

-位置(xCb,yCb),指定当前编解码块相对于当前图片的左上方样点的左上方样点,

-变量nCbW,指定当前编解码块的宽度,

-变量nCbH,指定当前编解码块的高度,

-二维(nCbW)x(nCbH)阵列edgeFlags,

-变量edgeType,指定对垂直(EDGE_VER)边缘还是水平(EDGE_HOR)边缘进行滤波。

该过程的输出是修改的二维(nCbW)x(nCbH)阵列edgeFlags。

水平方向上的编解码子块的数量numSbX和垂直方向上的编解码子块的数量numSbY被推导如下:

-如果CuPredMode[xCb][yCb]==MODE_INTRA,则numSbX和numSbY都被设置为等于1。

-否则,numSbX和numSbY分别被设置为等于NumSbX[xCb][yCb]和NumSbY[xCb][yCb]。

取决于edgeType的值,以下适用:

-如果edgeType等于EDGE_VER并且numSbX大于1,则对于i=1..min((nCbW/8)-1,numSbX-1),k=0..nCbH-1,以下适用:

edgeFlags[i*Max(8,nCbW/numSbX)][k]=1(8 865)

-否则,如果edgeType等于EDGE_HOR并且numSbY大于1,则对于j=1..min((nCbH/8)-1,numSbY-1),k=0..nCbW-1以下适用:

edgeFlags[k][j*Max(8,nCbH/numSbY)]=1 (8866)

8.6.2.5边界滤波强度的推导过程

该过程的输入是:

-图片样点阵列recPicture,

-位置(xCb,yCb),指定当前编解码块相对于当前图片的左上方样点的左上方样点,

-变量nCbW,指定当前编解码块的宽度,

-变量nCbH,指定当前编解码块的高度,

-变量edgeType,指定对垂直(EDGE_VER)边缘还是水平(EDGE_HOR)边缘进行滤波,

-二维(nCbW)x(nCbH)阵列edgeFlags。

该过程的输出是指定边界滤波强度的二维(nCbW)x(nCbH)阵列bS。

变量xDi、yDj、xN和yN被推导如下:

-如果edgeType等于EDGE_VER,则xDi被设置为等于(i<<3),yDj被设置为等于(j<<2),xN被设置为等于Max(0,(nCbW/8)-1),并且yN被设置为等于(nCbH/4)-1。

-否则(edgeType等于EDGE_HOR),xDi被设置为等于(i<<2),yDj被设置为等于(j<<3),xN被设置为等于(nCbW/4)-1,并且yN被设置为等于Max(0,(nCbH/8)-1)。

对于xDi(其中i=0..xN)和yDj(其中j=0..yN),以下适用:

-如果edgeFlags[xDi][yDj]等于0,则变量bS[xDi][yDj]被设置为等于0。

-否则,以下适用:

-样点值p0和q0被推导如下:

-如果edgeType等于EDGE_VER,则p0被设置为等于recPicture[xCb+xDi-1][yCb+yDj],并且q0被设置为等于recPicture[xCb+xDi][yCb+yDj]。

-否则(edgeType等于EDGE_HOR),p0被设置为等于recPicture[xCb+xDi][yCb+yDj-1],并且q0被设置为等于recPicture[xCb+xDi][yCb+yDj]。

-变量bS[xDi][yDj]被推导如下:

-如果样点p0或q0在以帧内预测模式编解码的编解码单元的编解码块中,则bS[xDi][yDj]被设置为等于2。

-否则,如果块边缘也是变换块边缘并且样点p0或q0在包含一个或多个非零变换系数级别的变换块中,则bS[xDi][yDj]被设置为等于1。

-否则,如果以下条件中的一个或多个为真,则bS[xDi][yDj]被设置为等于1:

-对于包含样点p0的编解码子块的预测,与包含样点q0的编解码子块的预测相比,使用不同的参考图片或不同数量的运动矢量。

注1-对用于两个编解码子块的参考图片相同还是不同的确定仅基于参考哪些图片,而不考虑使用参考图片列表0的索引还是参考列表1的索引来形成预测,也不考虑参考图片列表内的索引位置是否不同。

注2-用于具有左上方样点覆盖(xSb,ySb)的编解码子块的预测的运动矢量的数量等于PredFlagL0[xSb][ySb]+PredFlagL1[xSb][ySb]。

-使用一个运动矢量来预测包含样点p0的编解码子块,并且使用一个运动矢量来预测包含样点q0的编解码子块,并且所使用的运动矢量的水平或垂直分量之间的绝对差以四分之一亮度样点为单位大于或等于4。

-使用两个运动矢量和两个不同的参考图片来预测包含样点p0的编解码子块,使用相同的两个参考图片的两个运动矢量来预测包含样点q0的编解码子块,并且在相同参考图片的两个编解码子块的预测中使用的两个运动矢量的水平或垂直分量之间的绝对差以四分之一亮度样点为单位大于或等于4。

-使用相同参考图片的两个运动矢量来预测包含样点p0的编解码子块,使用相同参考图片的两个运动矢量来预测包含样点q0的编解码子块,并且以下两个条件都为真:

-在两个编解码子块的预测中使用的列表0运动矢量的水平或垂直分量之间的绝对差以四分之一亮度样点为单位大于或等于4,或者在两个编解码子块的预测中使用的列表1运动矢量的水平或垂直分量之间的绝对差以四分之一亮度样点为单位大于或等于4。

-在包含样点p0的编解码子块的预测中使用的列表0运动矢量和在包含样点q0的编解码子块的预测中使用的列表1运动矢量的水平或垂直分量之间的绝对差以四分之一亮度样点为单位大于或等于4,或者在包含样点p0的编解码子块的预测中使用的列表1运动矢量和在包含样点q0的编解码子块的预测中使用的列表0运动矢量的水平或垂直分量之间的绝对差以四分之一亮度样点为单位大于或等于4。

-否则,变量bS[xDi][yDj]被设置为等于0。

8.6.2.6边缘滤波过程

8.6.2.6.1垂直边缘滤波过程

该过程的输入是:

-变量treeType,指定使用单树(SINGLE_TREE)还是双树来分割CTU,并且当使用双树时,指定当前处理亮度分量(DUAL_TREE_LUMA)还是色度分量(DUAL_TREE_CHROMA),

-当treeType等于SINGLE_TREE或DUAL_TREE_LUMA时,去方块之前的重构图片,即阵列recPictureL,

-当ChromaArrayType不等于0并且treeType等于SINGLE_TREE或DUAL_TREE_CHROMA时,阵列recPictureCb和recPictureCr,

-位置(xCb,yCb),指定当前编解码块相对于当前图片的左上方样点的左上方样点,

-变量nCbW,指定当前编解码块的宽度,

-变量nCbH,指定当前编解码块的高度。

该过程的输出是去方块之后的修改的重构图片,即:

-当treeType等于SINGLE_TREE或DUAL_TREE_LUMA时,阵列recPictureL,

-当ChromaArrayType不等于0并且treeType等于SINGLE_TREE或DUAL_TREE_CHROMA时,阵列recPictureCb和recPictureCr。

当treeType等于SINGLE_TREE或DUAL_TREE_LUMA时,当前编解码单元的亮度编解码块中的边缘的滤波过程由以下有序步骤组成:

1.变量xN被设置为等于Max(0,(nCbW/8)-1),并且yN被设置为等于(nCbH/4)-1。

2.对于xDk等于k<<3且k=0..nN,并且yDm等于m<<2且m=0..yN,以下适用:

-当bS[xDk][yDm]大于0时,以下有序步骤适用:

a.以treeType、设置为等于亮度图片样点阵列recPictureL的图片样点阵列recPicture、亮度编解码块的位置(xCb,yCb)、块的亮度位置(xDk,yDm)、设置为等于EDGE_VER的变量edgeType、边界滤波强度bS[xDk][yDm]和设置为等于BitDepthY的比特深度bD作为输入并以决策dE、dEp和dEq、以及变量tC作为输出,调用第8.6.2.6.3条中指定的块边缘的决策过程。

b.以设置为等于亮度图片样点阵列recPictureL的图片样点阵列recPicture、亮度编解码块的位置(xCb,yCb)、块的亮度位置(xDk,yDm)、设置为等于EDGE_VER的变量edgeType、决策dE、dEp和dEq、以及变量tC作为输入并以修改的亮度图片样点阵列recPictureL作为输出,调用第8.6.2.6.4条中指定的块边缘的滤波过程。

当ChromaArrayType不等于0并且treeType等于SINGLE_TREE时,当前编解码单元的色度编解码块中的边缘的滤波过程由以下有序步骤组成:

1.变量xN被设置为等于Max(0,(nCbW/8)-1),并且yN被设置为等于Max(0,(nCbH/8)-1)。

2.变量edgeSpacing被设置为等于8/SubWidthC。

3.变量edgeSections被设置为等于yN*(2/SubHeightC)。

4.对于xDk等于k*edgeSpacing且k=0..xN,并且yDm等于m<<2且m=0..edgeSections,以下适用:

-当bS[xDk*SubWidthC][yDm*SubHeightC]等于2并且(((xCb/SubWidthC+xDk)>>3)<<3)等于xCb/SubWidthC+xDk时,以下有序步骤适用:

a.以色度图片样点阵列recPictureCb、色度编解码块的位置(xCb/SubWidthC,yCb/SubHeightC)、块的色度位置(xDk,yDm)、设置为等于EDGE_VER的变量edgeType和设置为等于pps_cb_qp_offset的变量cQpPicOffset作为输入并以修改的色度图片样点阵列recPictureCb作为输出,调用第8.6.2.6.5条中指定的色度块边缘的滤波过程。

b.以色度图片样点阵列recPictureCr、色度编解码块的位置(xCb/SubWidthC,yCb/SubHeightC)、色度块的色度位置(xDk,yDm)、设置为等于EDGE_VER的变量edgeType和设置为等于pps_cr_qp_offset的变量cQpPicOffset作为输入并以修改的色度图片样点阵列recPictureCr作为输出,调用第8.6.2.6.5条中指定的色度块边缘的滤波过程。

当treeType等于DUAL_TREE_CHROMA时,当前编解码单元的两个色度编解码块中的边缘的滤波过程由以下有序步骤组成:

1.变量xN被设置为等于Max(0,(nCbW/8)-1),并且yN被设置为等于(nCbH/4)-1。

2.对于xDk等于k<<3且k=0..xN,并且yDm等于m<<2且m=0..yN,以下适用:

-当bS[xDk][yDm]大于0时,以下有序步骤适用:

a.以treeType、设置为等于色度图片样点阵列recPictureCb的图片样点阵列recPicture、色度编解码块的位置(xCb,yCb)、色度块的位置(xDk,yDm)、设置为等于EDGE_VER的变量edgeType、边界滤波强度bS[xDk][yDm]和设置为等于BitDepthC的比特深度bD作为输入并以决策dE、dEp和dEq、以及变量tC作为输出,调用第8.6.2.6.3条中指定的块边缘的决策过程。

b.以设置为等于色度图片样点阵列recPictureCb的图片样点阵列recPicture、色度编解码块的位置(xCb,yCb)、块的色度位置(xDk,yDm)、设置为等于EDGE_VER的变量edgeType、决策dE、dEp和dEq、以及变量tC作为输入并以修改的色度图片样点阵列recPictureCb作为输出,调用第8.6.2.6.4条中指定的块边缘的滤波过程。

c.以设置为等于色度图片样点阵列recPictureCr的图片样点阵列recPicture、色度编解码块的位置(xCb,yCb)、块的色度位置(xDk,yDm)、设置为等于EDGE_VER的变量edgeType、决策dE、dEp和dEq、以及变量tC作为输入并以修改的色度图片样点阵列recPictureCr作为输出,调用第8.6.2.6.4条中指定的块边缘的滤波过程。

8.6.2.6.2水平边缘滤波过程

该过程的输入是:

-变量treeType,指定使用单树(SINGLE_TREE)还是双树来分割CTU,并且当使用双树时,指定当前处理亮度分量(DUAL_TREE_LUMA)还是色度分量(DUAL_TREE_CHROMA),

-当treeType等于SINGLE_TREE或DUAL_TREE_LUMA时,去方块之前的重构图片,即阵列recPictureL,

-当ChromaArrayType不等于0并且treeType等于SINGLE_TREE或DUAL_TREE_CHROMA时,阵列recPictureCb和recPictureCr,

-位置(xCb,yCb),指定当前编解码块相对于当前图片的左上方样点的左上方样点,

-变量nCbW,指定当前编解码块的宽度,

-变量nCbH,指定当前编解码块的高度。

该过程的输出是去方块之后的修改的重构图片,即:

-当treeType等于SINGLE_TREE或DUAL_TREE_LUMA时,阵列recPictureL,

-当ChromaArrayType不等于0并且treeType等于SINGLE_TREE或DUAL_TREE_CHROMA时,阵列recPictureCb和recPictureCr。

当treeType等于SINGLE_TREE或DUAL_TREE_LUMA时,当前编解码单元的亮度编解码块中的边缘的滤波过程由以下有序步骤组成:

1.变量yN被设置为等于Max(0,(nCbH/8)-1),并且xN被设置为等于(nCbW/4)-1。

2.对于yDm等于m<<3且m=0..yN,并且xDk等于k<<2且k=0..xN,以下适用:

-当bS[xDk][yDm]大于0时,以下有序步骤适用:

a.以treeType、设置为等于亮度图片样点阵列recPictureL的图片样点阵列recPicture、亮度编解码块的位置(xCb,yCb)、块的亮度位置(xDk,yDm)、设置为等于EDGE_HOR的变量edgeType、边界滤波强度bS[xDk][yDm],和设置为等于BitDepthY的比特深度bD作为输入并以决策dE、dEp和dEq、以及变量tC作为输出,调用第8.6.2.6.3条中指定的块边缘的决策过程。

b.以设置为等于亮度图片样点阵列recPictureL的图片样点阵列recPicture、亮度编解码块的位置(xCb,yCb)、块的亮度位置(xDk,yDm)、设置为等于EDGE_HOR的变量edgeType、决策dEp、dEp和dEq、以及变量tC作为输入并以修改的亮度图片样点阵列recPictureL作为输出,调用第8.6.2.6.4条中指定的块边缘的滤波过程。

当ChromaArrayType不等于0并且treeType等于SINGLE_TREE时,当前编解码单元的色度编解码块中的边缘的滤波过程由以下有序步骤组成:

1.变量xN被设置为等于Max(0,(nCbW/8)-1),并且yN被设置为等于Max(0,(nCbH/8)-1)。

2.变量edgeSpacing被设置为等于8/SubHeightC。

3.变量edgeSections被设置为等于xN*(2/SubWidthC)。

4.对于yDm等于m*edgeSpacing且m=0..yN,并且xDk等于k<<2且k=0..edgeSections,以下适用:

-当bS[xDk*SubWidthC][yDm*SubHeightC]等于2并且(((yCb/SubHeightC+yDm)>>3)<<3)等于yCb/SubHeightC+yDm时,以下有序步骤适用:

a.以色度图片样点阵列recPictureCb、色度编解码块的位置(xCb/SubWidthC,yCb/SubHeightC)、块的色度位置(xDk,yDm)、设置为等于EDGE_HOR的变量edgeType和设置为等于pps_cb_qp_offset的变量cQpPicOffset作为输入并以修改的色度图片样点阵列recPictureCb作为输出,调用第8.6.2.6.5条中指定的色度块边缘的滤波过程。

b.将色度图片样点阵列recPictureCr、色度编解码块的位置(xCb/SubWidthC,yCb/SubHeightC)、块的色度位置(xDk,yDm)、设置为等于EDGE_HOR的变量edgeType和设置为等于pps_cr_qp_offset的变量cQpPicOffset作为输入并以修改的色度图片样点阵列recPictureCr作为输出,调用第8.6.2.6.5条中指定的色度块边缘的滤波过程。

当treeType等于DUAL_TREE_CHROMA时,当前编解码单元的两个色度编解码块中的边缘的滤波过程由以下有序步骤组成:

1.变量yN被设置为等于Max(0,(nCbH/8)-1),并且xN被设置为等于(nCbW/4)-1。

2.对于yDm等于m<<3且m=0..yN,并且xDk等于k<<2且k=0..xN,以下适用:

-当bS[xDk][yDm]大于0时,以下有序步骤适用:

a.使用treeType、设置为等于色度图片样点阵列recPictureCb的图片样点阵列recPicture、色度编解码块的位置(xCb,yCb)、色度块的位置(xDk,yDm)、设置为等于EDGE_HOR的变量edgeType、边界滤波强度bS[xDk][yDm]和设置为等于BitDepthC的比特深度bD作为输入并以决策dE、dEp和dEq、以及变量tC作为输出,调用第8.6.2.6.3条中指定的块边缘的决策过程。

b.以设置为等于色度图片样点阵列recPictureCb的图片样点阵列recPicture、色度编解码块的位置(xCb,yCb)、块的色度位置(xDk,yDm)、设置为等于EDGE_HOR的变量edgeType、决策dE、dEp和dEq、以及变量tC作为输入并以修改的色度图片样点阵列recPictureCb作为输出,调用第8.6.2.6.4条中指定的块边缘的滤波过程。

c.以设置为等于色度图片样点阵列recPictureCr的图片样点阵列recPicture、色度编解码块(xCb,yCb)的位置、块的色度位置(xDk,yDm)、设置为等于EDGE_HOR的变量edgeType、决策dE、dEp和dEq、以及变量tC作为输入并以修改的色度图片样点阵列recPictureCr作为输出,调用第8.6.2.6.4条中指定的块边缘的滤波过程。

8.6.2.6.3块边缘的决策过程

该过程的输入是:

-变量treeType,指定使用单树(SINGLE_TREE)还是双树来分割CTU,并且当使用双树时,指定当前处理亮度分量(DUAL_TREE_LUMA)还是色度分量(DUAL_TREE_CHROMA),

-图片样点阵列recPicture,

-位置(xCb,yCb),指定当前编解码块相对于当前图片的左上方样点的左上方样点,

-位置(xBl,yBl),指定当前块相对于当前编解码块的左上方样点的左上方样点,

-变量edgeType,指定对垂直(EDGE_VER)边缘还是水平(EDGE_HOR)边缘进行滤波,

-变量bS,指定边界滤波强度,

-变量bD,指定当前分量的比特深度。

该过程的输出是:

-变量dE、dEp和dEq,包含决策,

-变量tC。

如果edgeType等于EDGE_VER,则样点值pi,k和qi,k(其中i=0..3并且k=0和3)被推导如下:

qi,k=recPictureL[xCb+xBl+i][yCb+yBl+k](8 867)

pi,k=recPictureL[xCb+xBl-i-1][yCb+yBl+k](8 868)

否则(edgeType等于EDGE_HOR),样点值pi,k和qi,k(其中i=0..3并且k=0和3)被推导如下:

qi,k=recPicture[xCb+xBl+k][yCb+yBl+i](8 869)

pi,k=recPicture[xCb+xBl+k][yCb+yBl-i-1](8 870)

变量qpOffset被推导如下:

-如果sps_ladf_enabled_flag等于1并且treeType等于SINGLE_TREE或DUAL_TREE_LUMA,则以下适用:

-重构亮度等级的变量lumaLevel被推导如下:

lumaLevel=((p0,0+p0,3+q0,0+q0,3)>>2),(8 871)

-变量qpOffset被设置为等于sps_ladf_lowest_interval_qp_offset,并被修改如下:

-否则(treeType等于DUAL_TREE_CHROMA),qpOffset被设置为等于0。

变量QpQ和QpP被推导如下:

-如果treeType等于SINGLE_TREE或DUAL_TREE_LUMA,则QpQ和QpP分别被设置为等于包括包含样点q0,0和p0,0的编解码块的编解码单元的QpY值。

-否则(treeType等于DUAL_TREE_CHROMA),QpQ和QpP分别被设置为等于包括包含样点q0,0和p0,0的编解码块的编解码单元的QpC值。

变量qP被推导如下:

qP=((QpQ+QpP+1)>>1)+qpOffset(8 873)

基于量化参数Q,如表8 18所指定的确定变量β′的值,其中量化参数Q推导如下:

Q=Clip3(0,63,qP+(tile_group_beta_offset_div2<<1))(8 874)

其中tile_group_beta_offset_div2是包含样点q0,0的片组的语法元素tile_group_beta_offset_div2的值。

变量β被推导如下:

β=β′*(1<<(bD-8))(8 875)

基于量化参数Q,如表8 18所指定的确定tC′的值,其中量化参数Q推导如下:

Q=Clip3(0,65,qP+2*(bS-1)+(tile_group_tc_offset_div2<<1))

(8 876)

其中tile_group_tc_offset_div2是包含样点q0,0的片组的语法元素tile_group_tc_offset_div2的值。

变量tC被推导如下:

tC=tC′*(1<<(bD-8))(8 877)

取决于edgeType的值,以下适用:

-如果edgeType等于EDGE_VER,则以下有序步骤适用:

1.变量dpq0、dpq3、dp、dq和d被推导如下:

dp0=Abs(p2,0-2*p1,0+p0,0)(8 878)

dp3=Abs(p2,3-2*p1,3+p0,3)(8 879)

dq0=Abs(q2,0-2*q1,0+q0,0)(8 880)

dq3=Abs(q2,3-2*q1,3+q0,3)(8 881)

dpq0=dp0+dq0 (8 882)

dpq3=dp3+dq3 (8 883)

dp=dp0+dp3 (8 884)

dq=dq0+dq3 (8 885)

d=dpq0+dpq3(8 886)

2.变量dE、dEp和dEq被设置为等于0。

3.当d小于β时,以下有序步骤适用:

a.变量dpq被设置为等于2*dpq0。

b.对于样点位置(xCb+xBl,yCb+yBl),以样点值p0,0、p3,0、q0,0和q3,0、变量dpq、β和tC作为输入,调用第8.6.2.6.6条中指定的样点的决策过程,并且将输出赋值给决策dSam0。

c.变量dpq被设置为等于2*dpq3。

d.对于样点位置(xCb+xBl,yCb+yBl+3),以样点值p0,3、p3,3、q0,3和q3、变量dpq、β和tC作为输入,调用第8.6.2.6.6条中指定的样点的决策过程,并且将输出赋值给决策dSam3。

e.变量dE被设置为等于1。

f.当dSam0等于1并且dSam3等于1时,变量dE被设置为等于2。

g.当dp小于(β+(β>>1))>>3时,变量dEp被设置为等于1。

h.当dq小于(β+(β>>1))>>3时,变量dEq被设置为等于1。

-否则(edgeType等于EDGE_HOR),以下有序步骤适用:

1.变量dpq0、dpq3、dp、dq和d被推导如下:

dp0=Abs(p2,0-2*p1,0+p0,0)(8 887)

dp3=Abs(p2,3-2*p1,3+p0,3)(8 888)

dq0=Abs(q2,0-2*q1,0+q0,0)(8 889)

dq3=Abs(q2,3-2*q1,3+q0,3)(8 890)

dpq0=dp0+dq0 (8 891)

dpq3=dp3+dq3 (8 892)

dp=dp0+dp3 (8 893)

dq=dq0+dq3 (8 894)

d=dpq0+dpq3(8 895)

2.变量dE、dEp和dEq被设置为等于0。

3.当d小于β时,以下有序步骤适用:

a.变量dpq被设置为等于2*dpq0。

b.对于样点位置(xCb+xBl,yCb+yBl),以样点值p0,0、p3,0、q0,0和q3,0、变量dpq、β和tC作为输入,调用第8.6.2.6.6条中指定的样点的决策过程,并且将输出赋值给决策dSam0。

c.变量dpq被设置为等于2*dpq3。

d.对于样点位置(xCb+xBl+3,yCb+yBl),以样点值p0,3、p3,3、q0,3和q3、变量dpq、β和tC作为输入,调用第8.6.2.6.6条中指定的样点的决策过程,并且将输出赋值给决策dSam3。

e.变量dE被设置为等于1。

f.当dSam0等于1并且dSam3等于1时,变量dE被设置为等于2。

g.当dp小于(β+(β>>1))>>3时,变量dEp被设置为等于1。

h.当dq小于(β+(β>>1))>>3时,变量dEq被设置为等于1。

表8 18-从输入Q推导阈值变量β′和tC′

8.6.2.6.4块边缘的过滤过程

该过程的输入是:

-图片样点阵列recPicture,

-位置(xCb,yCb),指定当前编解码块相对于当前图片的左上方样点的左上方样点,

-位置(xBl,yBl),指定当前块相对于当前编解码块的左上方样点的左上方样点,

-变量edgeType,指定对垂直(EDGE_VER)边缘还是水平(EDGE_HOR)边缘进行滤波,

-变量dE、dEp和dEq,包含决策,

-变量tC。

该过程的输出是修改的图片样点阵列recPicture。

取决于edgeType的值,以下适用:

-如果edgeType等于EDGE_VER,则以下有序步骤适用:

1.样点值pi,k和qi,k(其中i=0..3并且k=0..3)被推导如下:

qi,k=recPictureL[xCb+xBl+i][yCb+yBl+k](8 896)

pi,k=recPictureL[xCb+xBl-i-1][yCb+yBl+k](8 897)

2.当dE不等于0时,对于每个样点位置(xCb+xBl,yCb+yBl+k),k=0..3,以下有序步骤适用:

a.以样点值pi,k、qi,k(其中i=0..3)、设置为等于(xCb+xBl-i-1,yCb+yBl+k)的位置(xPi,yPi)、设置为等于(xCb+xBl+i,yCb+yBl+k)的位置(xQi,yQi)(其中i=0..2)、决策dE、变量dEp和dEq、以及变量tC作为输入并以来自块边界的每一侧的滤波样点数量nDp和nDq、以及滤波样点值pi'和qj'作为输出,调用第8.6.2.6.7条中指定的样点的滤波过程。

b.当nDp大于0时,滤波样点值pi'(其中i=0..nDp-1)替换如下的样点阵列recPicture内部的对应样点:

recPicture[xCb+xBl-i-1][yCb+yBl+k]=pi'(8 898)

c.当nDq大于0时,滤波样点值qj'(其中j=0..nDq-1)替换如下的样点阵列recPicture内部的对应样点:

recPicture[xCb+xBl+j][yCb+yBl+k]=qj'(8 899)

-否则(edgeType等于EDGE_HOR),以下有序步骤适用:

1.样点值pi,k和qi,k(其中i=0..3并且k=0..3)被推导如下:

qi,k=recPictureL[xCb+xBl+k][yCb+yBl+i](8 900)

pi,k=recPictureL[xCb+xBl+k][yCb+yBl-i-1](8 901)

2.当dE不等于0时,对于每个样点位置(xCb+xBl+k,yCb+yBl),k=0..3,以下有序步骤适用:

a.以样点值pi,k、qi,k(其中i=0..3)、设置为等于(xCb+xBl+k,yCb+yBl-i-1)的位置(xPi,yPi)和设置为等于(xCb+xBl+k,yCb+yBl+i)的位置(xQi,yQi)(i=0..2)、决策dE、变量dEp和dEq、以及变量tC作为输入并以来自块边界的每一侧的滤波样点数量nDp和nDq、以及滤波样点值pi'和qj'作为输出,调用第8.6.2.6.7条中指定的样点的滤波过程。

b.当nDp大于0时,滤波样点值pi'(其中i=0..nDp-1)替换如下的样点阵列recPicture内部的对应样点:

recPicture[xCb+xBl+k][yCb+yBl-i-1]=pi'(8 902)

c.当nDq大于0时,滤波样点值qj'(其中j=0..nDq-1)替换如下的样点阵列recPicture内部的对应样点:

recPicture[xCb+xBl+k][yCb+yBl+j]=qj'(8 903)

8.6.2.6.5色度块边缘的滤波过程

仅当ChromaArrayType不等于0时,才调用该过程。

该过程的输入是:

-色度图片样点阵列s′,

-色度位置(xCb,yCb),指定当前色度编解码块相对于当前图片的左上方色度样点的左上方样点,

-色度位置(xBl,yBl),指定当前色度块相对于当前色度编解码块的左上方样点的左上方样点,

-变量edgeType,指定对垂直(EDGE_VER)边缘还是水平(EDGE_HOR)边缘进行滤波,

-变量cQpPicOffset,指定图片级别色度量化参数偏移。

该过程的输出是修改的色度图片样点阵列s′。

如果edgeType等于EDGE_VER,则值pi和qi(其中i=0..1并且k=0..3)被推导如下:

qi,k=s′[xCb+xBl+i][yCb+yBl+k](8 904)

pi,k=s′[xCb+xBl-i-1][yCb+yBl+k](8 905)

否则(edgeType等于EDGE_HOR),样点值pi和qi(其中i=0..1并且k=0..3)被推导如下:

qi,k=s′[xCb+xBl+k][yCb+yBl+i](8 906)

pi,k=s′[xCb+xBl+k][yCb+yBl-i-1](8 907)

变量QpQ和QpP分别被设置为等于包括包含样点q0,0和p0,0的编解码块的编解码单元的QpY值。

如果ChromaArrayType等于1,则基于索引qPi,如表8 15所指定的确定变量QpC,其中索引qPi推导如下:

qPi=((QpQ+QpP+1)>>1)+cQpPicOffset(8 908)

否则(ChromaArrayType大于1),变量QpC被设置为等于Min(qPi,63)。

注-变量cQpPicOffset根据滤波色度分量是Cb分量还是Cr分量,提供对pps_cb_qp_offset或pps_cr_qp_offset的值的调整。然而,为了避免需要改变图片内的调整量,滤波过程不包括对tile_group_cb_qp_offset或tile_group_cr_qp_offset的值的调整。

基于色度量化参数Q,如表8 18所指定的确定变量tC′的值,其中色度量化参数Q推导如下:

Q=Clip3(0,65,QpC+2+(tile_group_tc_offset_div2<<1))(8 909)

其中,tile_group_tc_offset_div2是包含样点q0,0的片组的语法元素tile_group_tc_offset_div2的值。

变量tC被推导如下:

tC=tC′*(1<<(BitDepthC-8))(8 910)

取决于edgeType的值,以下适用:

-如果edgeType等于EDGE_VER,则对于每个样点位置(xCb+xBl,yCb+yBl+k),k=0..3,以下有序步骤适用:

1.以样点值pi,k、qi,k(其中i=0..1)、位置(xCb+xBl-1,yCb+yBl+

k)和(xCb+xBl,yCb+yBl+k)、以及变量tC作为输入并以滤波样点值p0′

和q0′作为输出,调用第8.6.2.6.8条中指定的色度样点的滤波过程。

2.滤波样点值p0′和q0′替换如下的样点阵列s′内部的对应样点:

s′[xCb+xBl][yCb+yBl+k]=q0′(8 911)

s′[xCb+xBl-1][yCb+yBl+k]=p0′(8 912)

-否则(edgeType等于EDGE_HOR),对于每个样点位置(xCb+xBl+k,yCb+yBl),k=0..3,以下有序步骤适用:

1.以样点值pi,k、qi,k(其中i=0..1)、位置(xCb+xBl+k,yCb+yBl-1)和(xCb+xBl+k,yCb+yBl)、以及变量tC作为输入并以滤波样点值p0′和q0′作为输出,调用第8.6.2.6.8条中指定的色度样点的滤波过程。

2.滤波样点值p0′和q0′替换如下的样点阵列s′内部的对应样点:

s′[xCb+xBl+k][yCb+yBl]=q0′(8 913)

s′[xCb+xBl+k][yCb+yBl-1]=p0′(8 914)

8.6.2.6.6样点的决策过程

该过程的输入是:

-样点值p0、p3、q0和q3,

-变量dpq、β和tC。

该过程的输出是包含决策的变量dSam。

变量dSam被指定如下:

-如果dpq小于(β>>2),Abs(p3-p0)+Abs(q0-q3)小于(β>>3),并且Abs(p0-q0)小于(5*tC+1)>>1,则dSam被设置为等于1。

-否则,dSam被设置为等于0。

8.6.2.6.7样点的过滤过程

该过程的输入是:

-样点值pi和qi,其中i=0..3,

-pi的位置(xPi,yPi)和qi的位置(xQi,yQi),其中i=0..2,

-变量dE

-变量dEp和dEq,分别包含对样点p1和q1进行滤波的决策,

-变量tC。

该过程的输出是:

-滤波样点数量nDp和nDq,

-滤波样点值pi′和qj′,其中i=0..nDp-1,j=0..nDq-1。

取决于dE的值,以下适用:

-如果变量dE等于2,则nDp和nDq都被设置为等于3,并且以下强滤波适用:

p0′=Clip3(p0-2*tC,p0+2*tC,(p2+2*p1+2*p0+2*q0+q1+4)>>3)(8 915)

p1′=Clip3(p1-2*tC,p1+2*tC,(p2+p1+p0+q0+2)>>2) (8 916)

p2′=Clip3(p2-2*tC,p2+2*tC,(2*p3+3*p2+p1+p0+q0+4)>>3)(8 917)

q0′=Clip3(q0-2*tC,q0+2*tC,(p1+2*p0+2*q0+2*q1+q2+4)>>3)(8 918)

q1′=Clip3(q1-2*tC,q1+2*tC,(p0+q0+q1+q2+2)>>2) (8 919)

q2′=Clip3(q2-2*tC,q2+2*tC,(p0+q0+q1+3*q2+2*q3+4)>>3)(8 920)

-否则,nDp和nDq都被设置为等于0,并且以下弱滤波适用:

-以下适用:

=(9*(q0-p0)-3*(q1-p1)+8)>>4(8 921)

-当Abs()小于tC*10时,以下有序步骤适用:

-滤波样点值p0′和q0′被指定如下:

=Clip3(-tC,tC,)(8 922)

p0′=Clip1Y(p0+)(8 923)

q0′=Clip1Y(q0-)(8 924)

-当dEp等于1时,滤波样点值p1′被指定如下:

p=Clip3(-(tC>>1),tC>>1,(((p2+p0+1)>>1)-p1+)>>1) (8 925)

p1′=Clip1Y(p1+p)(8 926)

-当dEq等于1时,滤波样点值q1′被指定如下:

q=Clip3(-(tC>>1),tC>>1,(((q2+q0+1)>>1)-q1-)>>1) (8 927)

q1′=Clip1Y(q1+q)(8 928)

-nDp被设置为等于dEp+1,并且nDq被设置为等于dEq+1。

当nDp大于0并且以下条件中的一个或多个为真时,nDp被设置为等于0:

-pcm_loop_filter_disabled_flag等于1,并且pcm_flag[xP0][yP0]等于1。

-包括包含样点p0的编解码块的编解码单元的cu_transquant_bypass_flag等于1。

当nDq大于0并且以下条件中的一个或多个为真时,nDq被设置为等于0:

-pcm_loop_filter_disabled_flag等于1,并且pcm_flag[xQ0][yQ0]等于1。

-包括包含样点q0的编解码块的编解码单元的cu_transquant_bypass_flag等于1。

8.6.2.6.8色度样点的滤波过程

仅当ChromaArrayType不等于0时,才调用此过程。

该过程的输入是:

-色度样点值pi和qi,其中i=0..1,

-p0的色度位置(xP0,yP0)和q0的色度位置(xQ0,yQ0),

-变量tC。

该过程的输出是滤波样点值p0′和q0′。

滤波样点值p0′和q0′被推导如下:

=Clip3(-tC,tC,((((q0-p0)<<2)+p1-q1+4)>>3)) (8 929)

p0′=Clip1C(p0+)(8 930)

q0′=Clip1C(q0-)(8 931)

当以下条件中的一个或多个为真时,滤波样点值p0′由对应的输入样点值p0替换:

-pcm_loop_filter_disabled_flag等于1,并且pcm_flag[xP0*SubWidthC][yP0*SubHeightC]等于1。

-包括包含样点p0的编解码块的编解码单元的cu_transquant_bypass_flag等于1。

当以下条件中的一个或多个为真时,滤波样点值q0′由对应的输入样点值q0替换:

-pcm_loop_filter_disabled_flag等于1,并且pcm_flag[xQ0*SubWidthC][yQ0*SubHeightC]等于1。

-包括包含样点q0的编解码块的编解码单元的cu_transquant_bypass_flag等于1。

8.6.3样点自适应偏移过程

8.6.3.1通用

该过程的输入是样点自适应偏移recPictureL之前的重构图片样点阵列,并且当ChromaArrayType不等于0时,为阵列recPictureCb和recPictureCr。

该过程的输出是样点自适应偏移saoPictureL之后的修改的重构图片样点阵列,并且当ChromaArrayType不等于0时,为阵列saoPictureCb和saoPictureCr。

在完成解码图片的去方块滤波过程之后,基于CTB来执行该过程。

修改的重构图片样点阵列saoPictureL中的样点值、以及当ChromaArrayType不等于0时的阵列saoPictureCb和saoPictureCr分别被最初设置为等于重构图片样点阵列recPictureL中的样点值、以及当ChromaArrayType不等于0的阵列recPictureCb和recPictureCr。

对于具有CTB位置(rx,ry)的每个CTU,其中rx=0..PicWidthInCtbsY-1并且ry=0..PicHeightInCtbsY-1,以下适用:

-当当前片组的tile_group_sao_luma_flag等于1时,以设置为等于recPictureL的recPicture、设置为等于0的cIdx、(rx,ry)、以及设置为等于CtbSizeY的nCtbSw和nCtbSh作为输入并以修改的亮度图片样点阵列saoPictureL作为输出,调用第8.6.3.2条中指定的CTB修改过程。

-当ChromaArrayType不等于0并且当前片组的tile_group_sao_chroma_flag等于1时,以设置为等于recPictureCb的recPicture、设置为等于1的cId、(rx,ry)、设置为等于(1<

-当ChromaArrayType不等于0并且当前片组的tile_group_sao_chroma_flag等于1时,以设置为等于recPictureCr的recPicture、设置为等于2的cIdx,(rx,ry)、设置为等于(1<

8.6.3.2CTB修改过程

该过程的输入是:

-色彩分量cIdx的图片样点阵列recPicture,

-变量cIdx,指定色彩分量索引,

-一对变量(rx,ry),指定CTB位置,

-CTB宽度nCtbSw和高度nCtbSh。

该过程的输出是色彩分量cIdx的修改的图片样点阵列saoPicture。

变量bitDepth被推导如下:

-如果cIdx等于0,则bitDepth被设置为等于BitDepthY。

-否则,bitDepth被设置为等于BitDepthC。

指定色彩分量cIdx的当前CTB相对于当前图片分量cIdx的左上方样点的左上方样点的位置(xCtb,yCtb)被推导如下:

(xCtb,yCtb)=(rx*nCtbSw,ry*nCtbSh)(8 932)

当前CTB内部的样点位置被推导如下:

(xSi,ySj)=(xCtb+i,yCtb+j)(8 933)

(xYi,yYj)=(cIdx==0)?(xSi,ySj):(xSi*SubWidthC,ySj*SubHeightC)(8934)

对于所有样点位置(xSi,ySj)和(xYi,yYj),其中i=0..nCtbSw-1并且j=0..nCtbSh-1,取决于包括覆盖recPicture[xSi][ySj]的编解码块的编解码单元的pcm_loop_filter_disabled_flag、pcm_flag[xYi][yYj]和cu_transquant_bypass_flag的值,以下适用:

-如果以下条件中的一个或多个为真,则不修改saoPicture[xSi][ySj]:

-pcm_loop_filter_disabled_flag和pcm_flag[xYi][yYj]都等于1。

-cu_transquant_bypass_flag等于1。

-SaoTypeIdx[cIdx][rx][ry]等于0。

[Ed.(BB):修改突出显示的章节,该章节用于将来的决策转换/量化旁路。]

-否则,如果SaoTypeIdx[cIdx][rx][ry]等于2,则以下有序步骤适用:

1.基于SaoEoClass[cIdx][rx][ry]在表8 19中指定对于k=0..1的hPos[k]和vPos[k]的值。

2.变量edgeIdx被推导如下:

-修改的样点位置(xSik′,ySjk′)和(xYik′,yYjk′)被推导如下:

(xSik′,ySjk′)=(xSi+hPos[k],ySj+vPos[k])(8 935)

(xYik′,yYjk′)=(cIdx==0)?(xSik′,ySjk′):(xSik′*SubWidthC,ySjk′*SubHeightC)(8 936)

-如果所有样点位置(xSik′,ySjk′)和(xYik′,yYjk′)(其中k=0..1)的以下条件中的一个或多个为真,则edgeIdx被设置为等于0:

-位置(xSik′,ySjk′)处的样点在图片边界外部。

-位置(xSik′,ySjk′)处的样点属于不同的片组,并且以下两个条件中的一个为真:

-MinTbAddrZs[xYik′>>MinTbLog2SizeY][yYjk′>>MinTbLog2SizeY]小于MinTbAddrZs[xYi>>MinTbLog2SizeY][yYj>>MinTbLog2SizeY]并且recPicture[xSi][ySj]所属的片组中的tile_group_loop_filter_across_tile_groups_enabled_flag等于0。

-MinTbAddrZs[xYi>>MinTbLog2SizeY][yYj>>MinTbLog2SizeY]小于MinTbAddrZs[xYik′>>MinTbLog2SizeY][yYjk′>>MinTbLog2SizeY]并且recPicture[xSik′][ySjk′]所属的片组中的tile_group_loop_filter_across_tile_groups_enabled_flag等于0。

-loop_filter_across_tiles_enabled_flag等于0,并且位置(xSik′,ySjk′)处的样点属于不同的片。

[Ed.(BB):当合并没有片组的片时,修改突出显示的章节]

-否则,edgeIdx被推导如下:

-以下适用:

edgeIdx=2+Sign(recPicture[xSi][ySj]-recPicture[xSi+hPos[0]][ySj+vPos[0]])+Sign(recPicture[xSi][ySj]-recPicture[xSi+hPos[1]][ySj+vPos[1]])(8937)

-当edgeIdx等于0、1或2时,edgeIdx被修改如下:

edgeIdx=(edgeIdx==2)?0:(edgeIdx+1)(8 938)

3.修改的图片样点阵列saoPicture[xSi][ySj]被推导如下:

saoPicture[xSi][ySj]=Clip3(0,(1<

-否则(SaoTypeIdx[cIdx][rx][ry]等于1),以下有序步骤适用:

1.变量bandShift被设置为等于bitDepth-5。

2.变量saoLeftClass被设置为等于sao_band_position[cIdx][rx][ry]。

3.列表bandTable被定义为具有32个元素,并且所有元素最初都被设置为等于0。然后,其元素中的四个(指示显式偏移带的起始位置)被修改如下:

for(k=0;k<4;k++)

bandTable[(k+saoLeftClass)&31]=k+1(8 940)

4.变量bandIdx被设置为等于bandTable[recPicture[xSi][ySj]>>bandShift]。

5.修改的图片样点阵列saoPicture[xSi][ySj]被推导如下:

saoPicture[xSi][ySj]=Clip3(0,(1<

表8 19-根据样点自适应偏移类的hPos和vPos的规范

SaoEoClass[cIdx][rx][ry] 0 1 2 3

hPos[0] -1 0 -1 1

hPos[1] 1 0 1 -1

vPos[0] 0 -1-1 -1

vPos[1] 0 1 1 1

当子块的尺寸更小时,以上讨论的基于子块的预测技术可以用于获得每个子块的更准确的运动信息。然而,更小的子块在运动补偿中提出了更高的带宽要求。另一方面,为更小的子块推导的运动信息可能不准确,尤其是当块中存在一些噪声时。因此,在一个块内具有固定的子块尺寸可能是次优的。

本文档描述了可以用于各种实施例中的技术,以使用非均匀和/或可变子块尺寸来解决固定的子块尺寸引入的带宽和准确性问题。这些技术,也称为交织预测,使用不同的方式划分块,使得可以在不增加带宽消耗的情况下更鲁棒地获得运动信息。

使用交织预测技术,将块划分为具有一个或多个划分模式的子块。划分模式表示将块划分为子块的方式,包括子块的尺寸和子块的位置。对于每个划分模式,可以通过基于划分模式推导每个子块的运动信息来生成对应的预测块。因此,在一些实施例中,即使对于一个预测方向,也可以通过多个划分模式来生成多个预测块。在一些实施例中,对于每个预测方向,可以仅应用一个划分模式。

图13示出了根据所公开的技术的具有两个划分模式的交织预测的示例。可以将当前块1300划分为多个模式。例如,如图13所示,将当前块划分为模式0(1301)和模式1(1302)。生成两个预测块P

更一般地,给定X个划分模式,可以通过具有X个划分模式的基于子块的预测来生成当前块的X个预测块,表示为P

这里,(x,y)是块中的像素的坐标,并且w

N为非负值。可替代地,等式(16)中的位移位运算也可以被表达为:

权重的和是2的幂允许通过执行位移位运算而不是浮点除法来更有效地计算加权和P。

在下文中,将各种实施方式呈现为单独的章节和项。在本文档中使用不同的章节和项仅仅是为了便于理解,并且在每个章节/项中描述的实施例和技术的范围不仅仅限于该章节/项。

对不同的编解码工具使用交织预测

第1项:注意到,在本文中公开的交织预测技术可以被应用于基于子块的预测的一个、一些或所有编解码技术中。例如,交织预测技术可以被应用于仿射预测,而基于子块的预测的其他编解码技术(例如,ATMVP、STMVP、FRUC或BIO)不使用交织预测。作为另一示例,仿射、ATMVP和STMVP中的全部都应用在本文中公开的交织预测技术。

划分模式的定义

第2项:划分模式可以具有不同的子块形状、子块尺寸或子块位置。在一些实施例中,划分模式可以包括不规则子块尺寸。图14A-图14G示出了用于16×16块的划分模式的几个示例。在图14A中,根据所公开的技术,将块划分为4×4个子块。在JEM中也使用该模式。图14B示出了根据所公开的技术的将块划分为8×8个子块的示例。图14C示出了根据所公开的技术将块划分为8×4个子块的示例。图14D示出了根据所公开的技术的将块划分为4×8个子块的示例。在图14E中,根据所公开的技术,将块的一部分划分为4×4个子块。将块边界处的像素划分为具有如2×4、4×2或2×2的尺寸的更小子块。可以将一些子块合并以形成更大的子块。图14F示出了诸如4×4个子块和2×4个子块的相邻子块的示例,将这些子块合并以形成具有诸如6×4、4×6或6×6的尺寸的更大子块。在图14G中,将块的一部分划分为8×8个子块。将块边界处的像素划分为具有如8×4、4×8或4×4的尺寸的更小子块。

第3项:基于子块的预测中的子块的形状和尺寸可以基于编解码块的形状和/或尺寸、和/或编解码块信息而确定。例如,在一些实施例中,当当前块的尺寸为M×N时,子块的尺寸为4×N(或8×N等)。即,子块具有与当前块相同的高度。在一些实施例中,当当前块的尺寸为M×N时,子块的尺寸为M×4(或M×8等)。即,子块具有与当前块相同的宽度。在一些实施例中,当当前块的尺寸为M×N(其中M>N)时,子块的尺寸为A×B,其中A>B(例如,8×4)。可替代地,子块的尺寸可以为B×A(例如,4×8)。在一些实施例中,当前块的尺寸为M×N。当M×N<=T(或Min(M,N)<=T或Max(M,N)<=T等)时,子块的尺寸为A×B,并且当M×N>T(或Min(M,N)>T或Max(M,N)>T等)时,子块的尺寸为C×D,其中A<=C且B<=D。例如,如果M×N<=256,则子块的尺寸可以为4×4。在一些实施方式中,子块的尺寸为8×8。

启用/禁用交织预测和交织预测的编解码过程

第4项:在一些实施例中,可以基于帧间预测方向来确定是否应用交织预测。例如,在一些实施例中,交织预测可以被应用于双向预测,而不应用于单向预测。作为另一示例,当应用多假设时,当存在多于一个参考块时,交织预测可以被应用于一个预测方向。

第5项:在一些实施例中,还可以基于帧间预测方向来确定如何应用交织预测。在一些实施例中,将具有基于子块的预测的双向预测块划分为具有两个不同参考列表的两个不同划分模式的子块。例如,如图14D所示,从参考列表0(L0)预测时,将双向预测块划分为4×8个子块。如图14C所示,当从参考列表1(L1)预测时,将相同块划分为8×4个子块。最终预测P被计算为

这里,P

在一些实施例中,将具有基于子块的预测的单向预测块划分为具有相同参考列表的两个或更多个不同划分模式的子块。例如,列表L(L=0或1)的预测P

这里XL是列表L的划分模式的数量。

在一些实施例中,具有基于子块的预测的双向预测块被认为是分别来自L0和L1的两个单向预测块的组合。可以如上面的示例中所述从每个列表推导预测。最终预测P可以被计算为

这里,参数a和b是应用于两个内部预测块的两个附加权重。在该特定示例中,a和b都可以被设置为1。类似于上面的示例,因为在每个方向上更少的子块被用于预测(例如,与8×8个子块相对的4×8个子块),带宽使用好于现有的基于子块的方法或与现有的基于子块的方法相当。同时,可以通过使用更大的子块来改善预测结果。

在一些实施例中,可以在每个单向预测块中使用单个非均匀模式。例如,对于每个列表L(例如,L0或L1),将块划分为不同的模式(例如,如图14E或图14F所示)。使用更少数量的子块减少了对带宽的需求。子块的非均匀性也增加了预测结果的鲁棒性。

在一些实施例中,对于多假设编解码块,可以存在由每个预测方向(或参考图片列表)的不同划分模式生成的多于一个预测块。可以使用多个预测块并应用附加权重来生成最终预测。例如,附加权重可以被设置为1/M,其中M是所生成的预测块的总数。

第6项:在一些实施例中,编码器可以确定是否以及如何应用交织预测。然后,编码器可以在序列级别、图片级别、视图级别、条带级别、编解码树单元(CTU)(也称为最大编解码单元(LCU))级别、CU级别、PU级别、树单元(TU)级别、片级别、片组级别或区域级别(其可以包括多个CU/PU/TU/LCU)向解码器发送对应于该确定的信息。可以在序列参数集(SPS)、视图参数集(VPS)、图片参数集(PPS)、条带头(SH)、图片头、序列头、或片级别或片组级别、CTU/LCU、CU、PU、TU或区域的第一块中信令通知该信息,。

在一些实施方式中,交织预测适用于现有的子块方法,例如仿射预测、ATMVP、STMVP、FRUC或BIO。在这种情况下,不需要附加的信令成本。在一些实施方式中,可以将由交织预测生成的新的子块Merge候选插入到Merge列表中,例如交织预测+ATMVP、交织预测+STMVP、交织预测+FRUC等。在一些实施方式中,可以信令通知标志以指示是否使用交织预测。在一个示例中,如果当前块是仿射帧间编解码的,则信令通知标志以指示是否使用交织预测。在一些实施方式中,如果当前块是仿射Merge编解码的并应用单向预测,则可以信令通知标志以指示是否使用交织预测。在一些实施方式中,如果当前块是仿射Merge编解码的,则可以信令通知标志以指示是否使用交织预测。在一些实施方式中,如果当前块是仿射Merge编解码的并应用单向预测,则可以总是使用交织预测。在一些实施方式中,如果当前块是仿射Merge编解码的,则可以总是使用交织预测。

在一些实施方式中,用以指示是否使用交织预测的标志可以被继承而无需信令通知。一些示例包括:

(i)在一个示例中,如果当前块是仿射Merge编解码的,则可以使用继承。

(ii)在一个示例中,标志可以从仿射模型从其继承的临近块的标志继承。

(iii)在一个示例中,标志从诸如左侧或上方临近块的预定义临近块继承。

(iv)在一个示例中,标志可以从首先遇到的仿射编解码临近块继承。

(v)在一个示例中,如果没有临近块是仿射编解码的,则可以将标志推断为零。

(vi)在一个示例中,当当前块应用单向预测时,仅可以继承标志。

(vii)在一个示例中,当当前块和要从其继承的临近块在相同CTU中时,仅可以继承标志。

(viii)在一个示例中,当当前块和要从其继承的临近块在相同CTU行中时,仅可以继承标志。

(ix)在一个示例中,当仿射模型从时域临近块推导时,标志可以不从临近块的标志继承。

(x)在一个示例中,标志可以不从不在相同LCU或LCU行或视频数据处理单元(诸如64x64或128x128)中的临近块的标志继承。

(xi)在一个示例中,如何信令通知和/或推导标志可以取决于当前块的块大小、和/或编解码信息。

在一些实施方式中,如果参考图片是当前图片,则不应用交织预测。例如,如果参考图片是当前图片,则不信令通知用以指示是否使用交织预测的标志。

在一些实施例中,可以基于来自空域和/或时域临近块的信息来推导要由当前块使用的划分模式。例如,代替依赖于编码器来信令通知相关信息,编码器和解码器都可以采用预定规则集合来基于时域相邻度(例如,相同块的先前使用的划分模式)或空域相邻度(例如,由临近块使用的划分模式)获得划分模式。

加权值

第7项:在一些实施例中,加权值w可以是固定的。例如,所有划分模式可以相等地加权:w

第8项:在一些实施例中,可以基于块的位置以及所使用的划分模式来确定加权值。例如,w

第9项:在一些实施例中,编码器可以确定加权值,并在序列级别、图片级别、条带级别、CTU/LCU级别、CU级别、PU级别或区域级别(可以包括多个CU/PU/TU/LCU)将该值发送到解码器。可以在序列参数集(SPS)、图片参数集(PPS)、条带头(SH)、CTU/LCU、CU、PU或区域的第一块中信令通知加权值。在一些实施例中,加权值可以从空域和/或时域临近块的加权值推导。

部分交织预测

第10项:在一些实施例中,可以如下实现部分交织预测。

在一些实施例中,将交织预测应用于当前块的一部分。将一些位置处的预测样点计算为两个或更多个基于子块的预测的加权和。其他位置处的预测样点不用于加权和。例如,这些预测样点是从具有某个划分模式的基于子块的预测复制的。

在一些实施例中,当前块由分别具有划分模式D0和划分模式D1的基于子块的预测P1和P2来预测。最终预测被计算为P=w0×P0+w1×P1。在一些位置处,w0≠0且w1≠0。但是在其他一些位置处,w0=1且w1=0,即,在这些位置处不应用交织预测。

在一些实施例中,交织预测不应用于如图15A所示的四个角子块。

在一些实施例中,交织预测不应用于如图15B所示的子块的最左侧列和子块的最右侧列。

在一些实施例中,交织预测不应用于如图15C所示的子块的最顶部行和子块的最底部行。

在一些实施例中,交织预测不应用于如图15D所示的子块行的最顶部行、子块的最底部行、子块的最左侧列和子块的最右侧列。

在一些实施例中,是否以及如何应用部分交织预测可以取决于当前块的尺寸/形状。

例如,在一些实施例中,如果当前块的尺寸满足某些条件,则将交织预测应用于整个块;否则,将交织预测应用于块的一部分(或一些部分)。条件包括但不限于:(假设当前块的宽度和高度分别为W和H,并且T、T1、T2为整数值):

W>=T1且H>=T2;

W<=T1且H<=T2;

W>=T1或H>=T2;

W<=T1或H<=T2;

W+H>=T

W+H<=T

W×H>=T

W×H<=T

在一些实施例中,将部分交织预测应用于当前块的小于当前块的一部分。例如,在一些实施例中,块的一部分不包括如下子块。在一些实施例中,如果W≥H,则交织预测不应用于如同15B所示的子块的最左侧列和子块的最右侧列;否则,交织预测不应用于如图15C所示的子块的最顶部行和子块的最底部行。

例如,在一些实施例中,如果W>H,则交织预测不应用于如同15B所示的子块的最左侧列和子块的最右侧列;否则,交织预测不应用于如同15C所示的子块的最顶部行和子块的最底部行。

在一些实施例中,对于块中的不同区域,是否以及如何应用交织预测可以不同。例如,假设当前块是由分别具有划分模式D0和划分模式D1的基于子块的预测P1和P2来预测的。最终预测被计算为P(x,y)=w0×P0(x,y)+w1×P1(x,y)。如果位置(x,y)属于具有划分模式D0的大小为S0×H0的子块;并且属于具有划分模式D1的子块S1×H1。如果满足以下一个或几个条件,则设置w0=1且w1=0(例如,在该位置处不应用交织预测):

S1

H1

S1

S1

在本文中,T1和T2是整数。例如,T1=T2=4。

并入编码器实施例中的技术的示例

第11项:在一些实施例中,交织预测不应用于运动估计(ME)过程中。

例如,交织预测不应用于6参数仿射预测的ME过程。

例如,如果当前块的尺寸满足诸如如下的某些条件,则交织预测不应用于ME过程中。这里,假设当前块的宽度和高度分别为W和H,并且T、T1、T2为整数值:

W>=T1且H>=T2;

W<=T1且H<=T2;

W>=T1或H>=T2;

W<=T1或H<=T2;

W+H>=T

W+H<=T

W×H>=T

W×H<=T

例如,如果当前块与父块分离,并且父块不在编码器处选择仿射模式,则在ME过程中省略交织预测。

可替代地,如果当前块与父块分离,并且父块不在编码器处选择仿射模式,则不在编码器处检查仿射模式。

MV推导的示例性实施例

在以下示例中,SatShift(x,n)被定义为

将Shift(x,n)定义为Shift(x,n)=(x+offset0)>>n。在一个示例中,将offset0和/或offset1设置为(1<>1or(1<<(n-1))。在另一个示例中,将offset0和/或offset1设置为0。

第12项:在一些实施例中,一个划分模式内的每个子块的MV可以直接从仿射模型(诸如用等式(1))推导,或者可以从另一个划分模式内的子块的MV推导。

(a)在一个示例中,具有划分模式0的子块B的MV可以从划分模式1内的与子块B重叠的子块中的全部或一些的MV推导。

(b)图16A-图16C示出了一些示例。在图16A中,要推导划分模式1内的特定子块的MV1(x,y)。图16B示出了块中的划分模式0(实线)和划分模式1(虚线),指示在划分模式0内有与划分模式1内的特定子块重叠的四个子块。图16C示出了划分模式0内的与划分模式1内的特定子块重叠的四个子块的四个MV:MV

(c)假设划分模式1内的一个子块的MV’是从划分模式0内的k-1个子块的MV0、MV1、MV2、…MVk推导的。MV’可以被推导为:

(i)MV’=MVn,n是0…k中的任何一个。

(ii)MV’=f(MV0,MV1,MV2,…,MVk)。f是线性函数。

(iii)MV’=f(MV0,MV1,MV2,…,MVk)。f是非线性函数。

(iv)MV’=Average(MV0,MV1,MV2,…,MVk)。Average是取平均运算。

(v)MV’=Median(MV0,MV1,MV2,…,MVk)。Median是用以得到中间值的运算。

(vi)MV’=Max(MV0,MV1,MV2,…,MVk)。Max是用以得到最大值的运算。

(vii)MV’=Min(MV0,MV1,MV2,…,MVk)。Min是用以得到最小值的运算。

(viii)MV’=MaxAbs(MV0,MV1,MV2,…,MVk)。MaxAbs是用以得到具有最大绝对值的值的运算。

(ix)MV’=MinAbs(MV0,MV1,MV2,…,MVk)。MinAbs是用以得到具有最小绝对值的值的运算。

(x)以图16A为例,MV

1.MV

2.MV

3.MV

4.MV

5.MV

6.MV

7.MV

8.MV

9.MV

10.MV

11.MV

12.MV

13.MV

14.MV

15.MV

16.MV

17.MV

18.MV

第13项:在一些实施例中,如何选择划分模式可以取决于当前块的宽度和高度。

(a)例如,如果宽度>T1并且高度>T2(例如,T1=T2=4),则选择两个划分模式。图17A示出了两个划分模式的示例。

(b)例如,如果高度<=T2(例如,T2=4),则选择另外两个划分模式。图17B示出了两个划分模式的示例。

(c)例如,如果宽度<=T1(例如,T1=4),则选择另外两个划分模式。图17C示出了两个划分模式的示例。

第14项:在一些实施例中,一个色彩分量C1的一个划分模式内的每个子块的MV可以从另一个色彩分量C0的另一个划分模式内的子块的MV推导。

(a)例如,C1指代在另一个色彩分量之后编解码/解码的色彩分量,诸如Cb或Cr或U或V或R或B。

(b)例如,C0指代在另一个色彩分量之前编解码/解码的色彩分量,诸如Y或G。

(c)在一个示例中,如何从另一个色彩分量的另一个划分模式内的子块的MV的MV推导一个色彩分量的一个划分模式内的子块的MV可以取决于色彩格式,诸如4:2:0或4:2:2或4:4:4。

(d)在一个示例中,在根据色彩格式对坐标进行缩小或放大之后,具有划分模式C1Pt(t=0或1)的色彩分量C1中的子块B的MV可以从划分模式C0Pr(r=0或1)内的色彩分量C0中与子块B重叠的子块中的全部或一些的MV推导。

(i)在一个示例中,C0Pr总是等于C0P0。

(e)图18A和图18B示出了两个示例。色彩格式为4:2:0。Cb分量中的子块的MV从Y分量中的子块的MV推导。

(i)在图18A左侧,要推导划分模式0内的特定Cb子块B的MV

(ii)在图18B左侧,要推导划分模式1内的特定Cb子块B的MV

(f)假设色彩分量C1的一个子块的MV'是从色彩分量C0的k-1个子块的MV0、MV1、MV2、…MVk推导的。MV’可以被推导为:

(i)MV’=MVn,n是0…k中的任何一个。

(ii)MV’=f(MV0,MV1,MV2,…,MVk)。f是线性函数。

(iii)MV’=f(MV0,MV1,MV2,…,MVk)。f是非线性函数。

(iv)MV’=Average(MV0,MV1,MV2,…,MVk)。Average是取平均运算。

(v)MV’=Median(MV0,MV1,MV2,…,MVk)。Median是用以得到中间值的运算。

(vi)MV’=Max(MV0,MV1,MV2,…,MVk)。Max是用以得到最大值的运算。

(vii)MV’=Min(MV0,MV1,MV2,…,MVk)。Min是用以得到最小值的运算。

(viii)MV’=MaxAbs(MV0,MV1,MV2,…,MVk)。MaxAbs是用以得到具有最大绝对值的值的运算。

(ix)MV’=MinAbs(MV0,MV1,MV2,…,MVk)。MinAbs是用以得到具有最小绝对值的值的运算。

(x)以图18A和18B为例,MV

1.MV

2.MV

3.MV

4.MV

5.MV

6.MV

7.MV

8.MV

9.MV

10.MV

11.MV

12.MV

13.MV

14.MV

15.MV

16.MV

17.MV

18.MV

用于双向预测的交织预测的示例实施例

第15项:在一些实施例中,当将交织预测应用于双向预测时,可以应用以下方法来节省由于不同权重而增加的内部比特深度:

(a)对于列表X(X=0或1),P

(b)最终预测值被推导为P(x,y)=Shift(Wb0(x,y)*P

(c)在一些实施例中,可以对P

(i)例如,对于列表X(X=0或1),P

(d)上述方法也可以适用于具有两个参考预测块的不同权重因子的其他双向预测方法,诸如广义双向预测(GBi,其中权重可以为例如3/8、5/8)、加权预测(其中权重可以为非常大的值)。

(e)上述方法还可以适用于具有不同参考预测块的不同权重因子的其他多假设单向预测或双向预测方法。

块尺寸依赖性的示例实施例

a.在一个示例中,是否和/或如何应用交织预测可以取决于VPDU(视频处理数据单元,其通常表示硬件设计中用于处理的最大允许块尺寸)的尺寸。

b.在一个示例中,当对某个块大小(或具有某个编解码信息的块)禁用交织预测时,可以利用原始预测方法。

i.可替代地,可以对这样种类的块直接禁用仿射模式。

c.在一个示例中,当W>T1且H>T2时,不能使用交织预测。例如,T1=T2=64;

d.在一个示例中,当W>T1或H>T2时,不能使用交织预测。例如,T1=T2=64;

e.在一个示例中,当W*H>T时,不能使用交织预测。例如,T=64*64;

f.在一个示例中,当W

g.在一个示例中,当WT2时,不能使用交织预测。例如,T1=T2=16;

h.在一个示例中,当W*H

i.在一个示例中,对于不位于块边界处的子块(例如,编解码单元),可以对该子块禁用交织仿射。此外,可替代地,原始仿射预测方法的预测结果可以直接用作该子块的最终预测。

j.在一个示例中,当W>T1且H>T2时,以不同的方式使用交织预测。例如,T1=T2=64;

k.在一个示例中,当W>T1或H>T2时,以不同的方式使用交织预测。例如,T1=T2=64;

l.在一个示例中,当W*H>T时,以不同的方式使用交织预测。例如,T=64*64;

m.在一个示例中,当W

n.在一个示例中,当WT2时,以不同的方式使用交织预测。例如,T1=T2=16;

o.在一个示例中,当W*H

p.在一个示例中,当H>X(例如,H等于128,X=64)时,交织预测不应用于属于跨当前块的上方W*(H/2)分割和下方W*(H/2)分割的子块的样点;

q.在一个示例中,当W>X(例如,W等于128,X=64)时,交织预测不应用于属于跨当前块的左侧(W/2)*H分割和右侧(W/2)*H分割的子块的样点;

r.在一个示例中,当W>X且H>Y(例如,W=H=128,X=Y=64)时,

i.交织预测不应用于属于跨当前块的左侧(W/2)*H分割和右侧(W/2)*H分割的子块的样点;

ii.交织预测不应用于属于跨当前块的上方W*(H/2)分割和下方W*(H/2)分割的子块的样点;

s.在一个示例中,仅对具有特定的宽度和/或高度集合的块启用交织预测。

t.在一个示例中,仅对具有特定的宽度和/或高度集合的块禁用交织预测。

u.在一个示例中,交织预测仅用于特定类型的图片/条带/片组/片/或其他种类的视频数据单元。

i.例如,交织预测仅用于P图片或B图片;

ii.例如,信令通知标志以在图片/条带/片组/片的头中指示是否可以使用交织预测。

1.例如,仅在允许仿射预测时才信令通知该标志。

第17项:建议信令通知消息以指示是否应用是否/如何应用交织预测与宽度和高度之间的依赖性。该消息可以在SPS/VPS/PPS/条带头/图片头/片/片组头/CTU/CTU行/多个CTU/或其他种类的视频处理单元中被信令通知。

第18项:在一个示例中,当使用交织预测时,不允许双向预测

a.例如,当使用交织预测时,不信令通知用以指示是否使用双向预测的索引。

b.可替代地,可以在SPS/VPS/PPS/条带头/图片头/片/片组头/CTU/CTU行/多个CTU中信令通知是否不允许双向预测的指示。

第19项:建议基于从两个或更多个模式推导的运动信息来进一步细化子块的运动信息。

a.在一个示例中,可以将细化运动信息用于预测要被编解码的后续块。

b.在一个示例中,可以将细化运动信息用于滤波过程,诸如Deblock、SAO、ALF。

c.是否存储细化信息可以基于子块相对于整个块/CTU/CTU行/片/条带/片组/图片的位置。

d.是否存储细化信息可以基于当前块和/或临近块的编解码模式。

e.是否存储细化信息可以基于当前块的大小。

f.是否存储细化信息可以基于图片/条带类型/参考图片列表等。

第20项:建议是否和/或如何应用去方块过程或其他种类的滤波过程(诸如SAO、自适应环路滤波器)可以取决于是否应用交织预测。

a.在一个示例中,如果块的一个划分模式中的两个子块之间的边缘在块的另一个划分模式中的子块内部,则不在该边缘上进行去方块。

b.在一个示例中,如果块的一个划分模式中的两个子块之间的边缘在块的另一个划分模式中的子块内部,则在该边缘上使得去方块更弱。

i.在一个示例中,针对这样的边缘减小在VVC去方块过程中描述的bS[xDi][yDj]。

ii.在一个示例中,针对这样的边缘减小在VVC去方块过程中描述的β。

iii.在一个示例中,针对这样的边缘减小在VVC去方块过程中描述的。

iv.在一个示例中,针对这样的边缘减小在VVC去方块过程中描述的tC。

c.在一个示例中,如果块的一个划分模式中的两个子块之间的边缘在块的另一个划分模式中的子块内部,则在该边缘上使得去方块更强。

i.在一个示例中,针对这样的边缘增大在VVC去方块过程中描述的bS[xDi][yDj]。

ii.在一个示例中,针对这样的边缘增大在VVC去方块过程中描述的β。

iii.在一个示例中,针对这样的边缘增大在VVC去方块过程中描述的。

iv.在一个示例中,针对这样的边缘增大在VVC去方块过程中描述的tC。

第21项:建议是否和/或如何对块/子块应用局部照明补偿或加权预测可以取决于是否应用交织预测。

a.在一个示例中,当一个块以交织预测模式进行编解码时,不允许应用局部照明补偿或加权预测。

b.此外,可替代地,如果将交织预测应用于块/子块,则不需要信令通知启用局部照明补偿的指示。

第22项:建议当将加权预测应用于一个块或子块时,可以跳过双向光流(BIO)。

a.在一个示例中,可以将BIO应用于具有加权预测的块。

b.在一个示例中,可以将BIO应用于具有加权预测的块,然而,应当满足某些条件。

i.在一个示例中,要求至少一个参数应当在一个范围内或等于某些值。

ii.在一个示例中,可以应用某些参考图片限制。

如下所述,上述实施例和示例可以在如图19至[]所示的方法的上下文中被实施。

图19示出了基于所公开的技术的一些实施方式的用于视频处理的方法1900的示例流程图。方法1900包括,在1902,推导属于视频的当前视频块的第一划分模式的子块的第一集合的一个或多个运动矢量。方法1900包括,在1904,基于一个或多个运动矢量来执行当前视频块和视频的编解码表示之间的转换。

图20示出了基于所公开的技术的一些实施方式的用于视频处理的方法2000的示例流程图。方法2000包括,在2902,划分第一色彩分量的视频块以获得第一色彩分量的子块的第一集合。方法2000还包括,在2004,划分第二色彩分量的对应视频块以获得第二色彩分量的子块的第二集合。方法2000还包括,在2006,基于子块的第二集合的一个或多个运动矢量,推导子块的第一集合的一个或多个运动矢量。方法2000还包括,在2008,基于子块的第一集合和子块的第二集合的一个或多个运动矢量,执行视频块和视频的编解码表示之间的转换。

图21A示出了基于所公开的技术的一些实施方式的用于视频处理的方法2110的示例流程图。方法2110包括,在2112,针对视频的当前视频块和视频的比特流表示之间的转换,根据依据当前视频块的高度(H)或宽度(W)的多个划分模式,将当前视频块划分为分割。方法2110还包括,在2114,使用多个分割的交织预测来执行该转换。

图21B示出了基于所公开的技术的一些实施方式的用于视频处理的方法2120的示例流程图。方法2120包括,在2122,确定对视频的当前视频块应用预测,预测包括根据划分模式将当前视频块划分为子块。方法2120还包括,在2124,确定在当前视频块的子块上应用位移位以生成预测块。方法2120还包括,在2126,执行当前视频块和视频的编解码表示之间的转换。

图21C示出了基于所公开的技术的一些实施方式的用于视频处理的方法2130的示例流程图。方法2130包括,在2132,基于视频的当前视频块的特性,确定是否对当前块和视频的编解码表示之间的转换使用交织预测工具。方法2130还包括,在2134,根据该确定来执行该转换。在一些实施方式中,在确定当前视频块的特性不满足条件时,该转换是通过禁用仿射预测工具和/或交织预测工具的使用而执行的。在一些实施方式中,在确定当前视频块的特性满足条件时,该转换是通过使用仿射预测工具和/或交织预测工具而执行的。

图21D示出了基于所公开的技术的一些实施方式的用于视频处理的方法2140的示例流程图。方法2140包括,在2142,确定交织预测要被应用于视频的当前视频块。方法2140还包括,在2144,基于确定要应用交织预测,对当前视频块禁用双向预测。方法2140还包括,在2146,执行当前视频块和视频的编解码表示之间的转换。

图22A示出了基于所公开的技术的一些实施方式的用于视频处理的方法2210的示例流程图。方法2210包括,在2212,为视频的当前视频块和视频的编解码表示之间的转换确定当前视频块的细化运动信息。方法2210还包括,在2214,使用细化运动信息来执行该转换。在一些实施方式中,细化运动信息是基于交织预测工具而生成的,其中在该交织预测工具中当前视频块的分割的运动信息是使用多个模式生成的,并且当前视频块的细化运动信息用于后续处理或者基于是否满足条件而选择性地存储。

图22B示出了基于所公开的技术的一些实施方式的用于视频处理的方法2220的示例流程图。方法2220包括,在2222,确定交织预测是否被应用于视频的当前视频块。方法2220还包括,在2224,基于确定交织预测是否被应用于当前视频块,确定对当前视频块使用滤波过程。方法2220还包括,在2226,基于确定使用滤波过程,执行当前视频块和视频的编解码表示之间的转换。

图22C示出了基于所公开的技术的一些实施方式的用于视频处理的方法2230的示例流程图。方法2230包括,在2232,确定交织预测是否被应用于视频的当前视频块。方法2230还包括,在2234,基于确定使用交织预测,确定是否对当前视频块使用局部照明补偿或加权预测。方法2230还包括,在2236,基于确定使用局部照明补偿或加权预测,执行当前视频块和视频的编解码表示之间的转换。

图22D示出了基于所公开的技术的一些实施方式的用于视频处理的方法2240的示例流程图。方法2240包括,在2242,确定加权预测被应用于视频的当前视频块或当前视频块的子块。方法2240还包括,在2244,通过禁用双向光流(BDOF)技术来执行当前视频块和视频的编解码表示之间的转换。

在如上所讨论的方法中,可以实施部分交织。使用该方案,计算预测样点的第一子集中的样点作为第一中间预测块的加权组合,并且从基于子块的预测复制预测样点的第二子集的样点,其中第一子集和第二子集基于划分模式。第一子集和第二子集可以一起组成整个预测块,例如,当前正被处理的块。如图15A-图15D所描绘的,在各个示例中,被排除在交织之外的第二子集可以由(a)角子块或(b)子块的最上方和最下方行或(c)子块的最左侧或最右侧列组成。当前正被处理的块的尺寸可以用作用于决定是否从交织预测排除某些子块的条件。

如本文档中进一步描述的,编码过程可以避免检查从父块分离的块的仿射模式,其中父块本身以不同于仿射模式的模式被编码。

在一些实施例中,视频解码器装置可以实施视频解码的方法,其中如本文所述的改进的基于块的运动预测用于视频解码。该方法可以包括使用来自视频帧的像素集合来形成视频的块。可以根据第一模式将块分割为子块的第一集合。第一中间预测块可以对应于子块的第一集合。该块可以包括根据第二模式的子块的第二集合。第二集合中的至少一个子块具有与第一集合中的子块不同的尺寸。该方法还可以基于第一中间预测块和从子块的第二集合生成的第二中间预测块来确定预测块。该方法的其他特征可以类似于上述方法1900。

在一些实施例中,视频解码的解码器侧方法可以使用用于通过将视频帧的块用于预测来改善视频质量的基于块的运动预测,其中,块对应于像素块集合。可以基于块的尺寸或来自在空域上或时域上与该块相邻的另一块的信息将块划分为多个子块,其中,多个子块中的至少一个子块具有与其他子块不同的尺寸。解码器可以使用通过将编解码算法应用于多个子块而生成的运动矢量预测。该方法的其他特征关于图2000及对应的描述进行了描述。

又一种用于视频处理的方法包括:推导当前视频块的子块的第一集合的一个或多个运动矢量,其中,子块的第一集合中的每一个子块具有第一划分模式;以及基于一个或多个运动矢量来重构当前视频块。

在一些实施例中,推导一个或多个运动矢量是基于仿射模型的。

在一些实施例中,推导一个或多个运动矢量是基于子块的第二集合中的一个或多个子块的运动矢量的,子块的第二集合中的每一个子块具有与第一划分模式不同的第二划分模式,并且子块的第二集合中的一个或多个子块与子块的第一集合中的至少一个子块重叠。例如,子块的第一集合的一个或多个运动矢量包括MV

在一些实施例中,子块的第一集合对应于第一色彩分量,推导一个或多个运动矢量是基于子块的第二集合中的一个或多个子块的运动矢量的,子块的第二集合中的每一个子块具有与第一划分模式不同的第二划分模式,并且子块的第二集合对应于与第一色彩分量不同的第二色彩分量。在示例中,在第三色彩分量之后对第一色彩分量进行编解码或解码,并且其中第三色彩分量是Cr、Cb、U、V、R或B中的一个。在另一示例中,在第三色彩分量之前对第二色彩分量进行编解码或解码,并且其中第三色彩分量是Y或G。在又一示例中,推导一个或多个运动矢量还基于子块的第二集合中的至少一个子块的色彩格式。在又一示例中,色彩格式为4:2:0、4:2:2或4:4:4。

在一些实施例中,第一划分模式基于当前视频块的高度或宽度。

图23是视频处理装置2300的框图。装置2300可以用于实施在本文中描述的方法中的一种或多种。装置2300可以被体现在智能电话、平板电脑、计算机、物联网(Internet ofThings,IoT)接收器等中。装置2300可以包括一个或多个处理器2302、一个或多个存储器2304、以及视频处理硬件2306。(多个)处理器2302可以被配置为实施本文档中描述的一种或多种方法(包括但不限于如图19至图22D所示的方法)。存储器(多个存储器)2104可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件2306可以用于以硬件电路实施本文档中描述的一些技术。

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

系统3100可以包括可以实施本文档中描述的各种编解码或编码方法的编解码组件3104。编解码组件3104可以将来自输入3102的视频的平均比特率减小到编解码组件3104的输出,以产生视频的编解码表示。编解码技术因此有时被称为视频压缩或视频转码技术。编解码组件3104的输出可以被存储,或者经由如由组件3106表示的通信连接而发送。在输入3102处接收的视频的存储或通信传送的比特流(或编解码)表示可以由组件3108用于生成像素值或传送到显示接口3110的可显示视频。从比特流表示生成用户可视视频的过程有时被称为视频解压缩。此外,虽然某些视频处理操作被称为“编解码”操作或工具,但是将理解,编解码工具或操作在编码器处被使用,并且反转编解码结果的对应的解码工具或操作将由解码器执行。

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

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

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

条款的第一集合描述了在先前章节(包括例如第1项)中列出的所公开的技术的某些特征和方面。

1.一种用于视频处理的方法,包括:推导属于视频的当前视频块的第一划分模式的子块的第一集合的一个或多个运动矢量;以及基于一个或多个运动矢量来执行当前视频块和视频的编解码表示之间的转换。

2.根据条款1所述的方法,其中,推导一个或多个运动矢量是基于仿射模型的。

3.根据条款1所述的方法,其中,推导一个或多个运动矢量是基于子块的第二集合的运动矢量的,其中,子块的第二集合具有与第一划分模式不同的第二划分模式。

4.根据条款3所述的方法,其中,子块的第二集合与子块的第一集合重叠。

5.根据条款3所述的方法,其中,子块的第一集合的一个或多个运动矢量包括MV

6.根据条款5所述的方法,其中,MV

7.根据条款6所述的方法,其中,f(·)是线性函数。

8.根据条款6所述的方法,其中,f(·)是非线性函数。

9.根据条款5所述的方法,其中,MV

10.根据条款5所述的方法,其中,MV

11.根据条款5所述的方法,其中,MV

12.根据条款5所述的方法,其中,MV

13.根据条款5所述的方法,其中,MV

14.根据条款5所述的方法,其中,MV

15.根据条款1至14中任一项所述的方法,其中,执行该转换包括从当前视频块生成编解码表示。

16.根据条款1至14中任一项所述的方法,其中,执行该转换包括从编解码表示生成当前视频块。

17.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,该指令在由处理器执行时使处理器实施根据条款1至16中的一项或多项所述的方法。

18.一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于执行根据条款1至16中的一项或多项所述的方法的程序代码。

条款的第二集合描述了在先前章节(包括例如第14项)中列出的所公开的技术的某些特征和方面。

条款的第三集合描述了在先前章节(包括例如第13、15、16、17和18项)中列出的所公开的技术的某些特征和方面。

1.一种用于视频处理的方法,包括:针对视频的当前视频块和视频的比特流表示之间的转换,根据依据当前视频块的高度(H)或宽度(W)的多个划分模式,将当前视频块划分为分割;以及使用多个分割的交织预测来执行该转换。

2.根据条款1所述的方法,其中,在W>T1且H>T2,T1、T2为整数值的情况下,当前视频块是根据两个划分模式而划分的。

3.根据条款2所述的方法,其中,T1=T2=4。

4.根据条款1所述的方法,其中,在H<=T2,T2为整数的情况下,当前视频块是根据两个划分模式而划分的。

5.根据条款4所述的方法,其中,T2=4。

6.根据条款1所述的方法,其中,在W<=T1,T1为整数的情况下,当前视频块是根据两个划分模式而划分的。

7.根据条款6所述的方法,其中,T1=4。

8.一种用于视频处理的方法,包括:确定对视频的当前视频块应用预测,预测包括根据划分模式将当前视频块划分为子块;确定在当前视频块的子块上应用位移位以生成预测块;以及执行当前视频块和视频的编解码表示之间的转换。

9.根据条款8所述的方法,其中,双向预测或单向预测被应用于当前视频块。

10.根据条款8所述的方法,其中,与当前视频块相关的一个或多个运动矢量具有取决于预测的加权值的内部比特深度。

11.根据条款8所述的方法,其中,对于当前视频块的参考图片列表X,P

12.根据条款8所述的方法,其中,最终预测值被推导为P(x,y)=Shift(Wb0(x,y)*P

13.根据条款12所述的方法,其中,Wb0=Wb1=SWB=1。

14.根据条款8所述的方法,其中,插值滤波被应用于生成预测块,并且最终预测值被推导为P(x,y)=Shift(Wb0(x,y)*P

15.根据条款14所述的方法,其中,P

16.根据条款8所述的方法,其中,双向预测对两个参考预测块使用不同的加权因子。

17.根据条款11或14所述的方法,其中,P

18.一种用于视频处理的方法,包括:基于视频的当前视频块的特性,确定是否对当前块和视频的编解码表示之间的转换使用交织预测工具;以及根据该确定来执行该转换,其中,在确定当前视频块的特性不满足条件时,该转换是通过禁用仿射预测工具和/或交织预测工具的使用而执行的。

19.一种用于视频处理的方法,包括:基于视频的当前视频块的特性,确定是否对当前块和视频的编解码表示之间的转换使用交织预测工具;以及根据该确定来执行该转换,其中,在确定当前视频块的特性满足条件时,该转换是通过使用仿射预测工具和/或交织预测工具而执行的。

20.根据条款18或19所述的方法,其中,当前视频块的特性包括当前视频块的宽度或高度中的至少一个。

21.根据条款18或19所述的方法,还包括:确定视频处理数据单元(VPDU)的尺寸,并且其中,确定是否使用交织预测工具是基于VPDU的尺寸的。

22.根据条款18所述的方法,其中,与交织预测不同的预测方法被应用于当前视频块。

23.根据条款18所述的方法,其中,当前视频块的宽度和高度分别为W和H,并且T、T1、T2为整数值,并且其中,对于包括以下中的一个的某个条件,交织预测被禁用:

i.W>T1且H>T2,

ii.W>T1或H>T2,

iii.W x H>T,

iv.W

v.W

vi.W*H

24.根据条款18或19所述的方法,还包括:确定当前视频块的第一子块不位于块边界处;以及在确定第一子块不位于块边界处时,对第一子块禁用交织仿射技术。

25.根据条款24所述的方法,其中,来自原始仿射预测技术的预测结果用于第一子块的最终预测。

26.根据条款18所述的方法,其中,当前视频块的宽度和高度分别为W和H,并且T、T1、T2为整数值,并且其中,对于包括以下中的一个的某个条件,交织预测被使用:

i.W>T1且H>T2,

ii.W>T1或H>T2,

iii.W x H>T,

iv.W

v.W

vi.W*H

27.根据条款18所述的方法,其中,在当前视频块的高度(H)大于X,X为整数的情况下,交织预测不被应用于属于跨当前视频块的上方W*(H/2)分割和下方W*(H/2)分割的子块的样点。

28.根据条款18所述的方法,其中,在当前视频块的宽度(W)大于X,X为整数的情况下,交织预测不被应用于属于跨当前视频块的左侧(W/2)*H分割和右侧(W/2)*H分割的子块的样点。

29.根据条款27或28所述的方法,其中,X=64。

30.根据条款19所述的方法,其中,针对包括当前视频块的特定类型的视频数据单元,交织预测被允许,该视频数据单元包括图片、条带、片组或片。

31.根据条款19所述的方法,其中,交织预测用于P图片或B图片。

32.根据条款18或19所述的方法,其中,指示是否使用或禁用交织预测工具的标志在图片、条带、片组或片的头中被信令通知。

33.根据条款32所述的方法,其中,该标志是基于是否针对当前视频块允许仿射预测而信令通知的。

34.根据条款18或19所述的方法,其中,消息在包括视频参数集(VPS)、序列参数集(SPS)、图片参数集(PPS)、条带头、图片头、片组头、片、编解码树单元(CTU)或CTU行的视频处理单元中被信令通知,以指示是否使用当前视频块的特性。

35.一种用于视频处理的方法,包括:确定交织预测要被应用于视频的当前视频块;基于确定要应用交织预测,对当前视频块禁用双向预测;以及执行当前视频块和视频的编解码表示之间的转换。

36.根据条款35所述的方法,其中,用以指示使用双向预测的索引不被信令通知。

37.根据条款36所述的方法,其中,双向预测基于在视频参数集(VPS)、序列参数集(SPS)、图片参数集(PPS)、条带头、图片头、片组头、片、编解码树单元(CTU)、CTU行或多个CTU中信令通知的指示而禁用。

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

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

40.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,该指令在由处理器执行时使处理器实施根据条款1至39中任一项所述的方法。

41.一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于执行根据条款1至39中任一项所述的方法的程序代码。

条款的第四集合描述了在先前章节(包括例如第19、20、21和22项)中列出的所公开的技术的某些特征和方面。

1.一种视频处理的方法,包括:为视频的当前视频块和视频的编解码表示之间的转换确定当前视频块的细化运动信息;以及使用细化运动信息来执行该转换,其中,细化运动信息是基于交织预测工具而生成的,其中在该交织预测工具中当前视频块的分割的运动信息是使用多个模式生成的;其中,当前视频块的细化运动信息用于后续处理或者基于是否满足条件而选择性地存储。

2.根据条款1所述的方法,其中,后续处理是要在当前视频块之后被转换的后续块的转换。

3.根据条款1所述的方法,其中,后续处理是用于当前视频块的滤波过程。

4.根据条款1所述的方法,其中,是否满足条件是基于子块的位置而确定的,该位置与视频中的块、CTU、CTU行、片、条带、片组或图片相关。

5.根据条款1所述的方法,其中,是否满足条件是基于当前视频块或当前视频块的临近视频块中的至少一个的编解码模式而确定的。

6.根据条款1所述的方法,其中,是否满足条件是基于当前视频块的大小而确定的。

7.根据条款1所述的方法,其中,是否满足条件是基于与当前视频块相关的图片、条带类型或参考图片列表中的至少一个而确定的。

8.一种用于视频处理的方法,包括:确定交织预测是否被应用于视频的当前视频块;基于确定交织预测是否被应用于当前视频块,确定对当前视频块使用滤波过程;以及基于确定使用滤波过程,执行当前视频块和视频的编解码表示之间的转换。

9.根据条款8所述的方法,其中,滤波过程包括去方块过程、样点自适应偏移(SAO)滤波或自适应环路滤波。

10.根据条款8所述的方法,还包括:确定与要如何应用滤波过程相关的参数,并且其中,该转换是基于滤波过程的参数而执行的。

11.根据条款8所述的方法,其中,在当前视频块的划分模式中的两个子块之间的边缘在当前视频块的另一划分模式中的子块内部的情况下,滤波过程不被应用于该边缘。

12.根据条款8所述的方法,其中,在当前视频块的划分模式中的两个子块之间的边缘在当前视频块的另一划分模式中的子块内部的情况下,滤波过程针对该边缘处于更弱的级别。

13.根据条款9所述的方法,其中,作为在去方块过程中使用的变量的bS[xDi][yDj]、β、Δ或t

14.根据条款8所述的方法,其中,在当前视频块的划分模式中的两个子块之间的边缘在当前视频块的另一划分模式中的子块内部的情况下,滤波过程在该边缘上处于更强的级别。

15.根据条款13所述的方法,其中,作为在去方块过程中使用的变量的bS[xDi][yDj]、β、Δ或t

16.一种用于视频处理的方法,包括:确定交织预测是否被应用于视频的当前视频块;基于确定使用交织预测,确定是否对当前视频块使用局部照明补偿或加权预测;以及基于确定使用局部照明补偿或加权预测,执行当前视频块和视频的编解码表示之间的转换。

17.根据条款16所述的方法,还包括:确定与要如何应用局部照明补偿或加权预测相关的参数,并且其中,该转换是基于局部照明补偿或加权预测的参数而执行的。

18.根据条款16所述的方法,其中,在确定对当前视频块应用交织预测时,局部照明补偿或加权预测被禁用。

19.根据条款16所述的方法,其中,针对被应用交织预测的当前视频块或当前视频块的子块,指示启用局部照明补偿或加权预测的指示不被信令通知。

20.一种用于视频处理的方法,包括:确定加权预测被应用于视频的当前视频块或当前视频块的子块;以及通过禁用双向光流(BDOF)技术来执行当前视频块和视频的编解码表示之间的转换。

21.根据条款20所述的方法,其中,BDOF技术被应用于具有加权预测的块。

22.根据条款21所述的方法,其中,BDOF技术的参数在阈值范围内或等于某个值。

23.根据条款20所述的方法,其中,某些参考图片限制被应用于当前视频块。

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

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

26.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,该指令在由处理器执行时使处理器实施根据条款1至26中任一项所述的方法。

27.一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于执行根据条款1至26中任一项所述的方法的程序代码。

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

在本文档中描述的所公开的以及其他实施例、模块和功能操作可以在数字电子电路中、或者在计算机软件、固件或硬件(包括本文档中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中被实施。所公开的以及其他实施例可以被实施为一个或多个计算机程序产品,即编码在计算机可读介质上的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组合、或它们中的一个或多个的组合。术语“数据处理装置”包含用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。传播信号是被生成以对信息进行编码以用于发送到合适的接收器装置的人工生成的信号,例如机器生成的电信号、光学信号或电磁信号。

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

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

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

虽然本专利文档包含许多细节,但这些细节不应被解释为对任何发明或可能要求保护的范围的限制,而是作为特定于特定发明的特定实施例的特征的描述。在本专利文档中在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合实施。此外,尽管特征可以在上面描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合排除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变化。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示的特定顺序或以先后顺序执行这样的操作或者执行所有示出的操作以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离。

仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容来进行其他实施方式、增强和变化。

相关技术
  • 一种视频处理方法、视频索引方法、装置及终端设备
  • 视频处理装置、视频处理装置的IC电路、视频处理方法和视频处理程序
  • 视频处理器训练方法、装置、视频处理装置及视频处理方法
技术分类

06120116593969