要检查多少个HMVP候选的制作方法

文档序号:20511228发布日期:2020-04-24 18:33阅读:363来源:国知局
要检查多少个HMVP候选的制作方法

相关申请的交叉引用

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

本申请文件涉及视频编码和解码技术、设备和系统。



背景技术:

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



技术实现要素:

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

在一个示例方面,公开了一种视频解码方法。该方法包括:维护一个或多个表,每个表包括与对应的运动信息相关联的一个或多个运动候选;基于标准,决定一个或多个表中要检查的的最大运动候选数;在候选列表构建处理期间在一个或多个表中检查直到最大运动候选数;以及基于在候选列表构建处理期间构建的候选列表,处理包括第一视频块的视频数据的比特流表示。

在另一个示例方面,公开了另一种视频解码方法。该方法包括:维护一个或多个表,每个表包括具有从先前编码的块导出的对应的运动信息的一个或多个基于历史的运动矢量预测(hmvp)候选;在构建候选列表的候选列表构建处理中检查表直到最大hmvp候选数;以及基于构建的候选列表处理包含第一视频块的视频数据的比特流表示。

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

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

在又一典型的方面,公开了实现本文所述的视频解码方法的视频解码装置。

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

附图说明

图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示出了用于推导空域merge候选的空域相邻块的示例。

图26是一种视频处理方法的流程图。

图27是另一种视频处理方法的流程图。

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

图29示出了使用提出的hmvp方法解码的流程图的示例。

图30示出了使用提出的hmvp方法更新表的示例。

图31和图32示出了基于冗余移除的lut更新方法(移除一个冗余运动候选)的示例。

图33和图34示出了基于冗余移除的lut更新方法(移除多个冗余运动候选)的示例。

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

具体实施方式

在本文中,使用章节标题用于提高可读性,并且不将每个章节中描述的技术和实施例的范围仅限于该章节。此外,虽然使用了来自各种现有视频编解码器标准的某些术语,但所公开的技术不仅限于这些视频标准或其后续标准,并且适用于其他视频编解码器标准。此外,在某些情况下,使用对应的编码步骤公开了技术,并且应当理解的是,将在解码器上执行相反顺序的对应解码步骤。此外,编码还可用于执行转码,其中视频从一种编码表示(例如,一种比特率)表示为另一种编码表示(例如,不同的比特率)。

为了提高视频的压缩比,研究人员不断寻找用于编码视频并对应地解码视频的编码表示的新技术

1.介绍

本文件涉及视频编码技术。具体地,涉及视频编码中的运动信息编码(诸如merge模式、amvp模式,其中amvp代表高级运动矢量预测)。可应用于现有的视频编码标准,或待最终确定的标准多功能视频编码。也可能适用于未来的视频编码标准或视频编解码器。

2.简要讨论

视频编码标准主要是通过开发公知的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)预测单元和预测块(pb):在cu级别决定是使用帧间预测还是帧内预测对图片区域进行编码。pu分割结构的根位于cu级。取决于基本的预测类型决定,可以在尺寸上进一步划分亮度和色度cb,并从亮度和色度预测块(pb)中预测亮度和色度cb。hevc支持从64×64到4×4个样点的可变pb尺寸。图3示出了mxmcu的允许pb示例。

4)tu和变换块:使用块变换对预测残差进行编码。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.3jem中具有较大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)的三叉树

在一些实施例中,支持四叉树和二叉树以外的树类型。在实现中,还引入了另外两个三叉树(tt)划分,即水平和垂直的中心侧三叉树,如图6的(d)图和(e)图所示。

图6示出了:(a)四叉树划分(b)垂直二叉树划分(c)水平二叉树划分(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条带可用。

下面文本提供了hevc中规定的帧间预测模式的细节。描述将从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候选的索引使用截断的一元二值化(tu)进行编码。如果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候选的参考图片索引设置为零。hevc规范中描述了缩放处理的实际实现。对于b条带,得到两个运动矢量(一个是对于参考图片列表0,另一个是对于参考图片列表1)并将其组合使其成为双向预测merge候选。时域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和参考图片来识别源块和源图片。

图19示出了源块和源图片的识别的示例。

在第二步中,通过将时域矢量添加到当前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说明了该概念。我们来考虑一个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的运动矢量。

图20示出了具有四个子块(a-d)和相邻块(a-d)的一个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。

2.3.5具有双边匹配细化的merge/跳跃模式

首先构建merge候选列表,通过将空域相邻块和时域相邻块的运动矢量和参考索引插入候选列表,并进行冗余检查,直到可用候选数目达到最大候选数目19。merge/跳过模式的merge候选列表是通过根据预先定义的插入顺序插入空域候选(图11)、时域候选、仿射候选、高级时域mvp(atmvp)候选、空时mvp(stmvp)候选和hevc中使用的附加候选(组合候选和零候选)来构建的:

-块1-4的空域候选。

-块1-4的外推仿射候选。

-atmvp。

-stmvp。

-虚拟仿射候选。

-空域候选(块5)(仅当可用候选数小于6时使用)。

-外推仿射候选(块5)。

-时域候选(如hevc中推导的)。

-后接外推仿射候选的非相邻的空域候选(块6至块49,如图25所示)。

-组合候选。

-零候选

值得注意的是,除了stmvp和仿射之外,ic标志也继承自merge候选。此外,对于前四个空域候选,在单向预测候选之前插入双向预测候选。

在一些实现中,可以访问未与当前块连接的块。如果使用非内部模式对非相邻块进行编码,则相关的运动信息可以作为附加merge候选添加。

3.本文公开的实施例所解决的问题的示例

当前的hevc设计可以将当前块与其相邻块(与当前块相邻)的相关性用于更好地编码运动信息。然而,相邻块可能对应于具有不同运动轨迹的不同对象。在这种情况下,从相邻块进行预测不是有效的。

从非相邻块的运动信息预测可以带来额外的编码效益,代价是将所有运动信息(通常在4x4级别)存储到缓存中,这显著地增加硬件实现的复杂性。

4.一些示例

为了克服现有实现的缺点,可以在各种实施例中实现基于lut的运动矢量预测技术,以提供具有更高编码效率的视频编码,基于lut的运动矢量预测技术使用存储至少一个运动候选以预测块的运动信息的一个或多个查找表。每个lut可以包括一个或多个运动候选,每个运动候选与对应的运动信息关联。运动候选的运动信息可以包括预测方向、参考索引/图片、运动矢量、lic标志、仿射标志、运动矢量推导(mvd)精度和/或mvd值的部分或全部。运动信息还可以包括块位置信息,以指示运动信息来自何处。

在下面对各种实现描述的示例中说明了基于所公开的技术的基于lut的运动矢量预测,其可以增强现有和未来的视频编码标准。由于lut允许基于历史数据(例如,已处理的块)执行编码/解码处理,因此基于lut的运动矢量预测也可以称为基于历史的运动矢量预测(hmvp)方法。在基于lut的运动矢量预测方法中,在编码/解码处理中保持一个或多个表,其运动信息导出自先前的编码块。在块的编码/解码期间,可以将lut中的相关运动信息添加到运动候选列表中(例如,amvp/merge列表),并且可以在编码/解码该块后更新lut。然后,更新的lut被用于编码后续块。也就是说,基于块的编码/解码顺序更新lut中的运动候选。下面的示例应该视为解释一般概念的示例。这些示例不应该被狭隘地理解。此外,这些示例可以以任何方式组合。

一些实施例可以使用存储了至少一个运动候选的一个或多个查找表来预测块的运动信息。实施例可以使用运动候选来指示存储在查找表中的一组运动信息。对于传统的amvp或merge模式,实施例可以使用amvp或merge候选,用于存储运动信息。

下面的示例说明了一般概念。

查找表和候选列表的示例实施例的列表

示例1:每个查找表可以包含一个或多个运动候选,其中每个候选与其运动信息关联。

a.这里,候选运动的运动信息可能包括预测方向、参考索引/图片、运动矢量、lic标志、仿射标志、mvd精度、mvd值的部分或全部。

b.运动信息还可以包括块位置信息和/或块形状,以指示运动信息来自何处。

c.可为每个查找表进一步分配计数器。

i.在对图片/条带/lcu(ctu)行/片进行编码/解码的开始处,可以将计数器初始化为零。

ii.在一个示例中,可以在编码/解码ctu/ctb/cu/cb/pu/特定区域尺寸(例如,8x8或16x16)后更新计数器。

iii.在一个示例中,每次将一个候选添加到查找表中,计数器增加1。

iv.在一个示例中,计数器不应大于表的尺寸(允许的运动候选的数目)。

v.或者,计数器可用于指示已尝试将多少运动候选添加到查找表中(它们中的一些在查找表中,但稍后可能从表中移除)。在这种情况下,计数器可能大于表的尺寸。

d.表的尺寸(允许的运动候选数目)和/或表的数目可以是固定的或自适应的。所有表的表尺寸可能相同,或者不同表的表尺寸可能不同。

i.或者,不同的查找表可能使用不同的尺寸(例如,1或2)。

ii.在一个示例中,可以预先定义表的尺寸和/或表的数目。

iii.在一个示例中,表的尺寸和/或表的数目可以在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带报头、片报头、编码树单元(ctu)、编码树块(ctb)、编码单元(cu)或预测单元(pu)、覆盖多个ctu/ctb/cu/pu的区域中进行信号通知。

iv.表的尺寸和/或表的数目可能进一步取决于条带类型、图片的时域层索引、一个条带和最近的帧内条带之间的图片顺序计数(poc)距离。

e.假设有n个表用于编码线程,则可能需要n*p个表来编码条带,其中p表示lcu行数或片数。

i.或者,编码条带只需要p个表,其中p表示lcu行数,其中每个lcu行只使用一个查找表,即使当片被禁用时n可能大于1。

表的选择的示例实施例

示例2:对于编码块,可以按顺序检查来自一个查找表中的部分或全部运动候选。在编码块期间检查一个运动候选时,可以将其添加到运动候选列表(例如,amvp、merge候选列表)。

a.或者,可以按顺序检查来自多个查找表的运动候选。

b.查找表索引可在ctu、ctb、cu或pu、或覆盖多个ctu/ctb/cu/pu的区域中信号通知。

示例3:查找表的选择可能取决于块的位置。

a.可能取决于覆盖该块的ctu地址。这里,我们以两个查找表(双重查找表,dlut)为例来说明这个理念:

i.如果块位于ctu行中的前m个ctu之一,则可以使用第一个查找表对块进行编码,而对于位于ctu行中其余ctu中的块,可以使用第二个查找表。

ii.如果块位于ctu行中的前m个ctu之一,则可以首先检查第一个查找表的运动候选对块进行编码,如果第一个表中没有足够的候选,则可以进一步使用第二个查找表。而对于位于ctu行中其余ctu中的块,可以使用第二个查找表。

iii.或者,对于位于ctu行中其余ctu中的块,可以首先检查第二个查找表的运动候选对块进行编码,如果第二个表中没有足够的候选,则可以进一步使用第一个查找表。

b.可能取决于块的位置和与一个或多个查找表中一个运动候选相关联的位置之间的距离。

i.在一个示例中,如果一个运动候选与要编码的块之间较小的距离相关联,则其可以比另一个运动候选更早地进行检查。

查找表的使用的示例实施例

示例4:要检查的查找表中的运动候选总数可以预先定义。

a.可能进一步取决于编码信息、块尺寸、块形状等。例如,对于amvp模式,可能只检查m个运动候选,而对于merge模式,可能检查n个运动候选(例如,m=2,n=44)。

b.在一个示例中,要检查的运动候选总数可以在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带报头、片报头、编码树单元(ctu)、编码树块(ctb)、编码单元(cu)或预测单元(pu)、覆盖多个ctu/ctb/cu/pu的区域中信号通知。

示例5:查找表中包含的运动候选可以直接由块继承。

a.它们可用于merge模式编码,即可以在merge候选列表推导处理中检查运动候选。

b.它们可用于仿射merge模式编码。

i.如果查找表中的运动候选的仿射标志是1,则可以将其添加为仿射merge候选。

c.可启用查找表中的运动候选的检查,当:

i.插入tmvp候选后,merge候选列表未满;

ii.为空域merge候选推导检查某个空域相邻块后,merge候选列表未满;

iii.所有空域merge候选后,merge候选列表未满;

iv.组合双向预测merge候选后,merge候选列表未满;

v.当已经从其他编码方法(例如,hevc设计或jem设计的merge推导处理)放入merge候选列表的空域或时域(例如,包括相邻空域和非相邻空域、tmvp、stmvp、atmvp等)merge候选小于最大允许的merge候选减去给定阈值时。

1.在一个示例中,阈值被设置为1或0。

2.或者,可以在sps/pps/序列、图片、条带报头/片中信令通知或预先定义阈值。

3.或者,可以从块到块自适应地改变阈值。例如,它可以取决于编码块信息,如块尺寸/块形状/条带类型,和/或取决于可用空域或时域merge候选的数目。

4.在另一示例中,当已经放入merge候选列表中的某种merge候选的数目小于最大允许的merge候选减去给定阈值时。“某种merge候选”可以是hevc中的空域候选或非相邻merge候选。

vi.在将运动候选添加到merge候选列表之前,可以应用修剪。

1.在一个示例中,可以将merge候选列表中来自其他编码方法的运动候选修剪到可用空域或时域(例如,包括相邻的空域和非相邻空域、tmvp、stmvp、atmvp等)merge候选的全部或部分。

2.可以不将运动候选修剪到基于子块的运动候选,例如atmvp、stmvp。

3.在一个示例中,可以将当前运动候选修剪到merge候选列表中的可用运动候选(在当前运动候选之前插入的)的所有或部分。

4.与运动候选相关的修剪操作的次数(即,运动候选需要与merge列表中的其他候选比较多少次)可取决于可用空域或时域merge候选的数目。例如,当检查新运动候选时,如果在merge列表中有m个候选可用,则可以仅将新运动候选与前k个(k<=m)个候选进行比较。如果修剪函数返回否(false)(例如,与前k个候选中的任何一个都不相同),则认为新运动候选与所有m个候选不同,并且可以将其添加到merge候选列表。

5.在一个示例中,仅将新附加的运动候选与merge候选列表中的前n个候选进行比较。例如,n=3、4或5。可以从编码器向解码器信令通知n。

6.在一个示例中,仅将要检查的新运动候选与merge候选列表中的最后n个候选进行比较。例如,n=3、4或5。可以从编码器向解码器信令通知n。

示例6:查找表中包含的运动候选可用作编码块的运动信息的预测值。

a.它们可用于amvp模式编码,即可在amvp候选列表推导处理中检查运动候选。

b.可启用查找表中的运动候选的检查,当:

i.插入tmvp候选后,amvp候选列表未满;

ii.在插入tmvp候选之前,从空域邻居中选择并修剪后amvp候选列表未满;

iii.当没有来自上方相邻块的不带缩放的amvp候选时和/或当没有来自左侧相邻块的不带缩放的amvp候选时。

iv.在将运动候选添加到amvp候选列表中之前,可以应用修剪。

v.如示例5项中提及的类似规则可应用于amvp模式。

c.检查与当前参考图片具有相同参考图片的运动候选。

i.可选地,此外,还检查与当前参考图片具有不同参考图片的运动候选(带缩放的mv)。

ii.或者,首先检查与当前参考图片具有相同参考图片的所有运动候选,然后检查与当前参考图片具有不同参考图片的运动候选。

iii.或者,与merge中相同的方式来检查运动候选。

示例7:查找表中运动候选的检查顺序定义如下(假设允许检查k(k>=1)个运动候选):

a.查找表中的最后k个运动候选,例如,按lut的条目索引的降序顺序。

b.前k%l个候选,其中l是k>=l时的查找表尺寸,例如,按lut的条目索引的降序顺序。

c.当k>=l时,基于顺序的查找表中所有候选(l个候选)。在一个示例中,按lut的条目索引的降序顺序检查表中的前k%l个候选,并且然后按条目索引的降序顺序检查最后(l-k%l)个候选。

d.或者,此外,基于运动候选索引的降序顺序。

e.或者,根据候选信息(例如与运动候选相关的位置和当前块的距离)选择k个运动候选。

i.在一个示例中,选择最近的k个运动候选。

ii.在一个示例中,当计算距离时候选信息还考虑块形状。

f.从查找表中选择多少运动候选以及如何选择运动候选可以取决于编码信息,如块尺寸/块形状。

i.在一个示例中,对于较小的块尺寸,可以选择其他的k个运动候选(不是从最后一个开始的),而不是选择最后的k个运动候选。

g.在一个示例中,查找表中的要检查的(即,可以添加到merge/amvp候选列表中的)运动候选的最大数目(又称为hmvp候选的最大数目)可以取决于查找表中的可用运动候选的数目(表示为navaimcinlut)(又称为hmvp候选的最大数目)、和/或lut中要添加到候选列表的最大允许的运动候选(表示为nummaxmc)(又称为要添加到候选列表的hmvp候选的最大数目)(其可以是预先定义的或信令通知的)、和/或从查找表检查候选之前的候选列表中的可用候选的数目(表示为navaic)。

i.在一个示例中,要检查的查找表中的运动候选的最大数目被设置为(navaimcinlut,nummaxmc,navaic)的最小值。

ii.或者,要检查的查找表中的运动候选的最大数目被设置为(navaimcinlut,nummaxmc-navaic)的最小值。

iii.在一个示例中,navaic表示从空域或时域(相邻的和/或不相邻的)临近块中导出的插入候选的数目。或者,此外,子块候选(如amtvp、stmvp)的数目不计算在navaic中。

iv.nummaxmc可以取决于编码模式,例如,对于merge模式和amvp模式,nummaxmc可以被设置不同的值。在一个示例中,对于merge模式,nummaxmc可以被设置为4、6、8、10等。对于amvp模式,nummaxmc可以被设置为1、2/4等。

v.或者,nummaxmc可以取决于其它编码信息,如块尺寸、块形状、条带类型等。

h.不同查找表的检查顺序在下一小节查找表的使用中定义。

i.一旦merge/amvp候选列表达到最大允许的候选数目,检查处理将终止。

j.一旦merge/amvp候选列表达到最大允许的候选数减去阈值(th),则检查处理将终止。在一个示例中,th可以预先定义为正整数值,例如1、2或3。或者,th可以从块到块自适应地改变。或者,可以在sps/pps/条带报头等中信令通知th。可选地,th还可取决于块形状/块尺寸/编码模式等。可选地,th可取决于在从lut添加运动候选之前有多少可用候选。

k.或者,一旦增加的候选运动数目达到最大允许的运动候选数目,检查处理将终止。最大允许的运动候选数可以信令通知或预先定义。或者,最大允许的运动候选数还可以取决于块形状/块尺寸/编码模式等。

l.在sps、pps、条带报头、片报头中可以信号通知指示允许表的尺寸和允许检查的运动候选的数目(即k=l)的一个语法元素。

示例8:可以在sps、pps、条带报头、片报头、ctu、ctb、cu或pu、覆盖多个ctu/ctb/cu/pu的区域中信号通知对块的运动信息编码启用/禁用查找表的使用。

示例9:是否从查找表中应用预测可能进一步取决于编码信息。当推断不应用于块时,跳过指示预测的附加信令。或者,当推断不应用于块时,不需要访问查找表中的运动候选,并且省略了对相关运动候选的检查。

a.是否从查找表应用预测可能取决于块尺寸/块形状。在一个示例中,对于较小的块(如4x4、8x4或4x8块),不允许从查找表执行预测。

b.是否从查找表应用预测可能取决于块是用amvp编码的还是用merge模式编码的。在一个示例中,对于amvp模式,不允许从查找表执行预测。

c.是否从查找表应用预测可能取决于块是用仿射运动还是其他运动(如平移运动)编码的。在一个示例中,对于仿射模式,不允许从查找表执行预测。

示例10:先前编码的帧/条带/片中的查找表的运动候选可用于预测不同帧/条带/片中块的运动信息。

a.在一个示例中,只能将与当前块的参考图片相关联的查找表用于编码当前块。

b.在一个示例中,只能将与当前块具有相同条带类型和/或相同量化参数的图片相关联的查找表用于编码当前块。

查找表的更新的示例

例11:在使用运动信息对块进行编码之后(即,帧内编码模式、帧间编码模式),可以更新一个或多个查找表。

a.在一个示例中,是否更新查找表可以重用用于选择查找表的规则,例如,当可以选择查找表来对当前块进行编码时,在对块进行编码/解码之后,可以进一步更新所选择的查找表。

b.可以基于编码信息、和/或块/lcu的位置来选择要更新的查找表。

c.如果用直接信令通知的运动信息(例如,amvp模式)对块进行编码,则可以将块的运动信息添加到查找表中。

i.或者,如果用直接从未经任何细化的空域相邻块(例如,未经细化的空域merge候选)继承的运动信息对块进行编码,则不应将块的运动信息添加到查找表中。

ii.或者,如果用直接从经细化的空域相邻块(例如,dmvr、fruc)继承的运动信息对块进行编码,则不应将块的运动信息添加到任何查找表中。

iii.或者,如果用直接从存储在查找表中的运动候选继承的的运动信息对块进行编码,则不应将块的运动信息添加到任何查找表中。

d.选择代表块内位置的m(m>=1),并使用与该代表相关联的运动信息来更新查找表。

i.在一个示例中,代表位置被定义为块内的四个角位置中的一个(例如,图26中的c0-c3)。

ii.在一个示例中,代表位置被定义为块内的中心位置(例如,图26中的ca-cd)。

iii.当不允许对块进行子块预测时,m设为1。

iv.当允许对块进行子块预测时,m可以被设置为1或子块的总数或在[1,子块的数目]之间的任何其他值,不包括1和子块的数目。

v.或者,当允许对块进行子块预测时,m可以设置为1,并且代表子块的选择基于

1.使用的运动信息的频率,

2.其是否为双向预测块

3.基于参考图片索引/参考图片

4.与其他运动矢量相比的运动矢量差(例如,选择最大mv差)

5.其他编码信息。

e.当选择m(m>=1)组代表位置来更新查找表时,在将它们作为附加运动候选添加到查找表之前,可以检查其它条件。

i.修剪可应用于查找表中现有运动候选的新的运动信息集。

ii.在一个示例中,新的运动信息集不应与查找表中的现有运动候选的任何或部分相同。

iii.或者,对于来自新的运动信息集和一个现有运动候选的相同参考图片,mv差应不小于一个/多个阈值。例如,mv差的水平和/或垂直分量应大于1像素距离。

iv.或者,当k>l以允许重新激活旧的运动候选时,仅对新的运动信息集的最后k个候选或前k%l个现有运动候选进行修剪。

v.或者,不应用修剪。

f.如果使用m个运动信息集来更新查找表,则对应的计数器应增加m。

g.假设在对当前块进行编码之前要更新的查找表的计数器用k表示,在对块进行编码之后,对于一个选定的运动信息集(使用上述方法),将其添加为索引等于k%l的附加运动候选(其中l是查找表尺寸)。

i.或者,将其添加为索引等于min(k+1,l-1)的附加运动候选。或者,另外,如果k>=l,则从查找表中移除第一运动候选(索引等于0),并且将后面的k个候选索引减小1。

ii.对于上述两种方法(将新的运动候选添加到等于k%l的条目索引或将其添加到等于min(k+1,l-1)的索引),它们试图保留来自先前编码的块的最新的运动信息集,而不管是否存在相同/相似的运动候选。

iii.或者,当将新的运动信息集作为运动候选添加到lut时,首先应用冗余检查。在这种情况下,lut将保留来自先前编码的块的最新的运动信息集,然而,可以从lut中移除冗余的候选。这种方法称为基于冗余移除的lut更新方法。

1.如果lut中存在冗余运动候选,则与lut相关联的计数器可以不增加或减少。

2.冗余检查可以定义为merge候选列表构建处理中的修剪处理,例如,检查参考图片/参考图片索引是否相同,以及运动矢量差是否在一个范围内或相同。

3.如果在lut中发现冗余运动候选,则将冗余运动候选从其当前位置移动到lut的最后一个位置。

a.类似地,如果在lut中发现冗余运动候选,则从lut中移除该冗余运动候选。此外,在冗余运动候选之后插入lut的所有运动候选向前移动以重新填充冗余运动候选的移除条目。移位之后,新的候选运动被添加到lut中。

b.在这种情况下,计数器保持不变。

c.一旦在lut中识别出冗余运动候选,则终止冗余检查处理。

4.可以识别多个冗余运动候选。在这种情况下,从lut中移除他们所有。此外,所有剩余的候选都可以按顺序向前移动。

a.在这种情况下,计数器减少(冗余运动候选数减1)。

b.在识别出maxr个冗余运动候选(maxr是正整数变量)之后,终止冗余检查处理。

5.冗余检查处理可以从第一个运动候选开始到最后一个运动候选(即,按照添加到lut的顺序,按照运动信息来自的块的解码处理的顺序)。

6.或者,当lut中存在冗余运动候选时,可以从冗余运动候选中导出虚拟运动候选并使用虚拟运动候选来替代冗余运动候选,而不是从lut中移除一个或多个冗余运动候选。

a.可以通过向一个或多个运动矢量的水平和/或垂直分量添加偏移量从冗余运动候选中导出虚拟运动候选;或者如果指向同一参考图片,则可以从两个运动矢量的平均值中导出虚拟运动候选。或者,可以从以查找表中的运动矢量作为输入的任何函数中导出虚拟运动候选。示例性函数是:将两个或多个运动矢量相加到一起;平均两个或多个运动矢量。运动矢量在被输入到函数之前可以被缩放。

b.虚拟运动候选可以添加到与冗余运动候选相同的位置。

c.虚拟运动候选可以添加到所有其他运动候选之前(例如,从最小的条目索引开始,如0)。

d.在一个示例中,其仅在某些条件下应用,例如当当前lut未满时。

7.基于冗余移除的lut更新方法可以在某些条件下被调用,例如

a.当前块使用merge模式编码,

b.当前块使用amvp模式编码,但mv差的至少一个分量非零;

c.当前块使用或未使用基于子块的运动预测/运动补偿方法进行编码(例如,未使用仿射模式编码)

h.在对一个帧内限制块进行编码之后,可以清空查找表。

i.如果将运动信息的条目添加到查找表中,则还可以通过从运动信息导出将更多的运动信息条目添加到查找表中。在这种情况下,与查找表相关联的计数器可以增加超过1。

i.在一个示例中,将运动信息的条目的mv缩放并放入表中;

ii.在一个示例中,将运动信息的条目的mv增加(dx,dy)并放入表中;

iii.在一个示例中,计算两个或多个运动信息的条目的mv的平均值并放入表中。

示例12:如果一个块位于图片/条带/片边界,则可以始终不允许更新查找表。

示例13:可以禁用上方的lcu行的运动信息来对当前lcu行进行编码。

a.在这种情况下,在新的条带/片/lcu行的开始处,可用的候选运动的数目可以重置为0。

示例14:在编码具有新的时域层索引的条带/片开始时,可用的运动候选的数目可以重置为0。

示例15:可以用具有相同时域层索引的一个条带/片/lcu行连续更新查找表。

a.或者,仅在对每s个(s>=1))ctu/ctb/cu/cb进行编码/解码之后,或者在对某个区域(例如,尺寸等于8x8或16x16)进行编码/解码之后,才可以更新查找表。

b.或者,仅在对特定模式的每s个(s>=1)块(例如,cu/cb)进行编码/解码之后(例如,s个帧间编码块),才可以更新查找表。或者,仅在对未使用基于子块的运动预测/运动补偿方法编码(例如,未使用仿射和/或atmvp模式编码)的每s个(s>=1)帧间编码块(例如,cu/cb)进行编码/解码之后,才可以更新查找表。

c.或者,仅当编码/解码块的左上坐标满足某些条件时,才可以更新查找表。例如,仅当(x&m==0)&&(y&m==0)时才更新查找表,其中(x,y)是编码/解码块的左上坐标。m是整数,如2、4、8、16、32或64。

d.或者,一旦一个查找表达到最大允许的计数器,其可以停止更新。

e.在一个示例中,计数器可以预先定义。或者,其可以在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带报头、片报头、编码树单元(ctu)、编码树块(ctb)、编码单元(cu)或预测单元(pu)、覆盖多个ctu/ctb/cu/pu的区域中信令通知。

附加的示例实施例

提出了一种基于历史的mvp(mvp)方法,其中hmvp候选被定义为先前编码块的运动信息。在编码/解码处理期间维护具有多个hmvp候选的表。当遇到新的条带时,表将被清空。当存在帧间编码块时,相关联的运动信息被添加到表的最后一个条目中作为新的hmvp候选。整体编码流程如图29所示。

在一个示例中,表的尺寸被设置为l(例如,l=16或6,或44),这表示可以向表中添加多达l个hmvp候选。

在一个实施例中(对应于示例11.g.i),如果来自先前编码块的hmvp候选多于l,则应用先进先出(fifo)规则,使得表始终包含最新的先前编码的l个运动候选。图30描述了一个示例,其中应用fifo规则在所提出的方法中使用的表中来移除hmvp候选并添加新的候选。

在另一个实施例中(对应于实施例11.g.iii),每当添加新的运动候选时(例如,当前块是帧间编码的并且是非仿射模式),首先应用冗余检查处理来识别lut中是否存在相同或相似的运动候选。

一些示例描述如下:

图31示出了在添加新的运动候选之前lut已满的示例。

图32示出了在添加新的运动候选之前lut未满的示例。

图31和32一起示出了基于冗余移除的lut更新方法的示例(移除一个冗余运动候选)的示例。

图33和34示出了基于冗余移除的lut更新方法的两种情况的示例性实现(移除多个冗余运动候选,图中是2个候选)的示例。

图33示出了在添加新的运动候选之前lut已满的示例。

图34示出了在添加新的运动候选之前lut未满的示例。

hmvp候选可以用于merge候选列表构建处理。表中从最后一个条目到第一个条目(或最后k0个hmvp,例如k0等于16或6)的所有hmvp候选都插入到tmvp候选之后。对hmvp候选应用修剪。一旦可用merge候选的总数达到信令通知的最大允许的merge候选,则终止merge候选列表构建处理。或者,一旦添加的运动候选的总数达到给定值,则终止从lut取出运动候选。

类似地,hmvp候选也可以在amvp候选列表构建处理中使用。将表中最后k1个hmvp候选的运动矢量插入tmvp候选之后。只使用与amvp目标参考图片具有相同的参考图片的hmvp候选来构建amvp候选列表。对hmvp候选应用修剪。在一个示例中,k1设置为4。

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

图26是视频解码方法2600的示例的流程图。方法2600包括:维护(2602)一个或多个表(例如,查找表),每个表包括与对应的运动信息相关联的一个或多个运动候选;基于标准,决定(2604)一个或多个表中要检查的最大运动候选数;在候选列表构建处理期间在一个或多个表中检查(2606)直到最大运动候选数;以及基于在候选列表构建处理期间构建的候选列表,处理(2608)包括第一视频块的视频数据的比特流表示。

在一些实施例中,使用包括第一视频块的当前图片中的参考样本对第一视频块进行帧间编码。

在一些实施例中,使用与当前图片不同的图片中的参考样本对第一视频块进行帧间编码。

在一些实施例中,候选列表包括merge候选列表。

在一些实施例中,候选列表包括高级运动矢量预测(amvp)候选列表。

在一些实施例中,基于表中的可用运动候选数来确定标准。

在一些实施例中,基于要添加到候选列表的最大允许的运动候选数来确定标准。

在一些实施例中,基于第一视频块的编码信息来确定要添加到候选列表的最大允许的运动候选数。

在一些实施例中,基于第一视频块的编码模式来确定要添加到候选列表的最大允许的运动候选数。

在一些实施例中,编码模式包括merge模式或高级运动矢量预测(amvp)模式中的至少一个。

在一些实施例中,编码模式包括帧间模式或非帧间模式。

在一些实施例中,编码模式包括帧内块复制(ibc)模式或非ibc模式。

在一些实施例中,要添加到表中的最大允许的运动候选数设置为n,其中n是非负整数值。

在一些实施例中,在编码模式是merge模式的情况下,n是4、5、6、8或10中的一个。

在一些实施例中,在编码模式是amvp模式的情况下,n是1、2或4中的一个。

在一些实施例中,编码信息包括:第一视频块的尺寸、第一视频块的形状、或包含第一视频块的条带的条带类型中的至少一个。

在一些实施例中,对于具有不同编码信息的两个视频块,将要添加到表中的最大允许的运动候选数设置为n和m,其中n和m是非负整数值,并且n和m不同。

在一些实施例中,在比特流表示中预先定义或信令通知要添加到候选列表的最大允许的运动候选数。

在一些实施例中,基于检查表中的运动候选之前候选列表中的可用候选数来确定标准。

在一些实施例中,基于从空域或时域相邻块导出的插入候选数来确定要检查的表中的最大候选数。

在一些实施例中,要检查的表中的最大运动候选数设置为以下中的最小值:表中的可用运动候选数;要添加到候选列表的最大允许的运动候选数;以及检查表中的运动候选之前候选列表中的可用候选数。

在一些实施例中,要检查的表中的最大运动候选数设置为以下中的最小值:表中的可用运动候选数;以及要添加到候选列表的最大允许的运动候选数减去检查表中的运动候选之前候选列表中的可用候选数。

在一些实施例中,要检查的表中的最大运动候选数设置为以下中的最小值:表中的可用运动候选数;要添加到候选列表的最大允许的运动候选数;以及从空域或时域相邻块导出的插入候选数。

在一些实施例中,要检查的表中的最大运动候选数设置为以下中的最小值:表中的可用运动候选数;以及要添加到候选列表的最大允许的运动候选数减去从空域或时域相邻块导出的插入候选数。

在一些实施例中,子块候选数不计入从空域或时域相邻块导出的插入候选数。

在一些实施例中,子块候选数包括:可选时域运动矢量预测(amtvp)候选或空时运动矢量预测(stmvp)候选中的至少一个。

在一些实施例中,运动信息包括预测方向、参考图片索引、运动矢量值,强度补偿标志、仿射标志、运动矢量差精度和运动矢量差值中的至少一个。

在一些实施例中,在视频参数集、序列参数集、图片参数集、条带报头或片报头的一个或多个中包含的位字段中信令通知表的索引。

在一些实施例中,在对应于编码树单元、或编码树块单元、或编码单元、或预测单元的一个或多个的位字段中信令通知表的索引。

在一些实施例中,对于表,在处理期间检查从运动候选集中选择的多个运动候选。

在一些实施例中,继承至少一个表中的运动候选集中的至少一些条目。

在一些实施例中,处理包括:选择性地使用运动候选集中的至少一些来执行merge列表推导处理。

在一些实施例中,在候选列表构建处理期间检查时域运动矢量预测器之后merge候选列表未满的情况下,处理选择性地使用来自一个或多个表的运动候选。

在一些实施例中,在候选列表构建处理期间检查空域merge候选之后merge候选列表未满的情况下,处理选择性地使用来自一个或多个表的运动候选。

在一些实施例中,处理包括:选择性地使用运动候选集中的至少一些来执行高级运动矢量预测(amvp)推导处理。

在一些实施例中,在amvp推导处理期间检查时域运动矢量预测器之后amvp候选列表未满的情况下,amvp处理使用来自一个或多个表的运动候选。

在一些实施例中,在amvp推导处理期间检查所有空域amvp候选之后amvp候选列表未满的情况下,amvp处理使用来自一个或多个表的运动候选者。

在一些实施例中,处理包括:使用包含具有与视频块的当前参考图片相同的参考图片的运动候选的表。

图27是视频解码方法2700的示例的流程图。方法2700包括:维护(2702)一个或多个表(例如,查找表),每个表包括具有从先前编码的块导出的对应的运动信息的一个或多个基于历史的运动矢量预测(hmvp)候选;在构建候选列表的候选列表构建处理中检查(2704)表直到最大hmvp候选数;以及基于构建的候选列表处理(2706)包含第一视频块的视频数据的比特流表示。

在一些实施例中,一个或多个hmvp候选与运动信息相关联,所述运动信息包括预测方向、参考图片索引、运动矢量值、强度补偿标志、仿射标志,运动矢量差精度、或运动矢量差值中的至少一个。

在一些实施例中,使用包括第一视频块的当前图片中的或与当前图片不同的图片中的参考样本对第一视频块进行帧间编码。

在一些实施例中,候选列表包括merge候选列表。

在一些实施例中,候选列表包括高级运动矢量预测(amvp)候选列表。

在一些实施例中,要检查的最大hmvp候选数取决于第一视频块的编码信息。

在一些实施例中,方法还包括:在检查hmvp候选之前检查从空域相邻块或时域相邻块导出的候选。

在一些实施例中,要检查的最大hmvp候选数取决于:一个或多个表中的hmvp候选数、要检查的允许hmvp候选数、或检查hmvp候选之前候选列表中的可用候选数种的至少一个。

在一些实施例中,使用定义被检查的候选的终止标准的规则来执行检查。

在一些实施例中,规则包括在达到merge或amvp候选列表的最大允许数目减去阈值时终止。

在一些实施例中,在比特流表示中预先信令通知最大允许数目。

在一些实施例中,在已经放入merge候选列表的空域或时域merge候选的数目小于最大允许的merge候选数减去给定阈值的情况下,检查hmvp候选。

在一些实施例中,阈值为1,或者其中比特流中信令通知阈值,或者在比特流报头中预先定义阈值。

在一些实施例中,在逐块的基础上适应性地改变阈值。

在一些实施例中,当与阈值比较时,仅使用特定种类的merge候选。

在一些实施例中,方法还包括:基于更新的表在视频的后续视频块和视频的比特流表示之间执行转换。

在一些实施例中,方法还包括:在执行转换之后基于第一视频块的运动信息更新一个或多个表。

包括上述(i)至(v)项的示例c4(g)项提供了方法2600和2700的附加示例和变型。

在一些实施例中,视频解码装置,其包括实现本文所述的方法的处理器。

在一些实施例中,编码装置,其包括实现本文所述的候选列表构建处理的处理器。

在一些实施例中,可存储代码的计算机可读程序介质,其包括指令,当指令由处理器执行时,使处理器实现本文所述的方法。

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

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

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

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

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

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

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

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

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

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

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

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