运动信息共享的限制的制作方法

文档序号:19632731发布日期:2020-01-07 11:40阅读:238来源:国知局
运动信息共享的限制的制作方法

相关申请的交叉引用

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

本申请文件涉及视频处理技术、设备和系统。



背景技术:

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



技术实现要素:

本文件公开了用于使用运动矢量的merge列表编码和解码数字视频的方法、系统和设备。

在一个示例方面,一种视频编码方法,包括:根据分割结构将视频数据块划分成m个子块;根据公共运动信息编码m个子块的第一子集;以及根据不同于第一子集的公共运动信息的运动信息编码m个子块的第二子集。

在另一示例方面,一种视频解码方法,包括:解析视频比特流;以及基于解析的视频比特流重建视频图片。视频比特流包括根据分割结构划分成m个子块的至少一个视频数据块,m是大于1的整数。m个子块的第一子集是根据公共运动信息编码的,并且m个子块的第二子集是根据不同于公共运动信息的运动信息编码的。

在另一示例方面,一种视频处理方法,包括:基于子节点的父节点的多个相邻块为子节点推导merge候选列表。父节点表示视频数据单元,并且根据分割结构被划分成多个子节点。多个子节点包括子节点和与该子节点相邻的至少另一个子节点。该方法还包括在视频数据单元和视频比特流之间进行转换。

在另一示例方面,一种视频处理方法,包括:基于视频块的编码特性确定运动估计区域的维度。该方法还包括基于运动估计区域在视频块和视频比特流之间进行转换。运动估计区域表示视频帧的一部分,该视频帧包括视频块,从而能通过检查候选块是否位于merge运动估计区域中而独立地推导运动矢量候选列表。

在另一示例方面,一种视频处理方法,包括:基于与当前图片时域并置的一个或多个图片中的多个块,为当前图片中的视频块推导多个时域运动矢量预测(tmvp)候选。当前图片从一个或多个图片中排除。该方法还包括:将多个tmvp候选添加到与视频块相关联的运动候选列表中,并在视频块和比特流之间进行转换。

在另一示例方面,一种视频处理方法,包括:为视频图片中的视频块与视频块的比特流表示之间的转换生成视频块的merge候选列表。merge候选列表包括至少一个第一merge候选,该第一merge候选是通过修改运动矢量和/或第二merge候选的参考图片推导出的虚拟merge候选。该方法还包括:使用merge候选列表在视频块和视频比特流之间进行转换。

在另一示例方面,一种视频处理方法,包括:基于由当前视频块的空间merge候选的运动矢量识别的第一块、以及当前视频块和空间merge候选来自的第二块之间的相对位置,为当前视频块的子块确定子块运动候选。该方法还包括:使用子块运动候选在当前视频块和视频比特流之间进行转换。

在另一示例方面,公开了一种视频解码方法。该方法包括:解码视频比特流,其中至少一个视频块是使用取决于视频块的编码特性的运动估计区域表示的;以及从解析中重建视频块的解码版本,其中运动估计区域表示视频帧的一部分,该视频帧包括视频块,从而能通过检查候选块是否位于该merge估计区域而独立地推导运动矢量merge候选列表。

在另一示例方面,公开了另一种视频解码方法。该方法包括:根据第一规则,为视频比特流中的运动补偿视频块生成merge候选列表;使用第二规则从merge候选列表确定当前运动信息;以及基于当前运动信息重建视频块。

在又一方面,公开了一种视频解码方法。该方法包括:根据第一规则,为视频比特流中的视频块生成merge候选列表;使用第二规则将merge候选列表扩展到包含附加merge候选的扩展merge候选列表;以及使用扩展merge候选列表重建视频块。

在另一示例方面,公开了一种解码视频比特流的方法。该方法包括:解析视频比特流;以及从解析中重建视频图片。视频比特流包括由父节点指示的至少一个块,该父节点被划分成由子节点指示的m个子块,其中每个子块的模式信息被单独编码,并且m个子块不被进一步划分,m是大于1的整数,并且其中并非所有m个子块都共享相同的运动信息。

在又一示例方面,公开了实现上述方法之一的视频解码装置。

在又一示例方面,公开了实现上述方法之一的视频编码设备。

在又一典型的方面,本文所述的各种技术可以实施为存储在非暂时性计算机可读介质上的计算机程序产品。计算机程序产品包括用于执行本文所述方法的程序代码。

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

附图说明

图1是示出视频编码器实现的示例的框图。

图2图示了h.264视频编码标准中的宏块分割。

图3图示了将编码块(cb)划分成预测块(pb)的示例。

图4图示了将编码树块(ctb)细分成cb和转换块(tb)的示例实现。实线表示cb边界,且虚线表示tb边界,包括带分割的示例ctb和相应的四叉树。

图5示出了用于分割视频数据的四叉树二叉树(qtbt)结构的示例。

图6示出了视频块分割的示例。

图7示出了四叉树分割的示例。

图8示出了树型信令的示例。

图9示出了merge候选列表构造的推导过程的示例。

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

图11示出了考虑到空间merge候选的冗余检查的候选对的示例。

图12示出了nx2n和2nxn分割的第二个pu的位置的示例。

图13图示了时域merge候选的示例运动矢量缩放。

图14示出了时域merge候选的候选位置以及它们的并置图片。

图15示出了组合双向预测merge候选的示例。

图16示出了运动矢量预测候选的推导过程的示例。

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

图18示出了编码单元(cu)的运动预测的示例可选时域运动矢量预测(atmvp)。

图19图示地描绘了源块和源图片的识别的示例。

图20示出了具有四个子块和相邻块的一个cu的示例。

图21图示了双边匹配的示例。

图22图示了模板匹配的示例。

图23描绘了帧速率上转换(fruc)中的单边运动估计(me)的示例。

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

图25图示了源块识别的示例。

图26a图示了根据所公开技术的一个或多个实施例的非对称二叉树(abt)分割结构下的第二cu的示例。

图26b图示了根据所公开技术的一个或多个实施例的三叉树(tt)分割下的cu的示例。

图26c图示了根据所公开技术的一个或多个实施例的在并置块之外的时域运动矢量预测(tmvp)候选推导的多个块的示例。

图26d图示了根据所公开技术的一个或多个实施例在并置编码树单元(ctu)内的tmvp候选推导的多个块的示例。

图26e图示了根据所公开技术的一个或多个实施例在并置块之外的tmvp候选推导的多个块的示例。

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

图28是视频比特流处理的示例方法的流程图。

图29是视频比特流处理的另一示例方法的流程图。

图30是视频比特流处理的另一示例方法的流程图。

图31是根据所公开的技术的视频编码方法的流程图表示。

图32是根据所公开的技术的视频解码方法的流程图表示。

图33是根据所公开的技术的视频处理方法的流程图表示。

图34是根据所公开的技术的另一种视频处理方法的流程图表示。

图35是根据所公开的技术的另一种视频处理方法的流程图表示。

图36是根据所公开的技术的另一种视频处理方法的流程图表示。

图37是根据所公开的技术的另一种视频处理方法的流程图表示。

具体实施方式

为了提高视频的压缩比,研究人员不断寻找新的技术来编码视频。

1.介绍

本专利文件描述了与视频编码技术相关的技术。具体地,描述了视频编码中与merge模式相关的技术。所公开的技术可应用于现有的视频编码标准,如高效视频编码(hevc),或待最终确定的标准多功能视频编码(vvc)。也可能适用于未来的视频编码标准或视频编解码器。

简要讨论

视频编码标准主要是通过开发公知的itu-t和iso/iec标准而发展起来的。itu-t开发了h.261和h.263,iso/iec开发了mpeg-1和mpeg-4视觉,并且两个组织联合开发了h.262/mpeg-2视频、h.264/mpeg-4高级视频编码(avc)和h.265/hevc标准。自h.262以来,视频编码标准基于混合视频编码结构,其中采用了时域预测加变换编码。典型hevc编码器框架的示例如图1所示。

2.1分割结构

2.1.1h.264/avc中的分割树结构

先前标准中编码层的核心是宏块,包含16×16的亮度样本块,并且在常规的4:2:0颜色采样情况下,包含两个对应的8×8的色度样本块。

内部编码块使用空间预测来探索像素之间的空间相关性。定义了两种分割:16x16和4x4。

帧间编码块通过估计图片之间的运动来使用时域预测,而不是空间预测。可以单独估计16x16宏块或其任何子宏块分割的运动:16x8、8x16、8x8、8x4、4x8、4x4(见图2)。每个子宏块分割只允许一个运动矢量(mv)。

2.1.2hevc中的分割树结构

在hevc中,通过使用四叉树结构(表示为编码树)将ctu划分成cu来适应各种局部特性。在cu级别决定是使用帧间(时域)预测还是帧内(空间)预测对图片区域进行编码。根据pu的分割类型,每个cu可以进一步划分成一个、两个或四个pu。在一个pu中,应用相同的预测处理,并且相关信息以pu为基础传输到解码器。在基于pu分割类型通过应用预测处理获得残差块后,可以根据与cu的编码树相似的另一个四叉树结构将cu分割成变换单元(tu)。hevc结构的一个重要特征是它具有多个分割概念,包括cu、pu以及tu。

使用hevc的混合视频编码中涉及的各种特征突出显示如下。

1)编码树单元和编码树块(ctb)结构:hevc中的类似结构是编码树单元(ctu),其具有由编码器选择并且可以大于传统的宏块的尺寸。ctu由亮度ctb和相应的色度ctb以及语法元素组成。亮度ctb的尺寸l×l可以选择为l=16、32或64个样本,较大的尺寸通常能够实现更好的压缩。然后,hevc支持使用树结构和四叉树式信令将ctb分割为更小的块。

2)编码单元(cu)和编码块(cb):ctu的四叉树语法规定了其亮度和色度cb的尺寸和位置。四叉树的根与ctu相关联。因此,亮度ctb的尺寸是亮度cb支持的最大尺寸。ctu的亮度和色度cb的划分是联合发信令的。一个亮度cb和通常两个色度cb以及相关的语法一起形成编码单元(cu)。ctb可以只包含一个cu,也可以划分形成多个cu,并且每个cu都有一个相关的划分,分割成预测单元(pu)和转换单元树(tu)。

3)预测单元(pu)和预测块(pb):在cu级别决定是使用帧间预测还是帧内预测对图片区域进行编码。pu分割结构的根位于cu级。取决于基本的预测类型决定,可以在尺寸上进一步划分亮度和色度cb,并从亮度和色度预测块(pb)中预测亮度和色度cb。hevc支持从64×64到4×4个样本的可变pb尺寸。图3示出了mxmcu的允许pb示例。

4)变换单元(tu)和变换块(tb):使用块变换对预测残差进行编码。tu树结构的根位于cu级。亮度cb残差可能与亮度tb相同,或者也可能进一步划分成更小的亮度tb。同样适用于色度tb。对于4×4、8×8、16×16和32×32的方形tb定义了与离散余弦变换(dct)相似的整数基函数。对于亮度帧内预测残差的4×4变换,也可以指定从离散正弦变换(dst)形式推导的整数变换。

图4示出了将ctb细分成cb(和转换块(tb))的示例。实线指示cb边界,并且虚线指示tb边界。(a)带分割的ctb。(b)对应的四叉树。

2.1.2.1分割成变换块和单元的树形结构划分

对于残差编码,cb可以递归地分割为转换块(tb)。分割由残差四叉树发信令。只指定了方形cb和tb分割,其中块可以递归地划分为四象限,如图4所示。对于尺寸为m×m的给定的亮度cb,标志指示它是否被划分成四个尺寸为m/2×m/2的块。如果可以进一步划分,如序列参数集(sps)中指示的残差四叉树的最大深度所指示的那样,每个象限都会分配一个标志,指示是否将其划分为四个象限。由残差四叉树生成的叶节点块是由变换编码进一步处理的变换块。编码器指示它将使用的最大和最小亮度tb尺寸。当cb尺寸大于最大tb尺寸时,则暗示划分。当划分将导致比指示的最小值更小的亮度tb尺寸时,则暗示不划分。色度tb尺寸在每个维度上是亮度tb尺寸的一半,但当亮度tb尺寸为4×4时除外,在这种情况下,被四个4×4亮度tb覆盖的区域使用单个4×4色度tb。在帧内预测的cu的情况下,最近相邻tb(cb内或cb外)的解码样本用作帧内预测的参考数据。

与以前的标准不同,对于帧间预测的cu,hevc设计允许tb跨越多个pb,以最大化得益于四叉树结构的tb分割的潜在编码效率。

2.1.2.2父节点和子节点

根据四叉树结构对ctb进行划分,其节点为编码单元。四叉树结构中的多个节点包括叶节点和非叶节点。叶节点在树结构中没有子节点(例如,叶节点不会进一步划分)。非叶节点包括树结构的根节点。根节点对应于视频数据的初始视频块(例如,ctb)。对于多个节点的每个各自的非根节点,各自的非根节点对应于视频块,该视频块是对应于各自非根节点的树结构中的父节点的视频块的子块。多个非叶节点的每个各自的非叶节点在树结构中具有一个或多个子节点。

2.1.3联合探索模型(jem)中具有较大ctu的四叉树加二叉树块结构

为探索hevc之外的未来视频编码技术,vceg和mpeg于2015年共同成立了联合视频探索团队(jvet)。从那时起,jvet采用了许多新的方法,并将其应用到了名为联合探索模型(jem)的参考软件中。

2.1.3.1qtbt块分割结构

与hevc不同,qtbt结构消除了多个分割类型的概念。例如,qtbt结构消除了cu、pu和tu概念的分离,并支持cu分割形状的更多灵活性。在qtbt块结构中,cu可以是方形或矩形。如图5所示,首先用四叉树结构对编码树单元(ctu)进行分割。四叉树叶节点进一步被二叉树结构分割。在二叉树划分中有两种分割类型:对称的水平划分和对称的垂直划分。二叉树叶节点被称为编码单元(cu),该划分用于预测和转换处理,而无需进一步分割。这意味着在qtbt编码块结构中cu、pu和tu具有相同的块尺寸。在jem中,cu有时由不同颜色分量的编码块(cb)组成,例如,在4:2:0色度格式的预测(p)条带和双向预测(b)条带中,一个cu包含一个亮度cb和两个色度cb,并且cu有时由单个分量的cb组成,例如,在i条带的情况下,一个cu仅包含一个亮度cb或仅包含两个色度cb。

为qtbt分割方案定义了以下参数。

–ctu尺寸:四叉树的根节点尺寸,与hevc中的概念相同。

–minqtsize:最小允许的四叉树叶节点尺寸

–maxbtsize:最大允许的二叉树根节点尺寸

–maxbtdepth:最大允许的二叉树深度

–minbtsize:最小允许的二叉树叶节点尺寸

在qtbt分割结构的一个示例中,ctu尺寸被设置为具有两个对应的64×64色度样本块的128×128个亮度样本,minqtsize被设置为16×16,maxbtsize被设置为64×64,minbtsize(宽度和高度)被设置为4×4,maxbtsize被设置为4。四叉树分割首先应用于ctu,以生成四叉树叶节点。四叉树叶节点的尺寸可以具有从16×16(例如,minqtsize)到128×128(例如,ctu尺寸)的尺寸。如果叶四叉树节点是128×128,则其不会被二叉树进一步划分,因为其尺寸超过了maxbtsize(例如,64×64)。否则,叶四叉树节点可以被二叉树进一步分割。因此,四叉树叶节点也是二叉树的根节点,并且其二叉树深度为0。当二叉树深度达到maxbtdepth(例如,4)时,不考虑进一步划分。当二叉树节点的宽度等于minbtsize(例如,4)时,不考虑进一步的水平划分。同样,当二叉树节点的高度等于minbtsize时,不考虑进一步的垂直划分。通过预测和变换处理进一步处理二叉树的叶节点,而不需要进一步的分割。在jem中,最大ctu尺寸为256×256个亮度样本。

图5的左侧部分图示了通过使用qtbt进行块分割的示例,图5的右侧部分图示了相应的树表示。实线表示四叉树分割,并且虚线表示二叉树分割。在二叉树的每个划分(例如,非叶)节点中,会对一个标志发信令来指示使用哪种分割类型(例如,水平或垂直),其中0表示水平划分,1表示垂直划分。对于四叉树分割,不需要指明分割类型,因为四叉树分割总是水平和垂直划分一个块,以生成尺寸相同的4个子块。

此外,qtbt方案支持亮度和色度具有单独的qtbt结构的能力。目前,对于p条带和b条带,一个ctu中的亮度和色度ctb共享相同的qtbt结构。然而,对于内部编码(i)条带,用qtbt结构将亮度ctb分割为cu,用另一个qtbt结构将色度ctb分割为色度cu。这意味着i条带中的cu由亮度分量的编码块或两个色度分量的编码块组成,p条带或b条带中的cu由所有三种颜色分量的编码块组成。

在hevc中,为了减少运动补偿的内存访问,限制小块的帧间预测,使得4×8和8×4块不支持双向预测,并且4×4块不支持帧间预测。在jem的qtbt中,这些限制被移除。

2.1.4多功能视频编码(vvc)的三叉树

图6图示了以下示例:(a)四叉树分割,(b)垂直二叉树分割(c)水平二叉树分割(d)垂直中心侧三叉树分割,和(e)水平中心侧三叉树分割。提出了四叉树和二叉树以外的树类型。在一些实现中,还引入了两个额外的三叉树(tt)划分,例如,水平和垂直中心侧三叉树,如图6(d)和(e)所示。

在一些实现中,有两个层次的树:区域树(四叉树)和预测树(二叉树或三叉树)。首先用区域树(rt)对ctu进行划分。可以进一步用预测树(pt)划分rt叶。也可以用pt进一步划分pt叶,直到达到最大pt深度。pt叶是基本的编码单元。为了方便起见,它仍然被称为cu。cu不能进一步划分。预测和变换都以与jem相同的方式应用于cu。整个分割结构被称为“多类型树”。

2.1.5示例分割结构

被称为多树型(mtt)的树结构是qtbt的广义化。在qtbt中,如图5所示,首先用四叉树结构对编码树单元(ctu)进行划分。然后用二叉树结构对四叉树叶节点进行进一步划分。

mtt的基本结构由两种类型的树节点组成:区域树(rt)和预测树(pt),支持九种类型的划分,如图7所示。

图7图示了以下示例:(a)四叉树分割,(b)垂直二叉树分割,(c)水平二叉树分割,(d)垂直三叉树分割,(e)水平三叉树分割,(f)水平向上非对称二叉树分割,(g)水平向下非对称二叉树分割,(h)垂直的左非对称二叉树分割,和(i)垂直的右非对称二叉树分割。

区域树可以递归地将ctu划分为方形块,直至4x4尺寸的区域树叶节点。在区域树的每个节点上,可以从三种树类型中的一种形成预测树:二叉树(bt)、三叉树(tt)和/或非对称二叉树(abt)。在pt划分中,可能禁止在预测树的分支中进行四叉树分割。和jem一样,亮度树和色度树在i条带中被分开。rt和pt的信令方法如图8所示。

2.2hevc/h.265中的帧间预测

每个帧间预测的pu具有一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。对两个参考图片列表中的一个的使用也可以使用inter_pred_idc发信令。运动矢量可以相对于预测器显式地编码为增量,这种编码模式称为高级运动矢量预测(amvp)模式。

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

当信令指示要使用两个参考图片列表中的一个时,从一个样本块中生成pu。这被称为“单向预测”。单向预测对p条带和b条带都可用。

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

下面详细介绍了帧间预测模式。描述将从merge模式开始。

2.2.1merge模式

2.2.1.1merge模式的候选的推导

当使用merge模式预测pu时,从比特流分析指向merge候选列表中条目的索引,并用于检索运动信息。该列表的结构在hevc标准中有规定,并且可以按照以下步骤顺序进行概括:

步骤1:初始候选推导

步骤1.1:空域候选推导

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

步骤1.3:时域候选推导

步骤2:附加候选插入

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

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

在图9中也示意性描述了这些步骤。对于空间merge候选推导,在位于五个不同位置的候选中最多选择四个merge候选。对于时域merge候选推导,在两个候选中最多选择一个merge候选。由于在解码器处假定每个pu的候选数为常量,因此当候选数未达到条带报头中发信令的最大merge候选数(例如,maxnummergecand)时,生成附加的候选。由于候选数是恒定的,所以最佳merge候选的索引使用截断的一元二值化进行编码。如果cu的大小等于8,则当前cu的所有pu都共享一个merge候选列表,这与2n×2n预测单元的merge候选列表相同。

下面详细介绍与上述步骤相关的操作。

2.2.1.2空域候选推导

在空间merge候选的推导中,在位于图10所示位置的候选中最多选择四个merge候选。推导顺序为a1、b1、b0、a0和b2。只有当位置a1、b1、b0、a0的任何pu不可用(例如,因为它属于另一个条带或片)或是内部编码时,才考虑位置b2。在增加a1位置的候选后,对其余候选的增加进行冗余检查,其确保具有相同运动信息的候选被排除在列表之外,从而提高编码效率。为了降低计算的复杂度,在所提到的冗余检查中并不考虑所有可能的候选对。相反,只有与图11中的箭头链接的对才会被考虑,并且只有当用于冗余检查的对应候选没有相同的运动信息时,才将候选添加到列表中。复制运动信息的另一个来源是与2n×2n不同的分区相关的“第二pu”。例如,图12分别描述了n×2n和2n×n情况下的第二pu。当当前的pu被划分为n×2n时,对于列表构建不考虑a1位置的候选。在一些实施例中,添加此候选可能导致两个具有相同运动信息的预测单元,这对于在编码单元中仅具有一个pu是冗余的。同样地,当当前pu被划分为2n×n时,不考虑位置b1。

2.2.1.3时域候选推导

在此步骤中,只有一个候选添加到列表中。特别地,在这个时域merge候选的推导中,基于与给定参考图片列表中当前图片具有最小图片顺序计数poc差异的并置pu推导了缩放运动矢量。用于推导并置pu的参考图片列表在条带报头中显式地发信令。图13中的虚线示出了时域merge候选的缩放运动矢量的获得,其使用poc距离tb和td从并置pu的运动矢量进行缩放,其中tb定义为当前图片的参考图片和当前图片之间的poc差异,并且td定义为并置图片的参考图片与并置图片之间的poc差异。时域merge候选的参考图片索引设置为零。对于b条带,得到两个运动矢量(一个是对于参考图片列表0,另一个是对于参考图片列表1)并将其组合使其成为双向预测merge候选。

在属于参考帧的并置pu(y)中,在候选c0和c1之间选择时域候选的位置,如图14所示。如果位置c0处的pu不可用、内部编码或在当前ctu之外,则使用位置c1。否则,位置c0被用于时域merge候选的推导。

2.2.1.4附加候选插入

除了空时merge候选,还有两种附加类型的merge候选:组合双向预测merge候选和零merge候选。组合双向预测merge候选是利用空时merge候选生成的。组合双向预测merge候选仅用于b条带。通过将初始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数相结合,生成组合双向预测候选。如果这两个元组提供不同的运动假设,它们将形成新的双向预测候选。图15示出了原始列表中(在左侧)的两个候选被用于创建添加到最终列表(在右侧)中的组合双向预测merge候选的情况,其具有mvl0和refidxl0或mvl1和refidxl1的两个候选。有许多关于组合的规则需要考虑以生成这些附加merge候选。

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

2.2.1.5并行处理的运动估计区域

为了加快编码处理,可以并行执行运动估计,从而同时推导给定区域内所有预测单元的运动矢量。从空间邻域推导merge候选可能会干扰并行处理,因为一个预测单元在完成相关运动估计之前无法从相邻的pu推导运动参数。为了缓和编码效率和处理延迟之间的平衡,hevc定义了运动估计区域(mer)。可使用如下所述的语法元素“log2_parallel_merge_level_minus2”在图片参数集中对mer的尺寸中发信令。当定义mer时,落入同一区域的merge候选标记为不可用,并且因此在列表构建中不考虑。

7.3.2.3图片参数设置原始字节序列有效载荷(rbsp)语法

7.3.2.3.1通用图片参数集rbsp语法

log2_parallel_merge_level_minus2加2指定变量log2parmrglevel的值,该变量用于第8.5.3.2.2条中规定的merge模式亮度运动矢量的推导过程,以及第8.5.3.2.3条中规定的空间merge候选的推导过程。log2_parallel_merge_level_minus2的值应在0到ctblog2sizey-2的范围内,包括0和ctblog2sizey-2。

变量log2parmrglevel推导如下:

log2parmrglevel=log2_parallel_merge_level_minus2+2

注释3–log2parmrglevel的值表示merge候选列表并行推导的内置功能。例如,当log2parmrglevel等于6时,可以并行推导64x64块中包含的所有预测单元(pu)和编码单元(cu)的merge候选列表。

2.2.2amvp模式中的运动矢量预测

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

2.2.2.1运动矢量预测候选的推导

图16概括了运动矢量预测候选的推导过程。

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

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

2.2.2.2空间运动矢量候选

在推导空间运动矢量候选时,在五个潜在候选中最多考虑两个候选,这五个候选来自图11所描绘位置上的pu,这些位置与运动merge的位置相同。当前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的运动矢量以与时域缩放相似的方式缩放,如图17所示。主要区别在于,给出了当前pu的参考图片列表和索引作为输入,实际缩放处理与时域缩放处理相同。

2.2.2.3时域运动矢量候选

除了参考图片索引的推导外,时域merge候选的所有推导过程与空间运动矢量候选的推导过程相同(参见图2至图6)。向解码器发参考图片索引的信令。

2.2.2.4amvp信息的信令

对于amvp模式,可以在比特流对四个部分发信令,包括预测方向、参考索引、mvd和mv预测候选索引。

语法表:

7.3.8.9运动矢量差语法

2.3联合探索模型(jem)中新的帧间预测方法

2.3.1基于子cu的运动矢量预测

在具有qtbt的jem中,每个cu对于每个预测方向最多可以具有一组运动参数。通过将大的cu分割成子cu并推导该大cu的所有子cu的运动信息,编码器中考虑了两种子cu级的运动矢量预测方法。可选时域运动矢量预测(atmvp)方法允许每个cu从多个小于并置参考图片中当前cu的块中获取多组运动信息。在空时运动矢量预测(stmvp)方法中,通过利用时域运动矢量预测器和空间邻接运动矢量递归地推导子cu的运动矢量。

为了为子cu运动预测的保持更精确的运动场,当前禁用参考帧的运动压缩。

2.3.1.1可选时域运动矢量预测

在可选时域运动矢量预测(atmvp)方法中,运动矢量时域运动矢量预测(tmvp)是通过从小于当前cu的块中提取多组运动信息(包括运动矢量和参考索引)来修改的。如图18所示,子cu为方形n×n块(默认n设置为4)。

atmvp分两步预测cu内的子cu的运动矢量。第一步是用所谓的时域矢量识别参考图中的对应块。参考图片称为运动源图片。第二步是将当前cu划分成子cu,并从每个子cu对应的块中获取运动矢量以及每个子cu的参考索引,如图18所示。

在第一步中,参考图片和对应的块由当前cu的空间相邻块的运动信息确定。为了避免相邻块的重复扫描处理,使用当前cu的merge候选列表中的第一个merge候选。第一个可用的运动矢量及其相关联的参考索引被设置为时域矢量和运动源图片的索引。这样,在atmvp中,与tmvp相比,可以更准确地识别对应的块,其中对应的块(有时称为并置块)始终位于相对于当前cu的右下角或中心位置。在一个示例中,如果第一个merge候选来自左相邻块(例如,图19中的a1),则使用相关的mv和参考图片来识别源块和源图片。

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

2.3.1.2空时运动矢量预测

在这种方法中,子cu的运动矢量是按照光栅扫描顺序递归推导的。图20图示了一个具有四个子块(a至d)及其相邻块(a至d)的cu的示例。考虑一个8×8的cu,它包含四个4×4的子cua、b、c和d。当前帧中相邻的4×4的块标记为a、b、c和d。

子cua的运动推导由识别其两个空间邻居开始。第一个邻居是子cua上方的n×n块(块c)。如果该块c不可用或内部编码,则检查子cua上方的其它n×n块(从左到右,从块c处开始)。第二个邻居是子cua左侧的一个块(块b)。如果块b不可用或是内部编码,则检查子cua左侧的其它块(从上到下,从块b处开始)。每个列表从相邻块获得的运动信息被缩放到给定列表的第一个参考帧。接下来,按照hevc中规定的与tmvp相同的程序,推推导子块a的时域运动矢量预测(tmvp)。提取位置d处的并置块的运动信息并进行相应的缩放。最后,在检索和缩放运动信息后,对每个参考列表分别平均所有可用的运动矢量(最多3个)。将平均运动矢量指定为当前子cu的运动矢量。

2.3.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中,只有第一个bin文件是上下文编码的,并且其余的bin文件是上下文旁路编码的。

2.3.2自适应运动矢量差分辨率

在hevc中,当在条带报头中use_integer_mv_flag等于0时,运动矢量差(mvd)(在pu的运动矢量和预测运动矢量之间)以四分之一亮度样本为单位发信令。在jem中,引入了局部自适应运动矢量分辨率(lamvr)。在jem中,mvd可以用四分之一亮度样本、整数亮度样本或四亮度样本的单位进行编码。mvd分辨率控制在编码单元(cu)级别,并且mvd分辨率标志有条件地为每个至少有一个非零mvd分量的cu发信令。

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

当cu的第一个mvd分辨率标志为零或没有为cu编码(意味着cu中的所有mvd都为零)时,cu使用四分之一亮度样本mv分辨率。当一个cu使用整数亮度样本mv精度或四亮度样本mv精度时,该cu的amvp候选列表中的mvp将取整到对应的精度。

在编码器中,cu级别的rd检查用于确定哪个mvd分辨率将用于cu。也就是说,对每个mvd分辨率执行三次cu级别的rd检查。为了加快编码器速度,在jem中应用以下编码方案。

在对具有正常四分之一亮度采样mvd分辨率的cu进行rd检查期间,存储当前cu(整数亮度采样精度)的运动信息。在对具有整数亮度样本和4亮度样本mvd分辨率的同一个cu进行rd检查时,将存储的运动信息(取整后)用作进一步小范围运动矢量细化的起始点,从而使耗时的运动估计处理不会重复三次。

有条件地调用具有4亮度样本mvd分辨率的cu的rd检查。对于cu,当整数亮度样本mvd分辨率的rd检查成本远大于四分之一亮度样本mvd分辨率的rd检查成本时,将跳过对cu的4亮度样本mvd分辨率的rd检查。

2.3.3模式匹配运动矢量推导

模式匹配运动矢量推导(pmmvd)模式是基于帧速率上转换(fruc)技术的特殊merge模式。在这种模式下,块的运动信息不会被发信令,而是在解码器侧推导。

对于cu,当其merge标志为真时,对fruc标志发信令。当fruc标志为假时,对merge索引发信令并且使用常规merge模式。当fruc标志为真时,对另一个fruc模式标志发信令来指示将使用哪种模式(双边匹配或模板匹配)来推导该块的运动信息。

在编码器侧,基于对正常merge候选所做的rd成本选择决定是否对cu使用frucmerge模式。即通过使用rd成本选择来检查cu的两个匹配模式(双边匹配和模板匹配)。导致最低成本的模式进一步与其它cu模式相比较。如果fruc匹配模式是最有效的模式,那么对于cu,fruc标志设置为真,并且使用相关的匹配模式。

frucmerge模式中的运动推导过程有两个步骤:首先执行cu级运动搜索,然后执行子cu级运动优化。在cu级,基于双边匹配或模板匹配,推导整个cu的初始运动矢量。首先,生成一个mv候选列表,并且选择导致最低匹配成本的候选作为进一步优化cu级的起点。然后在起始点附近执行基于双边匹配或模板匹配的局部搜索,并且将最小匹配成本的mv结果作为整个cu的mv值。接着,以推导的cu运动矢量为起点,进一步在子cu级细化运动信息。

例如,对于w×hcu运动信息推导执行以下推导过程。在第一阶段,推推导了整个w×hcu的mv。在第二阶段,该cu进一步被分成m×m子cu。m的值按照等式(1)计算,d是预先定义的划分深度,在jem中默认设置为3。然后推导每个子cu的mv值。

如图21所示,通过沿当前cu的运动轨迹在两个不同的参考图片中找到两个块之间最接近的匹配,使用双边匹配来推导当前cu的运动信息。在连续运动轨迹假设下,指向两个参考块的运动矢量mv0和mv1与当前图片和两个参考图片之间的时间距离(例如,td0和td1成正比。作为特殊情况,当当前图片暂时位于两个参考图片之间并且当前图片到两个参考图片的时间距离相同时,双边匹配成为基于镜像的双向mv。

如图22所示,通过在当前图片中的模板(当前cu的顶部和/或左侧相邻块)和参考图片中的块(与模板尺寸相同)之间找到最接近的匹配,使用模板匹配来推导当前cu的运动信息。除了上述的frucmerge模式外,模板匹配也应用于amvp模式。在jem中,正如在hevc中一样,amvp有两个候选。利用模板匹配方法,推导了新的候选。如果由模板匹配新推导的候选与第一个现有amvp候选不同,则将其插入amvp候选列表的最开始处,并且然后将列表尺寸设置为2(即移除第二个现有amvp候选)。当应用于amvp模式时,仅应用cu级搜索。

2.3.3.1cu级mv候选集

cu级的mv候选集包括:

(i)原始amvp候选,如果当前cu处于amvp模式,

(ii)所有merge候选,

(iii)在第2.3.3.2节中介绍的插值mv场中的几个mv。

(iv)顶部和左侧相邻运动矢量

当使用双边匹配时,merge候选的每个有效mv用作输入,以生成假设为双边匹配的mv对。例如,merge候选在参考列表a处的一个有效mv为(mva,refa)。然后在另一个参考列表b中找到其配对的双边mv的参考图片refb,以便refa和refb在时间上位于当前图片的不同侧。如果参考列表b中的参考refb不可用,则将参考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级,可以将amvpcu的最多15个mv和mergecu的最多13个mv添加到候选列表中。

2.3.3.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.3.3.3插值mv场的生成

在对帧进行编码之前,基于单向me生成整个图片的内插运动场。然后,该运动场可以随后用作cu级或子cu级的mv候选。

首先,两个参考列表中每个参考图片的运动场在4×4的块级别上被遍历。对于每个4×4块,如果与块相关联的运动通过当前图片中的4×4块(如图23所示),并且该块没有被分配任何内插运动,则根据时间距离td0和td1将参考块的运动缩放到当前图片(与hevc中tmvp的mv缩放相同),并且在当前帧中将该缩放运动指定给该块。如果没有缩放的mv指定给4×4块,则在插值运动场中将块的运动标记为不可用。

2.3.3.4插补匹配成本

当运动矢量指向分数采样位置时,需要运动补偿插值。为了降低复杂度,对双边匹配和模板匹配都使用双线性插值而不是常规的8抽头hevc插值。

匹配成本的计算在不同的步骤处有点不同。当从cu级的候选集中选择候选时,匹配成本是双边匹配或模板匹配的绝对和差(sad)。在确定起始mv后,双边匹配在子cu级搜索的匹配成本c计算如下:

这里,w是权重系数,被经验地设置为4。mv和mvs分别指示当前mv和起始mv。仍然将sad用作模式匹配在子cu级搜索的匹配成本。

在fruc模式下,mv通过仅使用亮度样本推导。推导的运动将用于亮度和色度的mc帧间预测。确定mv后,对亮度使用8抽头(8-taps)插值滤波器并且对色度使用4抽头(4-taps)插值滤波器执行最终mc。

2.3.3.5mv细化

mv细化是基于模式的mv搜索,以双边成本或模板匹配成本为标准。在jem中,支持两种搜索模式—无限制中心偏置菱形搜索(ucbds)和自适应交叉搜索,分别在cu级别和子cu级别进行mv细化。对于cu级和子cu级的mv细化,都在四分之一亮度样本精度下直接搜索mv,接着是八分之一亮度样本mv细化。将cu和子cu步骤的mv细化的搜索范围设置为8个亮度样本。

2.3.3.6模板匹配frucmerge模式下预测方向的选择

在双边merge模式下,总是应用双向预测,因为cu的运动信息是在两个不同的参考图片中基于当前cu运动轨迹上两个块之间的最近匹配得出的。模板匹配merge模式没有这种限定。在模板匹配merge模式下,编码器可以从列表0的单向预测、列表1的单向预测或者双向预测中为cu做出选择。该选择基于如下的模板匹配成本:

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

则使用双向预测;

否则,如果cost0<=cost1

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

否则,

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

其中cost0是列表0模板匹配的sad,cost1是列表2模板匹配的sad,并且costbi是双向预测模板匹配的sad。factor的值等于1.25,意味着选择处理朝双向预测偏移。帧间预测方向选择可以仅应用于cu级模板匹配处理。

2.3.4解码器侧运动矢量细化

在双向预测操作中,对于一个块区域的预测,将两个分别由列表0的运动矢量(mv)和列表1的mv形成的预测块组合形成单个预测信号。在解码器侧运动矢量细化(dmvr)方法中,通过双边模板匹配处理进一步细化双向预测的两个运动矢量。解码器中应用的双边模板匹配用于在双边模板和参考图片中的重建样本之间执行基于失真的搜索,以便在不传输附加运动信息的情况下获得细化的mv。

在dmvr中,双边模板被生成为两个预测块的加权组合(即平均),其中两个预测块分别来自列表0的初始mv0和列表1的mv1。模板匹配操作包括计算生成的模板与参考图片中的样本区域(在初始预测块周围)之间的成本度量。对于两个参考图片中的每一个,产生最小模板成本的mv被视为该列表的更新mv,以替换原始mv。在jem中,为每个列表搜索九个mv候选。九个mv候选包括原始mv和8个周边mv,这八个周边mv在水平或垂直方向上或两者与原始mv具有一个亮度样本的偏移。最后,使用图24所示的两个新的mv(即mv0′和mv1′)生成最终的双向预测结果。绝对差异之和(sad)被用作成本度量。

在不传输附加语法元素的情况下,将dmvr应用于双向预测的merge模式,其中一个mv来自过去的参考图片,并且另一个mv来自未来的参考图片。在jem中,当为cu启用lic、仿射运动、fruc或子cumerge候选时,不应用dmvr。

3.示例问题和实施例

关于当前的编码技术已经识别到一些问题。首先,对于不同的分割树(如bt或tt),父节点可能有两个或三个子节点,例如一个块被划分为两个或三个子块。在当前设计中,两个或三个子节点可以共享相同的运动信息。在这种情况下,可能需要不必要的开销来表示运动信息。智能编码器不需要编码多个子节点,而是可以将块作为一个整体进行编码,而无需进一步划分以减少信令开销。或者,子节点可以具有不同的运动信息,以避免在比特流中的冗余信令。

第二,mer被设计以覆盖nxn区域,主要考虑hevc中的方形cu或ctu设计。然而,在vvc中,可能会出现非方形cu或甚至非方形ctu。mer需要适应非方形cu/ctu。

第三,目前只有tmvp候选可以添加到merge候选列表中。增加更多的时域merge候选预计能提供额外的编码增益。

最后,组合的双向预测merge候选是生成某些虚拟merge候选的唯一方式(例如,不直接从空间/时域相邻块复制/缩放)。希望开发不同的方法来生成虚拟merge候选,这可能会带来额外的好处。

下面的示例实施例说明了可以实现以解决上述问题的各种技术。

与mer相关的示例

示例a1:mer区域尺寸可能取决于当前图片的分割类型(例如qt、bt或tt)和/或块形状(方形或非方形)和/或块尺寸和/或时域层索引。

a.在一些实施例中,可以在比特流(例如,在序列参数集(sps)、图片参数集(pps)、条带报头等)中对mer区域尺寸发信令。

示例a2:可以引入m×n(m不等于n)的非方形mer区域,以允许编码器/解码器进行并行编码。

a.在一个示例中,可以在比特流(例如,在序列参数集(sps)、图片参数集(pps)、条带报头等)中传输指示mer区域的宽度和高度的两个单独的语法元素。

b.在另一个示例中,对于每个分割类型(例如,qt、bt、abt或tt)和/或块形状(方形或非方形),可以在比特流(例如,在序列参数集(sps)、图片参数集(pps)、条带报头等)中传输mer区域的宽度和高度的单独指示。

c.在一些实施例中,可以应用两个语法元素的预测编码来节省mer区域宽度/高度指示的一些开销。

d.在一些实施例中,可以对一个标志发信令来指示两个/多个语法元素是否共享相同的尺寸。

由于分割导致的运动信息的限制相关的示例

示例b1:对于一种分割类型(例如,qt、bt、abt或tt),一个块可以划分为m个子块(m>=2)。可施加限制,使的并非所有m子块共享相同的运动信息,包括参考图片、运动矢量、ic标志、仿射标志等。

a.如果前n个(例如,n=m-1)子块使用相同的运动信息编码,则其余子块(例如,最后一个子块)不具有相同的运动信息。

b.在一个示例中,如果其余子块(例如,最后一个子块)使用相同的运动信息,则可以避免以编码顺序对其余子块的运动信息的信令通知。

i.当子块的第一子集(例如,前m-1个子块)用相同的运动信息编码时,如果子块的其余子集(例如,最后一个子块)用merge模式编码,则merge索引不对应于由子块的第一子集(例如,m-1个子块)的任何一个覆盖的空间相邻块的运动信息。换言之,与子块的第一子集(例如,m-1个子块)的任何一个覆盖的空间相邻块的运动信息相对应的merge索引在比特流中不发信令(例如,由于比特流一致性原因)。

ii.当子块的第一子集(例如,前m-1个子块)用相同的运动信息编码时,如果子块的其余子集(例如,最后一个子块)用merge模式编码,则将从merge候选列表中移除提供子块的第一子集(例如,前m-1个子块)的相同运动信息的merge候选。

iii.当子块的第一子集(例如,前m-1个子块)用相同的运动信息编码时,如果子块的其余子集(例如,最后一个子块)用amvp模式编码、并且编码的参考图片与子块的第一子集(例如,前m-1个子块)的参考图片相同时,则解码的amvpmv预测候选索引不对应于由子块的第一子集(例如,前m-1个子块)的任何一个覆盖的空间相邻块的运动信息。换言之,如果mv预测候选索引中的任何一个可能产生相同的运动信息,则信令被修改以跳过mv预测候选的指示。另外,如果只有两个amvp候选,则可以跳过对mv预测候选索引发信令。

iv.当子块的第一子集(例如,前m-1个子块)使用相同的运动信息编码时,如果子块的其余子集(例如,最后一个子块)使用dmvr模式编码,则与子块的第一子集(例如,m-1个子块)的成本计算相同的细化运动信息的成本计算被跳过,并将该成本值视为最大值。

v.当子块的第一子集(例如,前m-1个子块)使用相同的运动信息编码时,如果子块的其余子集(例如,最后一个子块)使用fruc模式编码,则与第一子集(例如,m-1个子块)的成本计算相同的运动信息的成本计算被跳过,并将成本值视为最大值。

示例b2:可以施加限制,使不能从可以与当前块一起形成父节点的相邻块中获得merge候选。如上所述,在位于图10所示位置中的候选中,最多可选择四个merge候选。位于父节点内的这些位置的子集可以标记为受限的或不允许的,以便基于父节点外的相邻块确定merge候选。

a.在一个示例中,当为bt或abt情况推导merge候选列表时,父节点的第二个分割(例如,第二个子节点)不使用位于第一个bt或abt分割(例如,第一个子节点)中的任何相邻块。图26a至图26b示出了一些示例。图26a示出了根据所公开技术的一个或多个实施例的abt分割结构下的父节点的第二个cu的示例。在图26a的左侧,使用abt分割结构将父节点2601划分为两个cu。第一个cu中的相邻块2603被认为处于不允许的位置。因此,仅基于父节点2611的相邻块推导merge候选,而不管cu是如何划分的。也就是说,位于父节点外部的相邻块。在图26a的右侧部分,使用另一种abt分割结构将父节点2611划分为两个cu。第一个cu中的相邻块2613是不被允许的,因此,仅基于父节点2611的相邻块推导merge候选。图26b示出了根据所公开技术的一个或多个实施例的tt分割结构下的cu的示例。在图26b的左侧部分中,第3个cu的相邻块(在第2个cu中)被认为处于不允许的位置。因此,仅基于父节点的相邻块推导merge候选,而不考虑tt分割结构。同样,在图26b的右侧部分,第2个cu的相邻块(位于第1个cu)被认为处于不允许的位置。因此,仅基于父节点的相邻块推导merge候选,而不考虑分割结构。类似的限制也适用于其它分割结构(例如,qt)。

b.在一个示例中,当为tt情况推导merge候选列表时,第二或第三分割(例如,第二或第三个子节点)不使用位于第一tt分割和/或第二tt分割中的任何相邻块。

c.可选地,另外,如果在不允许的位置有一些相邻块,则可以进一步访问其它相邻块以推导merge候选。

i.在一个示例中,访问一个新位置,并将其视为不允许位置的替代。

在这种情况下,从新位置推导的merge候选将用作从不允许的位置推导的merge候选的替代。

ii.或者,首先按顺序检查所有允许的位置,然后再检查新位置。在这种情况下,只能在所有从允许位置推导的merge候选之后添加来自新位置的推导的merge候选。

iii.或者,可以定义特定的顺序,以添加来自允许的位置和新位置的merge候选。在这种情况下,对于不同的cu,可以使用不同的顺序来添加从不同的位置推导的merge候选。

示例b3:示例b1和b2中的上述限制也适用于amvp候选推导过程。与merge候选相关的示例

示例c1:通过修改运动矢量和/或可用merge候选的参考图片推导的虚拟merge候选可以添加到merge候选列表中。例如,可以通过将一个可用merge候选的运动矢量缩放到不同的参考图片来推导虚拟merge候选。

a.在一个示例中,预测方向从可用的merge候选继承,并且修改运动矢量和参考图片索引。

i.对于每个可用的参考图片列表(来自l0或l1的预测方向),相关运动矢量可以缩放到同一参考图片列表或其它参考图片列表中的不同参考图片。

ii.如果可用的merge候选对应于双向预测,则只需修改一个参考图片列表的运动信息即可推导一个虚拟merge候选。在一个示例中,对于一个参考图片列表,关联的参考图片(或参考图片索引)和运动矢量由虚拟merge候选继承,而对于另一个参考图片列表,关联的参考图片(或参考图片索引)和运动矢量可以通过将运动矢量缩放到相同参考图片列表中的不同参考图片来修改。

b.在一个示例中,如果可用的merge候选对应于单向预测,则虚拟merge候选的预测方向可以修改为双向预测。

i.对于可用的参考图片列表(对应于例如列表x的单向预测),关联的参考图片(或参考图片索引)和运动矢量由虚拟merge候选继承,而对于列表(1-x),可通过将来自列表x的运动矢量缩放到其它参考图片列表(列表(1-x))的参考图片来推导运动矢量,并且将参考图片(或参考图片索引)设置为运动矢量缩放到的列表(1-x)中的参考图片。

1.当列表(1-x)中的参考图片与列表x中的参考图片相同时,通过向列表x中的运动矢量添加任意偏移量来推导列表(1-x)中的运动矢量。例如,偏移量(-1,0),(0,-1),(1,0),(0,1)等可以添加到运动矢量中。

c.可以通过选择一个可用的merge候选来推导多个虚拟merge候选,但多个虚拟merge候选被缩放到多个参考图片。

d.可以通过选择多个可用merge候选来推导多个虚拟merge候选,但对于一个选定的可用merge候选,只能推导一个虚拟merge候选。

i.或者,对于一个选定的可用merge候选,可以推导m(m>1)个虚拟merge候选。

e.一个或多个可用的merge候选的选择可能取决于:

i.基于可用merge候选的插入顺序。在一个示例中,只有前n个候选可以用于推导虚拟merge候选。

ii.基于一个可用的merge候选是否对应于双向预测。

iii.基于merge候选的类型(空间merge候选、时域merge候选、组合双向预测merge候选、零运动矢量merge候选、子块merge候选)。在一个示例中,只能使用空间merge候选来推导虚拟merge候选。

iv.基于merge候选的编码模式(仿射或非仿射运动、启用或禁用照明补偿(ic))。在一个示例中,只能使用非仿射和非icmerge候选来推导虚拟merge候选。

v.基于当前块的尺寸和形状。

vi.基于相邻块的编码模式。

f.运动矢量将被缩放的一个或多个参考图片的选择取决于:

i.参考图片索引。在一个示例中,选择具有较小参考索引的参考图片,例如,参考图片索引等于0。

ii.一个参考图片和与所选可用merge候选图片关联的参考图片之间的图片顺序计数(poc)差异。在一个示例中,选择对每个参考图片列表具有最小poc差异的参考图片。

iii.一个参考图片和与所选可用merge候选图片关联的参考图片之间的量化参数(qp)差异。在一个示例中,选择对每个的参考图片列表具有最小qp差异的参考图片。

iv.参考图片的时域层。在一个示例中,选择具有最低时域层的参考图片。

g.虚拟merge候选可以添加到merge候选列表中的特定位置,例如在tmvp之前、或者在tmvp之后但在组合双向预测merge候选之前、或者在组合双向预测merge候选之后。

i.当可以添加多个虚拟merge候选时,与基于单向预测的merge候选相比,基于双向预测的merge候选具有更高的优先级,即双向预测候选添加在单向预测候选之前。

ii.当可以使用多个参考图片来缩放与选定的merge候选关联的运动矢量时,参考图片的顺序可以如下所示:

1.基于参考图片索引的升序。

2.列表0中的图片在列表1中的图片之前被检查,反之亦然。

3.根据参考图片索引,对列表0和列表1中的图片进行交错检查。

4.在一个示例中,对于双向预测,保持列表1的运动信息不变,但根据参考图片索引的升序循环列表0中的所有参考图片;然后保持列表0的运动信息,但根据参考图片索引的升序循环列表1中的所有参考图片。或者,保持列表0的运动信息不变,但根据参考图片索引的升序循环列表1中的所有参考图片;然后保持列表1的运动信息,但根据参考图片索引的升序循环列表0中的所有参考图片。或者,将运动信息缩放到索引为0的两个参考图片,然后缩放到索引为1的两个参考图片,依此类推。

h.虚拟merge候选可能有两个以上的参考块,即具有两个以上参考的多假设。

示例c2:可以从由空间merge候选的运动矢量和当前块与空间merge候选来自的块之间的相对位置识别的块中获得子块运动候选。

a.图25中描述了说明性示例,其中示出了源块识别的说明性示例。

b.增加空间相邻块和当前块之间的相对位置的概念也可应用于当前帧内的帧内块复制(ibc)merge或仿射merge的子块运动候选。在这种情况下,源图片将与当前图片相同。该概念也可以在与当前块的当前图片不同的图片中应用于atmvp。

示例c3:在tmvp推导过程中,可以通过非零运动矢量识别并置块,而不是选择并置位置(零运动矢量)。

a.非零运动矢量可从空间merge候选中推导。

b.在一个示例中,可以使用与atmvp中使用的相同的方法,例如,如果需要,通过将运动矢量缩放到并置图片来推导第一个merge候选。

c.或者,也可以修改并置图片,例如设置为与一个空间merge候选关联的参考图片。

示例c4:来自一个或多个并置图片的多个块可用于推导多个tmvp候选。

a.在一个示例中,多个块可以位于并置块中,其中并置块是与当前块具有相对于并置图片的左上角相同的相对位置的块,并且与当前块具有相同的尺寸。

b.在一个示例中,多个块可能位于并置ctb内,其中并置ctb是覆盖并置块的ctb。

c.在一个示例中,多个块可能位于并置块和/或并置ctb之外。

d.可选地,此外,在上述示例中,可以用不同的方式定义并置块,即,通过从某个merge候选块推导的运动矢量或从空间相邻块的运动信息推导的运动矢量来指出。图26c示出了用于在并置块之外(一些可能也在并置块之外)的tmvp候选推导的多个块的示例。图26d示出了用于在并置编码树单元(ctu)内的tmvp候选推导的多个块的示例。图26e示出了用于在并置块之外(一些可能也在并置块之外)的tmvp候选推导的多个块的示例。

示例c5:对于新引进的候选,可以应用全局修剪或局部修剪。

a.对于全局修剪,应检查一个新候选与所有其它可用候选(插入到新候选之前)以查看其中任何两个是否相同。如果新候选与任意一个候选相同,则不会将新候选添加到候选列表中。

b.对于局部修剪,应检查一个新候选与部分其它可用候选(插入到新候选之前),以查看其中任何两个是否相同。

另一个实施例如下给出。此具体实施例说明了可以对当前定义的hevc编码标准进行的更改,以适应公开技术的某些实现。下面的章节号参考hevc标准文件中相应的章节号。在文本中,带下划线的文本表示添加,并且删除线表示删除到当前标准。此外,符号“x”和“y”被添加到变量名中,以指示为比特流定义的两个新位字段。

7.3.2.3图片参数集rbsp语法

7.3.2.3.1通用图片参数集rbsp语法

log2x_parallel_merge_level_minus2加2指定变量log2xparmrglevel的值,该变量用于第8.5.3.2.2条规定的merge模式亮度运动矢量的推导过程、以及第8.5.3.2.3条规定的空间merge候选的推导过程。log2x_parallel_merge_level_minus2的值应在0到ctblog2sizey-2的范围内,包括0和ctblog2sizey-2。

变量log2parmrglevel推导如下:

log2xparmrglevel=log2x_parallel_merge_level_minus2+2(7-37)

log2y_parallel_merge_level_minus2加2指定变量log2yparmrglevel的值,该变量用于第8.5.3.2.2条中规定的merge模式的亮度运动矢量的推导过程,以及第8.5.3.2.3条中规定的空间merge候选的推导过程。log2y_parallel_merge_level_minus2的值应在0到ctblog2sizey-2的范围内,包括0和ctblog2sizey-2。

变量log2yparmrglevel推导如下:

log2yparmrglevel=log2y_parallel_merge_level_minus2+2(7-37)

空间merge候选的推导过程

该过程的输入是:

-当前亮度编码块的左上方样本相对于当前图片左上方亮度样本的亮度位置(xcb,ycb),

-指定当前亮度编码块尺寸的变量ncbs,

-指定当前亮度预测块的左上样本相对于当前图片的左上亮度样本的亮度位置(xpb,ypb),

–两个变量npbw和npbh,指定亮度预测块的宽度和高度,

–指定当前编码单元内当前预测单元的索引的变量partidx。

该过程的输出如下,x为0或1:

-相邻预测单元的可用性标志availableflaga0,availableflaga1,availableflagb0,availableflagb1,和availableflagb2,

-相邻预测单元的参考索引refidxlxa0,refidxlxa1,refidxlxb0,refidxlxb1,和refidxlxb2,

-相邻预测单元的预测列表使用标志predflaglxa0,predflaglxa1,predflaglxb0,predflaglxb1,和predflaglxb2,

-相邻预测单元的运动矢量mvlxa0,mvlxa1,mvlxb0,mvlxb1,和mvlxb2。

对于availableflaga1,refidxlxa1,predflaglxa1,和mvlxa1的推导,以下适用:

-相邻亮度编码块内的亮度位置(xnba1,ynba1)设置为等于(xpb-1,ypb+npbh-1)。

-将亮度位置(xcb,ycb)、当前亮度编码块尺寸ncbs、亮度预测块位置(xpb,ypb)、亮度预测块宽度npbw、亮度预测块高度npbh、亮度位置(xnba1,ynba1)和分割索引partidx作为输入调用第6.4.2条中规定的预测块的可用性推导过程,并将输出分配给预测块可用性标志availablea1。

–当下列一个或多个条件为真时,availablea1设置为假:

–xpb>>log2xparmrglevel等于xnba1>>log2xparmrglevel且ypb>>log2yparmrglevel等于ynba1>>log2yparmrglevel。

–当前预测单元的partmode等于part_nx2n、part_nlx2n、或part_nrx2n且partidx等于1。

–变量availableflaga1,refidxlxa1,predflaglxa1,和mvlxa1推导如下:

对于availableflagb1,refidxlxb1,predflaglxb1,和mvlxb1的推导,以下适用:

-相邻亮度编码块内的亮度位置(xnbb1,ynbb1)设置为等于(xpb+npbw-1,ypb-1)。

-将亮度位置(xcb,ycb)、当前亮度编码块尺寸ncbs、亮度预测块位置(xpb,ypb)、亮度预测块宽度npbw、亮度预测块高度npbh、亮度位置(xnbb1,ynbb1)和分割索引partidx作为输入调用第6.4.2条中规定的预测块的可用性推导过程,并将输出分配给可用的预测块可用性标志availableb1。

–当下列一个或多个条件为真时,availableb1设置为假:

-xpb>>log2xparmrglevel等于xnbb1>>log2xparmrglevel且ypb>>log2yparmrglevel等于ynbb1>>log2yparmrglevel.

-当前预测单元的partmode等于part_2nxn,part_2nxnu,或part_2nxnd,且partidx等于1。

–变量availableflagb1,refidxlxb1,predflaglxb1,和mvlxb1的推导如下:

对于availableflagb0,refidxlxb0,predflaglxb0,和mvlxb0的推导,以下适用:

-相邻亮度编码块内的亮度位置(xnbb0,ynbb0)设置为等于(xpb+npbw,ypb-1)。

-将亮度位置(xcb,ycb)、当前亮度编码块尺寸ncbs、亮度预测块位置(xpb,ypb)、亮度预测块宽度npbw、亮度预测块高度npbh、亮度位置(xnbb0,ynbb0)和分割索引partidx作为输入调用第6.4.2条中规定的预测块的可用性推导过程,并将输出分配给可用的预测块可用性标志availableb0。

–当xpb>>log2xparmrglevel等于xnbb0>>log2xparmrglevel且ypb>>log2yparmrglevel等于ynbb0>>log2yparmrglevel时,availableb0设置为假。

–变量availableflagb0,refidxlxb0,predflaglxb0,和mvlxb0的推导如下:

对于availableflaga0,refidxlxa0,predflaglxa0,和mvlxa0的推导,以下适用:

-相邻亮度编码块内的亮度位置(xnba0,ynba0)设置为等于(xpb-1,ypb+npbh)。

-将亮度位置(xcb,ycb)、当前亮度编码块尺寸ncbs、亮度预测块位置(xpb,ypb)、亮度预测块宽度npbw、亮度预测块高度npbh、亮度位置(xnba0,ynba0)和分割索引partidx作为输入调用第6.4.2条中规定的预测块的可用性推导过程,并将输出分配给可用的预测块可用性标志availablea0。

–当xpb>>log2xparmrglevel等于xnba0>>log2xparmrglevel且ypb>>log2yparmrglevel等于ya0>>log2yparmrglevel时,availablea0设置为假。

–变量availableflaga0,refidxlxa0,predflaglxa0,和mvlxa0的推导如下:

对于availableflagb2,refidxlxb2,predflaglxb2,和mvlxb2的推导,以下适用:

–相邻亮度编码块内的亮度位置(xnbb2,ynbb2)设置为等于(xpb-1,ypb-1)。

-将亮度位置(xcb,ycb)、当前亮度编码块尺寸ncbs、亮度预测块位置(xpb,ypb)、亮度预测块宽度npbw、亮度预测块高度npbh、亮度位置(xnbb2,ynbb2)和分割索引partidx作为输入调用第6.4.2条中规定的预测块的可用性推导过程,并将输出分配给可用的预测块可用性标志availableb2。

–当xpb>>log2xparmrglevel等于xnbb2>>log2xparmrglevel和ypb>>log2yparmrglevel等于ynbb2>>log2yparmrglevel时,availableb2设置为假。

-变量availableflagb2,refidxlxb2,predflaglxb2,和mvlxb2推导如下:

图27是视频处理装置2700的框图。装置2700可用于实施本文所述的一种或多种方法。装置2700可实施在智能手机、平板电脑、计算机、物联网(iot)接收器等之中。装置2700可包括一个或多个处理器2702、一个或多个存储器2704和视频处理硬件2706。处理器2702可以配置为实现本文中描述的一个或多个方法。存储器(多个存储器)2704可用于存储用于实现本文所述方法和技术的数据和代码。视频处理硬件2706可用于在硬件电路中实现本文中描述的一些技术。

图28是视频解码方法2800的流程图。方法2800包括解码(2802)视频比特流,其中使用取决于视频块的编码特性的运动估计区域表示至少一个视频块;以及从解析中重建(2804)视频块的解码版本,其中运动估计区域表示包含视频块的视频帧,使得通过检查候选块是否位于该merge估计区域,可以独立地推导运动矢量merge候选列表。

在一些实施例中,视频块的编码特性可以包括其分割类型(例如,cu或pu),也可以包括其形状(例如,方形、高矩形或宽矩形)。在一些实施例中,视频块的编码特性包括视频比特流中的比特字段,其中比特字段位于视频比特流的序列参数集或图片参数集或条带报头中。在视频块是矩形的的情况下,比特流可以为矩形视频块的水平和垂直维度包括两个单独的字段。

在一些实施例中,视频比特流可以包括由父节点指示的至少一个块,该父节点被划分成由子节点指示的m个子块,其中每个子块的模式信息被单独编码,并且m个子块不被进一步划分,并且m是大于1的整数,并且其中并非所有m个子块共享相同的运动信息。在本文中描述了其它实施例,例如,在示例部分3中。

图29是示例视频解码方法2900的流程图。方法2900包括根据第一规则为视频比特流中的运动补偿视频块生成(2902)merge候选列表;使用第二规则从merge候选列表中确定(2904)当前运动信息;以及基于当前运动信息重建(2906)视频块。

在一些实施例中,merge候选列表包括至少一个虚拟merge候选,并且其中所述方法还包括:通过将另一个merge候选的运动矢量缩放到不同的参考图片来推导至少一个虚拟merge候选。在一些实施例中,merge候选列表包括多个虚拟merge候选,并且然后该方法可以包括通过将其它merge候选的运动矢量缩放到不同的参考图片来推导多个虚拟merge候选。例如,虚拟merge候选可以包括不直接基于空间或时域相邻块的候选和运动矢量、但从其中推导出来的merge候选。

如前面第3节所述,多个merge候选的推导可能是merge候选列表的一个函数。在一些实施例中,运动矢量的缩放可以通过基于参考图片索引确定缩放量来执行。可选地,另外,图片质量(例如编码参考图片的量化级别)可用于确定要使用的缩放量。例如,质量较低(例如,较高量化)的参考图片可通过缩放来去加重。在一些实施例中,虚拟merge候选可以按照在时域运动矢量预测候选之前的顺序添加到列表中。或者,虚拟merge候选可以在时域merge候选之后、但在双向预测merge候选之前添加。

图30是视频解码方法3000的流程图。方法3000包括根据第一条规则为视频比特流中的视频块生成(3002)merge候选列表;使用第二条规则将merge候选列表扩展(3004)到包含附加merge候选的merge候选扩展列表;以及使用merge候选扩展列表重建(3006)视频块。

在一些实施例中,merge候选扩展列表包括从由空间merge候选的运动矢量识别的块以及视频块和块之间的相对位置获得的子块运动候选。在一些实施例中,merge候选扩展列表包括包含视频块的当前视频帧内的仿射merge或帧内块复制编码merge的子块merge候选。

在一些实施例中,方法3000还可以包括使用来自一个或多个图片的多个块为merge候选扩展列表推导多个时域运动矢量预测候选。多个时域运动矢量预测候选包括至少一个使用与视频块具有到并置块的左上角相同的相对位置的块的候选。例如,在图26a至26e中示出了各种示例。

在一些实施例中,方法3000还可以包括对附加merge候选应用全局修剪处理,其中全局修剪处理包括检查新的附加merge候选与merge候选列表中的所有其它候选。在一些实施例中,方法3000还可以包括对附加merge候选应用局部修剪处理,其中局部修剪处理包括检查新的附加merge候选与merge候选列表中少于所有的候选。

本文的第3节进一步描述了方法2800、2900和3000的其它特征和变型。

在一些实施例中,解码视频比特流的方法包括解析视频比特流,以及从解析中重建视频图片。视频比特流包括由父节点指示的至少一个块,该父节点被划分成子节点指示的m个子块,其中每个子块的模式信息被单独编码,并且m个子块不被进一步划分,m是大于1的整数,并且其中并非所有m个子块共享相同的运动信息。在本文中进一步描述了这种基于块的视频编码的视频编码技术的应用。

在一些实施例中,上述方法可由视频解码器装置(例如,装置2700)实现。

在一些实施例中,视频编码器可以在视频编码处理的视频重建或运动补偿期间中实现上述功能。

在一些实施例中,上述方法可以实施在处理器可执行代码中,并且存储在计算机可读程序介质上,例如一个或多个存储器、光存储设备或固态驱动器等。

图31是根据所公开的技术的视频编码方法3100的流程图表示。方法3100包括在操作3102中,根据分割结构将视频数据块划分成m个子块。m是大于1(m>1)的整数。方法3100包括在操作3104中,根据公共运动信息对m子块的第一子集进行编码。方法3100还包括在操作3106中,根据与第一个集的公共运动信息不同的运动信息对m个子块的第二个集进行编码。

在一些实施例中,分割结构包括四叉树分割结构,其中每个父块包含四个子块。在一些实施例中,分割结构包括二叉树分割结构,其中每个父块包含两个对称的子块。在一些实施例中,分割结构包括非对称二叉树分割结构,其中每个父块包含两个不对称的子块。在一些实施例中,分割结构包括三叉树分割结构,其中每个父块包含三个子块。在一些实施例中,m个子块的子块是不进一步划分的叶节点,并且其中子块被视为编码块。

在一些实施例中,m个子块的第一子集包括视频数据块中的前m-1个子块。在一些实施例中,m子块的第二子集包括视频数据块中的最后一个子块。

在一些实施例中,m个子块的第二子集用merge模式编码。方法3100还包括,在确定merge索引对应于视频数据块的相邻块的运动信息时,避免在比特流中信令通知merge模式的merge索引。相邻块被m个子块的第一子集中的一个或多个子块覆盖。

在一些实施例中,m子块的第二子集用merge模式编码。方法3100还包括从merge模式的merge候选列表中移除为m个子块的第一子集提供公共运动信息的merge候选。

在一些实施例中,m个子块的第二子集用高级运动矢量预测(amvp)模式编码。方法3100还包括在确定amvp运动矢量预测候选索引对应于视频数据块的相邻块的运动信息时,避免在视频比特流中信令通知amvp运动矢量预测候选索引,其中相邻块被m个子块的第一子集中的一个或多个子块覆盖。

在一些实施例中,m个子块的第二子集用解码器侧运动矢量模式或帧速率上转换模式编码。方法3100还包括跳过对与m个子块的第一子集的公共运动信息相同的运动信息的成本计算。在一些实施例中,方法3100还包括确定与成本计算相关联的成本值为最大值。

图32是根据所公开的技术的视频解码方法3200的流程图表示。3200方法包括在3202操作中,解析视频比特流。方法3200还包括在操作3204中,基于解析的视频比特流重建视频图片。视频比特流包括根据分割结构划分成m个子块的至少一个视频数据块,m是大于1(m>1)的整数。m个子块的第一子集是根据公共运动信息编码的,并且m个子块的第二子集是根据不同于公共运动信息的运动信息编码的。

在一些实施例中,分割结构包括四叉树分割结构,其中每个父块包含四个子块。在一些实施例中,分割结构包括二叉树分割结构,其中每个父块包含两个对称的子块。在一些实施例中,分割结构包括非对称二叉树分割结构,其中每个父块包含两个不对称的子块。在一些实施例中,分割结构包括三叉树分割结构,其中每个父块包含三个子块。在一些实施例中,m个子块的子块是不进一步划分的叶节点,其中子块被视为编码块。

在一些实施例中,m个子块的第一子集包括视频数据块中的前m-1个子块。在一些实施例中,m个子块的第二子集包括视频数据块中的最后一个子块。

在一些实施例中,m个子块的第二子集用merge模式编码。跳过与视频数据块的相邻块的运动信息相对应的merge索引,并且相邻块被m个子块的第一子集中的一个或多个子块覆盖。

在一些实施例中,m个子块的第二子集用merge模式编码。从merge模式的merge候选列表中移除为m子块的第一子集提供公共运动信息的merge候选。

在一些实施例中,m个子块的第二子集用高级运动矢量预测(amvp)模式编码。跳过与视频数据块的相邻块的运动信息相对应的amvp运动预测候选索引,并且相邻块被m个子块的第一子集中的一个或多个子块覆盖。

在一些实施例中,m子块的第二子集用解码器侧运动矢量模式或帧速率上转换模式编码。确定与m个子块的第一子集的公共运动信息相同的运动信息相关联的成本值为最大值。

图33是根据所公开的技术的视频编码或解码方法3300的流程图表示。方法3300包括在操作3302中,基于子节点的父节点的多个相邻块为子节点推导merge候选列表。父节点表示视频数据单元,并且根据分割结构划分为多个子节点。多个子节点包括子节点和与子节点相邻的至少一个子节点。方法3300还包括在操作3304中,在视频数据单元和视频比特流之间进行转换。

在一些实施例中,分割结构包括二叉树分割结构,其中每个父节点包含两个对称的子节点。在一些实施例中,分割结构包括非对称二叉树分割结构,其中每个父节点包含两个不对称的子节点。在一些实施例中,分割结构包括三叉树分割结构,其中每个父节点包含三个子节点。在一些实施例中,分割结构包括四叉树分割结构,其中每个父节点包含四个子节点。在一些实施例中,每个子节点都是被视为编码单元的叶节点。

在一些实施例中,通过排除父节点内的任何块来选择一组允许块来确定多个相邻块。在一些实施例中,多个相邻块包括一个或多个替换块以替换排除块。在一些实施例中,推导merge候选列表包括将一个或多个替换块与一组允许块组合以获得多个相邻块。

图34是根据所公开的技术的视频处理方法3400的流程图表示。该方法3400包括在操作3402中,基于视频块的编码特性确定运动估计区域的维度。方法3400包括在操作3404中,基于运动估计区域在视频块和的视频比特流之间进行转换。运动估计区域表示视频帧的一部分,该视频帧包括视频块,从而能通过检查候选块是否位于merge运动估计区域中而独立地推导运动矢量候选。

在一些实施例中,视频块的编码特性包括分割类型。分割类型可以是二叉树分割类型,其中每个父节点包含两个子节点。分割类型可以是三叉树分割类型,其中每个父节点包含三个子节点。分割类型也可以是四叉树分割类型,其中每个父块包含四个子块。

在一些实施例中,视频块的编码特性包括视频块的维度。视频块的编码特性还可以包括视频块的形状或表示与视频块相关联的当前图片的时域层的时域层索引。在一些实施例中,运动估计区域的宽度为m且高度为n,m不同于n。

在一些实施例中,运动估计区域的维度在比特流中编码。运动估计区域的维度可以在序列参数集、图片参数集或条带报头中编码。在一些实现中,比特流包含两个语法元素,以指示运动估计区域的宽度和高度。在一些实现中,比特流包括运动估计区域的宽度和高度的两个单独指示。在某些实现中,比特流包含指示两个语法元素或两个单独的指示是否共享相同的值的标志。

图35是根据所公开的技术的视频处理方法3500的流程图表示。方法3500包括在操作3502中,基于与当前图片时域并置的一个或多个图片中的多个块,为当前图片中的视频块推导多个时域运动矢量预测(tmvp)候选。当前图片从一个或多个图片中排除。方法3500包括在操作3502中,将多个tmvp候选添加到与视频块关联的运动候选列表中。方法3500还包括在操作3504中,在视频块和比特流之间进行转换。

在一些实施例中,一个或多个图片包括与当前图片并置的单个图片。在一些实施例中,多个块位于与视频块时域并置的第二块内。第二块与视频块尺寸相同,并且第二块相对于一个或多个图片的第二图片的左上角的相对位置与视频块相对于当前图片的左上角的相对位置相同。在一些实施例中,多个块位于覆盖与视频块时域并置的第二个块的编码树块内。在一些实施例中,多个块位于与视频块时域并置的第二个块之外。在一些实施例中,多个块位于覆盖与视频块时域并置的第二个块的编码树块之外。

在一些实施例中,第二块由非零运动矢量识别。在一些实施例中,非零运动矢量是从第二块的空间merge候选推导的。在一些实施例中,非零运动矢量是基于一个或多个图片中的一个通过缩放运动矢量推导的。

在一些实施例中,该方法还包括将一个或多个图片中的一个调整为与空间merge候选关联的参考图片。在一些实施例中,第二块由从视频块的merge候选推导出的运动矢量识别。在一些实施例中,第二块由从视频块的空间相邻块的运动信息推导出的运动矢量识别。

在一些实施例中,该方法还包括将新的tmvp候选与所有现有的tmvp候选进行比较,确定新的tmvp候选与现有的tmvp候选相同,并且避免将新的tmvp候选添加到多个tmvp候选中。或者,该方法包括将新的tmvp候选与现有tmvp候选的子集进行比较,确定新的tmvp候选与现有tmvp候选相同,并且避免将新的tmvp候选添加到多个tmvp候选中。

图36是根据所公开的技术的视频处理方法3600的流程图表示。方法3600包括在操作3602中,为视频图片中的视频块和视频块的比特流表示之间的转换生成视频块的merge候选列表。merge候选列表至少包括第一merge候选,第一merge候选是通过修改运动矢量和/或第二merge候选的参考图片而推导出的虚拟merge候选。方法3600包括在操作3604中,使用merge候选列表在视频块和视频比特流之间进行转换。

在一些实施例中,虚拟merge候选从第二merge候选继承预测方向。在一些实施例中,使用其中使用了两个参考图片列表的双向预测来推导第二merge候选,并且其中虚拟merge候选是通过修改仅与两个参考图片列表中的一个相关联的运动信息推导出的。在一些实施例中,对于两个参考图片列表的第一参考图片列表,虚拟merge候选继承与第一参考图片列表中的第二merge候选相关联的第一参考图片。在一些实施例中,对于两个参考图片列表的第二参考图片列表,虚拟merge候选是通过相对于第二参考图片列表中的第二参考图片缩放运动矢量推导出的。在一些实施例中,第二merge候选是使用其中仅使用一个参考图片列表的单向预测推导出的,并且其中虚拟merge候选使用其中使用两个参考图片列表的双向预测。

在一些实施例中,merge候选列表包括基于多个对应的merge候选推导出的多个虚拟merge候选。在一些实施例中,该方法包括基于第一标准,选择用于推导虚拟merge候选的一个或多个merge候选。在一些实施例中,第一标准包括以下至少一个:一个或多个merge候选在列表中的插入顺序;merge候选是否对应于双向预测;merge候选的类型,其中类型指示merge候选是否是空间merge候选、时域merge候选、组合的双向预测merge候选、零运动矢量merge候选或子块merge候选;merge候选的编码模式,其中编码模式指示merge候选是否使用仿射运动、非仿射运动、照明补偿或非照明补偿进行编码;视频块的尺寸;视频块的形状;或相邻块的编码模式。

在一些实施例中,该方法包括选择用于推导虚拟merge候选的一个或多个空间merge候选。在一些实施例中,该方法包括选择使用非仿射运动或非照明补偿编码的用于推导虚拟merge候选的一个或多个merge候选。

在一些实施例中,该方法包括基于第二标准,选择用于推导虚拟merge候选的一个或多个参考图片。在一些实施例中,第二标准包括以下至少一个:参考图片索引;第一参考图片和与第二merge候选相关联的第二参考图片之间不同的图片顺序计数;第一参考图片和与第二merge候选相关联的第二参考图片之间不同的量化参数;或参考图片的若干时域层。

在一些实施例中,虚拟merge候选被放置在merge候选列表中的第一位置。在一些实施例中,第一位置包括以下之一:在时域运动矢量预测(tmvp)候选之前、在tmvp候选之后且在组合的双向预测merge候选之前,或在组合的双向预测merge候选之后。在一些实施例中,基于双向预测的merge候选比基于单向预测的merge候选具有更高的优先级。

在一些实施例中,虚拟merge候选是基于多个参考图片通过修改第二merge候选的运动矢量推导出的,并且多个参考图片是按照第三标准排序的。在一些实施例中,第三标准包括以下至少一个:参考图片索引的升序;检查不同图片列表中图片的先后顺序;检查不同图片列表中图片的交错顺序;或其组合。

在一些实施例中,虚拟merge候选包括两个以上的参考块。在一些实施例中,该方法包括将子块运动候选与现有候选的至少一个子集进行比较,确定子块运动候选与现有候选相同,并且避免将子块运动候选添加到merge候选列表中。

图37是根据所公开的技术的视频处理方法3700的流程图表示。方法3700包括在操作3702中,基于由当前视频块的空间merge候选的运动矢量识别的第一块、以及当前视频块和空间merge候选来自的第二块之间的相对位置为当前视频块的子块确定的子块运动候选。方法3700包括在操作3704中,使用子块运动候选在当前视频块和视频比特流之间进行转换。

在一些实施例中,子块候选用于可选时域运动矢量预测,其中第一块位于与当前视频块的当前图片不同的图片中。在一些实施例中,子块运动候选用于帧内块复制(ibc)merge模式编码,其中第一块位于当前视频块的当前帧内。在一些实施例中,子块候选用于仿射merge模式编码。

应当理解的是,本文公开了几种额外的方法,通过这些方法可以在视频编码中计算merge候选。实施例可以在下述方面从这些技术中获益:由于在编码期间更准确地捕获视频图片中的运动或变化、以及通过使用少量比特在比特流中传输信息而导致的视频的压缩表示的质量的提高。

从上述来看,应当理解的是,为了便于说明,本发明公开的技术的具体实施例已经在本文中进行了描述,但是可以在不偏离本发明范围的情况下进行各种修改。因此,除了的之外,本发明公开的技术不限于权利要求的限定。

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

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

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

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

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

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

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

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1