CN115918080A - 视频编解码的仿射预测改进 - Google Patents

视频编解码的仿射预测改进 Download PDF

Info

Publication number
CN115918080A
CN115918080A CN202180041405.8A CN202180041405A CN115918080A CN 115918080 A CN115918080 A CN 115918080A CN 202180041405 A CN202180041405 A CN 202180041405A CN 115918080 A CN115918080 A CN 115918080A
Authority
CN
China
Prior art keywords
block
sub
prediction
current video
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180041405.8A
Other languages
English (en)
Inventor
张凯
贺玉文
张莉
刘鸿彬
傅天亮
李俊儒
马思伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Douyin Vision Co Ltd
ByteDance Inc
Original Assignee
Douyin Vision Co Ltd
ByteDance Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Douyin Vision Co Ltd, ByteDance Inc filed Critical Douyin Vision Co Ltd
Publication of CN115918080A publication Critical patent/CN115918080A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

描述了视频编码方法和装置以及视频解码方法和装置的示例。处理视频数据的示例方法包括,对于视频的视频块和视频的比特流之间的转换,根据规则确定视频块的子块级别处的预测矢量的梯度,其中该规则指定使用为视频块的子块内的所有样本分配的相同的梯度值;以及基于确定执行转换。

Description

视频编解码的仿射预测改进
相关申请的交叉引用
根据适用的专利法和/或根据《巴黎公约》的规则,提出本申请旨在及时要求2020年6月8日提交的国际专利申请第PCT/CN2020/094839号、2020年6月30日提交的美国临时专利申请第63/046,634号和2020年8月22日提交的国际专利申请第PCT/CN2020/110663号的优先权和权益。出于法律规定的所有目的,前述申请的全部公开内容通过引用并入作为本申请公开内容的一部分。
技术领域
本专利文件涉及图像和视频处理。
背景技术
在互联网和其他数字通信网络中,数字视频占据了最大的带宽使用量。随着能够接收和显示视频的连接用户设备数量的增加,预计数字视频使用的带宽需求将继续增长。
发明内容
本文件公开了图像和视频编码器和解码器可以用来执行图像或视频编码或解码的技术。
在一个示例方面,公开了一种视频处理方法。该方法包括:对于视频的视频块和视频的比特流之间的转换,根据规则确定视频块的子块级别处的预测矢量的梯度,其中该规则指定使用为视频块的子块内的所有样本分配的相同的梯度值;以及基于确定执行转换。
在另一示例方面,公开了一种视频处理方法。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,在执行双向预测技术以获得当前视频块的运动信息之后,确定使用利有光流技术的预测细化;以及基于确定执行转换。
在另一示例方面,公开了一种视频处理方法。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,基于当前视频块是否满足条件来确定是否将与仿射预测相关的编解码工具应用于当前视频块;以及基于确定执行转换,其中条件涉及当前视频块的一个或多个控制点运动矢量,或者当前视频块的第一大小,或者当前视频块的子块的第二大小,或者为当前视频块的一个或多个子块推导的一个或多个运动矢量,或者当前视频块的预测模式。
在另一示例方面,公开了一种视频处理方法。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,根据规则,基于以下内容确定是否以及如何对子块索引处的子块应用运动补偿:(1)是否对当前视频块应用仿射模式,其中在比特流中包括指示是否应用仿射模式的仿射运动指示,(2)当前视频块所属的颜色分量,以及(3)视频的颜色格式;以及基于确定执行转换。
在另一示例方面,公开了一种视频处理方法。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,根据规则,基于以下内容确定是否以及如何使用加权预测来计算当前视频块的子块的预测:(1)是否对当前视频块应用仿射模式,其中在比特流中包括指示是否应用仿射模式的仿射运动指示,(2)当前视频块所属的颜色分量,以及(3)视频的颜色格式;以及基于确定执行转换。
在另一示例方面,公开了一种视频处理方法。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,根据规则确定比特流中的第一语法元素的值,其中第一语法元素的值指示仿射模式是否应用于当前视频块,并且其中规则指定第一语法元素的值基于:(1)比特流中的第二语法元素,该第二语法元素指示是否使用基于仿射模型的运动补偿来生成当前视频块的预测样本,或(2)比特流中的第三语法元素,该第三语法元素指示是否为经编解码层视频序列(CLVS)启用基于6参数仿射模型的运动补偿;以及基于确定执行转换。
在另一示例方面,公开了一种视频处理方法。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,基于当前视频块的第一样式的第一子块的第一运动矢量和当前视频块的第二样式的第二子块的第二运动矢量之间的关系,确定是否为当前视频块启用交织预测工具;以及基于确定执行转换。
在另一示例方面,公开了另一种视频处理方法。该方法包括:对于视频的视频块和视频的编解码表示之间的转换,根据指定针对每个子块中的所有样本使用相同的梯度值的规则,确定使用用于视频块的子块级别处的预测矢量的梯度,以及基于确定执行转换。
在另一示例方面,公开了另一种视频处理方法。该方法包括:对于视频的当前视频块和视频的比特流表示之间的转换,根据规则确定使用使用光流技术的运动信息的预测细化;以及基于确定执行转换,其中规则指定在执行双向预测以获得运动信息之后执行预测细化。
在另一示例方面,公开了另一种视频处理方法。该方法包括:对于视频的当前视频块与视频的比特流表示之间的转换,因为当前视频块满足条件,确定对当前视频块启用编解码工具;以及基于确定执行转换,其中该条件涉及当前视频块的控制点运动矢量或当前视频块的大小或当前视频块的预测模式。
在另一示例方面,公开了另一种视频处理方法。该方法包括:对于视频的视频块和视频的经编解码表示之间的转换,根据规则确定是否以及如何使用加权预测来计算视频块的子块的预测;以及基于确定执行转换,其中该规则基于是否对视频块启用仿射模式、或视频块所属的颜色分量、或视频的颜色格式中的一个或多个。
在又一示例方面,公开了一种视频编码器装置。视频编码器包括配置为实施上述方法的处理器。
在又一示例方面,公开了一种视频解码器装置。视频解码器包括配置为实施上述方法的处理器。
在又一示例方面,公开了一种其上存储有代码的计算机可读介质。该代码以处理器可执行代码的形式体现了本文描述的方法之一。
贯穿本文档描述了这些和其他特征。
附图说明
图1示出了用于Merge候选列表构造的示例推导过程。
图2示出了空间Merge候选的示例位置。
图3示出了考虑用于空间Merge候选的冗余检查的候选对。
图4A-图4B示出了N×2N和2N×N分割的第二PU的位置示例。
图5是用于时间Merge候选的运动矢量缩放的图示。
图6示出了时间Merge候选的示例候选位置C0和C1。
图7示出了组合的双向预测Merge候选的示例。
图8示出了用于运动矢量预测候选的推导过程的示例。
图9示出了空间运动矢量候选的运动矢量缩放的图示。
图10示出了用于CU的ATMVP运动预测的示例。
图11示出了具有四个子块(A-D)及其相邻块(a-d)的一个CU的示例。
图12是应用OBMC的子块的示例图示。
图13示出了用于推导IC参数的相邻样本的示例。
图14示出了简化仿射运动模型的示例。
图15示出了每个子块的仿射MVF的示例。
图16示出了用于AF_INTER的MVP的示例。
图17示出了AF_MERGE的示例候选。
图18示出了双边映射的示例。
图19示出了模板映射的示例。
图20示出了FRUC中单边ME的示例。
图21示出了光流轨迹的示例。
图22A-图22B示出了BIO w/o块扩展示例。
图23示出了BIO中使用的插值样本的示例。
图24示出了所提出的基于双边模板匹配的DMVR的示例。
图25示出了子块MV VSB和像素Δv(i,j)的示例。
图26示出了相变水平滤波的示例。
图27示出了应用一次8抽头水平滤波的示例图示。
图28示出了非均匀相位垂直滤波的示例。
图29示出了交织预测过程的示例。
图30示出了子块中的加权值的示例。
图31示出了示例划分样式。
图32示出了示例划分样式。
图33是示出了根据本公开的一些实施例的视频编解码系统的框图。
图34是用于视频处理的示例硬件平台的框图。
图35是视频处理的示例方法的流程图。
图36是示出了示例视频编解码系统的框图。
图37是示出了根据本公开的一些实施例的编码器的框图。
图38是示出了根据本公开的一些实施例的解码器的框图。
图39A和图39B示出了用于交织仿射预测的高速缓存带宽限制的示例。
图40示出了样式0和样式1中的子块行的示例。
图41示出了SB1(绿色虚线块)的SB0(黑色实心块)选择的示例。
图42和图43分别示出了样本-样式0和1的位置。
图44示出了样式1中的子块。
图45示出了样式1中的子块。
图46示出了4x4权重的数组。
图47示出了8x8权重的数组。
图48至图54是视频处理的示例方法的流程图。
具体实施方式
在本文档中使用章节标题是为了便于理解,并且不将每个章节中公开的技术和实施例的适用性仅限于该章节。此外,在一些描述中使用H.266术语只是为了便于理解,而不是为了限制所公开技术的范围。因此,本文描述的技术也适用于其他视频编解码器协议和设计。
介绍
本文件涉及视频编解码技术。具体来说,它与视频编解码中的运动补偿有关。它可以应用于现有的视频编解码标准,如HEVC,或有待最终确定的标准(多功能视频编解码)。它也可能适用于未来的视频编解码标准或视频编解码器。
2.初步讨论
视频编解码标准主要是通过众所周知的ITU-T和ISO/IEC标准的发展而发展起来。ITU-T制作了H.261和H.263,ISO/IEC制作了MPEG-1和MPEG-4Visual,这两个组织联合制作了H.262/MPEG-2视频和H.264/MPEG-4高级视频编解码(AVC)以及H.265/HEVC标准。自H.262以来,视频编解码标准是基于混合视频编解码结构,其中利用时间预测加变换编解码。为了探索HEVC以外的未来视频编解码技术,VCEG和MPEG于2015年联合成立了联合视频探索团队(JVET)。此后,JVET采用了许多新方法,并将其应用到名为联合勘探模型(JEM)的参考软件中。2018年4月,VCEG(Q6/16)和ISO/IEC JTC1 SC29/WG11(MPEG)之间成立了联合视频专家组(JVET),以制定VVC标准,与HEVC相比,其以降低50%的比特率为目标。
VVC草案的最新版本,即通用视频编解码(草案2)可在以下网址找到:
http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/11_Ljubljana/wg11/JVET-K1001-v7.zip
VVC的最新参考软件名为VTM,可在以下网址找到:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tags/VTM-2.1
2.1.HEVC/H.265中的帧间预测
每个帧间预测的PU具有针对一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。还可以使用inter_pred_idc来信令通知两个参考图片列表之一的使用。运动矢量可以被显式地编解码为相对于预测子的增量。
当CU以跳过模式被编解码时,一个PU与CU相关联,并且没有显著的残差系数,没有被编解码的运动矢量增量或参考图片索引。指定Merge模式,由此从相邻PU(包括空间和时间候选)获得当前PU的运动参数。Merge模式可以应用于任何帧间预测的PU,而不仅仅针对跳过模式。Merge模式的替代方案是运动参数的显式传输,其中每PU显式地信令通知运动矢量(更准确地说,与运动矢量预测子相比的运动矢量差)、每个参考图片列表的对应参考图片索引和参考图片列表使用。这种模式在本公开中被命名为高级运动矢量预测(AMVP)。
当信令指示要使用两个参考图片列表中的一个时,从一个样本块产生PU。这被称为“单向预测”。单向预测可用于P条带和B条带两者。
当信令指示要使用两个参考图片列表时,从两个样本块产生PU。这被称为“双向预测”。双向预测仅适用于B条带。
以下文本提供了HEVC中指定的帧间预测模式的详细信息。描述将从Merge模式开始。
2.1.1.Merge模式
2.1.1.1.Merge模式的候选推导
当使用Merge模式预测PU时,从比特流解析指向Merge候选列表中的条目的索引并将其用于检索运动信息。HEVC标准中规定了该列表的构造,并可根据以下步骤顺序进行总结:
·步骤1:初始候选推导
ο步骤1.1:空间候选推导
ο步骤1.2:空间候选的冗余检查
ο步骤1.3:时间候选推导
·步骤2:额外候选插入
ο步骤2.1:双向预测候选的创建
ο步骤2.2:插入零运动候选
在图1中还示意性地描绘了这些步骤。对于空间Merge候选推导,在位于五个不同位置的候选中选择最多四个Merge候选。对于时间Merge候选推导,在两个候选中选择最多一个Merge候选。因为在解码器处假设每个PU的恒定候选数量,所以当从步骤1获得的候选数量没有达到在条带标头中信令通知的Merge候选的最大数量(MaxNumMergeCand)时,生成额外的候选。由于候选数量是恒定的,因此使用截断一元二值化(TU)对最佳Merge候选的索引进行编码。如果CU的大小等于8,则当前CU的所有PU共享单个Merge候选列表,该列表与2N×2N预测单元的Merge候选列表相同。
在下文中,详细说明与上述步骤相关联的操作。
图1示出了用于Merge候选列表构造的示例推导过程。
2.1.1.2.空间候选推导
在空间Merge候选的推导中,在位于图2所示位置的候选中选择最多四个Merge候选。推导的顺序为A1、B1、B0、A0和B2。仅当位置A1、B1、B0、A0的任何PU不可用(例如,因为它属于另一个条带(slice)或片(tile))或被帧内编解码时,才考虑位置B2。在添加位置A1处的候选之后,对剩余候选的添加进行冗余检查,该冗余检查确保具有相同运动信息的候选被排除在列表之外,从而提高编解码效率。为了降低计算复杂度,在上述冗余检查中并不考虑所有可能的候选对。相反,仅考虑与图3中用箭头链接的对,并且仅当用于冗余检查的对应候选不具有相同的运动信息,才将候选添加到列表中。重复运动信息的另一个来源是与不同于2Nx2N的分割相关联的“第二PU”。作为示例,图4A和图4B分别描绘了N×2N和2N×N情况下的第二PU。当当前PU被划分为N×2N时,位置A1处的候选不被考虑用于列表构造。事实上,通过添加该候选将导致具有相同运动信息的两个预测单元,这对于在编解码单元中仅具有一个PU是多余的。类似地,当当前PU被划分为2N×N时,不考虑位置B1
图2示出了空间Merge候选的示例位置。
图3示出了考虑用于空间Merge候选的冗余检查的候选对。
图4A-图4B示出了N×2N和2N×N分割的第二PU的位置示例。
2.1.1.3.时间候选推导
在该步骤中,只有一个候选被添加到列表中。具体地,在该时间Merge候选的推导中,基于属于在给定参考图片列表内与当前图片具有最小POC差的图片的并置(co-located)PU推导缩放运动矢量。在条带标头中显式地信令通知要用于推导并置PU的参考图片列表。如图5中的虚线所示,获得用于时间Merge候选的缩放运动矢量,其使用POC距离tb和td从并置PU的运动矢量缩放,其中tb被定义为当前图片的参考图片和当前图片之间的POC差,td被定义为并置图片的参考图片和并置图片之间的POC差。时间Merge候选的参考图片索引被设置为等于零。HEVC规范中描述了缩放过程的实际实现。对于B条带,获得两个运动矢量,一个用于参考图片列表0,另一个用于参考图片列表1,并组合以产生双向预测Merge候选。
图5是用于时间Merge候选的运动矢量缩放的图示。
在属于参考帧的并置PU(Y)中,在候选C0和C1之间选择时间候选的位置,如图6所示。如果位置C0处的PU不可用,被帧内编解码,或者在当前CTU行之外,则使用位置C1。否则,在时间Merge候选的推导中使用位置C0
图6示出了时间Merge候选的示例候选位置C0和C1。
2.1.1.4.额外候选插入
除了空间和时间Merge候选之外,还有两种额外类型的Merge候选:组合的双向预测Merge候选和零Merge候选。通过利用空间和时间Merge候选来生成组合的双向预测Merge候选。组合的双向预测Merge候选仅用于B条带。通过将初始候选的第一参考图片列表运动参数与另一个的第二参考图片列表运动参数组合来生成组合的双向预测候选。如果这两个元组提供不同的运动假设,它们将形成一个新的双向预测候选。作为示例,图7描述了原始列表(在左侧)中的两个候选(具有mvL0和refIdxL0或mvL1和refIdxL1)用于创建添加到最终列表(在右侧)的组合的双向预测Merge候选的情况。有许多关于被认为生成这些额外Merge候选的组合的规则。
图7示出了组合的双向预测Merge候选的示例。
插入零运动候选以填充Merge候选列表中的剩余条目,因此达到MaxNumMergeCand容量。这些候选具有零空间位移和参考图片索引,该参考图片索引从零开始,并且在每次新的零运动候选被添加到列表时增加。对于单向预测和双向预测,这些候选所使用的参考帧的数量分别为1和2。最后,不对这些候选执行冗余检查。
2.1.1.5.用于并行处理的运动估计区域
为了加速编码过程,可以并行地执行运动估计,由此同时推导给定区域内所有预测单元的运动矢量。从空间邻居推导Merge候选可能干扰并行处理,因为一个预测单元不能从相邻PU推导运动参数,直到其相关联的运动估计完成。为了减轻编解码效率和处理时延之间的折衷,HEVC定义运动估计区域(MER),其大小在使用“log2_parallel_merge_level_minus2”语法元素的图片参数集中信令通知。当定义MER时,落在同一区域的Merge候选被标记为不可用,因此在列表构造中不被考虑。
2.1.2.AMVP
AMVP利用运动矢量与相邻PU的时空相关性,其用于运动参数的显式传输。对于每个参考图片列表,通过首先检查左、上时域相邻的PU位置的可用性、移除冗余候选并添加零矢量以使候选列表为恒定长度,来构建运动矢量候选列表。然后,编码器可以从候选列表中选择最佳预测子,并发送指示所选候选的对应索引。与Merge索引信令类似,使用截断的一元对最佳运动矢量候选的索引进行编码。在这种情况下要编码的最大值是2(见图8)。在下面的部分中,提供了关于运动矢量预测候选的推导过程的细节。
2.1.2.1.AMVP候选的推导
图8总结了运动矢量预测候选的推导过程。
在运动矢量预测中,考虑了两种类型的运动矢量候选:空间运动矢量候选和时间运动矢量候选。对于空间运动矢量候选推导,基于位于五个不同位置的每个PU的运动矢量最终推导两个运动矢量候选,如图2所示。
对于时间运动矢量候选推导,从基于两个不同的并置位置推导的两个候选中选择一个运动矢量候选。在生成第一时空候选列表之后,移除列表中重复的运动矢量候选。如果潜在候选的数量大于2,则从列表中移除其在相关联的参考图片列表内的参考图片索引大于1的运动矢量候选。如果时空运动矢量候选的数量小于2,则将额外的零运动矢量候选添加到列表中。
2.1.2.2.空间运动矢量候选
在空间运动矢量候选的推导中,在五个潜在候选中考虑最多两个候选,这是从位于如图2所示的位置的PU推导的,这些位置与运动合并的位置相同。当前PU左侧的推导顺序被定义为A0、A1和缩放的A0、缩放的A1。当前PU的上侧的推导顺序被定义为B0、B1、B2、缩放的B0、缩放的B1、缩放的B2。因此,对于每一侧,有四种情况可以用作运动矢量候选,其中两种情况不需要使用空间缩放,两种情况使用空间缩放。四种不同的情况总结如下。
·无空间缩放
–(1)相同的参考图片列表,且相同的参考图片索引(相同的POC)
–(2)不同的参考图片列表,但相同的参考图片(相同的POC)
·空间缩放
–(3)相同的参考图片列表,但不同的参考图片(不同的POC)
–(4)不同的参考图片列表,且不同的参考图片(不同的POC)
首先检查无空间缩放的情况,然后检查空间缩放。当POC在相邻PU的参考图片和当前PU的参考图片之间不同时,考虑空间缩放,而不考虑参考图片列表。如果左侧候选的所有PU不可用或被帧内编解码,则允许对上方运动矢量进行缩放,以帮助左侧和上方MV候选的并行推导。否则,不允许对上方运动矢量进行空间缩放。
在空间缩放过程中,相邻PU的运动矢量以与时间缩放类似的方式缩放,如图9所示。主要区别在于,以当前PU的参考图片列表和索引作为输入;实际的缩放过程与时间缩放过程相同。
2.1.2.3.时间运动矢量候选
除了参考图片索引推导之外,用于推导时间Merge候选的所有过程与用于推导空间运动矢量候选的所有过程相同(参见图6)。参考图片索引被信令通知到解码器。
2.2.JEM中新的帧间预测方法
2.2.1.基于子CU的运动矢量预测
在采用QTBT的JEM中,对于每个预测方向,每个CU最多可以具有一个运动参数集合。通过将大CU分割为子CU并推导大CU的所有子CU的运动信息,在编码器中考虑了两种子CU级别运动矢量预测方法。替代时间运动矢量预测(ATMVP)方法允许每个CU从比并置参考图片中的当前CU小的多个块中获取多个运动信息集合。在时空运动矢量预测(STMVP)方法中,通过使用时间运动矢量预测子和空间相邻运动矢量递归地推导子CU的运动矢量。
为了为子CU运动预测保留更精确的运动场,当前禁用了参考帧的运动压缩。
图10示出了用于CU的ATMVP运动预测的示例。
2.2.1.1.替代时间运动矢量预测
在替代时间运动矢量预测(ATMVP)方法中,通过从小于当前CU的块中提取多个运动信息集合(包括运动矢量和参考索引)来修改运动矢量时间运动矢量预测(TMVP)。如图10所示,子CU是正方形N×N块(N默认设置为4)。
ATMVP分两步预测CU内子CU的运动矢量。第一步是用所谓的时间矢量识别参考图片中的对应块。参考图片被称为运动源图片。第二步是将当前CU拆分为子CU,并从对应于每个子CU的块中获得每个子CU的运动矢量以及参考索引,如图10所示。
在第一步中,通过当前CU的空间相邻块的运动信息确定参考图片和对应块。为了避免相邻块的重复扫描过程,使用当前CU的Merge候选列表中的第一个Merge候选。第一可用运动矢量及其相关联的参考索引被设置为时间矢量和运动源图片的索引。这样,在ATMVP中,与TMVP相比,可以更准确地识别对应块,其中对应块(有时称为并置块)总是处于相对于当前CU的右下或中心位置。
在第二步中,通过将时间矢量添加到当前CU的坐标,由运动源图片中的时间矢量识别子CU的对应块。对于每个子CU,其对应块(覆盖中心样本的最小运动网格)的运动信息用于推导子CU的运动信息。在识别对应的N×N块的运动信息之后,以与HEVC的TMVP相同的方式将其转换为当前子CU的运动矢量和参考索引,其中应用运动缩放和其他过程。例如,解码器检查是否满足低延迟条件(即,当前图片的所有参考图片的POC小于当前图片的POC),并且可能使用运动矢量MVx(对应于参考图片列表X的运动矢量)来预测每个子CU的运动矢量MVy(X等于0或1,Y等于1-X)。
2.2.1.2.时空运动矢量预测
在这种方法中,按照光栅扫描顺序递归地推导子CU的运动矢量。图11说明了这个概念。让我们考虑一个8×8的CU,它包含四个4×4的子CU A、B、C和D。当前帧中相邻的4×4块被标记为a、b、c和d。
子CU A的运动推导从识别其两个空间邻居开始。第一个邻居是子CU A上方的N×N块(块c)。如果该块c不可用或被帧内编解码,则检查子CU A上方的其他N×N块(从左到右,从块c开始)。第二个邻居是子CU A左侧的块(块b)。如果块b不可用或被帧内编解码,则检查子CU A左侧的其他块(从上到下,从块b开始)。从每个列表的相邻块获得的运动信息被缩放到给定列表的第一参考帧。接下来,通过遵循与HEVC中规定的TMVP推导相同的过程来推导子块A的时间运动矢量预测子(TMVP)。位置D处的并置块的运动信息被提取并相应地缩放。最后,在检索和缩放运动信息之后,所有可用的运动矢量(最多3个)分别针对每个参考列表进行平均。经平均的运动矢量被指定为当前子CU的运动矢量。
图11示出了具有四个子块(A-D)及其相邻块(a-d)的一个CU的示例。
2.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.2.自适应运动矢量差分辨率
在HEVC中,当条带标头中的use_integer_mv_flag等于0时,以四分之一亮度样本为单位信令通知运动矢量差(MVD)(PU的运动矢量与预测运动矢量之间)。在JEM中,引入了局部自适应运动矢量分辨率(LAMVR)。在JEM中,MVD可以以四分之一亮度样本、整数亮度样本或四亮度样本为单位进行编解码。在编解码单元(CU)级别处控制MVD分辨率,并且对于具有至少一个非零MVD分量的每个CU有条件地信令通知MVD分辨率标志。
对于具有至少一个非零MVD分量的CU,信令通知第一标志以指示在CU中是否使用四分之一亮度样本MV精度。当第一标志(等于1)指示不使用四分之一亮度样本MV精度时,信令通知另一个标志以指示是使用整数亮度样本MV精度还是四亮度样本MV精度。
当CU的第一MVD分辨率标志为零,或者没有为CU编解码(意味着CU中的所有MVD都为零)时,四分之一亮度样本MV分辨率被用于CU。当CU使用整数亮度样本MV精度或四亮度样本MV精度时,CU的AMVP候选列表中的MVP被四舍五入到相应的精度。
在编码器中,CU级别RD检查用于确定哪个MVD分辨率将用于CU。也就是说,对于每个MVD分辨率执行三次CU级别RD检查。为了加快编码器的速度,在JEM中应用了以下编码方案。
·在具有正常四分之一亮度样本MVD分辨率的CU的RD检查期间,存储当前CU的运动信息(整数亮度样本精度)。所存储的运动信息(四舍五入后)被用作在具有整数亮度样本和四亮度样本MVD分辨率的相同CU的RD检查期间进一步小范围运动矢量细化的起点,使得耗时的运动估计过程不重复三次。
·有条件地调用具有4亮度样本MVD分辨率的CU的RD检查。对于CU,当RD成本整数亮度样本MVD分辨率远大于四分之一亮度样本MVD分辨率时,跳过CU的4亮度样本MVD分辨率的RD检查。
2.2.3.更高的运动矢量存储精度
在HEVC中,运动矢量精度为四分之一像素(4:2:0视频的四分之一亮度样本和八分之一色度样本)。在JEM中,内部运动矢量存储和Merge候选的精度增加到1/16像素。较高的运动矢量精度(1/16像素)用于以跳过/Merge模式编解码的CU的运动补偿帧间预测。对于以正常AMVP模式编解码的CU,使用整数像素或四分之一像素运动,如第2.2.2节所述。
SHVC上采样插值滤波器具有与HEVC运动补偿插值滤波器相同的滤波器长度和归一化因子,用作额外分数像素位置的运动补偿插值滤波器。在JEM中,色度分量运动矢量精度为1/32样本,通过使用两个相邻1/16像素分数位置的滤波器的平均值推导1/32像素分数位置的额外插值滤波器。
2.2.4.重叠块运动补偿
重叠块运动补偿(OBMC)先前已在H.263中使用。在JEM中,与H.263不同,OBMC可以使用CU级别处的语法来打开和关闭。当在JEM中使用OBMC时,对除CU的右边界和底部边界之外的所有运动补偿(MC)块边界执行OBMC。此外,它适用于亮度和色度分量两者。在JEM中,MC块对应于编解码块。当以子CU模式(包括子CU Merge、仿射和FRUC模式)编解码CU时,CU的每个子块是MC块。为了以统一的方式处理CU边界,对于所有MC块边界在子块级别处执行OBMC,其中子块大小被设置为等于4×4,如图12所示。
当OBMC应用于当前子块时,除了当前运动矢量之外,还使用四个相连的相邻子块的运动矢量(如果可用并且与当前运动矢量不相同)来推导当前子块的预测块。这些基于多个运动矢量的多个预测块被组合以产生当前子块的最终预测信号。
将基于相邻子块的运动矢量的预测块表示为PN,其中N表示相邻的上、下、左和右子块的索引,并且将基于当前子块的运动矢量的预测块表示为PC。当PN基于包含与当前子块相同的运动信息的相邻子块的运动信息时,不从PN执行OBMC。否则,将PN的每个样本添加到PC中的相同样本,即,将PN的四行/列添加到PC。加权因子{1/4,1/8,1/16,1/32}用于PN,加权因子{3/4,7/8,15/16,31/32}用于PC。例外情况是小的MC块(即,当编解码块的高度或宽度等于4或CU以子CU模式编解码时),对于小的MC块,只有PN的两行/列被添加到PC。在这种情况下,加权因子{1/4,1/8}用于PN,加权因子{3/4,7/8}用于PC。对于基于垂直(水平)相邻子块的运动矢量生成的PN,将PN的同一行(列)中的样本以相同的加权因子添加到PC
在JEM中,对于大小小于或等于256亮度样本的CU,信令通知CU级别标志以指示是否对当前CU应用OBMC。对于大小大于256亮度样本或未以AMVP模式编解码的CU,默认应用OBMC。在编码器处,当OBMC应用于CU时,在运动估计阶段考虑其影响。OBMC使用顶部相邻块和左侧相邻块的运动信息形成的预测信号用于补偿当前CU的原始信号的顶部边界和左侧边界,然后应用正常的运动估计过程。
2.2.5.局部照明补偿
局部照明补偿(LIC)基于用于照明变化的线性模型,使用缩放因子a和偏移b。并且该LIC针对每个帧间模式编解码的编解码单元(CU)自适应地启用或禁用。
当LIC应用于CU时,采用最小二乘误差法通过使用当前CU的相邻样点及其对应的参考样点来推导参数a和b。更具体地,如图13所示,使用参考图片中的CU的子采样(2:1子采样)相邻样本和对应样本(由当前CU或子CU的运动信息识别)。IC参数被推导并分别应用于每个预测方向。
当以Merge模式编解码CU时,以类似于Merge模式中的运动信息复制的方式从相邻块复制LIC标志;否则,信令通知CU的LIC标志,以指示LIC是否应用。
当为图片启用LIC时,需要额外的CU级别RD检查来确定是否为CU应用LIC。当为CU启用LIC时,使用去除均值的绝对差之和(MR-SAD)和去除均值的绝对哈达玛变换差之和(MR-SATD),而不是SAD和SATD,分别用于整数像素运动搜索和分数像素运动搜索。
为了降低编码复杂度,在JEM中应用了以下编码方案。
·当当前图片与其参考图片之间没有明显的照明变化时,对整个图片禁用LIC。为了识别这种情况,在编码器处计算当前图片和当前图片的每个参考图片的直方图。如果当前图片和当前图片的每个参考图片之间的直方图差小于给定阈值,则对当前图片禁用LIC;否则,为当前图片启用LIC。
2.2.6.仿射运动补偿预测
在HEVC中,仅将平移运动模型应用于运动补偿预测(MCP)。而在现实世界中,运动有很多种,例如放大/缩小、旋转、透视运动和其他不规则运动。在JEM中,应用了一种简化的仿射变换运动补偿预测。如图14所示,块的仿射运动场由两个控制点运动矢量描述。
块的运动矢量场(MVF)由以下等式描述:
Figure BDA0003988538830000151
其中(v0x,v0y)是左上角控制点的运动矢量,并且(v1x,v1y)是右上角控制点的运动矢量。
为了进一步简化运动补偿预测,应用了基于子块的仿射变换预测。如等式2推导子块大小M×N,其中MvPre是运动矢量分数精度(在JEM中为1/16),(v2x,v2y)是左下角控制点的运动矢量,根据等式1计算。
Figure BDA0003988538830000161
由等式2推导后,M和N在必要时应向下调整,使之分别成为w和h的除数。
为了推导每个M×N子块的运动矢量,如图15所示,根据等式1计算每个子块的中心样本的运动矢量,并四舍五入到1/16分数精度。然后应用第2.2.3节中提到的运动补偿插值滤波器来生成具有推导的运动矢量的每个子块的预测。
在MCP之后,每个子块的高精度运动矢量被四舍五入并保存为与正常运动矢量相同的精度。
在JEM中,有两种仿射运动模式:AF_INTER模式和AF_MERGE模式。对于宽度和高度均大于8的CU,可以应用AF_INTER模式。在比特流中信令通知CU级别的仿射标志以指示是否使用AF_INTER模式。在该模式下,使用邻居块构造具有运动矢量对{(v0,v1)|v0={vA,vB,vc},v1={vD,vE}}的候选列表。如图16所示,从块A、B或C的运动矢量中选择v0。根据参考列表和相邻块的参考的POC、当前CU的参考的POC和当前CU的POC之间的关系来缩放来自邻居块的运动矢量。并且从邻居块D和E中选择v1的方法是相似的。如果候选列表的数量小于2,则由复制每个AMVP候选组成的运动矢量对填充该列表。当候选列表大于2时,首先根据相邻运动矢量的一致性(一对候选中两个运动矢量的相似性)对候选进行排序,只保留前两个候选。使用RD代价检查来确定选择哪个运动矢量对候选作为当前CU的控制点运动矢量预测(CPMVP)。并且在比特流中信令通知指示候选列表中CPMVP的位置的索引。在确定当前仿射CU的CPMVP后,应用仿射运动估计并找到控制点运动矢量(CPMV)。然后在比特流中信令通知CPMV和CPMVP的差。
当CU以AF_MERGE模式应用时,它从有效的邻居重构块中获得第一个以仿射模式编解码的块。候选块的选择顺序为从左、上、右上、左下到左上,如图17所示。如果相邻的左下块A以仿射模式编解码,如图17所示,则推导包含块A的CU的左上角、右上角和左下角的运动矢量v2、v3和v4。并根据v2、v3和v4计算当前CU上左上角的运动矢量v0。其次,计算当前CU的右上方的运动矢量v1
在推导当前CU的CPMVv0和v1后,根据简化仿射运动模型等式1,生成当前CU的MVF。为了识别当前CU是否以AF_MERGE模式编解码,当有至少一个邻居块以仿射模式编解码时,在比特流中信令通知仿射标志。
2.2.7.模式匹配运动矢量推导
模式匹配运动矢量推导(PMMVD)模式是一种基于帧速率上转换(FRUC)技术的特殊Merge模式。在这种模式下,块的运动信息不是信令通知的,而是在解码器侧推导的。
当CU的Merge标志为真时,信令通知CU的FRUC标志。当FRUC标志为假时,信令通知Merge索引并使用常规Merge模式。当FRUC标志为真时,信令通知额外的FRUC模式标志以指示哪种方法(双边匹配或模板匹配)将被用于推导块的运动信息。
在编码器侧,关于是否对CU使用FRUC Merge模式的决定是基于对正常Merge候选所做的RD成本选择。也就是说,通过使用RD成本选择来检查CU的两种匹配模式(双边匹配和模板匹配)。将导致最小成本的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。M的值按(16)计算,D是预定义的拆分深度,其在JEM中默认设置为3。然后推导每个子CU的MV。
Figure BDA0003988538830000171
如图18所示,双边匹配用于通过在两个不同的参考图片中沿着当前CU的运动轨迹找到两个块之间的最接近的匹配来推导当前CU的运动信息。在连续运动轨迹的假设下,指向两个参考块的运动矢量MV0和MV1应与当前图片和两个参考图片之间的时间距离即TD0和TD1成比例。作为特殊情况,当当前图片在时间上位于两个参考图片之间并且从当前图片到两个参考图片的时间距离相同时,双边匹配变成基于镜像的双向MV。
如图19所示,模板匹配用于通过在当前图片中的模板(当前CU的顶部和/或左侧相邻块)和参考图片中的块(与模板大小相同)之间找到最接近的匹配来推导当前CU的运动信息。除了前面提到的FRUC Merge模式,模板匹配也适用于AMVP模式。在JEM,正如在HEVC所做的那样,AMVP有两个候选。利用模板匹配方法,推导新的候选。如果通过模板匹配新推导的候选不同于第一个现有的AMVP候选,则将其插入AMVP候选列表的最开始,然后将列表大小设置为2(意味着移除第二个现有的AMVP候选)。当应用于AMVP模式时,仅应用CU级别搜索。
2.2.7.1.CU级别MV候选集
CU级别处的MV候选集包括:
(i)如果当前CU处于AMVP模式,原始AMVP候选
(ii)所有Merge候选,
(iii)插值MV场中的几个MV,这将在第2.2.7.3节中介绍。
(iv)顶部和左侧相邻运动矢量
当使用双边匹配时,Merge候选的每个有效MV被用作输入,以生成具有双边匹配假设的MV对。例如,Merge候选的一个有效MV在参考列表A中是(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被添加到候选列表中。
2.2.7.2.子CU级别MV候选集
子CU级别处的MV候选集包括:
(i)根据CU级别搜索确定的MV,
(ii)上、左、左上和右上相邻MV,
(iii)来自参考图片的并置MV的缩放版本,
(iv)最多4个ATMVP候选,
(v)最多4个STMVP候选
来自参考图片的缩放MV推导如下。遍历两个列表中的所有参考图片。参考图片中子CU的并置位置处的MV被缩放到起始CU级别MV的参考。
ATMVP和STMVP候选仅限于前四个。
在子CU级别处,最多17个MV被添加到候选列表中。
2.2.7.3.插值MV场的生成
在对帧进行编解码之前,基于单边ME为整个图片生成插值运动场。然后,运动场可以稍后用作CU级别或子CU级别MV候选。
首先,在4×4块级别遍历两个参考列表中的每个参考图片的运动场。对于每个4×4块,如果与该块相关联的运动通过当前图片中的4×4块(如图20所示)并且该块没有被分配任何插值运动,则参考块的运动根据时间距离TD0和TD1被缩放到当前图片(与HEVC中TMVP的MV缩放的方式相同),并且缩放后的运动被分配到当前帧中的块。如果没有缩放后的MV被分配给4×4块,则该块的运动在插值运动场中被标记为不可用。
2.2.7.4.插值和匹配成本
当运动矢量指向分数样本位置时,需要进行运动补偿插值。为了降低复杂度,双线性插值代替常规的8抽头HEVC插值用于双边匹配和模板匹配。
匹配成本的计算在不同的步骤略有不同。当从CU级别处的候选集中选择候选时,匹配成本是双边匹配或模板匹配的绝对和差(SAD)。在确定起始MV之后,在子CU级别搜索的双边匹配的匹配成本C计算如下:
Figure BDA0003988538830000191
其中w是根据经验设置为4的加权因子,MV和MVs分别指示当前MV和起始MV。SAD仍然用作子CU级别搜索的模板匹配的匹配成本。
在FRUC模式下,MV仅通过使用亮度样本推导。推导的运动将用于MC帧间预测的亮度和色度。在确定MV之后,使用用于亮度的8抽头插值滤波器和用于色度的4抽头插值滤波器来执行最终MC。
2.2.7.5.MV细化
MV细化是以双边匹配成本或模板匹配成本为准则的基于样式的MV搜索。在JEM中,支持两种搜索样式—无限制的中心偏置菱形搜索(UCBDS)和自适应交叉搜索,分别用于CU级别和子CU级别的MV细化。对于CU和子CU级别MV细化两者,直接以四分之一亮度样本MV精度搜索MV,然后进行八分之一亮度样本MV细化。CU和子CU步长的MV细化的搜索范围被设置为等于8个亮度样本。
2.2.7.6.模板匹配FRUC Merge模式下预测方向的选择
在双边匹配Merge模式中,总是应用双向预测,因为CU的运动信息是基于两个不同参考图片中沿着当前CU的运动轨迹的两个块之间的最接近的匹配推导的。对于模板匹配Merge模式没有这样的限制。在模板匹配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.2.8.广义双向预测改进
VTM-3.0采用了JVET-L0646中提出的广义双向预测改进(GBi)。
GBi是在JVET-C0047中提出的。JVET-K0248改进了GBi的增益-复杂度权衡,并被BMS2.1采用。在双向预测模式下,BMS2.1 GBi对来自L0和L1的预测子应用不相等的权重。在帧间预测模式中,基于率失真优化(RDO)来评估包括相等权重对(1/2,1/2)的多个权重对,并且将所选择的权重对的GBi索引信令通知给解码器。在Merge模式下,GBi索引从相邻的CU继承。在BMS2.1 GBi中,双向预测模式下的预测子生成如等式(1)所示。
PGBi=(w0*PL0+w1*PL1+RoundingOffsetGBi)>>shiftNumGBi
其中PGBi是GBi的最终预测子。w0和w1是所选择的GBi权重对,并且分别应用于列表0(L0)和列表1(L1)的预测子。RoundingOffsetGBi和shiftNumGBi用于归一化GBi中的最终预测子。支持的w1权重集是{-1/4,3/8,1/2,5/8,5/4},其中五个权重对应于一个相等权重对和四个不相等权重对。混合增益,即w1和w0之和,固定为1.0。因此,对应的w0权重集为{5/4,5/8,1/2,3/8,-1/4}。权重对选择在CU级别。
对于非低延迟图片,权重集大小从五个减少到三个,其中w1权重集是{3/8,1/2,5/8},w0权重集是{5/8,1/2,3/8}。非低延迟图片的权重集大小减小应用于BMS2.1 GBi和本贡献中的所有GBi测试。
在JVET-L0646中,提出了一种基于JVET-L0197和JVET-L0296的组合解决方案,以进一步提高GBi性能。具体来说,在BMS2.1中现有的GBi设计之上应用了以下修改。
2.2.8.1.GBi编码器错误修复
为了减少GBi编码时间,在当前的编码器设计中,编码器将存储从等于4/8的GBi权重估计的单向预测运动矢量,并将它们重新用于其他GBi权重的单向预测搜索。这种快速编码方法适用于平移运动模型和仿射运动模型两者。在VTM2.0中,采用6参数仿射模型和4参数仿射模型。当GBi权重等于4/8时,BMS2.1编码器在存储单向预测仿射MV时,不区分4参数仿射模型和6参数仿射模型。因此,在用GBi权重4/8编码之后,4参数仿射MV可以被6参数仿射MV覆盖。所存储的6参数仿射MV可用于其他GBi权重的4参数仿射ME,或者所存储的4参数仿射MV可用于6参数仿射ME。提议的GBi编码器错误修复是分离4参数和6参数仿射MV存储。当GBi权重等于4/8时,编码器基于仿射模型类型存储这些仿射MV,并将基于仿射模型类型的相应仿射MV重新用于其他GBi权重。
2.2.8.2.GBi编码器加速
提出了五种编码器加速方法来减少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成本检查的权重数
对于低延迟图像,有五个权重用于所有MVD精度(包括1/4像素、1像素和4像素)的RD成本检查。编码器将首先检查1/4像素MVD精度的RD成本。我们建议跳过用于1像素和4像素MVD精度的RD成本检查的GBi权重的一部分。我们根据它们在1/4像素MVD精度下的RD成本对那些不相等的权重进行排序。在1像素和4像素MVD精度的编码过程中,将只评估具有最小RD成本的前两个权重以及GBi权重4/8。因此,对于低延迟图片的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:48]
POC:1,TL:4,[L0:0 2][L1:24]
POC:3,TL:4,[L0:2 0][L1:48]
POC:6,TL:3,[L0:4 0][L1:816]
POC:5,TL:4,[L0:4 0][L1:68]
POC:7,TL:4,[L0:6 4][L1:816]
POC:12,TL:2,[L0:8 0][L1:168]
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,则列表-0MV细化的目标用等式(5)进行修改。O是原始信号,P1是列表-1的预测信号。w是list-1的GBi权重。
T=((O<<3)-w*P1)*(1/(8-w))     (5)
其中(1/(8-w))项以浮点精度存储,这增加了计算复杂度。我们建议将等式(5)改为定点,如等式(6)。
T=(O*a1-P1*a2+round)>>N      (6)
其中a1和a2是缩放因子,它们计算如下:
γ=(1<<N)/(8-w);a1=γ<<3;a2=γ*w;round=1<<(N-1)
2.2.8.3.GBi的CU大小限制
在这种方法中,GBi对于小型CU是禁用的。在帧间预测模式中,如果使用双向预测并且CU面积小于128个亮度样本,则在没有任何信令的情况下禁用GBi。
2.2.9.双向光流
2.2.9.1.理论分析
在BIO中,首先执行运动补偿以生成当前块的第一预测(在每个预测方向上)。第一预测用于推导块内每个子块/像素的空间梯度、时间梯度和光流,然后它们用于生成第二预测,即子块/像素的最终预测。具体描述如下。
双向光流(BIO)是在用于双向预测的逐块运动补偿之上执行的逐样本运动细化。样本级别运动细化不使用信令。
设I(k)为块运动补偿后来自参考k(k=0,1)的亮度值,并且
Figure BDA0003988538830000241
分别是I(k)梯度的水平和垂直分量。假设光流是有效的,运动矢量场(vx,vy)由以下方程给出
Figure BDA0003988538830000242
将该光流方程与每个样本的运动轨迹的Hermite插值相结合,产生一个唯一的三阶多项式,该多项式在末端与函数值I(k)和导数
Figure BDA0003988538830000243
相匹配。该多项式在t=0时的值是BIO预测:
Figure BDA0003988538830000244
这里,τ0和τ1表示到参考帧的距离,如图21所示。根据Ref0和Ref1的POC计算距离τ0和τ1:τ0=POC(current)-POC(Ref0),τ1=POC(Ref1)-POC(current)。如果两个预测来自同一时间方向(都来自过去或都来自未来),则符号不同(即τ0·τ1<0)。在这种情况下,只有当预测不是来自同一时刻(即τ0≠τ1),两个参考区域都具有非零运动(MVx0,MVy0,MVx1,MVy1≠0)并且块运动矢量与时间距离(MVx0/MVx1=MVy0/MVy1=-τ01)成比例时,才应用BIO。
通过最小化点A和点B中的值之间的差Δ(图37上的运动轨迹和参考帧平面的交点)来确定运动矢量场(vx,vy)。模型仅使用Δ的局部泰勒展开的第一个线性项:
Figure BDA0003988538830000245
等式(9)中的所有值都取决于样本位置(i′,j′),到目前为止,该位置已从符号中省略。假设运动在局部周围区域是一致的,我们在以当前预测点(i,j)为中心的(2M+1)×(2M+1)正方形窗口内最小化Δ,其中M等于2:
Figure BDA0003988538830000251
对于这个优化问题,JEM使用一种简化的方法,首先在垂直方向上最小化,然后在水平方向上最小化。这会导致
Figure BDA0003988538830000252
Figure BDA0003988538830000253
其中,
Figure BDA0003988538830000254
Figure BDA0003988538830000255
Figure BDA0003988538830000256
为了避免除以零或非常小的值,在等式(11)和(12)中引入正则化参数r和m。
r=500·4d-8      (14)
m=700·4d-8      (15)
这里d是视频样本的比特深度。
为了保持BIO的存储器访问与常规双向预测运动补偿相同,仅针对当前块内的位置计算所有预测和梯度值,I(k)
Figure BDA0003988538830000257
在等式(13)中,以预测块的边界上的当前预测点为中心的2M+1)×(2M+1)正方形窗口需要访问块外的位置(如图22A所示)在JEM中,块外的I(k)
Figure BDA0003988538830000258
的值被设置为等于块内最接近的可用值。例如,这可以实施为填充,如图22B所示。
图22A-图22B BIO w/o块扩展:图22A示出了块外的访问位置。
图22B示出了为了避免额外存储器访问和计算而使用的填充的示例。
使用BIO,可以对每个样本的运动场进行细化。为了降低计算复杂度,在JEM中使用了基于块的BIO设计。基于4×4块计算运动细化。在基于块的BIO中,聚合4×4中的所有样本的等式(13)中的sn值,然后将聚合的sn值用于推导4×4块的BIO运动矢量偏移。更具体地说,以下等式用于基于块的BIO推导:
Figure BDA0003988538830000261
Figure BDA0003988538830000262
Figure BDA0003988538830000263
其中bk表示属于预测块的第k个4x4块的样本集。将等式(11)和(12)中的sn替换为((sn,bk)>>4)以推导相关联的运动矢量偏移。
在某些情况下,由于噪音或不规则运动,BIO的MV团(regiment)可能不可靠。因此,在BIO中,MV团的幅度被限幅到阈值值thBIO。基于当前图片的参考图片是否都来自一个方向来确定阈值值。如果当前图片的所有参考图片都来自一个方向,则阈值的值被设置为12×214-d;否则,它被设置为12×213-d
使用与HEVC运动补偿过程(2D可分离FIR)一致的操作,BIO的梯度和运动补偿插值同时计算。该2D可分离FIR的输入是与运动补偿过程相同的参考帧样本和根据块运动矢量的分数部分的分数位置(fracX,fracY)。在水平梯度
Figure BDA0003988538830000265
信号的情况下,首先使用BIOfilterS进行垂直插值,BIOfilterS对应于去缩放偏移为d-8的分数位置fracY,然后在水平方向上应用梯度滤波器BIOfilterG,BIOfilterG对应于去缩放偏移为18-d的分数位置fracX。在垂直梯度
Figure BDA0003988538830000266
的情况下,首先使用BIOfilterG垂直应用梯度滤波器,BIOfilterG对应于去缩放偏移为d-8的分数位置fracY,然后在水平方向上使用BIOfilterS执行信号平移,BIOfilterS对应于去缩放偏移为18-d的分数位置fracX。为了保持合理的复杂度,梯度计算BIOfilterG和信号平移BIOfilterF的插值滤波器的长度较短(6抽头)。Table 1示出了BIO中用于块运动矢量的不同分数位置的梯度计算的滤波器。表2示出了BIO中用于预测信号生成的插值滤波器。
表1:BIO中梯度计算的滤波器
Figure BDA0003988538830000264
Figure BDA0003988538830000271
表2:BIO中用于预测信号生成的插值滤波器
分数像素位置 用于预测信号的插值滤波器(BIOfilterS)
0 {0,0,64,0,0,0}
1/16 {1,-3,64,4,-2,0}
1/8 {1,-6,62,9,-3,1}
3/16 {2,-8,60,14,-5,1}
1/4 {2,-9,57,19,-7,2}
5/16 {3,-10,53,24,-8,2}
3/8 {3,-11,50,29,-9,2}
7/16 {3,-11,44,35,-10,3}
1/2 {3,-10,35,44,-11,3}
在JEM中,当两个预测来自不同的参考图片时,BIO被应用于所有双向预测的块。当为CU启用LIC时,BIO被禁用。
在JEM中,OBMC在正常MC过程之后被应用于块。为了降低计算复杂度,在OBMC过程中不应用BIO。这意味着当使用块自身的MV时,BIO仅应用于块的MC过程,而当在OBMC过程中使用相邻块的MV时,BIO不应用于MC过程。
2.2.9.2.JVET-L0256中提出的VTM-3.0中的BIO
步骤1:判断BIO是否适用(W和H为当前块的宽度和高度)
BIO不适用,如果
·仿射编解码
·ATMVP编解码
·(iPOC-iPOC0)*(iPOC-iPOC1)>=0
·H==4或(W==4且H==8)
·使用加权预测
·GBi权重不是(1,1)
不使用BIO,如果
两个参考块(表示为R0和R1)之间的总SAD小于阈值。
Figure BDA0003988538830000281
步骤2:数据准备
对于WxH块,插值(W+2)x(H+2)个样本。
内部WxH样本用8抽头插值滤波器进行插值,与正常运动补偿一样
用双线性滤波器插值的样本的四侧外侧行(图23中的黑色圆圈)
对于每个位置,在两个参考块(表示为R0和R1)上计算梯度
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
图23示出了BIO中使用的插值样本的示例。
步骤3:计算每个块的预测
如果两个4×4参考块之间的SAD小于阈值,则跳过4×4块的BIO。
计算Vx和Vy。
计算4×4块中每个位置的最终预测。
b(x,y)=(Vx(Gx0(x,y)-Gx1(x,y))+Vy(Gy0(x,y)-Gy1(x,y))+1)>>1
P(x,y)=(R0(x,y)+R1(x,y)+b(x,y)+offset)>>shift
b(x,y)被称为修正项。
VTM-3.0中的BIO
8.3.4帧间块解码过程
-如果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,则应用以下内容:
-变量shift被设置为等于MAX(2,14-bitDepth)。
-变量cuLevelAbsDiffThres和subCuLevelAbsDiffThres被设置为等于(1<<(bitDepth-8+shift))*cbWidth*cbHeight和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]=∑ij Abs
(predSamplesL0L[(xSbIdx<<2)+1+i][(ySbIdx<<2)+1+j]-predSamplesL1L[(xSbIdx<<2)+1+i][(ySbIdx<<2)+1+j]),其中i,j=0..3
bioUtilizationFlag[xSbIdx][ySbIdx]=subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx]>=
subCuLevelAbsDiffThres
cuLevelSumAbsoluteDiff+=subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx]
-如果cuLevelSumAbsoluteDiff小于cuLevelAbsDiffThres,则将bioAvailableFlag设置为FALSE。
-如果bioAvailableFlag等于TRUE,则通过调用8.3.4.5条款中指定的双向光流样本预测过程,使用亮度编解码子块宽度sbWidth、亮度编解码子块高度sbHeight、样本数组predSamplesL0L和predSamplesL1L、以及变量predFlagL0、predFlagL1、refIdxL0、refIdxL1推导当前亮度编解码子块内的预测样本predSamplesL[xL+xSb][yL+ySb],其中xL=0..sbWidth-1且yL=0..sbHeight-1。
8.3.4.3分数样本插值过程
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)x(sbHeight+2)数组predSamplesLXL。
-预测色度样本值的两个(sbWidth/2)x(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
-预测亮度样本值predSamplesLXL[xL][yL]是通过调用条款8.3.4.3.2中指定的过程,以(xIntL,yIntL),(xFracL,yFracL),refPicLXL和bilinearFiltEnabledFlag作为输入来推导的。
当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。
-预测亮度样本值predSamplesLXL[xL][yL]是通过调用条款8.3.4.3.2中指定的过程,以(xIntL,yIntL),(xFracL,yFracL)和refPicLXL和bilinearFiltEnabledFlag作为输入来推导的。
8.3.4.5双向光流预测过程
该过程的输入是:
-两个变量nCbW和nCbH,指定当前编解码块的宽度和高度,
-两个(nCbW+2)x(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<<bitDepth)-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
tempY[x][y]=
(gradientVL0[x][y]+gradientVL1[x][y])>>3
-变量sGx2、sGy2、sGxGy、sGxdI和sGydI的推导如下:
sGx2=∑xy
(tempX[xSb+x][ySb+y]*tempX[xSb+x][ySb+y]),其中x,y=-1..4
sGy2=∑xy
(tempY[xSb+x][ySb+y]*tempY[xSb+x][ySb+y]),其中x,y=-1..4
sGxGy=∑xy
(tempX[xSb+x][ySb+y]*tempY[xSb+x][ySb+y]),其中x,y=-1..4
sGxdI=∑xy(-
tempX[xSb+x][ySb+y]*temp[xSb+x][ySb+y]),其中x,y=-1..4
sGydI=∑xy(-
tempY[xSb+x][ySb+y]*temp[xSb+x][ySb+y]),其中x,y=-1..4
-当前子块的水平和垂直运动细化推导为:
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<<bitDepth)-1,(predSamplesL0[x+1][y+1]
+predSamplesL1[x+1][y+1]+sampleEnh+offset2)>>shift2)
2.2.10.解码器侧运动矢量细化
DMVR是一种解码器侧运动矢量推导(DMVD)
在双向预测操作中,对于一个块区域的预测,分别使用列表0的运动矢量(MV)和列表1的MV形成的两个预测块被组合以形成单个预测信号。在解码器侧运动矢量细化(DMVR)方法中,通过双边模板匹配过程进一步细化双向预测的两个运动矢量。在解码器中应用的双边模板匹配在双边模板和参考图片中的重建样本之间执行基于失真的搜索,以便在不传输额外运动信息的情况下获得细化的MV。
在DMVR中,如图24所示,分别从列表0的初始MV0和列表1的MV1生成双边模板作为两个预测块的加权组合(即,平均值)。模板匹配操作包括计算生成的模板和参考图片中的样本区域(围绕初始预测块)之间的成本度量。对于两个参考图片中的每一个,产生最小模板成本的MV被认为是该列表的更新MV,以替换原始MV。在JEM中,为每个列表搜索九个MV候选。九个候选MV包括原始MV和8个周围MV,其中一个亮度样本在水平或垂直方向或两者上偏移到原始MV。最后,如图24所示的两个新MV,即MV0′和MV1′,用于生成最终的双向预测结果。绝对差之和(SAD)被用作成本度量。请注意,在计算由一个周围MV生成的预测块的成本时,实际上使用四舍五入的MV(到整数像素)而不是真正的MV来获得预测块。
DMVR被应用于双向预测的Merge模式,其中一个MV来自过去的参考图片,另一个来自未来的参考图片,而不传输额外的语法元素。在JEM中,当为CU启用LIC、仿射运动、FRUC或子CU Merge候选时,不应用DMVR。
图24示出了所提出的基于双边模板匹配的DMVR的示例。
2.2.11.JVET-N0236
这一贡献提出了一种利用光流来细化基于子块的仿射运动补偿预测的方法。在执行基于子块的仿射运动补偿之后,通过添加由光流方程推导的差来细化预测样本,这被称为光流预测细化(PROF)。该方法可以在不增加内存访问带宽的情况下实现像素级别粒度的帧间预测。
为了获得更精细的运动补偿粒度,该贡献提出了一种利用光流细化基于子块的仿射运动补偿预测的方法。在执行基于子块的仿射运动补偿之后,通过添加由光流方程推导的差来细化亮度预测样本。所提出的PROF(利用光流的预测细化)被描述为以下四个步骤。
步骤1)执行基于子块的仿射运动补偿以生成子块预测。
步骤2)使用3抽头滤波器[-1,0,1]在每个样本位置计算子块预测的空间梯度gx(i,j)和gy(i,j)。
gx(i,j)=I(i+1,j)-I(i-1,j)
gy(i,j)=/(i,j+1)-I(i,j-1)
子块预测在每一侧扩展一个像素用于梯度计算。为了减少存储器带宽和复杂度,扩展边界上的像素从参考图片中最近的整数像素位置复制。因此,避免了对填充区域的额外插值。
步骤3)通过光流方程计算亮度预测细化。
ΔI(i,j)=gx(i,j)*Δvx(i,j)+gy(i,j)*Δvy(i,j)
其中,如图25所示,Δv(i,j)是为样本位置(i,j)计算的像素MV(表示为v(i,j))与像素(i,j)所属的子块的子块MV之间的差。
图25示出了子块MV VSB和像素Δv(i,j)的示例(箭头2502)。
因为仿射模型参数和相对于子块中心的像素位置不会在子块之间改变,所以可以为第一子块计算Δv(i,j),并将其重新用于同一CU中的其他子块。设x和y是从像素位置到子块中心的水平和垂直偏移,Δv(x,y)可以通过以下等式推导,
Figure BDA0003988538830000351
对于四参数仿射模型,
Figure BDA0003988538830000352
对于6参数仿射模型,
Figure BDA0003988538830000353
其中(v0x,v0y)、(v1x,v1y)、(v2x,v2y)是左上角、右上角和左下角的控制点运动矢量,w和h是CU的宽度和高度。
步骤4)最后,将亮度预测细化添加到子块预测I(i,j)中。如下等式生成最终预测I’。
I'(i,J)=I(i,j)+ΔI(i,j)
2.2.12.JVET-N0510
相变仿射子块运动补偿(PAMC)
为了更好地近似仿射子块中的仿射运动模型,将相变MC应用于子块。在所提出的方法中,仿射编解码块也被分成4×4子块,并且如在VTM4.0中所做的那样,为每个子块推导子块MV。每个子块的MC被分成两个阶段。第一阶段是用(4+L-1)行水平滤波对(4+L-1)×(4+L-1)参考块窗口进行滤波,其中L是插值滤波器的滤波器抽头长度。然而,与平移MC不同,在所提出的相变仿射子块MC中,每个样本行的滤波相位是不同的。对于每个样本行,MVx推导如下。
MVx=(subblockMVx<<7+dMvVerX×(rowIdx-L/2–2))>>7(等式1)
每个样本行的滤波相位是从MVx推导的。subblockMVx是推导的子块MV的MV的x分量,如VTM4.0中所做的那样。rowIdx是样本行索引。dMvVerX是(cuBottomLeftCPMVx-cuTopLeftCPMVx)<<(7-log2LumaCbHeight),其中cuBottomLeftCPMVx是CU左下控制点MV的x分量,cuTopLeftCPMVx是CU左上控制点MV的x分量,LumaCbHeight是亮度编解码块(CB)的高度的log2。
水平滤波后,生成4×(4+L-1)水平滤波样本。图1示出了所提出的水平滤波的概念。灰色点是参考块窗口的样本,橙色点表示水平滤波的样本。8×1样本的蓝色管表示应用一次8抽头水平滤波,如图26和图27所示。每个样本行需要四次水平滤波。样本行上的滤波相位是相同的。但是,不同行上的滤波相位是不同的。生成倾斜的4×11样本。
在第二阶段,4×(4+L-1)水平滤波的样本(图1中的橙色样本)被进一步垂直滤波。对于每个样本列,MVy推导如下。
MVy=(subblockMVy<<7+dMvHorY×(columnIdx-2))>>7(等式2)
每个样本列的滤波相位是从MVy推导的。subblockMVy是推导的子块MV的MV的y分量,如VTM4.0中所做的那样。columnIdx是样本列索引。dMvHorY是(cuTopRightCPMVy–cuTopLeftCPMVy)<<(7–log2LumaCbWidth),其中cuTopRightCPMVy是CU右上控制点MV的y分量,cuTopLeftCPMVy是CU左上控制点MV的y分量,log2LumaCbWidth是亮度CB的宽度的log2。
垂直滤波后,生成4×4仿射子块预测样本。图28示出了所提出的垂直滤波的概念。浅橙色点是来自第一阶段的水平滤波样本。红点是作为最终预测样本的垂直滤波样本。
在本方案中,使用的插值滤波器集与VTM4.0中的相同。唯一的区别是一个样本行上的水平滤波相位不同,且一个样本列上的垂直滤波相位不同。至于所提出方法中每个仿射子块的滤波操作次数,与VTM4.0中的相同。
2.2.13.JVET-K0102交织预测
如图29所示的交织预测被提出来以实现更精细粒度的MV,而不会过多地增加复杂度。
首先,将编码块划分为具有两种不同划分样式的子块。第一划分样式与VTM中的划分样式相同,如图31所示的样式0,而第二划分样式也将编解码块划分成4*4子块,但具有2*2偏移,如图32所示的样式1。
其次,AMC利用这两种划分样式生成两个辅助预测。通过仿射模型从CPMV推导划分样式中每个子块的MV。
最终预测被计算为两个辅助预测的加权和,公式为:
Figure BDA0003988538830000371
如图30所示,位于子块中心的辅助预测样点与加权值3相关联,而位于子块边界的辅助预测样点与加权值1相关联。
图29示出了交织预测过程的示例。
图30示出了子块中的加权值的示例。
3.公开的技术解决方案所解决的技术问题
1.在JVET-N0236中,光流用于仿射预测,但远非最佳。
2.当应用交织预测时,所需带宽可能会增加。
3.对于仿射模式,如何对具有4x4子块的色度分量应用运动补偿仍然是一个开放的问题。
4.交织仿射预测增加了高速缓存带宽需求。对于交织仿射预测中样式1的AMC,需要从高速缓存缓冲区中提取参考样本行,从而导致更高的高速缓存带宽。
4.示例解决方案和实施例
为了解决这些问题,我们提出了不同的形式来推导具有光流的细化预测样本。此外,我们建议使用相邻(例如,邻近(adjacent)或非邻近)块的信息(诸如重建样本或运动信息),和/或一个子块/块的梯度和该子块/块的预测块来获得当前子块/块的最终预测块。
以下项目应被视为解释一般概念的示例。不应以狭义的方式解释这些项目。此外,这些项目可以以任何方式组合。
由Ref0和Ref1分别表示来自列表0和列表1的当前图片的参考图片,表示τ0=POC(current)-POC(Ref0),τ1=POC(Ref1)-POC(current),由refblk0和refblk1分别表示来自Ref0和Ref1的当前块的参考块。对于当前块中的子块,其在refblk0中指向refblk1的对应参考子块的MV由(vx,vy)表示。参考Ref0和Ref1的当前子块的MV分别由(mvL0x,mvL0y)和(mvL1x,mvL1y)表示。
在下面的讨论中,SatShift(x,n)被定义为
Figure BDA0003988538830000381
Shift(x,n)被定义为Shift(x,n)=(x+offset0)>>n。
在一个示例中,offset0和/或offset1被设置为(1<<n)>>1或(1<<(n-1))。在另一示例中,offset0和/或offset1被设置为0。
在另一个示例中,offset0=offset1=((1<<n)>>1)-1或((1<<(n-1)))-1。
Clip3(min,max,x)被定义为
Figure BDA0003988538830000382
在下面的讨论中,两个运动矢量之间的操作意味着该操作将被应用于运动矢量的两个分量。例如,MV3=MV1+MV2相当于MV3x=MV1x+MV2x和MV3y=MV1y+MV2y。或者,该操作可以仅应用于两个运动矢量的水平或垂直分量。
在下面的讨论中,如图2所示,左相邻块、左下相邻块、上相邻块、右上相邻块和左上相邻块被表示为块A1、A0、B1、B0和B2
仿射模式的交织预测中高速缓存带宽的约束的示例
样式0中的子块的MC的参考样本行可以在样式1中的空间相邻子块的MC中重用。例如,如图39A所示,样式0中的子块(具有淡黄色)及其在样式1中的对应的子块(具有淡蓝色)。在建议的高速缓存带宽限制下,如图39B所示,从样式0中的子块的高速缓存缓冲器中提取的参考样本的行数(由N表示)为:
Figure BDA0003988538830000383
其中numfilter_tap表示诸如6、7或8的滤波器抽头的数量,并且Margin是诸如0或1的预设非负数。
为了确保样式1中对应子块所需的参考样本行在样式1中子块所需的N行之内,样式1中子块的MV_y受到限制。当样式1中子块的MV_y超出限制时,不使用交织仿射预测。
如图40所示,在仿射模式的交织预测中,A0、A1、A2、A3表示样式0的子块行,B0、B1、B2、B3、B4表示样式1的子块行。
对于B0子块行,如果MVy(A0)-MVy(B0)>Margin,不使用仿射模式的交织预测;
对于B4子块行,如果MVy(B4)-MVy(A3)>Margin,不使用仿射模式的交织预测;
对于B1、B2、B3子块行,样式0中的哪个子块行与它们共享高速缓存缓冲行由仿射模型决定。以B1子块行为例,如果ΔMVy=MVy(B1)-MVy(A0)>0,则B1行中的子块的预测样本比A0子块行更接近A1子块行。我们可以使用仿射模型来计算ΔMVy:ΔMVy=dΔx+eΔy.这里,我们设置
Figure BDA0003988538830000391
Figure BDA0003988538830000392
其中subblock_width和subblock_height表示子块的宽度和高度。当ΔMVy>0&&MVy(A1)-MVy(B1)>Margin或ΔMVy≤0&&MVy(B1)-MVy(A0)>Margin时,不使用仿射模式的交织预测。并且B2和B3子块行是相似的。
在上面的描述中,MVy(Ax)表示模式0中子块的运动矢量的垂直分量,并且MVy(Bx)表示模式1中对应子块的运动矢量的垂直分量。
1.建议可以在子块级别处推导梯度(例如,G(x,y)),其中子块内的所有样本被分配有相同的梯度值。
a.在一个示例中,一个子块内的所有样本共享相同的运动位移和梯度信息。从而可以在子块级别执行细化。对于子块(xs,ys),仅推导一个细化为(Vx(xs,ys)×Gx(xs,ys)+Vy(xs,ys)×Gy(xs,ys))。
i.此外,替代地,运动位移V(x,y)在诸如2x2或4x1的子块级别推导。
b.例如,子块可以被定义为不同的形状,诸如2x2、2x1或4x1。
c.例如,子块的梯度可以使用其子块或子块内的部分样本的平均样本值来计算。
d.例如,子块的梯度Gx(xs,ys)可以被计算为每个样本的梯度的平均值或来自子块内的部分样本的梯度的平均值。
e.在一个示例中,子块大小可以是预定义的或根据经解码信息(例如,根据块大小)动态推导。
i.替代地,子块大小的指示可以在比特流中信令通知。
f.在一个示例中,用于梯度计算的子块大小和用于运动矢量/运动矢量差的子块大小可以相同。
i.替代地,用于梯度计算的子块大小可以小于用于运动矢量/运动矢量差的块大小。
ii.替代地,用于梯度计算的子块大小可以大于用于运动矢量/运动矢量差的块大小。
2.代替对每个参考图片列表执行PROF,可以在执行双向预测之后应用PROF(或依赖于光流信息的其他预测细化编解码方法)以降低复杂度。
a.在一个示例中,可以首先生成(例如,利用平均/加权平均)根据至少两个经解码运动信息集合的临时预测信号,并且根据生成的临时预测信号进一步应用细化。
i.在一个示例中,从所生成的临时预测信号推导梯度计算。
b.在一个示例中,假设来自位于(x,y)的样本的两个参考列表的两个预测子分别表示为P0(x,y)和P1(x,y)。来自两个列表的光流分别表示为V0(x,y)和V1(x,y)。中间双向预测Pb(x,y)推导为,
Pb(x,y)=α×P0(x,y)+β×P1(x,y)+o
其中α和β是两个预测子的加权因子,o是偏移。空间梯度可以使用Pb(x,y)推导。最终的双向预测推导为,
P’(x,y)=Pb(x,y)+Gx(x,y)×(α×V0 x(x,y)+β×V1 x(x,y))+Gy(x,y)×(α×V0 y(x,y)+β×V1 y(x,y))
3.建议是否应用与块的仿射预测相关的编解码工具可以通过是否满足条件来确定,其中该条件取决于经编解码信息,诸如块的CPMV和/或块或子块的宽度,和/或块或子块的高度,和/或为一个或多个子块推导的一个或多个MV,和/或块是双向预测的或单向预测的。在下面的讨论中,块的宽度和高度分别由W和H表示。
a.该块可以以仿射Merge模式、仿射帧间模式、仿射跳过模式、具有运动矢量差的仿射Merge模式(仿射MMVD,又称仿射UMVE)或使用仿射预测的任何其他模式中的至少一种来编解码。
b.在一个示例中,编解码工具可以是仿射预测
c.在一个示例中,编解码工具可以是交织预测。
d.在一个示例中,要求如果不满足条件,则编解码工具不能应用于一致性比特流中的块。
i.替代地,当不满足条件时,可以使用另一个编解码工具来替换该编解码工具。
(i)在一个示例中,仅当以仿射Merge模式对当前块进行编解码时才应用上述方法。
e.在一个示例中,如果不满足条件,则在编码器处以及在解码器处的块中关闭该编解码工具。
i.在一个示例中,如果不满足条件,则不信令通知指示是否在块中应用该编解码工具的语法元素。
(i)当没有信令通知语法元素时,该编解码工具被推断为关闭。
f.在一个示例中,该编解码工具是仿射预测,并且当不满足条件时应用正常(非仿射)预测。
i.在一个示例中,一个或多个CPMV可以用作当前块的运动矢量,而不应用仿射运动模型。
g.在一个示例中,该编解码工具是交织预测,如果不满足条件,则应用正常仿射预测(没有交织预测)。
i.在一个示例中,当条件未满足时,将交织预测中的第二划分样式的预测样本设置为等于对应位置处的第一划分样式的预测样本。
h.在一个示例中,边界矩形(或即边界框)是基于信息推导的矩形。条件取决于边界矩形来确定。例如,边界框或边界矩形可以表示包括当前块和/或当前块的预测块的整体的最小矩形或样本框。替代地,边界框或边界矩形可以是包括整个当前块和/或当前块的预测块的整体的任何样本矩形或正方形。
i.例如,如果边界框的大小(表示为S)小于(或不大于)阈值(表示为T),则条件为真,如果S不小于(或大于)T,则条件为假。
ii.例如,如果边界框的大小(表示为S)小于(或不大于)阈值(表示为T),则条件为假,如果S不小于(或大于)T,则条件为真。
iii.例如,如果f(S)小于(或不大于)T,则条件为真,如果S不小于(或大于)T,则条件为假,其中f(S)是S的函数。
iv.例如,如果f(S)小于(或不大于)T,则条件为假,如果S不小于(或大于)T,则条件为真,其中f(S)是S的函数。
v.在一个示例中,T取决于块是双向预测的还是单向预测的。
vi.在一个示例中,f(S)=(S<<p)>>(Lw+Lh),例如p=7,Lw=log2(W)和Lh=log2(H)。
(i)替代地,f(S)=(S*p)/(W*H),例如p=128。
(ii)替代地,f(S)=S*p,例如,P=16*4,或P=4*4,或P=8*8。
vii.在一个示例中,T等于T’。
viii.在一个示例中,T等于k*T’,例如k=2。
ix.在一个示例中,当块被双向预测时,T等于T’,当块被单向预测时,T等于2*T’。
x.在一个示例中,T’=((Pw+offsetW)*(Ph+offsetH)<<p)>>
(Log2(Pw)+Log2(Ph)),例如p=7。
(i)或者,T=((Pw+offsetW)*(Ph+offsetH)*p)/(Pw*Ph),例如,p=128。
(ii)替代地,T=(Pw+offsetW)*(Ph+offsetH)*W*H。
(iii)例如,Pw=16,Ph=4,offsetW=offsetH=7。
(iv)例如,Pw=4,Ph=16,offsetW=offsetH=7。
(v)例如,Pw=4,Ph=4,offsetW=offsetH=7。
(vi)例如,Pw=8,Ph=8,offsetW=offsetH=7。
xi.由BL表示的边界矩形的左边界可以推导为
BL=min{x0+MV0 x,x1+MV1 x,…,xN1-1+MVN1-1 x}+offsetBL,
其中xk(k=0,1,…N1-1)是子块(表示为子块k)的左上角的水平坐标,MVk x是子块k的MV的水平分量,offsetBL是偏移,例如offsetBL=0。
xii.由BR表示的边界矩形的右边界可以推导为
BR=max{x0+MV0 x,x1+MV1 x,…,xN2-1+MVN2-1 x}+offsetBR,
其中xk(k=0,1,…N2-1)是子块(表示为子块k)的右下角的水平坐标,MVk x是子块k的MV的水平分量,offsetBR是偏移,例如offsetBR=0。
xiii.由BT表示的边界矩形的顶部边界可以推导为
BT=min{y0+MV0 y,y1+MV1 y,…,yN3-1+MVN3-1 y}+offsetBT,
其中yk(k=0,1,…N3-1)是子块(表示为子块k)的左上角的垂直坐标,MVk y是子块k的MV的垂直分量,offsetBT是偏移,例如offsetBT=0。
xiv.由BB表示的边界矩形的底部边界可以推导为
BB=max{y0+MV0 y,y1+MV1 y,…,yN4-1+MVN4-1 y}+offsetBB,
其中xk(k=0,1,…N4-1)是子块(表示为子块k)的右下角的垂直坐标,MVk y是子块k的MV的水平分量,offsetBB是偏移,例如offsetBB=0。
xv.边界框的大小推导为(BR-BL+IntW)*(BB-BT+IntH),例如IntW=IntH=7。
xvi.用于推导边界框的子块可以以交织预测指定的任何样式从块中拆分。
xvii.用于推导BL的N1个子块可以包括使用仿射的原始划分模式从块中划分的四个角子块。
xviii.用于推导BR的N2个子块可以包括使用仿射的原始划分模式从块中划分的四个角子块。
xix.用于推导BT的N3个子块可以包括使用仿射的原始划分模式从块中划分的四个角子块。
xx.用于推导BB的N4个子块可以包括使用仿射的原始划分模式从块中划分的四个角子块。
xxi.用于推导BL的N1个子块可以包括使用由交织预测定义的第二划分模式从块中划分的四个角子块。
xxii.用于推导BR的N2个子块可以包括使用由交织预测定义的第二划分模式从块中划分的四个角子块。
xxiii.用于推导BT的N3个子块可以包括使用由交织预测定义的第二划分模式从块中划分的四个角子块。
xxiv.用于推导BB的N4个子块可以包括使用由交织预测定义的第二划分模式从块中划分的四个角子块。
xxv.可以进一步裁剪BL、BR、BT、BB中的至少一个。
(i)BL和BR被裁剪到[startX,endX]的范围内,其中startX和endX可以被定义为包含当前块的图片/片/条带/块内的左上样本和右上样本的X坐标。
a.在一个示例中,startX是0,并且endX是(picW-1),其中picW表示亮度样本中的图片宽度。
(ii)BT和BB被裁剪到[startY,endY]的范围内,其中Y可以被定义为包含当前块的图片/片/条带/块内的左上样本和右上样本的X坐标。
a.在一个示例中,startY是0,并且endY是(picH-1),其中picH表示亮度样本中的图片高度。
xxvi.在子块的MV被用于推导BL和/或BR和/或BT和/或BB之前,子块的MV可以被四舍五入或裁剪到整数精度。
(i)例如,MVk x在用于推导BL和/或BR和/或BT和/或BB之前被重新计算为(MVk x+offset)>>P。
(ii)例如,MVk y在用于推导BL和/或BR和/或BT和/或BB之前被重新计算为(MVk y+offset)>>P。
(iii)例如,偏移=0,p=4。
i.在一个示例中,根据子块的MVxs和MVys来确定条件。
i.在一个示例中,如果第一划分样式中的一个子块的MVx减去MVxs大于(或不小于)阈值(表示为T)则条件为真
ii.在一个示例中,如果MVxs减去第一划分样式中的一个子块的MVx大于(或不小于)阈值(表示为T)则条件为真
iii.在一个示例中,如果第一划分样式中的一个子块的MVy减去MVys大于(或不小于)阈值(表示为T)则条件为真
iv.在一个示例中,如果MVys减去第一划分样式中的一个子块的MVy大于(或不小于)阈值(表示为T)则条件为真
4.是否和/或如何对子块索引(xSbIdx,ySbIdx)处的子块应用运动补偿可取决于仿射模式指示、颜色分量和颜色格式。在以下示例中,当当前块未以仿射模式编码时,MotionModelIdc[xCb][yCb]等于0,当当前块以仿射模式编码时,MotionModelIdc[xCb][yCb]大于0。SubWidthC和SubHeightC是根据颜色格式定义的。例如,SubWidthC和SubHeightC在JVET-R2001中定义如下:
Figure BDA0003988538830000441
Figure BDA0003988538830000451
a.是否单独对在子块索引(xSbIdx,ySbIdx)处的子块应用运动补偿可以取决于仿射模式指示、颜色分量和颜色格式。
i.例如,当颜色分量不是亮度时(在JVET-R2001中颜色分量ID不等于0),如果当前块未以仿射模式编码(MotionModelIdc[xCb][yCb]
在JVET-R2001中等于0),或者xSbIdx%SubWidthC和ySbIdx%SubHeightC都等于0,则对子块索引(xSbIdx,ySbIdx)处的子块单独应用运动补偿。
b.在子块索引(xSbIdx,ySbIdx)处进行运动补偿的色度子块的宽度和/或高度(表示为cW和/或cH)可以取决于仿射模式指示和颜色格式。
i.例如,cW=MotionModelIdc[xCb][yCb]?sbWidth:sbWidth/SubWidthC,其中sbWidth是亮度子块的宽度。例如,sbWidth等于4。
ii.例如,cH=MotionModelIdc[xCb][yCb]?sbHeight:sbHeight/SubHeightC,其中sbHeight是亮度子块的高度。例如,sbHeight等于4。
5.是否和/或如何对子块索引(xSbIdx,ySbIdx)处的子块应用加权预测可以取决于仿射模式指示、颜色分量和颜色格式。在以下示例中,当当前块未以仿射模式编码时,MotionModelIdc[xCb][yCb]等于0,当当前块以仿射模式编码时,MotionModelIdc[xCb][yCb]大于0。SubWidthC和SubHeightC是根据颜色格式定义的。例如,SubWidthC和SubHeightC在JVET-R2001中定义如下:
Figure BDA0003988538830000452
Figure BDA0003988538830000461
a.是否单独对在子块索引(xSbIdx,ySbIdx)处的子块应用加权预测可以取决于仿射模式指示、颜色分量和颜色格式。
i.例如,当颜色分量不是亮度时(在JVET-R2001中颜色分量ID不等于0),如果当前块未以仿射模式编码(MotionModelIdc[xCb][yCb]在JVET-R2001中等于0),或者xSbIdx%SubWidthC和ySbIdx%SubHeightC都等于0,则对子块索引(xSbIdx,ySbIdx)处的子块单独应用加权预测。
b.在子块索引(xSbIdx,ySbIdx)处进行加权预测的色度子块的宽度和/或高度(表示为cW和/或cH)可以取决于仿射模式指示和颜色格式。
i.例如,cW=
MotionModelIdc[xCb][yCb]?sbWidth:sbWidth/SubWidthC,其中sbWidth是亮度子块的宽度。例如,sbWidth等于4。
ii.例如,cH=MotionModelIdc[xCb][yCb]?sbHeight:sbHeight/SubHeightC,其中sbHeight是亮度子块的高度。例如,sbHeight等于4。
6.MotionModelIdc[x][y]的推导可以取决于或以inter_affine_flag[x0][y0]和/或sps_6param_affine_enabled_flag为条件。
a.在一个示例中,当inter_affine_flag[x0][y0]等于0时,MotionModelIdc[x][y]被设置为等于0。
b.在一个示例中,当sps_6param_affine_enabled_flag等于0时,MotionModelIdc[x]y]被设置为等于0。
c.例如,MotionModelIdc[x][y]=inter_affine_flag[x0][y0]?(1+(sps_6param_affine_enabled_flag?cu_affine_type_flag[x0][y0]:0):0
6.建议是否应用交织预测可以取决于模式1的子块(表示为SB1)的MV(表示为SBMV1)和模式0的子块(表示为SB0)的MV(表示为SBMV0)之间的关系。在下面的讨论中,假设仿射模型被定义为
Figure BDA0003988538830000471
以推导(xPos,yPos)处的MV。
a.给定SB1,可以从与SB1重叠的模式0中的一个子块中选择SB0。
i.选择可以取决于仿射参数。
ii.例如,如果满足条件A,则SB0的中心在SB1的中心的上方。如果满足条件B,则SB0的中心低于SB1的中心
(i)例如,条件A是SB1在最后一行。
(ii)例如,条件B是SB1在第一行。
(iii)例如,条件B是(mv0_y>0和mv1_y>0)或(mv0_y>0和mv1_y<0和|mv0_y|>|mv1_y|)或(mv0_y<0和mv1_y>0和|mv0_y|<|mv1_y|)。
(iv)例如,当不满足条件B时,满足条件A。
其中
Figure BDA0003988538830000472
iii.例如,如果满足条件C,则SB0的中心在SB1的中心左侧。如果满足条件D,则SB0的中心在SB1的中心右侧
(i)例如,条件C是SB1在最右边一行。
(ii)例如,条件D是SB1在最左边一行。
(iii)例如,条件D是(mv0_x>0和mv1_x>0)或(mv0_x>0和mv1_x<0和|mv0_x|>|mv1_x|)或(mv0_x<0和mv1_x>0和|mv0_x|<|mv1_x|)
(iv)例如,当不满足条件D时,满足条件C。
其中
如果SB0的中心在SB1的中心的上方
Figure BDA0003988538830000473
·否则
Figure BDA0003988538830000481
b.如果SB0的中心在SB1的中心左侧,则align_left等于1;否则,它等于0。如果SB0的中心在SB1的中心的上方,则align_top等于1;否则,它等于0。然后SB0的选择基于align_left和align_top,如图41所示。
c.如果SB0和SB1中的MV的关系满足条件E,则禁用交织预测。
i.条件E可取决于align_left和/或align_top。
ii.如果align_left等于1,则满足条件E的条件是(SBMV1x>>N)-(SBMV0x>>N)>HMargin1。
iii.如果align_left等于1,则满足条件E的条件是(SBMV0x>>N)-(SBMV1x>>N)>HMargin2。
iv.如果align_left等于0,则满足条件E的条件是(SBMV0x>>N)-(SBMV1x>>N)>HMargin3。
v.如果align_left等于0,则满足条件E的条件是(SBMV1x>>N)-(SBMV0x>>N)>HMargin4。
vi.如果align_top等于1,则满足条件E的条件是(SBMV1y>>N)-(SBMV0y>>N)>VMargin1。
vii.如果align_top等于1,则满足条件E的条件是(SBMV0y>>N)-(SBMV1y>>N)>VMargin2。
viii.如果align_top等于0,则满足条件E的条件是(SBMV0x>>N)-(SBMV1y>>N)>VMargin3。
ix.如果align_top等于0,则满足条件E的条件是(SBMV1y>>N)-(SBMV0y>>N)>VMargin4。
x.N代表MV精度,例如N=2或4。
xi.HMargin1~HMargin4和VMargin1~VMargin4是整数,它们可能取决于编解码信息,诸如块大小或块是双向预测还是单向预测。
(i)如果块是双向预测的,则HMargin1=HMargion3=6,HMargin2=HMargion4=8+6。
(ii)如果块是单向预测的,则HMargin1=HMargion3=4,HMargin2=HMargion4=8+4。
(iii)如果块是双向预测的,则VMargin1=VMargion3=4,HMargin2=HMargion4=8+4。
(iv)如果块是单向预测的,则HMargin1=HMargion3=1,HMargin2=HMargion4=8+1。
(v)如果块大小为8x8,则HMargin1=HMargion3=6,HMargin2=HMargion4=8+6。
(vi)如果块大小为4x4,则HMargin1=HMargion3=4,HMargin2=HMargion4=8+4。
(vii)如果块大小为8x8,则VMargin1=VMargion3=4,HMargin2=HMargion4=8+4。
(viii)如果块大小为4x4,则HMargin1=HMargion3=1,
HMargin2=HMargion4=8+1。
5.实施例
在本专利申请中,文本的删除由左右双括号(例如[[]])表示,删除的文本位于左右双括号之间;新添加的文本用粗斜体文本表示。
5.1实施例1:通过禁用交织仿射来限制带宽
图31和图32示出了交织预测中的两个划分样式。假设mvA0、mvB0、mvC0和mvD0表示划分样式0中的子块A、B、C和D的运动矢量;mvA1、mvB1、mvC1和mvD1表示划分样式1中的子块A、B、C和D的运动矢量。假设划分样式0中每个子块的宽度和高度为subwith和subheihgt。统一预提取整数样本数(UPISN)推导如下:
1)
Figure BDA0003988538830000491
2)
Figure BDA0003988538830000492
3)
Figure BDA0003988538830000501
对于具有交织预测的单向预测,如果sampNum大于129536,则划分样式1的预测样本被设置为等于划分模式0的预测样本。
对于利用交织预测的双向预测,
针对列表0的MV推导sampNum0,如果sampNum0大于64768,则将列表0的划分样式1的预测样本设置为等于划分样式0的预测样本。
针对列表1的MV推导sampNum1,如果sampNum1大于64768,则将列表1的划分样式1的预测样本设置为等于划分样式0的预测样本。
5.2.实施例2:通过禁用仿射来限制带宽
sampNum、sampNum0、sampNum1以与实施例1相同的方式推导。
要求在一致性比特流中,
对于利用交织预测的单向预测,sampNum应小于或等于129536。
对于利用交织预测的双向预测,sampNum0和sampNum1应小于或等于64768。
5.3.实施例3:仿射模式下色度分量的运动补偿
这些更改基于JVET-R2001-v10
8.5.6帧间块解码过程
8.5.6.1概述
对于子块索引(xSbIdx,ySbIdx)处的每个编解码子块,其中xSbIdx=0..numSbX-1,ySbIdx=0..numSbY-1,以下内容适用:
–亮度位置(xSb,ySb),指定相对于当前图片的左上亮度样本的当前编解码子块的左上样本,推导如下:
(xSb,ySb)=(xCb+xSbIdx*sbWidth,yCb+ySbIdx*sbHeight)(923)
–对于分别为0和1的X,当predFlagLX[xSbIdx][ySbIdx]等于1时,以下内容适用:
–由亮度样本的有序二维数组refPicLXL和色度样本的两个有序二维数组refPicLXCb和refPicLXCr组成的参考图片是通过调用条款8.5.6.2中指定的过程推导的,其中X和refIdxLX作为输入。
–运动矢量偏移mvOffset被设置为等于refMvLX[xSbIdx][xSbIdx]-mvLX[xSbIdx][ySbIdx]。
–如果cIdx等于0,则以下内容适用:
–数组predSamplesLXL是通过调用条款8.5.6.3中指定的分数样本插值过程推导的,其中亮度位置(xSb,ySb)、编解码子块宽度sbWidth、亮度样本中的编解码子块高度sbHeight、亮度运动矢量偏移mvOffset、细化亮度运动矢量refMvLX[xSbIdx][xSbIdx]、参考数组refPicLXL、bdofFlag、dmvrFlag、hpelIfIdx、cIdx、RprConstraintsActive[X][refIdxLX]和RefPicScale[X][refIdxLX]作为输入。
–当cbProfFlagLX等于1时,调用条款8.5.6.4中指定的采用光流的预测细化过程,其中sbWidth、sbHeight、(sbWidth+2)x(sbHeight+2)数组predSamplesLXL和运动矢量差数组diffMvLX[xIdx][yIdx](其中xIdx=0..cbWidth/numSbX-1,yIdx=0..cbHeight/numSbY-1)作为输入,并且细化的(sbWidth)x(sbHeight)数组predSamplesLXL作为输出。
Figure BDA0003988538830000521
–[[否则,如果]]
Figure BDA0003988538830000522
cIdx等于1,则以下内容适用:
–数组predSamplesLXCb是通过调用条款8.5.6.3中指定的分数样本插值过程推导的,其中亮度位置(xSb,ySb)、编解码子块宽度
Figure BDA0003988538830000523
sbWidth/SubWidthC、编解码子块高度
Figure BDA0003988538830000524
sbHeight/SubHeightC、色度运动矢量偏移mvOffset、细化色度运动矢量refMvLX[xSbIdx][ySbIdx]、参考数组refPicLXCb、bdofFlag、dmvrFlag、hpelIfIdx、cIdx、RprConstraintsActive[X][refIdxLX]和RefPicScale[X][refIdxLX]作为输入。
–否则(cIdx等于2),则以下内容适用:
–数组predSamplesLXCr是通过调用条款8.5.6.3中指定的分数样本插值过程推导的,其中亮度位置(xSb,ySb)、编解码子块宽度
Figure BDA0003988538830000525
sbWidth/SubWidthC、编解码子块高度
Figure BDA0003988538830000526
sbHeight/SubHeightC、色度运动矢量偏移mvOffset、细化色度运动矢量refMvLX[xSbIdx][xSbIdx]、参考数组refPicLXCr、bdofFlag、dmvrFlag、hpelIfIdx、cIdx、RprConstraintsActive[X][refIdxLX]和RefPicScale[X][refIdxLX]作为输入。
…[标准文本续]
5.4.实施例4:仿射模式下色度分量的运动补偿
8.5.6帧间块解码过程
8.5.6.1概述
当对以帧间预测模式编解码的编解码单元进行解码时,调用该过程。
该过程的输入是:
–亮度位置(xCb,yCb),指定相对于当前图片的左上亮度样本的当前编解码块的左上样本,
–变量cbWidth,指定亮度样点中的当前编码解块的宽度,
–变量cbHeight,指定亮度样点中的当前编解码块的高度,
–变量numSbX和numSbY,指定水平和垂直方向上的亮度编解码子块的数量,
–运动矢量mvL0[xSbIdx][ySbIdx]和mvL1[xSbIdx][ySbIdx],其中xSbIdx=0..numSbX-1,ySbIdx=0..numSbY-1,
–细化运动矢量refMvL0[xSbIdx][ySbIdx]和refMvL1[xSbIdx][ySbIdx],其中xSbIdx=0..numSbX-1,ySbIdx=0..numSbY-1,
–参考索引refIdxL0和refIdxL1,
–预测列表利用标志predFlagL0[xSbIdx][ySbIdx]和predFlagL1[xSbIdx][ySbIdx],其中xSbIdx=0..numSbX-1,ySbIdx=0..numSbY-1,
–半样本插值滤波器索引hpelIfIdx,
–双向预测权重索引bcwIdx,
–解码器侧运动矢量细化过程中绝对差值的最小和dmvrSad[xSbIdx][ySbIdx],其中xSbIdx=0..numSbX-1,ySbIdx=0..numSbY-1,
–解码器侧运动矢量细化标志dmvrFlag,
–变量cIdx,指定当前块的颜色分量索引,
–预测细化利用标志cbProfFlagL0和cbProfFlagL1,
–运动矢量差数组diffMvL0[xIdx][yIdx]和diffMvL1[xIdx][yIdx],其中xIdx=0..cbWidth/numSbX-1,yIdx=0..cbHeight/numSbY-1。
该过程的输出是:
–预测样本的数组predSamples。
设predSamplesL0L、predSamplesL1L和predSamplesIntraL是预测亮度样本值的(cbWidth)x(cbHeight)数组,并且设predSamplesL0Cb、predSamplesL1Cb、predSamplesL0Cr和predSamplesL1Cr、predSamplesIntraCb和predSamplesIntraCr是预测色度样本值的(cbWidth/SubWidthC)x(cbHeight/SubHeightC)数组。
–变量currPic指定当前图片,变量bdofFlag的推导如下:
–如果以下所有条件都为真,则bdofFlag被设置为等于TRUE。
–ph_bdof_disabled_flag等于0。
–predFlagL0[xSbIdx][ySbIdx]和predFlagL1[xSbIdx][ySbIdx]都等于1。
–DiffPicOrderCnt(currPic,RefPicList[0][refIdxL0])等于DiffPicOrderCnt(RefPicList[1][refIdxL1],currPic)。
–RefPicList[0][refIdxL0]是STRP,RefPicList[1][refIdxL1]是STRP。
–MotionModelIdc[xCb][yCb]等于0。
–merge_subblock_flag[xCb][yCb]等于0。
–sym_mvd_flag[xCb][yCb]等于0。
–ciip_flag[xCb][yCb]等于0。
–BcwIdx[xCb][yCb]等于0。
–luma_weight_l0_flag[refIdxL0]和luma_weight_l1_flag[refIdxL1]都等于0。
–chroma_weight_l0_flag[refIdxL0]和chroma_weight_l1_flag[refIdxL1]都等于0。
–cbWidth大于或等于8。
–cbHeight大于或等于8。
–cbHeight*cbWidth大于或等于128。
–RprConstraintsActive[0][refIdxL0]等于0,RprConstraintsActive[1][refIdxL1]等于0。
–cIdx等于0。
–否则,bdofFlag被设置为等于FALSE。
–如果numSbY等于1,numSbX等于1,则以下内容适用:
–当bdofFlag等于TRUE时,变量numSbY、numSbX的修改如下:
numSbX=(cbWidth>16)? (cbWidth>>4):1 (919)
numSbY=(cbHeight>16)? (cbHeight>>4):1 (920)
–对于X=0..1,xSbIdx=0..numSbX-1且ySbIdx=0..numSbY-1,以下内容适用:
–predFlagLX[xSbIdx][ySbIdx]被设置为等于predFlagLX[0][0]。
–refMvLX[xSbIdx][ySbIdx]被设置为等于refMvLX[0][0]。
–mvLX[xSbIdx][ySbIdx]被设置为等于mvLX[0][0]。
亮度样本中的当前编解码子块的宽度和高度sbWidth、sbHeight推导如下:
sbWidth=cbWidth/numSbX  (921)
sbHeight=cbHeight/numSbY  (922)
对于子块索引(xSbIdx,ySbIdx)处的每个编解码子块,其中xSbIdx=0..numSbX-1,ySbIdx=0..numSbY-1,以下内容适用:
–亮度位置(xSb,ySb),指定相对于当前图片的左上亮度样本的当前编解码子块的左上样本,推导如下:
(xSb,ySb)=(xCb+xSbIdx*sbWidth,yCb+ySbIdx*sbHeight)(923)
–对于分别为0和1的X,当predFlagLX[xSbIdx][ySbIdx]等于1时,以下内容适用:
–由亮度样本的有序二维数组refPicLXL和色度样本的两个有序二维数组refPicLXCb和refPicLXCr组成的参考图片是通过调用条款8.5.6.2中指定的过程推导的,其中X和refIdxLX作为输入。
–运动矢量偏移mvOffset被设置为等于refMvLX[xSbIdx][xSbIdx]-mvLX[xSbIdx][ySbIdx]。
–如果cIdx等于0,则以下内容适用:
–数组predSamplesLXL是通过调用条款8.5.6.3中指定的分数样本插值过程推导的,其中亮度位置(xSb,ySb)、编解码子块宽度sbWidth、亮度样本中的编解码子块高度sbHeight、亮度运动矢量偏移mvOffset、细化亮度运动矢量refMvLX[xSbIdx][xSbIdx]、参考数组refPicLXL、bdofFlag、dmvrFlag、hpelIfIdx、cIdx、RprConstraintsActive[X][refIdxLX]和RefPicScale[X][refIdxLX]作为输入。
–当cbProfFlagLX等于1时,调用条款8.5.6.4中指定的利用光流的预测细化过程,其中sbWidth、sbHeight、(sbWidth+2)x(sbHeight+2)数组predSamplesLXL和运动矢量差数组diffMvLX[xIdx][yIdx](其中xIdx=0..cbWidth/numSbX-1,yIdx=0..cbHeight/numSbY-1)作为输入,并且细化的(sbWidth)x(sbHeight)数组predSamplesLXL作为输出。
Figure BDA0003988538830000551
–[[否则,如果]]
Figure BDA0003988538830000561
cIdx等于1,则以下内容适用:
–数组predSamplesLXCb是通过调用条款8.5.6.3中指定的分数样本插值过程推导的,其中亮度位置(xSb,ySb)、编解码子块宽度
Figure BDA0003988538830000562
sbWidth/SubWidthC、编解码子块高
Figure BDA0003988538830000566
Figure BDA0003988538830000563
sbHeight/SubHeightC、色度运动矢量偏移mvOffset、细化色度运动矢量refMvLX[xSbIdx][ySbIdx]、参考数组refPicLXCb、bdofFlag、dmvrFlag、hpelIfIdx、cIdx、RprConstraintsActive[X][refIdxLX]和RefPicScale[X][refIdxLX]作为输入。–否则(cIdx等于2),则以下内容适用:
–数组predSamplesLXCr是通过调用条款8.5.6.3中指定的分数样本插值过程推导的,其中亮度位置(xSb,ySb)、编解码子块宽度
Figure BDA0003988538830000564
sbWidth/SubWidthC、编解码子块高度
Figure BDA0003988538830000565
sbHeight/SubHeightC、色度运动矢量偏移mvOffset、细化色度运动矢量refMvLX[xSbIdx][xSbIdx]、参考数组refPicLXCr、bdofFlag、dmvrFlag、hpelIfIdx、cIdx、RprConstraintsActive[X][refIdxLX]和RefPicScale[X][refIdxLX]作为输入。
–变量sbBdofFlag被设置为等于FALSE。
–当bdofFlag等于TRUE时,变量sbBdofFlag进一步修改如下:
–如果dmvrFlag等于1,并且变量dmvrSad[xSbIdx][ySbIdx]小于(2*sbWidth*sbHeight),则变量sbBdofFlag被设置为等于FALSE。
–否则,变量sbBdofFlag被设置为等于TRUE。
–预测样本的数组predSamples推导如下:
–如果cIdx等于0,则当前亮度编解码子块内的预测样本predSamples[xL+xSb][yL+ySb],其中xL=0..sbWidth-1且yL=0..sbHeight-1,推导如下:
–如果sbBdofFlag等于TRUE,则调用条款8.5.6.5中指定的双向光流样本预测过程,其中nCbW设置为等于亮度编解码子块宽度sbWidth、nCbH设置等于亮度编解码子块高度sbHeight、以及样本数组predSamplesL0L和predSamplesL1L、变量predFlagL0[xSbIdx][ySbIdx]、predFlagL1[xSbIdx][ySbIdx]、refIdxL0和refIdxL1作为输入,predSamples[xL+xSb][yL+ySb]作为输出。
–否则(sbBdofFlag等于FALSE),调用条款8.5.6.6中指定的加权样本预测过程,其中亮度编解码子块宽度sbWidth、亮度编解码子块高度sbHeight以及样本数组predSamplesL0L和predSamplesL1L、以及变量predFlagL0[xSbIdx][ySbIdx]、predFlagL1[xSbIdx][ySbIdx]、refIdxL0、refIdxL1、bcwIdx、dmvrFlag和cIdx作为输入,变量predSamples[xL+xSb][yL+ySb]作为输出。
Figure BDA0003988538830000571
–[[否则,如果]]
Figure BDA0003988538830000572
cIdx等于1,则通过调用条款8.5.6.6中指定的加权样本预测过程推导当前色度分量Cb编解码子块内的预测样本,predSamples[xC+xSb/SubWidthC][yC+ySb/SubHeightC],其中xC=0..
Figure BDA0003988538830000573
且yC=0..
Figure BDA0003988538830000574
其中nCbW设置为等于
Figure BDA0003988538830000575
sbWidth/SubWidthC、nCbH设置为等于
Figure BDA0003988538830000576
sbHeight/SubHeightC、样本数组predSamplesL0Cb和predSamplesL1Cb以及变量predFlagL0[xSbIdx][ySbIdx]、predFlagL1[xSbIdx][ySbIdx]、refIdxL0、refIdxL1、bcwIdx、dmvrFlag和cIdx作为输入。
–否则(cIdx等于2),通过调用条款8.5.6.6中指定的加权样本预测过程推导当前色度分量Cr编解码子块内的预测样本,predSamples[xC+xSb/SubWidthC][yC+ySb/SubHeightC],其中xC=0..
Figure BDA0003988538830000577
且yC=0..
Figure BDA0003988538830000578
其中nCbW设置为等于
Figure BDA0003988538830000579
sbWidth/SubWidthC、nCbH设置为等于
Figure BDA00039885388300005710
sbHeight/SubHeightC、样本数组predSamplesL0Cr和predSamplesL1Cr以及变量predFlagL0[xSbIdx][ySbIdx]、predFlagL1[xSbIdx][ySbIdx]、refIdxL0、refIdxL1、bcwIdx、dmvrFlag和cIdx作为输入。
–当cIdx等于0时,对于x=0..sbWidth-1和y=0..sbHeight-1,进行以下赋值:
MvL0[xSb+x][ySb+y]=mvL0[xSbIdx][ySbIdx]    (924)
MvL1[xSb+x][ySb+y]=mvL1[xSbIdx][ySbIdx]  (925)
MvDmvrL0[xSb+x][ySb+y]=refMvL0[xSbIdx][ySbIdx]   (926)
MvDmvrL1[xSb+x][ySb+y]=refMvL1[xSbIdx][ySbIdx]   (927)
RefIdxL0[xSb+x][ySb+y]=refIdxL0       (928)
RefIdxL1[xSb+x][ySb+y]=refIdxL1       (929)
PredFlagL0[xSb+x][ySb+y]=predFlagL0[xSbIdx][ySbIdx]     (930)
PredFlagL1[xSb+x][ySb+y]=predFlagL1[xSbIdx][ySbIdx]   (931)
HpelIfIdx[xSb+x][ySb+y]=hpelIfIdx      (932)
BcwIdx[xSb+x][ySb+y]=bcwIdx      (933)
当ciip_flag[xCb][yCb]等于1时,预测样本的数组predSamples修改如下:
–如果cIdx等于0,则以下内容适用:
–调用条款8.4.5.2.5中指定的通用帧内样本预测过程,其中位置(xTbCmp,yTbCmp)设置为等于(xCb,yCb)、帧内预测模式predModeIntra设置为等于INTRA_PLANAR、变换块宽度nTbW和高度nTbH设置为等于cbWidth和cbHeight、编解码块宽度nCbW和高度nCbH设置为等于cbWidth和cbHeight以及变量cIdx作为输入,并且输出赋值给(cbWidth)x(cbHeight)数组predSamplesIntraL
–调用条款8.5.6.7中指定的用于组合合并和帧内预测的加权样本预测过程,其中位置(xTbCmp,yTbCmp)设置为等于(xCb,yCb)、编解码块宽度cbWidth、编解码块高度cbHeight、样本数组predSamplesInter和predSamplesIntra分别设置等于predSamples和predSamplesIntraL以及颜色分量索引cIdx作为输入,并且输出被赋值给(cbWidth)x(cbHeight)数组predSamples。
–否则,如果cIdx等于1且cbWidth/SubWidthC大于或等于4,则以下内容适用:
–调用条款8.4.5.2.5中指定的通用帧内样本预测过程,其中位置(xTbCmp,yTbCmp)设置为等于(xCb/SubWidthC,yCb/SubHeightC)、帧内预测模式predModeIntra设置为等于INTRA_PLANAR、变换块宽度nTbW和高度nTbH设置为等于cbWidth/SubWidthC和cbHeight/SubHeightC、编解码块宽度nCbW和高度nCbH设置为等于bWidth/SubWidthC和cbHeight/SubHeightC、以及变量cIdx作为输入,并且输出赋值给(cbWidth/SubWidthC)x(cbHeight/SubHeightC)数组predSamplesIntraCb
–调用条款8.5.6.7中指定的用于组合Merge和帧内预测的加权样本预测过程,其中位置(xTbCmp,yTbCmp)设置为等于(xCb,yCb)、编解码块宽度cbWidth/SubWidthC、编解码块高度cbHeight/SubHeightC、样本数组predSamplesInter和predSamplesIntra分别设置等于predSamplesCb和predSamplesIntraCb以及颜色分量索引cIdx作为输入,并且输出被赋值给(cbWidth/SubWidthC)x(cbHeight/SubHeightC)数组predSamples。
–否则,如果cIdx等于2且cbWidth/SubWidthC大于或等于4,则以下内容适用:
–调用条款8.4.5.2.5中指定的通用帧内样本预测过程,其中位置(xTbCmp,yTbCmp)设置为等于(xCb/SubWidthC,yCb/SubHeightC)、帧内预测模式predModeIntra设置为等于INTRA_PLANAR、变换块宽度nTbW和高度nTbH设置为等于cbWidth/SubWidthC和cbHeight/SubHeightC、编解码块宽度nCbW和高度nCbH设置为等于bWidth/SubWidthC和cbHeight/SubHeightC以及变量cIdx作为输入,并且输出赋值给(cbWidth/SubWidthC)x(cbHeight/SubHeightC)数组predSamplesIntraCr
–调用条款8.5.6.7中指定的用于组合Merge和帧内预测的加权样本预测过程,其中位置(xTbCmp,yTbCmp)设置为等于(xCb,yCb)、编解码块宽度cbWidth/SubWidthC、编解码块高度cbHeight/SubHeightC、样本数组predSamplesInter和predSamplesIntra分别设置等于predSamplesCr和predSamplesIntraCr以及颜色分量索引cIdx作为输入,并且输出被赋值给(cbWidth/SubWidthC)x(cbHeight/SubHeightC)数组predSamples。
5.5.实施例5:MotionModelIdc的推导
cu_affine_type_flag[x0][y0]等于1指定对于当前编解码单元,当解码P或B条带时,使用基于6参数仿射模型的运动补偿来生成当前编解码单元的预测样本。cu_affine_type_flag[x0][y0]等于0指定使用基于4参数仿射模型的运动补偿来生成当前编解码单元的预测样本。
MotionModelIdc[x][y]表示编解码单元的运动模型,如表15所示。数组索引x,y指定相对于图片左上亮度样本的亮度样本位置(x,y)。
对于x=x0..x0+cbWidth-1和y=y0..y0+cbHeight-1,变量MotionModelIdc[x][y]的推导如下:
–如果general_merge_flag[x0][y0]等于1,则以下内容适用:
MotionModelIdc[x][y]=merge_subblock_flag[x0][y0] (165)
–否则(general_merge_flag[x0][y0]等于0),则以下内容适用:
[[MotionModelIdc[x][y]=inter_affine_flag[x0][y0]+cu_affine_type_flag[x0][y0]]]
Figure BDA0003988538830000601
表15-MotionModelIdc[x0][y0]的解释
MotionModelIdc[x][y] 用于运动补偿的运动模型
0 平移运动
1 四参数仿射运动
2 六参数仿射运动
5.6.实施例5:用于交织预测的6抽头插值滤波
文本更改基于AVS-N2865
9.9.2.3仿射亮度样本插值过程
仿射预测模板1的亮度插值滤波器系数
Figure BDA0003988538830000602
Figure BDA0003988538830000611
5.7.实施例6:交织预测的高速缓存带宽约束
文本更改基于AVS-N2865
9.19仿射运动单元子块运动矢量数组推导
如果仿射控制点运动矢量组中有3个运动矢量,则运动矢量组表示为mvsAffine(mv0,mv1,mv2);否则(仿射控制点运动矢量组中有2个运动矢量),则运动矢量组表示为MVSAFFINEmvsAffine(mv0,mv1)。
a)计算变量dHorX、dVerX、dHorY和dVerY:
Figure BDA0003988538830000612
b)如果mvsAffine中有3个运动矢量,则:
Figure BDA0003988538830000613
c)否则(mvsAffine中有2个运动矢量):
Figure BDA0003988538830000614
(xE,yE)是当前图像的亮度样本矩阵中当前预测单元亮度预测块的左上样本的位置。当前预测单元的宽度和高度分别为width和height,每个子块的宽度和高度分别为subwidth和subheight,见图40。当前预测单元亮度预测块的左上样本所在的子块是A,右上样本所在的子块是B,左下样本所在的子块是C。
c)OutBandwidthConstrain初始化为0,AlignTop、AlignLeft、AlignLeftFirstRow和AlignLeftLastRow初始化为1。
b)如果当前预测单元的预测参考模式为'Pred_List01'或AffineSubblockSizeFlag等于1,则subwidth和subheight都等于8,MarginVer等于4,MarginHor等于6,且(x,y)为子块左上角的坐标,计算每个亮度子块的运动矢量:
d)对于模板0:
1)如果当前子块是A,则xPos和yPos都等于0;
2)否则,如果当前子块是B,则xPos等于width,yPos等于0;
3)否则,如果当前子块是C并且mvsAffine中有3个运动矢量,则xPos等于0,yPos等于height;
4)否则,xPos等于(x-xE)+4,yPos等于(y-yE)+4;
5)当前子块的运动矢量mvE0:
Figure BDA0003988538830000621
对于模板1:
1)如果当前子块是A,则xPos和yPos都等于0;
2)否则,如果当前子块是B,则xPos等于width,yPos等于0;
3)否则,如果当前子块是C并且mvsAffine中有3个运动矢量,则xPos等于0,yPos等于height;
4)否则,
a)如果y小于yE+subheight/2,则xPos等于(x-xE)+4,yPos等于(y-yE)+2;
b)否则,如果x小于xE+subwidth/2,则xPos等于(x-xE)+2,yPos等于(y-yE)+4;
c)否则,如果x大于xE+width-subwidth/2且y大于yE+height-subheight/2或x小于xE+subwidth/2且y大于yE+height-subheight/2,则xPos等于(x-xE)+2,yPos等于(y-yE)+2;
d)否则,如果y大于yE+height-subheight/2,则xPos等于(x-xE)+4,yPos等于(y-yE)+2;
e)否则,如果x大于xE+width-subwidth/2,则xPos等于(x-xE)+2,yPos等于(y-yE)+4;
f)否则,xPos等于(x-xE)+4,yPos等于(y-yE)+4;
5)当前子块的运动矢量mvE1:
Figure BDA0003988538830000631
1)如果子块位于第一行,则AlignTop等于0,如果子块位于最后一行,则AlignTop等于1,否则计算mv0_y和mv1_y。如果mv0_y>0且mv1_y>0,或mv0_y>0且mv1_y<0且|mv0_y|>|mv1_y|,或mv0_y<0且mv1_y>0且|mv0_y|<|mv1_y|,则AlignTop等于0;否则,AlignTop等于1。
Figure BDA0003988538830000632
1)如果子块位于第一列,AlignLeft等于0,如果子块位于最后一列,AlignLeft等于1,否则计算mv0_x和mv1_x。如果AlignTop等于1:
Figure BDA0003988538830000633
否则:
Figure BDA0003988538830000634
如果mv0_x>0且mv1_x>0,或mv0_x>0且mv1_x<0且|mv0_x|>|mv1_x|,或mv0_x<0且mv1_x>0且|mv0_x|<|mv1_x|,则AlignLeft等于0;否则,AlignLeft等于1。
根据AlignTop和AlignLeft取模板0中对应子块的运动矢量,记录为图44中的(mvx_pattern0,mvy_pattern0)。
1)如果AlignLeft等于1且(mvE1_x>>4)-(mvx_pattern0>>4)>MarginHor或(mvx_pattern0>>4)-(mvE1_x>>4)>8+MarginHor,或AlignLeft等于0且(mvx_pattern0>>4)-(mvE1_x>>4)>MarginHor或(mvE1_x>>4)-(mvx_pattern0>>4)>8+MarginHor,则OutBandwidthConstrain等于1;如果AlignTop等于1且(mvE1_y>>4)–(mvy_pattern0>>4)>MarginVer或(mvy_pattern0>>4)-(mvE1_y>>4)>8+MarginVer,或AlignTop等于0且(mvy_pattern0>>4)-(mvE1_y>>4)>MarginVer或(mvE1_y>>4)-(Mvy_pattern0>>4)>8+MarginVer,则OutBandwidthConstrain等于1。
a)如果当前预测单元的预测参考模式为'Pred_List0'或'Pred_List1’且AffineSubblockSizeFlag等于0,则subwidth和subheight都等于4,MarginVer等于1,MarginHor等于4,并且(x,y)是子块的左上角位置,计算每个亮度子块的运动矢量:
b)对于模板0:
1)如果当前子块是A,则xPos和yPos都等于0;
2)否则,如果当前子块是B,则xPos等于width,yPos等于0;
1)否则,如果当前子块是C并且mvAffine中有3个运动矢量,则xPos等于0,yPos等于height;
2)否则,xPos等于(x-xE)+2,yPos等于(y-yE)+2;
3)当前子块的运动矢量mvE0:
Figure BDA0003988538830000641
对于模板1:
1)如果当前子块是A,则xPos和yPos都等于0;
2)否则,如果当前子块是B,则xPos等于width,yPos等于0;
3)否则,如果当前子块是C并且mvsAffine中有3个运动矢量,则xPos等于0,yPos等于height;
4)否则,
a)如果y小于yE+subheight/2,则xPos等于(x-xE)+2,yPos等于(y-yE)+1;
b)否则,如果x小于xE+subwidth/2,则xPos等于(x-xE)+1,yPos等于(y-yE)+2;
c)否则,如果x大于xE+width-subwidth/2且y大于yE+height-subheight/2或x小于xE+subwidth/2且y大于yE+height-subheight/2,则xPos等于(x-xE)+1,yPos等于(y-yE)+1;
d)否则,如果y大于yE+height-subheight/2,则xPos等于(x-xE)+2,yPos等于(y-yE)+1;
e)否则,如果x大于xE+width-subwidth/2,则xPos等于(x-xE)+1,yPos等于(y-yE)+2;
f)否则,xPos等于(x-xE)+2,yPos等于(y-yE)+2;
5)当前子块的运动矢量mvE1:
Figure BDA0003988538830000651
1)如果子块位于第一行,则AlignTop等于0,如果子块位于最后一行,则AlignTop等于1,否则计算mv0_y和mv1_y。如果mv0_y>0且mv1_y>0,或mv0_y>0且mv1_y<0且|mv0_y|>|mv1_y|,或mv0_y<0且mv1_y>0且|mv0_y|<|mv1_y|,则AlignTop等于0;否则,AlignTop等于1。
Figure BDA0003988538830000652
1)如果子块位于第一列,AlignLeft等于0,如果子块位于最后一列,AlignLeft等于1,否则计算mv0_x和mv1_x。如果AlignTop等于1:
Figure BDA0003988538830000653
否则:
Figure BDA0003988538830000654
如果mv0_x>0且mv1_x>0,或mv0_x>0且mv1_x<0且|mv0_x|>|mv1_x|,或mv0_x<0且mv1_x>0且|mv0_x|<|mv1_x|,则AlignLeft等于0;否则,AlignLeft等于1。
根据AlignTop和AlignLeft取模板0中对应子块的运动矢量,记录为图45中的(mvx_pattern0,mvy_pattern0)。
如果AlignLeft等于1且(mvE1_x>>4)-(mvx_pattern0>>4)>MarginHor或(mvx_pattern0>>4)-(mvE1_x>>4)>4+MarginHor,或AlignLeft等于0且(mvx_pattern0>>4)-(mvE1_x>>4)>MarginHor或(mvE1_x>>4)-(mvx_pattern0>>4)>4+MarginHor,则OutBandwidthConstrain等于1;如果AlignTop等于1且(mvE1_y>>4)–(mvy_pattern0>>4)>MarginVer或(mvy_pattern0>>4)-(mvE1_y>>4)>4+MarginVer,或AlignTop等于0且(mvy_pattern0>>4)-(mvE1_y>>4)>MarginVer或(mvE1_y>>4)-(mvy_pattern0>>4)>4+MarginVer或,则OutBandwidthConstrain等于1。
1)如果当前预测单元的预测模型是交织仿射运动模型,则根据上述方法获得对应于模板0的四个子块A0、B0、C0、D0和对应于模板1的A1、B1、C1的运动矢量。,四个子块的D1运动矢量,并且计算预测单元的单元预取整数像素数sampNum:
1)根据d)或e)中的方法,分别获得对应于模板0的四个子块A0、B0、C0、D0的运动矢量mvA0、mvB0、mvC0、mvD0,以及四个子块的高度cornerWidth0和宽度cornerHeight0;
Figure BDA0003988538830000661
1)根据d)或e)中的方法分别获得对应于模板1的四个子块A1、B1、C1、D1的运动矢量mvA1、mvB1、mvC1和mvD1,以及四个子块的高度cornerWidth1和宽度cornerHeight1;
Figure BDA0003988538830000662
a)
1)当前预测单元的单元预取整数像素数:
Figure BDA0003988538830000663
Figure BDA0003988538830000671
9.20交织仿射预测权重推导
Weightrounding等于2,weightshift等于2。记住当前块的宽度是width,高度是height。交织仿射预测权重的推导过程如下:
b)当subblockwidth等于4,subblockheight等于4时:
a)遍历模板0中的所有子块,并且每个4x4子块中的weight0的值如图46所示。
1)遍历模板1中的所有子块,将子块单元的左上角坐标标记为(x,y),宽度和高度标记为sub_w和sub_h:
1.子块中的所有weight1都初始化为1;
2.weight1[x+sub_w/2][y+sub_h/2]等于3;
3.weight1[x+sub_w/2-1][y+sub_h/2]等于3;
4.weight1[x+sub_w/2][y+sub_h/2-1]等于3;
5.weight1[x+sub_w/2-1][y+sub_h/2-1]等于3;
6.如果x<2且y<2,x<2且y>height-2,x>width-2且y<2,x>width-2且y>height-2满足一个,则子块内所有位置的weight0等于4,weight1等于0。
2)遍历当前块中所有位置的weight0和weight1。如果同一位置的weiht0和weight1相等,则该位置的weight0和weight1都等于2;
b)当subblockwidth等于8,subblockheight等于8时:
遍历模板0中的所有子块,并且每个8x8子块中的weight0的值如图47所示。
1)遍历模板1中的所有子块,将子块单元的左上角坐标标记为(x,y),宽度和高度标记为sub_w和sub_h:
1.子块中的所有weight1都初始化为1;
2.weight1[x+sub_w/2][y+sub_h/2]等于3,weight1[x+sub_w/2+1][y+sub_h/2]等于3,weight1[x+sub_w/2][y+sub_h/2+1]等于3,weight1[x+sub_w/2+1][y+sub_h/2+1]等于3;
3.weight1[x+sub_w/2-2][y+sub_h/2]等于3,weight1[x+sub_w/2-1][y+sub_h/2]等于3,weight1[x+sub_w/2-2][y+sub_h/2+1]等于3,weight1[x+sub_w/2-1][y+sub_h/2+1]等于3;
4.weight1[x+sub_w/2][y+sub_h/2-2]等于3,weight1[x+sub_w/2+1][y+sub_h/2-2]等于3,weight1[x+sub_w/2][y+sub_h/2-1]等于3,weight1[x+sub_w/2+1][y+sub_h/2-1]等于3;
5.weight1[x+sub_w/2-2][y+sub_h/2-2]等于3,weight1[x+sub_w/2-1][y+sub_h/2-2]等于3,weight1[x+sub_w/2-2][y+sub_h/2-1]等于3,weight1[x+sub_w/2-1][y+sub_h/2-1]等于3;
2)遍历当前块中所有位置的weight0和weight1。如果同一位置的weiht0和weight1相等,则该位置的weight0和weight1都等于2;
图33是示出了其中可以实施本文公开的各种技术的示例视频处理系统1900的框图。各种实施方式可以包括系统1900的部分或全部组件。系统1900可以包括用于接收视频内容的输入1902。视频内容可以以原始或未压缩格式(例如,8或10比特多分量像素值)接收,或者可以以压缩或编码格式接收。输入1902可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括有线接口,例如以太网、无源光网络(PON)等,以及无线接口,例如Wi-Fi或蜂窝接口。
系统1900可以包括编解码组件1904,其可以实施本文档中描述的各种编解码或编码方法。编解码组件1904可以将视频的平均比特率从输入1902降低到编解码组件1904的输出,以产生视频的经编解码表示。因此,编解码技术有时被称为视频压缩或视频转码技术。编解码组件1904的输出可以被存储,或者经由由组件1906表示的连接的通信来发送。组件1908可以使用在输入1902处接收的视频的存储的或通信的比特流(或经编解码的)表示来生成发送到显示接口1910的像素值或可显示视频。从比特流表示生成用户可视视频的过程有时称为视频解压缩。此外,虽然某些视频处理操作被称为“编解码”操作或工具,但应理解,在编码器处使用编解码工具或操作,并且解码器将执行反转编解码的结果的相应的解码工具或操作。
外围总线接口或显示接口的示例可包括通用串行总线(USB)或高清晰度多媒体接口(HDMI)或显示端口等。存储接口的示例包括SATA(串行高级技术附件)、PCI、IDE接口等。本文档中描述的技术可以体现在各种电子设备中,例如移动电话、膝上型电脑、智能手机或能够执行数字数据处理和/或视频显示的其他设备。
图34是视频处理装置3600的框图。装置3600可用于实施本文所述的一个或多个方法。装置3600可以体现在智能手机、平板电脑、计算机、物联网(IoT)接收器等中。装置3600可以包括一个或多个处理器3602、一个或多个存储器3604和视频处理硬件3606。处理器3602可以被配置为实施本文档中描述的一个或多个方法。存储器3604可用于存储用于实施本文所述方法和技术的数据和代码。视频处理硬件3606可用于在硬件电路中实施本文档中描述的一些技术。
图36是示出了可利用本公开的技术的示例视频编解码系统100的框图。
如图36所示,视频编解码系统100可以包括源设备110和目标设备120。源设备110生成经编码视频数据,源设备110可以被称为视频编码设备。目标设备120可以对源设备110生成的经编码视频数据进行解码,目标设备120可以被称为视频解码设备。
源设备110可以包括视频源112、视频编码器114和输入/输出(I/O)接口116。
视频源112可以包括诸如视频捕获设备、用于从视频内容提供商接收视频数据的接口和/或用于生成视频数据的计算机图形系统的源,或这些源的组合。视频数据可以包括一个或多个图片。视频编码器114对来自视频源112的视频数据进行编码以生成比特流。比特流可以包括形成视频数据的经编解码表示的比特序列。比特流可以包括经编解码图片和相关联数据。经编解码图片是图片的经编解码表示。相关联的数据可以包括序列参数集、图片参数集和其他语法结构。I/O接口116可以包括调制器/解调器(调制解调器)和/或发送器。经编码的视频数据可以通过网络130a经由I/O接口116直接发送到目标设备120。经编码视频数据还可以存储在存储介质/服务器130b上,以供目标设备120访问。
目标设备120可以包括I/O接口126、视频解码器124和显示设备122。
I/O接口126可以包括接收器和/或调制解调器。I/O接口126可以从源设备110或存储介质/服务器130b获取经编码视频数据。视频解码器124可解码经编码的视频数据。显示设备122可以向用户显示经解码的视频数据。显示设备122可以与目标设备120集成,或者可以在目标设备120外部,该目标设备120被配置为与外部显示设备接口。
视频编码器114和视频解码器124可以根据视频压缩标准操作,例如高效视频编解码(HEVC)标准、多功能视频编解码(VVC)标准和其他当前和/或进一步的标准。
图37是示出了可以是图36所示的系统100中的视频编码器114的视频编码器200的示例的框图。
视频编码器200可被配置为执行本公开的任何或所有技术。在图37的示例中,视频编码器200包括多个功能组件。本公开中描述的技术可以在视频编码器200的各个组件之间共享。在一些示例中,处理器可被配置为执行本公开中描述的任何或所有技术。
视频编码器200的功能组件可以包括分割单元201、预测单元202、残差生成单元207、变换单元208、量化单元209,逆量化单元210、逆变换单元211、重建单元212、缓冲器213和熵编码单元214,预测单元202可以包括模式选择单元203、运动估计单元204、运动补偿单元205和帧内预测单元206。
在其他示例中,视频编码器200可以包括更多、更少或不同的功能组件。在一个示例中,预测单元202可以包括帧内块复制(IBC)单元。IBC单元可以在IBC模式下执行预测,其中至少一个参考图片是当前视频块所在的图片。
此外,一些组件,例如运动估计单元204和运动补偿单元205可以是高度集成的,但是为了解释的目的在图37的示例中分别表示。
分割单元201可以将图片分割成一个或多个视频块。视频编码器200和视频解码器300可以支持各种视频块大小。
模式选择单元203可以例如基于误差结果选择一种编解码模式(帧内或帧间),并将得到的帧内或帧间编解码块提供给残差生成单元207以生成残差块数据,并提供给重建单元212以重建编码块以用作参考图片。在一些示例中,模式选择单元203可以选择组合帧内和帧间预测(CIIP)模式,其中预测基于帧间预测信号和帧内预测信号。模式选择单元203还可以在帧间预测的情况下为块选择运动矢量的分辨率(例如,子像素或整数像素精度)。
为了对当前视频块执行帧间预测,运动估计单元204可以通过将来自缓冲器213的一个或多个参考帧与当前视频块进行比较来生成当前视频块的运动信息。运动补偿单元205可以基于运动信息和来自缓冲器213的图片的经解码样本(与当前视频块相关联的图片除外)来确定当前视频块的预测视频块。
例如,运动估计单元204和运动补偿单元205可以根据当前视频块是在I条带、P条带还是B条带中,对当前视频块执行不同的操作。
在一些示例中,运动估计单元204可以对当前视频块执行单向预测,并且运动估计单元204可以在列表0或列表1的参考图片中搜索当前视频块的参考视频块。然后,运动估计单元204可以生成参考索引,该参考索引指示包含参考视频块的列表0或列表1中的参考图片以及指示当前视频块和参考视频块之间的空间位移的运动矢量。运动估计单元204可以输出参考索引、预测方向指示符和运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块生成当前块的预测视频块。
在其他示例中,运动估计单元204可以对当前视频块执行双向预测,运动估计单元204可以在列表0中的参考图片中搜索当前视频块的参考视频块,并且还可以在列表1中的参考图片中搜索当前视频块的另一参考视频块。然后,运动估计单元204可以生成指示包含参考视频块的列表0和列表1中的参考图片的参考索引和指示参考视频块和当前视频块之间的空间位移的运动矢量。运动估计单元204可以输出当前视频块的参考索引和运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块生成当前视频块的预测视频块。
在一些示例中,运动估计单元204可以输出用于解码器的解码处理的运动信息的完整集合。
在一些示例中,运动估计单元204可以不输出当前视频的运动信息的完整集合。相反,运动估计单元204可以参考另一视频块的运动信息来信令通知当前视频块的运动信息。例如,运动估计单元204可以确定当前视频块的运动信息与相邻视频块的运动信息足够相似。
在一个示例中,运动估计单元204可以在与当前视频块相关联的语法结构中指示向视频解码器300指示当前视频块与另一视频块具有相同的运动信息的值。
在另一示例中,运动估计单元204可以在与当前视频块相关联的语法结构中识别另一视频块和运动矢量差(MVD)。运动矢量差指示当前视频块的运动矢量与所指示视频块的运动矢量之间的差。视频解码器300可以使用所指示视频块的运动矢量和运动矢量差来确定当前视频块的运动矢量。
如上所述,视频编码器200可以预测地信令通知运动矢量。可由视频编码器200实施的预测信令技术的两个示例包括高级运动矢量预测(AMVP)和Merge模式信令。
帧内预测单元206可以对当前视频块执行帧内预测。当帧内预测单元206对当前视频块执行帧内预测时,帧内预测单元206可以基于同一图片中其他视频块的经解码样本生成当前视频块的预测数据。当前视频块的预测数据可以包括预测视频块和各种语法元素。
残差生成单元207可以通过从当前视频块减去(例如,由减号指示)当前视频块的(一个或多个)预测视频块来生成当前视频块的残差数据。当前视频块的残差数据可以包括对应于当前视频块中的样本的不同样本分量的残差视频块。
在其他示例中,例如在跳过模式下,对于当前视频块,可以没有当前视频块的残差数据,并且残差生成单元207可以不执行减法操作。
变换处理单元208可以通过将一个或多个变换应用于与当前视频块相关联的残差视频块来为当前视频块生成一个或多个变换系数视频块。
在变换处理单元208生成与当前视频块相关联的变换系数视频块之后,量化单元209可以基于与当前视频块相关联的一个或多个量化参数(QP)值对与当前视频块相关联的变换系数视频块进行量化。
逆量化单元210和逆变换单元211可分别对变换系数视频块应用逆量化和逆变换,以从变换系数视频块重建残差视频块。重建单元212可以将重建的残差视频块添加到来自预测单元202生成的一个或多个预测视频块的对应样本中,以产生与当前块相关联的重建视频块,以存储在缓冲器213中。
在重建单元212重建视频块之后,可以执行环路滤波操作以减少视频块中的视频块效应伪影。
熵编码单元214可以从视频编码器200的其他功能组件接收数据。当熵编码单元214接收到数据时,熵编码单元214可以执行一个或多个熵编码操作以生成经熵编码数据并输出包括经熵编码数据的比特流。
图38是示出了可以是图36所示的系统100中的视频解码器114的视频解码器300的示例的框图。
视频解码器300可被配置为执行本公开的任何或所有技术。在图37的示例中,视频解码器300包括多个功能组件。本公开中描述的技术可以在视频解码器300的各个组件之间共享。在一些示例中,处理器可被配置为执行本公开中描述的任何或所有技术。
在图38的示例中,视频解码器300包括熵解码单元301、运动补偿单元302、帧内预测单元303、逆量化单元304、逆变换单元305、重建单元306和缓冲器307。在一些示例中,视频解码器300可以执行与关于视频编码器200(图37)描述的编码编次大体相反的解码编次。
熵解码单元301可以检索经编码比特流。经编码比特流可包括经熵编解码视频数据(例如,视频数据的经编码块)。熵解码单元301可以解码经熵编解码视频数据,并且运动补偿单元302可以从经熵解码视频数据确定包括运动矢量、运动矢量精度、参考图片列表索引和其他运动信息的运动信息。例如,运动补偿单元302可以通过执行AMVP和Merge模式来确定这样的信息。
运动补偿单元302可以产生运动补偿块,可能基于插值滤波器执行插值。可以在语法元素中包括以子像素精度使用的插值滤波器的标识符。
运动补偿单元302可以使用视频编码器200在视频块编码期间使用的插值滤波器来计算参考块的子整数像素的内插值。运动补偿单元302可以根据接收到的语法信息确定视频编码器200使用的插值滤波器,并使用该插值滤波器来产生预测块。
运动补偿单元302可以使用一些语法信息来确定用于编码经编码视频序列的(一个或多个)帧和/或(一个或多个)条带的块的大小、描述如何对经编码视频序列的图片的每个宏块进行分割的分割信息、指示如何对每个分割进行编码的模式、用于每个帧间编码块的一个或多个参考帧(和参考帧列表),以及用于解码经编码视频序列的其他信息。
帧内预测单元303可以使用例如在比特流中接收的帧内预测模式来从空域邻近块形成预测块。逆量化单元303对在比特流中提供并由熵解码单元301解码的量化视频块系数进行逆量化(即,去量化)。逆变换单元303应用逆变换。
重建单元306可以将残差块与由运动补偿单元202或帧内预测单元303生成的相应预测块相加,以形成解码块。如果需要,还可以应用去块滤波器对解码块进行滤波,以去除块性伪影。经解码视频块随后存储在缓冲器307中,缓冲器307为后续运动补偿/帧内预测提供参考块,并且还产生经解码视频以在显示设备上呈现。
接下来提供一些实施例的优选的解决方案的列表。
以下解决方案示出了前一节(例如,第1项)中讨论的技术的示例实施例。
1.一种视频处理方法(例如,图35中描绘的方法3500),包括:对于视频的视频块和视频的编解码表示之间的转换,根据指定对每个子块中的所有样本使用相同的梯度值的规则,确定(3502)使用视频块的子块级别处的预测矢量的梯度,以及基于确定执行(3504)转换。
2.根据解决方案1的方法,其中,规则指定视频块的每个子块中的所有样本使用相同的运动位移和相同的梯度值。
3.根据解决方案1-2中任一解决方案的方法,其中视频块被分成子块,其中至少一些子块具有2x2、2x1或4x1像素的大小。
4.根据解决方案1-3中任一解决方案的方法,其中,通过对子块的至少一些样本的样本值进行平均来确定相同的梯度值。
5.根据解决方案1-3中任一解决方案的方法,其中相同的梯度值被确定为每个样本的梯度的平均值或来自子块内的部分样本的梯度的平均值。
6.根据解决方案1-5中任一解决方案的方法,其中基于第一子块具有不同于用于确定视频块的运动矢量的第二子块的大小来确定相同的梯度。
以下解决方案示出了前一节(例如,第2项)中讨论的技术的示例实施例。
7.一种视频处理方法,包括:对于视频的当前视频块和视频的比特流表示之间的转换,根据规则确定使用使用光流技术的运动信息的预测细化;以及基于确定执行转换,其中规则指定在执行双向预测以获得运动信息之后执行预测细化。
8.根据解决方案7的方法,其中通过使用至少两个经解码的运动信息值确定时间预测信号并细化该时间预测信号来计算预测细化。
9.根据解决方案7的方法,其中,通过基于来自第一参考图片列表的第一预测子值和来自第二预测子列表的第二预测子值以及偏移的确定来计算预测细化。
以下解决方案示出了前一节(例如,第3项)中讨论的技术的示例实施例。
10.一种视频处理方法,包括:对于视频的当前视频块与视频的比特流表示之间的转换,因为当前视频块满足条件,确定对当前视频块启用编解码工具;以及基于确定执行转换,其中该条件涉及当前视频块的控制点运动矢量或当前视频块的大小或当前视频块的预测模式。
11.根据解决方案10的方法,其中使用基于仿射预测的编解码在编解码表示中表示当前视频块。
12.根据解决方案10-11中任一解决方案的方法,其中,确定还包括由于当前视频块不满足条件而确定对当前视频块禁用编解码工具。
13.根据解决方案10-12中任一解决方案的方法,其中使用交织预测或仿射预测在编解码表示中表示当前视频块。
14.根据解决方案10-13中任一解决方案的方法,其中使用以下规则之一基于当前视频块的边界框来确定该条件:(a)仅当边界框的大小高于第一阈值时,才认为满足该条件,(b)仅当边界框的大小低于第二阈值时,才认为满足条件。
15.根据解决方案14的方法,其中,第一阈值或第二阈值的值取决于是单向预测还是双向预测用于在经编解码表示中表示当前视频块。
以下解决方案示出了前一节(例如,第5、6项)中讨论的技术的示例实施例。
16.一种视频处理方法,包括:对于视频的视频块和视频的经编解码表示之间的转换,根据规则确定是否以及如何使用加权预测来计算视频块的子块的预测;以及基于确定执行转换,其中该规则基于是否对视频块启用仿射模式或视频块所属的颜色分量或视频的颜色格式中的一个或多个。
17.根据解决方案16的方法,其中,该规则涉及对其执行加权预测的子块的大小。
18.根据解决方案1-17中任一解决方案的方法,其中执行转换包括对视频进行编码以生成经编解码表示。
19.根据解决方案1-17中任一解决方案的方法,其中执行转换包括解析和解码经编解码表示以生成视频。
20.一种视频解码装置,包括处理器,其被配置为实施解决方案1至19中的一个或多个中叙述的方法。
21.一种视频编码装置,包括处理器,其被配置为实施在解决方案1到19中的一个或多个中叙述的方法。
22.一种计算机程序产品,其上存储有计算机代码,当该代码由处理器执行时,使得处理器实施在解决方案1至19中任一解决方案中叙述的方法。
23.一种本文档中描述的方法、装置或系统。
图48是视频处理的示例方法4800的流程图。操作4802包括对于视频的视频块和视频的比特流之间的转换,根据规则确定视频块的子块级别处的预测矢量的梯度,其中规则指定使用为视频块的子块内的所有样本分配的相同的梯度值。操作4804包括基于确定执行转换。
在方法4800的一些实施例中,该规则指定视频块的子块中的所有样本使用相同的运动位移信息和相同的梯度值。在方法4800的一些实施例中,在子块级别执行的细化操作包括推导子块(xs,ys)的一个细化(Vx(xs,ys)×Gx(xs,ys)+Vy(xs,ys)×Gy(xs,ys)),其中Gx(xs,ys)和Gy(xs,ys)是子块的梯度,并且其中Vx(xs,ys)和Vy(xs,ys)是子块的运动位移矢量。在方法4800的一些实施例中,在子块级别处推导视频块的运动位移矢量V(x,y)。在方法4800的一些实施例中,视频块被划分成子块,其中至少一些子块具有2x2像素、2x1像素或4x1像素的大小。在方法4800的一些实施例中,通过对子块的多个样本的样本值进行平均或通过对子块的多个样本中的一些样本的样本值进行平均来确定相同的梯度值。在方法4800的一些实施例中,通过对子块的多个样本的每个梯度进行平均,或者通过对子块的多个样本中的一些样本的梯度进行平均,来确定相同的梯度值。
在方法4800的一些实施例中,该规则指定子块的大小是预定义的,或者是基于比特流中包括的信息推导的,或者是在比特流中指示的。在方法4800的一些实施例中,该规则指定基于视频块的大小推导子块的大小。在方法4800的一些实施例中,相同大小的子块用于确定相同的梯度值以及用于确定运动矢量或运动矢量差。
图49是视频处理的示例方法4900的流程图。操作4902包括,对于视频的当前视频块和视频的比特流之间的转换,在执行双向预测技术以获得当前视频块的运动信息之后,确定使用利有光流技术的预测细化。操作4904包括基于确定执行转换。
在方法4900的一些实施例中,通过首先使用至少两个经解码的运动信息值确定时间预测信号然后细化该时间预测信号,来使用利用光流技术的预测细化。在方法4900的一些实施例中,从时间预测信号推导当前视频块的梯度。在方法4900的一些实施例中,利用光流技术的预测细化包括执行基于子块的仿射运动补偿以获得预测样本,并通过添加由光流方程推导的差来细化预测样本,以及双向预测技术包括使用两个参考图片列表以从两个样本块的加权平均产生预测单元。
图50是视频处理的示例方法5000的流程图。操作5002包括,对于视频的当前视频块和视频的比特流之间的转换,基于当前视频块是否满足条件,确定是否将与仿射预测相关的编解码工具应用于当前视频块。操作5004包括基于确定执行转换,其中该条件涉及当前视频块的一个或多个控制点运动矢量,或者当前视频块的第一大小,或者当前视频块的子块的第二大小,或者为当前视频块的一个或多个子块推导的一个或多个运动矢量,或者当前视频块的预测模式。
在方法5000的一些实施例中,使用基于仿射预测的编解码在比特流中表示当前视频块。在方法5000的一些实施例中,编解码工具包括仿射预测工具。在方法5000的一些实施例中,编解码工具包括交织预测工具。在方法5000的一些实施例中,响应于不满足条件,确定编解码工具不被应用于一致性比特流中的当前视频块。在方法5000的一些实施例中,响应于不满足条件,用应用于当前视频块的另一编解码工具替换编解码工具。在方法5000的一些实施例中,响应于不满足条件且响应于用仿射Merge模式对当前视频块进行编解码,用应用于当前视频块的另一编解码工具替换编解码工具。在方法5000的一些实施例中,响应于不满足条件,在编码器处和解码器处针对当前视频块关闭或禁用编解码工具。
在方法5000的一些实施例中,响应于不满足条件,比特流不包括指示编解码工具是否应用于当前视频块的语法元素。在方法5000的一些实施例中,响应于比特流中不存在语法元素,推断编解码工具被关闭或禁用。在方法5000的一些实施例中,响应于满足条件,编解码工具是仿射预测工具,并且其中响应于不满足条件,编解码工具是仿射预测工具之外的预测工具。在方法5000的一些实施例中,一个或多个控制点运动矢量被用作当前视频块的运动矢量,而不将仿射运动模型应用于当前视频块。在方法5000的一些实施例中,响应于满足条件,编解码工具是交织预测工具,并且其中响应于不满足条件,编解码工具是仿射预测工具之外的预测工具。在方法5000的一些实施例中,响应于不满足条件,将交织预测工具中的第二划分样式的预测样本设置为等于对应位置处的第一划分样式的预测样本。
在方法5000的一些实施例中,基于当前视频块的边界框的大小来确定条件。在方法5000的一些实施例中,响应于边界框的大小小于或等于阈值而满足条件,并且其中响应于边界框的大小大于阈值而不满足条件。在方法5000的一些实施例中,该条件基于当前视频块的多个子块的水平方向上的第一运动矢量和当前视频块的多个子块的垂直方向上的第二运动矢量。在方法5000的一些实施例中,响应于第一划分样式中的当前视频的一个子块的水平方向上的第三运动矢量减去第一运动矢量的结果大于阈值,该条件为真。在方法5000的一些实施例中,响应于第一运动矢量减去第一划分样式中的当前视频的一个子块的水平方向上的第三运动矢量的结果大于阈值,该条件为真。在方法5000的一些实施例中,响应于第一划分样式中的当前视频的一个子块的垂直方向上的第四运动矢量减去第二运动矢量的结果大于阈值,该条件为真。在方法5000的一些实施例中,响应于第二运动矢量减去第一划分样式中的当前视频的一个子块的垂直方向上的第四运动矢量的结果大于阈值,该条件为真。
图51是视频处理的示例方法5100的流程图。操作5102包括,对于视频的当前视频块和视频的比特流之间的转换,根据规则,基于以下内容确定是否以及如何对子块索引处的子块应用运动补偿:(1)是否对当前视频块应用仿射模式,其中在比特流中包括指示是否应用仿射模式的仿射运动指示,(2)当前视频块所属的颜色分量,以及(3)视频的颜色格式。操作5104包括基于确定执行转换。
在方法5100的一些实施例中,响应于以下内容,规则指定对子块索引处的子块单独应用运动补偿:(1)颜色分量是亮度分量,或(2)仿射模式不被应用于当前视频块,或(3)水平子块索引除以当前视频块的宽度的余数等于0和垂直子块索引除以当前视频块的高度的第二余数等于0。在方法5100的一些实施例中,该规则指定用于在视频的色度子块的子块索引处执行运动补偿的该色度子块的第一宽度或第一高度取决于仿射模式指示和视频的颜色格式。在方法5100的一些实施例中,响应于指示仿射模式被应用于当前视频块的仿射模式指示,规则指定色度子块的第一宽度是亮度子块的第二宽度,并且响应于指示仿射模式未被应用于当前视频块的仿射模式指示,规则指定色度子块的第一宽度是亮度子块的第二宽度除以当前视频块的第三宽度。在方法5100的一些实施例中,响应于指示仿射模式被应用于当前视频块的仿射模式指示,规则指定色度子块的第一高度是亮度子块的第二高度,并且响应于指示仿射模式未被应用于当前视频块的仿射模式指示,规则指定色度子块的第一高度是亮度子块的第二高度除以当前视频块的第三高度。
图52是视频处理的示例方法5200的流程图。操作5202包括,对于视频的当前视频块和视频的比特流之间的转换,根据规则,基于以下内容确定是否以及如何使用加权预测来计算当前视频块的子块的预测:(1)是否对当前视频块应用仿射模式,其中在比特流中包括指示是否应用仿射模式的仿射运动指示,(2)当前视频块所属的颜色分量,以及(3)视频的颜色格式。操作5204包括基于确定执行转换。
在方法5200的一些实施例中,响应于以下内容,规则指定对子块索引处的子块单独应用加权预测:(1)颜色分量不是亮度分量,或(2)仿射模式不被应用于当前视频块,或(3)水平子块索引除以当前视频块的宽度的余数等于0和垂直子块索引除以当前视频块的高度的第二余数等于0。在方法5200的一些实施例中,该规则指定用于在视频的色度子块的子块索引处执行加权预测的该色度子块的第一宽度或第一高度取决于仿射模式指示和视频的颜色格式。在方法5200的一些实施例中,响应于指示仿射模式被应用于当前视频块的仿射模式指示,规则指定色度子块的第一宽度是亮度子块的第二宽度,并且响应于指示仿射模式未被应用于当前视频块的仿射模式指示,规则指定色度子块的第一宽度是亮度子块的第二宽度除以当前视频块的第三宽度。
在方法5200的一些实施例中,响应于指示仿射模式被应用于当前视频块的仿射模式指示,规则指定色度子块的第一高度是亮度子块的第二高度,并且响应于指示仿射模式未被应用于当前视频块的仿射模式指示,规则指定色度子块的第一高度是亮度子块的第二高度除以当前视频块的第三高度。
图53是视频处理的示例方法5300的流程图。操作5302包括,对于视频的当前视频块和视频的比特流之间的转换,根据规则确定比特流中的第一语法元素的值,其中第一语法元素的值指示仿射模式是否应用于当前视频块,并且其中规则指定第一语法元素的值基于:(1)比特流中的第二语法元素,该第二语法元素指示是否使用基于仿射模型的运动补偿来生成当前视频块的预测样本,或(2)比特流中的第三语法元素,该第三语法元素指示是否为经编解码层视频序列(CLVS)启用基于6参数仿射模型的运动补偿。操作5304包括基于确定执行转换。
在方法5300的一些实施例中,响应于第二语法元素等于0,规则指定第一语法元素的值被设置为零。在方法5300的一些实施例中,响应于第三语法元素等于0,规则指定第一语法元素的值被设置为零。
图54是视频处理的示例方法5400的流程图。操作5402包括,对于视频的当前视频块和视频的比特流之间的转换,基于当前视频块的第一样式的第一子块的第一运动矢量和当前视频块的第二样式的第二子块的第二运动矢量之间的关系,确定是否为当前视频块启用交织预测工具。操作5404包括基于确定执行转换。
在方法5400的一些实施例中,从第二样式中的一个子块中选择第二子块,其中该一个子块与第一子块重叠。在方法5400的一些实施例中,基于仿射参数从一个子块中选择第二子块。在方法5400的一些实施例中,响应于满足第一条件,第二子块的第二中心位于第一子块的第一中心的上方,并且响应于满足第二条件,第二子块的第二中心位于第一子块的第一中心的下方。在方法5400的一些实施例中,第一条件是第一子块在当前视频块的最后一行。在方法5400的一些实施例中,第二条件是第一子块在当前视频块的第一行。在方法5400的一些实施例中,第二条件是:(mv0_y>0且mv1_y>0),或(mv0_y>0且mv1_y<0且|mv0_y|>|mv1_y|),或(mv0_y<0且mv1_y>0且|mv0_y|<|mv1_y|),其中mv0_y是垂直方向上的第二运动矢量,并且其中mv1_y是垂直方向上的第一运动矢量。在方法5400的一些实施例中,响应于未满足第二条件而满足第一条件。
在方法5400的一些实施例中,响应于满足第三条件,第二子块的第二中心位于第一子块的第一中心的左侧,并且响应于满足第四条件,第二子块的第二中心位于第一子块的第一中心的右侧。在方法5400的一些实施例中,第三条件是第一子块在当前视频块的最右行。在方法5400的一些实施例中,第四条件是第一子块在当前视频块的最左行。在方法5400的一些实施例中,响应于第一运动矢量和第二运动矢量之间的关系满足第五条件,禁用交织预测工具。在方法5400的一些实施例中,第五条件取决于比特流中的第一语法元素和第二语法元素,第一语法元素指示第一子块的中心是否在第二子块的中心的左侧,并且第二语法元素指示第一子块的中心是否在第二子块的中心的上方。
在(一个或多个)方法4800-5400的一些实施例中,执行转换包括将视频编码成比特流。在(一个或多个)方法4800-5400的一些实施例中,执行转换包括从视频生成比特流,并且方法还包括:将比特流存储在非暂时性计算机可读记录介质中。在(一个或多个)方法4800-5400的一些实施例中,执行转换包括从比特流解码视频。在一些实施例中,一种视频解码装置包括被配置为实施针对实施例4800-5400所述的(一个或多个)方法的处理器。在一些实施例中,一种视频编码装置包括被配置为实施针对实施例4800-5400所述的(一个或多个)方法的处理器。在一些实施例中,一种其上存储有计算机指令的计算机程序产品,当该指令由处理器执行时,使处理器实施针对实施例4800-5400所述的(一个或多个)方法。在一些实施例中,一种非暂时性计算机可读存储介质,其存储根据针对实施例4800-5400所述的(一个或多个)方法生成的比特流。在一些实施例中,一种非暂时性计算机可读存储介质,其存储使处理器实施针对实施例4800-5400所述的(一个或多个)方法的指令。在一些实施例中,一种比特流生成方法,包括:根据针对实施例4800-5400所述的(一个或多个)方法生成视频的比特流,以及将该比特流存储在计算机可读程序介质上。在一些实施例中,一种根据本文件中描述的公开的方法或系统生成的方法、装置、比特流。
所公开的技术的一些实施例包括做出决定或确定以启用视频处理工具或模式。在一个示例中,当启用视频处理工具或模式时,编码器将在视频块的处理中使用或实施该工具或模式,但可能不一定基于该工具或模式的使用来修改所得到的比特流。也就是说,当基于决定或确定启用视频处理工具或模式时,从视频块到视频的比特流表示的转换将使用视频处理工具或模式。在另一示例中,当启用视频处理工具或模式时,解码器将在知道比特流已经基于视频处理工具或模式被修改的情况下处理比特流。也就是说,将使用基于决定或确定而启用的视频处理工具或模式来执行从视频的比特流表示到视频块的转换。
所公开的技术的一些实施例包括作出决定或确定以禁用视频处理工具或模式。在一个示例中,当禁用视频处理工具或模式时,编码器在视频块到视频的比特流表示的转换中将不使用该工具或模式。在另一示例中,当禁用视频处理工具或模式时,解码器将在知道比特流尚未使用基于决定或确定而禁用的视频处理工具或模式被修改的情况下处理比特流。
本文档中描述的公开和其他解决方案、示例、实施例、模块和功能操作可在数字电子电路中或在计算机软件、固件或硬件(包括本文档中公开的结构及其结构等效物,或以它们中的一种或多种的组合)中实施。所公开的实施例和其他实施例可以实施为一个或多个计算机程序产品,即,编码在计算机可读介质上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制其操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质的组合物,或者它们中的一个或多个的组合。术语“数据处理装置”包括用于处理数据的所有装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。传播信号是人为生成的信号,例如,机器生成的电、光或电磁信号,其生成用于编码信息以传输到合适的接收器装置。
计算机程序(也称为程序、软件、软件应用程序、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程,或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件相对应。程序可以存储在保存其他程序或数据(例如,标记语言文档中存储的一个或多个脚本)的文件的一部分、专用于所讨论的程序的单个文件或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台计算机上执行或者部署在位于一个站点或分布在多个站点并通过通信网络互连的多台计算机上执行。
本文档中描述的过程和逻辑流可由一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过操作输入数据和生成输出来执行功能。处理和逻辑流还可以由专用逻辑电路执行,并且装置也可以实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括或操作地耦合以从用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘)接收数据或向其传输数据或两者。然而,计算机不需要具有这样的设备。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD-ROM及DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
尽管本专利文档包含许多细节,但这些细节不应被解释为对任何主题或可能要求保护的内容的范围的限制,而是对可能特定于特定技术的特定实施例的特征的描述。本专利文档中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实施。此外,尽管上述特征可以被描述为在某些组合中起作用,甚至最初被声称为这样,但在一些情况下,可以从组合中删除来自所声称的组合的一个或多个特征,并且所声称的组合可以被定向到子组合或子组合的变体。
类似地,虽然在附图中以特定顺序描述操作,但这不应理解为要求以所示的特定顺序或顺序执行此类操作,或要求执行所有图示操作以实现期望结果。此外,本专利文档中描述的实施例中的各种系统组件的分离不应理解为在所有实施例中都需要这种分离。
仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和说明的内容来进行其他实施方式、增强和变化。

Claims (71)

1.一种处理视频数据的方法,包括:
对于视频的视频块和所述视频的比特流之间的转换,根据规则确定所述视频块的子块级别处的预测矢量的梯度,
其中所述规则指定使用为所述视频块的子块内的所有样本分配的相同的梯度值;以及
基于所述确定执行所述转换。
2.根据权利要求1所述的方法,其中,所述规则指定所述视频块的所述子块中的所有样本使用相同的运动位移信息和所述相同的梯度值。
3.根据权利要求2所述的方法,其中,在所述子块级别处执行的细化操作包括推导所述子块(xs,ys)的一个细化(Vx(xs,ys)×Gx(xs,ys)+Vy(xs,ys)×Gy(xs,ys)),其中Gx(xs,ys)和Gy(xs,ys)是所述子块的梯度,并且其中Vx(xs,ys)和Vy(xs,ys)是所述子块的运动位移矢量。
4.根据权利要求2所述的方法,其中,所述视频块的运动位移矢量V(x,y)是在所述子块级别处推导的。
5.根据权利要求1所述的方法,其中,所述视频块被划分成子块,其中所述子块中的至少一些子块具有2x2像素、2x1像素或4x1像素的大小。
6.根据权利要求1所述的方法,其中,通过对所述子块的多个样本的样本值进行平均或通过对所述子块的所述多个样本中的一些样本的样本值进行平均,来确定所述相同的梯度值。
7.根据权利要求1所述的方法,其中通过对所述子块的多个样本的每个梯度进行平均,或者通过对所述子块的所述多个样本中的一些样本的梯度进行平均,来确定所述相同的梯度值。
8.根据权利要求1-7中任一权利要求所述的方法,其中,所述规则指定所述子块的大小是预定义的,或者是基于所述比特流中包括的信息推导的,或者是在所述比特流中指示的。
9.根据权利要求8所述的方法,其中,所述规则指定所述子块的所述大小是基于所述视频块的大小推导的。
10.根据权利要求1所述的方法,其中,相同大小的所述子块用于确定所述相同的梯度值以及用于确定运动矢量或运动矢量差。
11.一种处理视频数据的方法,包括:
对于视频的当前视频块和所述视频的比特流之间的转换,在执行双向预测技术以获得所述当前视频块的运动信息之后,确定使用利有光流技术的预测细化;以及
基于所述确定执行所述转换。
12.根据权利要求11所述的方法,其中,通过首先使用至少两个经解码的运动信息值确定时间预测信号然后细化所述时间预测信号,来使用所述利用光流技术的预测细化。
13.根据权利要求12所述的方法,其中,所述当前视频块的梯度是从所述时间预测信号推导的。
14.根据权利要求11至13中任一权利要求所述的方法,
其中所述利用光流技术的预测细化包括执行基于子块的仿射运动补偿以获得预测样本,并通过添加由光流方程推导的差来细化所述预测样本,以及
其中所述双向预测技术包括使用两个参考图片列表以从两个样本块的加权平均产生预测单元。
15.一种处理视频数据的方法,包括:
对于视频的当前视频块和所述视频的比特流之间的转换,基于所述当前视频块是否满足条件来确定是否将与仿射预测相关的编解码工具应用于所述当前视频块;以及
基于所述确定执行所述转换,
其中所述条件涉及所述当前视频块的一个或多个控制点运动矢量,或者所述当前视频块的第一大小,或者所述当前视频块的子块的第二大小,或者为所述当前视频块的一个或多个子块推导的一个或多个运动矢量,或者所述当前视频块的预测模式。
16.根据权利要求15所述的方法,其中,使用基于仿射预测的编解码在所述比特流中表示所述当前视频块。
17.根据权利要求15所述的方法,其中,所述编解码工具包括仿射预测工具。
18.根据权利要求15所述的方法,其中,所述编解码工具包括交织预测工具。
19.根据权利要求15所述的方法,其中,响应于不满足所述条件,确定所述编解码工具不被应用于一致性比特流中的所述当前视频块。
20.根据权利要求19所述的方法,其中,响应于不满足所述条件,用应用于所述当前视频块的另一编解码工具替换所述编解码工具。
21.根据权利要求20所述的方法,其中,响应于不满足所述条件并且响应于用仿射Merge模式对所述当前视频块进行编解码,用应用于所述当前视频块的另一编解码工具替换所述编解码工具。
22.根据权利要求15所述的方法,其中,响应于不满足所述条件,在编码器处和解码器处针对所述当前视频块关闭或禁用所述编解码工具。
23.根据权利要求22所述的方法,其中,响应于不满足所述条件,所述比特流不包括指示所述编解码工具是否被应用于所述当前视频块的语法元素。
24.根据权利要求23所述的方法,其中,响应于所述比特流中不存在所述语法元素,推断所述编解码工具被关闭或禁用。
25.根据权利要求15所述的方法,其中,响应于满足所述条件,所述编解码工具是仿射预测工具,以及其中响应于不满足所述条件,所述编解码工具是所述仿射预测工具之外的预测工具。
26.根据权利要求25所述的方法,其中所述一个或多个控制点运动矢量被用作所述当前视频块的运动矢量,而不将仿射运动模型应用于所述当前视频块。
27.根据权利要求15所述的方法,其中,响应于满足所述条件,所述编解码工具是交织预测工具,以及其中响应于不满足所述条件,所述编解码工具是仿射预测工具之外的预测工具。
28.根据权利要求27所述的方法,其中,响应于不满足所述条件,将所述交织预测工具中的第二划分样式的预测样本设置为等于对应位置处的第一划分样式的预测样本。
29.根据权利要求15所述的方法,其中,所述条件是基于所述当前视频块的边界框的大小来确定的。
30.根据权利要求29所述的方法,其中,响应于所述边界框的所述大小小于或等于阈值而满足所述条件,并且其中响应于所述边界框的所述大小大于所述阈值而不满足所述条件。
31.根据权利要求15所述的方法,其中,所述条件基于所述当前视频块的多个子块的水平方向上的第一运动矢量和所述当前视频块的所述多个子块的垂直方向上的第二运动矢量。
32.根据权利要求31所述的方法,其中,响应于第一划分样式中的所述当前视频的一个子块的所述水平方向上的第三运动矢量减去所述第一运动矢量的结果大于阈值值,所述条件为真。
33.根据权利要求31所述的方法,其中,响应于所述第一运动矢量减去第一划分样式中的所述当前视频的一个子块的所述水平方向上的第三运动矢量的结果大于阈值值,所述条件为真。
34.根据权利要求31所述的方法,其中,响应于第一划分样式中的所述当前视频的一个子块的所述垂直方向上的第四运动矢量减去所述第二运动矢量的结果大于阈值,所述条件为真。
35.根据权利要求31所述的方法,其中,响应于所述第二运动矢量减去第一划分样式中的所述当前视频的一个子块的所述垂直方向上的第四运动矢量的结果大于阈值,所述条件为真。
36.一种处理视频数据的方法,包括:
对于视频的当前视频块和所述视频的比特流之间的转换,根据规则,基于以下内容确定是否以及如何对子块索引处的子块应用运动补偿:
(1)是否对当所述前视频块应用仿射模式,其中在所述比特流中包括指示是否应用所述仿射模式的仿射运动指示,
(2)所述当前视频块所属的颜色分量,以及
(3)所述视频的颜色格式;以及
基于所述确定执行所述转换。
37.根据权利要求36所述的方法,其中,响应于以下内容,所述规则指定对所述子块索引处的所述子块单独应用所述运动补偿:
(1)所述颜色分量是亮度分量,或
(2)所述仿射模式不被应用于所述当前视频块,或
(3)水平子块索引除以所述当前视频块的宽度的余数等于0并且垂直子块索引除以所述当前视频块的高度的第二余数等于0。
38.根据权利要求36所述的方法,其中所述规则指定用于在所述视频的色度子块的所述子块索引处执行所述运动补偿的所述色度子块的第一宽度或第一高度取决于所述仿射模式指示和所述视频的所述颜色格式。
39.根据权利要求38所述的方法,
其中,响应于指示所述仿射模式被应用于所述当前视频块的所述仿射模式指示,所述规则指定所述色度子块的所述第一宽度是亮度子块的第二宽度,并且
其中,响应于指示所述仿射模式未被应用于所述当前视频块的所述仿射模式指示,所述规则指定所述色度子块的所述第一宽度是所述亮度子块的所述第二宽度除以所述当前视频块的第三宽度。
40.根据权利要求38所述的方法,
其中,响应于指示所述仿射模式被应用于所述当前视频块的所述仿射模式指示,所述规则指定所述色度子块的所述第一高度是亮度子块的第二高度,并且
其中,响应于指示所述仿射模式未被应用于所述当前视频块的所述仿射模式指示,所述规则指定所述色度子块的所述第一高度是所述亮度子块的所述第二高度除以所述当前视频块的第三高度。
41.一种处理视频数据的方法,包括:
对于视频的当前视频块和所述视频的比特流之间的转换,根据规则,基于以下内容确定是否以及如何使用加权预测来计算所述当前视频块的子块的预测:
(1)是否对当所述前视频块应用仿射模式,其中在所述比特流中包括指示是否应用所述仿射模式的仿射运动指示,
(2)所述当前视频块所属的颜色分量,以及
(3)所述视频的颜色格式;以及
基于所述确定执行所述转换。
42.根据权利要求41所述的方法,其中,响应于以下内容,所述规则指定对子块索引处的所述子块单独应用所述加权预测:
(1)所述颜色分量不是亮度分量,或
(2)所述仿射模式不被应用于所述当前视频块,或
(3)水平子块索引除以所述当前视频块的宽度的余数等于0并且垂直子块索引除以所述当前视频块的高度的第二余数等于0。
43.根据权利要求41所述的方法,其中所述规则指定用于在所述视频的色度子块的子块索引处执行所述加权预测的所述色度子块的第一宽度或第一高度取决于所述仿射模式指示和所述视频的所述颜色格式。
44.根据权利要求43所述的方法,
其中,响应于指示所述仿射模式被应用于所述当前视频块的所述仿射模式指示,所述规则指定所述色度子块的所述第一宽度是亮度子块的第二宽度,并且
其中,响应于指示所述仿射模式未被应用于所述当前视频块的所述仿射模式指示,所述规则指定所述色度子块的所述第一宽度是所述亮度子块的所述第二宽度除以所述当前视频块的第三宽度。
45.根据权利要求43所述的方法,
其中,响应于指示所述仿射模式被应用于所述当前视频块的所述仿射模式指示,所述规则指定所述色度子块的所述第一高度是亮度子块的第二高度,并且
其中,响应于指示所述仿射模式未被应用于所述当前视频块的所述仿射模式指示,所述规则指定所述色度子块的所述第一高度是所述亮度子块的所述第二高度除以所述当前视频块的第三高度。
46.一种处理视频数据的方法,包括:
对于视频的当前视频块和所述视频的比特流之间的转换,根据规则确定所述比特流中的第一语法元素的值,其中所述第一语法元素的所述值指示仿射模式是否应用于所述当前视频块,并且
其中所述规则指定所述第一语法元素的所述值基于:
(1)所述比特流中的第二语法元素,所述第二语法元素指示是否使用基于仿射模型的运动补偿来生成所述当前视频块的预测样本,或
(2)所述比特流中的第三语法元素,所述第三语法元素指示是否为经编解码层视频序列(CLVS)启用基于6参数仿射模型的运动补偿;以及
基于所述确定执行所述转换。
47.根据权利要求46所述的方法,其中,响应于所述第二语法元素等于0,所述规则指定所述第一语法元素的所述值被设置为零。
48.根据权利要求46所述的方法,其中,响应于所述第三语法元素等于0,所述规则指定所述第一语法元素的所述值被设置为零。
49.一种处理视频数据的方法,包括:
对于视频的当前视频块和所述视频的比特流之间的转换,基于所述当前视频块的第一样式的第一子块的第一运动矢量和所述当前视频块的第二样式的第二子块的第二运动矢量之间的关系,确定是否为所述当前视频块启用交织预测工具;以及
基于所述确定执行所述转换。
50.根据权利要求49所述的方法,其中,从所述第二样式中的一个子块中选择所述第二子块,其中所述一个子块与所述第一子块重叠。
51.根据权利要求50所述的方法,其中,基于仿射参数从所述一个子块中选择所述第二子块。
52.根据权利要求50所述的方法,
其中响应于满足第一条件,所述第二子块的第二中心位于所述第一子块的第一中心的上方,并且
其中,响应于满足第二条件,所述第二子块的所述第二中心位于所述第一子块的所述第一中心的下方。
53.根据权利要求52所述的方法,其中,所述第一条件是所述第一子块在所述当前视频块的最后一行。
54.根据权利要求52所述的方法,其中,所述第二条件是所述第一子块在所述当前视频块的第一行。
55.根据权利要求52所述的方法,其中所述第二条件是:
(mv0_y>0且mv1_y>0),或
(mv0_y>0且mv1_y<0且|mv0_y|>|mv1_y|),或
(mv0_y<0且mv1_y>0且|mv0_y|<|mv1_y|),
其中mv0_y是垂直方向上的所述第二运动矢量,并且
其中mv1_y是所述垂直方向上的所述第一运动矢量。
56.根据权利要求52所述的方法,其中,响应于未满足所述第二条件,满足所述第一条件。
57.根据权利要求50所述的方法,
其中,响应于满足第三条件,所述第二子块的第二中心在所述第一子块的第一中心的左侧,并且
其中,响应于满足第四条件,所述第二子块的所述第二中心在所述第一子块的所述第一中心的右侧。
58.根据权利要求57所述的方法,其中,所述第三条件是所述第一子块在所述当前视频块的最右行。
59.根据权利要求57所述的方法,其中,所述第四条件是所述第一子块在所述当前视频块的最左行。
60.根据权利要求49所述的方法,其中,响应于所述第一运动矢量和所述第二运动矢量之间的关系满足第五条件,禁用所述交织预测工具。
61.根据权利要求60所述的方法,
其中,所述第五条件取决于所述比特流中的第一语法元素和第二语法元素,
其中,所述第一语法元素指示所述第一子块的中心是否在所述第二子块的中心的左侧,
其中,所述第二语法元素指示所述第一子块的所述中心是否在所述第二子块的所述中心的上方。
62.根据权利要求1至61中任一权利要求所述的方法,其中,执行所述转换包括将所述视频编码成所述比特流。
63.根据权利要求1至61中任一权利要求所述的方法,其中,执行所述转换包括从所述视频生成所述比特流,并且所述方法还包括将所述比特流存储在非暂时性计算机可读记录介质中。
64.根据权利要求1至61中任一权利要求所述的方法,其中,执行所述转换包括从所述比特流解码所述视频。
65.一种视频解码装置,包括处理器,所述处理器被配置为实施在权利要求1至64中的一个或多个中叙述的方法。
66.一种视频编码装置,包括处理器,所述处理器被配置为实施在权利要求1到64中的一个或多个中叙述的方法。
67.一种计算机程序产品,其上存储有计算机指令,当所述指令由处理器执行时,使得所述处理器实施在权利要求1至64中任一权利要求中叙述的方法。
68.一种非暂时性计算机可读存储介质,存储根据权利要求1至64中任一权利要求中的所述方法生成的比特流。
69.一种非暂时性计算机可读存储介质,存储使处理器实施在权利要求1至64中任一权利要求中叙述的方法的指令。
70.一种比特流生成的方法,包括:
根据在权利要求1至64中任一权利要求中叙述的方法生成视频的比特流,以及
将所述比特流存储在计算机可读程序介质上。
71.一种方法、装置、根据公开的方法或本文档中描述的系统生成的比特流。
CN202180041405.8A 2020-06-08 2021-06-08 视频编解码的仿射预测改进 Pending CN115918080A (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
CNPCT/CN2020/094839 2020-06-08
CN2020094839 2020-06-08
US202063046634P 2020-06-30 2020-06-30
US63/046,634 2020-06-30
CN2020110663 2020-08-22
CNPCT/CN2020/110663 2020-08-22
PCT/CN2021/098811 WO2021249375A1 (en) 2020-06-08 2021-06-08 Affine prediction improvements for video coding

Publications (1)

Publication Number Publication Date
CN115918080A true CN115918080A (zh) 2023-04-04

Family

ID=78845339

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180041405.8A Pending CN115918080A (zh) 2020-06-08 2021-06-08 视频编解码的仿射预测改进

Country Status (3)

Country Link
US (2) US11956448B2 (zh)
CN (1) CN115918080A (zh)
WO (1) WO2021249375A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023158212A1 (ko) * 2022-02-15 2023-08-24 엘지전자 주식회사 영상 부호화/복호화 방법, 비트스트림을 전송하는 방법 및 비트스트림을 저장한 기록 매체
US20230336737A1 (en) * 2022-04-18 2023-10-19 Tencent America LLC Sub-block based temporal motion vector predictor with an motion vector offset
US20230388513A1 (en) * 2022-05-25 2023-11-30 Tencent America LLC Subblock level temporal motion vector prediction with multiple displacement vector predictors and an offset
WO2024012052A1 (en) * 2022-07-15 2024-01-18 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
US20240048776A1 (en) * 2022-08-04 2024-02-08 Apple Inc. Reducing blockiness for codecs

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102186081B (zh) * 2011-05-11 2013-09-18 北京航空航天大学 一种基于梯度向量的h.264帧内模式选择方法
US9591254B2 (en) * 2015-03-26 2017-03-07 Qualcomm Incorporated Device and method for processing video data
US11109062B2 (en) * 2017-03-16 2021-08-31 Mediatek Inc. Method and apparatus of motion refinement based on bi-directional optical flow for video coding
US10531085B2 (en) * 2017-05-09 2020-01-07 Futurewei Technologies, Inc. Coding chroma samples in video compression
US10834417B2 (en) * 2018-09-21 2020-11-10 Tencent America LLC Method and apparatus for video coding
EP3857893A4 (en) * 2018-11-12 2022-05-11 Beijing Bytedance Network Technology Co., Ltd. BANDWIDTH CONTROL METHODS FOR INTER-PREDICTION
EP3928519B1 (en) * 2019-02-22 2024-04-03 Huawei Technologies Co., Ltd. Method and apparatus for affine based inter prediction of chroma subblocks
US11509910B2 (en) * 2019-09-16 2022-11-22 Tencent America LLC Video coding method and device for avoiding small chroma block intra prediction
CN114830665B (zh) * 2019-09-30 2023-08-04 华为技术有限公司 仿射运动模型限制

Also Published As

Publication number Publication date
WO2021249375A1 (en) 2021-12-16
US20240129489A1 (en) 2024-04-18
US11956448B2 (en) 2024-04-09
US20230107138A1 (en) 2023-04-06

Similar Documents

Publication Publication Date Title
CN110620932B (zh) 依赖模式的运动矢量差精度集
CN113711609B (zh) 利用光流的预测细化过程中的增量运动矢量
CN110581998B (zh) 视频处理方法、装置和计算机可读记录介质
CN113728630B (zh) 不同运动矢量细化中的基于区域的梯度计算
CN113597766B (zh) 基于光流的预测细化的计算
CN113711608B (zh) 利用光流的预测细化过程的适用性
CN113424538A (zh) 解码器侧细化工具的选择性应用
CN110662041B (zh) 视频比特流处理的方法和装置,存储视频比特流的方法和非暂时性计算机可读记录介质
WO2021008514A1 (en) Indication of adaptive loop filtering in adaptation parameter set
US11956448B2 (en) Affine prediction improvements for video coding
CN114450959A (zh) 视频编解码中的几何分割模式
KR20210121021A (ko) 어파인 모드 적응적 움직임 벡터 해상도 코딩 문맥
CN113366851A (zh) 对称运动矢量差编解码模式的快速算法
CN114503596B (zh) 运动矢量细化和其他编解码工具之间的相互作用
CN113661709A (zh) 仿射高级运动矢量预测中的运动信息精度对齐
US12022087B2 (en) Mode dependent motion vector difference precision set
WO2023274302A1 (en) Recursive prediction unit in video coding
WO2023274360A1 (en) Utilization of recursive prediction unit in video coding
CN115152229A (zh) merge估计区域下IBC块的BV列表构建过程

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination