运动细化和加权预测

文档序号:174676 发布日期:2021-10-29 浏览:36次 >En<

阅读说明:本技术 运动细化和加权预测 (Motion refinement and weighted prediction ) 是由 余若洋 刘度 于 2020-03-05 设计创作,主要内容包括:一种用于确定预测块以用于对视频流的当前图片中的当前块进行解码或编码的方法。该方法包括获得一对初始运动矢量,一对初始运动矢量包括第一初始运动矢量和第二初始运动矢量。该方法还包括确定是否细化初始运动矢量。该方法还包括作为确定细化初始运动矢量的结果,细化初始运动矢量。确定是否细化初始运动矢量的步骤包括:i)确定是否启用了第一预测方案和/或第二预测方案,以及ii)作为确定启用了第一预测方案或第二预测方案的结果,确定抑制细化初始运动矢量,或者作为确定第一预测方案和第二预测方案均未启用的结果,确定细化初始运动矢量。(A method for determining a prediction block for decoding or encoding a current block in a current picture of a video stream. The method includes obtaining a pair of initial motion vectors, the pair of initial motion vectors including a first initial motion vector and a second initial motion vector. The method also includes determining whether to refine the initial motion vector. The method also includes refining the initial motion vector as a result of determining a refined initial motion vector. The step of determining whether to refine the initial motion vector includes: i) determining whether the first prediction scheme and/or the second prediction scheme is enabled, and ii) determining to suppress refinement of the initial motion vector as a result of determining that the first prediction scheme or the second prediction scheme is enabled, or determining to refine the initial motion vector as a result of determining that neither the first prediction scheme nor the second prediction scheme is enabled.)

运动细化和加权预测

技术领域

公开了与视频序列的运动细化和加权预测有关的实施例。

背景技术

视频序列包含按照显示顺序排序的一系列图片。每个图片都分配有指示其显示顺序的图片顺序计数(POC)值。

视频编码用于将视频序列压缩为编码图片序列。通常,图片被分为大小范围从4×4到128×128的块。块用作对每个图片进行编码的基础。然后视频解码器将编码图片解码为包含样本值的图片。

通用视频编码(VVC)标准草案使用被称为四叉树加二叉树加三叉树块结构(QTBT+TT)的块结构,其中每个图片首先被划分为被称为编码树单元(CTU)的正方形块。所有CTU的大小都是相同的,并且在没有任何语法控制划分的情况下,执行将图片划分为CTU。每个CTU被进一步划分为编码单元(CU),编码单元可以具有正方形或矩形形状。CTU首先由四叉树结构划分,然后可以以二元结构,通过同样大小的分区垂直或水平地进一步划分它,以形成CU。因此,块可以具有正方形或矩形形状。四叉树和二叉树的深度可以由编码器在比特流中设置。图1A中示出了使用QTBT划分CTU的示例。三叉树(TT)部分增加了将CU划分成三个分区而不是两个同样大小的分区的可能性。这增加了使用更适合图片中的内容结构的块结构的可能性。

帧内预测(也被称为空间预测)

帧内预测技术旨在探究同一图片的不同块之间的相似性。帧内预测使用同一图片中的先前解码的块来预测图片中的块。预测块的一种方式是预测(即,确定)包括在块中的显示元素的值(例如,亮度、色度)。仅由帧内预测块组成的图片被称为帧内图片。

帧间预测(也被称为时间预测)

帧间预测技术旨在探究图片之间的相似性。帧间预测使用先前解码的图片中的一个或多个块来预测当前图片中的块(“当前块”)。来自先前解码的图片中的块的样本用于预测当前块内的样本。先前解码的图片被称为参考图片,并且先前解码的图片中的块被称为参考块。

使用运动矢量(MV)来指示参考图片内的参考块的位置。每个MV包括x和y分量,每个分量表示当前图片相对于参考图片在x或y维度上的位移。分量的值可以具有比整数位置更精细的分辨率。在这种情况下,可以使用滤波(例如,插值)来计算用于预测的值。图1B示出了用于当前图片中的当前块C的示例性MV。

帧间图片可以使用若干参考图片。参考图片通常包括在两个不同的参考图片列表中:L0和L1。在当前图片之前显示的参考图片通常是列表L0中的第一图片,在当前图片之后显示的参考图片通常是列表L1中的第一图片。

如果当前图片的块根据不是当前图片的参考图片中的至少一个参考块进行预测,则当前图片的块被称为帧间块。可以使用两种预测类型(单向预测和双向预测)中的一种预测类型来预测帧间块。在单向预测中,根据从列表L0或列表L1中选择的一个参考图片来预测帧间块。相反,在双向预测中,根据从列表L0和列表L1二者中选择的两个参考图片来预测帧间块。图2示出了使用单向预测进行预测的帧间块201和使用双向预测进行预测的帧间块203。

在典型的双向预测方案中,通过对来自两个预测块的样本值进行平均来生成当前块的最终预测块,两个预测块是使用两个运动矢量获得的。使用运动矢量生成预测块的过程被称为运动补偿。运动补偿的输出预测块也可以被称为经运动补偿的块。

在图2中,存在与帧间块Pbi相对应的两个运动矢量MV0和MV1。使用MV0获得第一预测块P0,并使用MV1获得第二预测块P1。使用等式Pbi(x,y)=(P0(x,y)+P1(x,y))>>1来生成帧间块Pbi(即预测块),其中Pbi(x,y)是块Pbi中位置(x,y)处的样本值。换言之,将预测块Pbi中的每个样本值计算为第一预测块P0和第二预测块P1中的对应样本值的平均值。

加权预测(WP)–图片级别工具

WP是将乘法因子和加法偏移应用于从运动矢量获得的预测块的工具。

当启用了WP时,在根据运动补偿(使用运动矢量)获得预测块P之后,使用等式P’(x,y)=W×P(x,y)+O进一步修改P中的每个样本值,其中P(x,y)是预测块P中位置(x,y)处的样本值,P’(x,y)是经修改的预测块P’中位置(x,y)处的样本值,W是权重因子,且O是偏移。W和O二者被称为WP参数。可以在图片级别以信号通知WP参数。换言之,相同的WP参数可用于同一图片中的不同块,但是不同的WP参数可以用于不同的图片。

下表示出了HEVC和VVC中的WP的语法的示例。

num_ref_idx_lx_active_minus1(x为0或1)指定Lx(x为0或1)中用于当前图片的参考图片的数量。对于Lx中的每个参考图片,luma_weight_lx_flag指示在使用该参考图片时是否应启用WP。当luma_weight_lx_flag不为零时,获得delta_luma_weight_lx和luma_offset_lx。delta_luma_weight_lx用于导出权重因子,luma_offset_lx用于导出偏移。然而,当luma_weight_lx_flag为零时,意味着WP不用于该参考图片。在这种情况下,应改用默认权重和偏移(例如,W=1和O=0)。

在针对两个参考图片启用加权预测的双向预测方案中,获得用于L0参考图片的WP参数(即W0和O0)和用于L1参考图片的WP参数(即W1和O1)。因此,最终预测块将是((W0×P0+O0)+(W1×P1+O1))>>1,其中P0是来自L0参考图片的预测块,P1是来自L1参考图片的预测块。

广义双向预测/具有加权平均的双向预测(BWA)–块级别工具除了WP,VVC还提供广义双向预测/具有加权平均的双向预测(BWA)。BWA是提供多个(例如,两个)预测块的加权平均的块级别工具。

在BWA中,最终预测块Pbi可以表示为(W0×P0+W1×P1+4)>>3,其中W0=(8-W1),且W1总共允许五个权重(例如W1∈{-2,3,4,5,10}。对于低延迟图片(即所有参考图片的POC值小于当前图片的POC),使用了所有五个权重。相反,对于非低延迟图片(即至少一个参考图片的POC值大于当前图片的POC值),仅使用三个权重(例如W1∈{3,4,5})。

在BWA中,基于针对CU以信号通知的索引(gbi_idx)来获得W1的适当值。具体地,gbi_idx用于从查找表(gbiWLut)中获取对应的权重。例如,如果gbiWLut[k]={4,5,4,10,-2},则gbi_idx值为1将导致W1=gbiWLut[1]=5且W0=8–W1=3。这里,gbi_idx被称为BWA参数。当gbi_idx等于0时,则W0和W1均等于4,因此会导致默认的双向预测平均。与WP相比,BWA允许对同一图片中的不同CU使用不同的权重来生成预测块,因此提供了更大的灵活性。

下表示出了VVC中与BWA有关的语法表的示例。

帧间预测信息/运动信息

对于帧间图片内的帧间块,其帧间预测信息可以包括以下三个元素:

1.参考图片列表标志(RefPicListFlag)–该标志指示要使用哪个参考图片列表。例如,当标志的值等于0时,意味着使用列表0。当标志的值等于1时,意味着使用列表1。当标志的值等于2时,意味着使用列表0和列表1二者。

2.参考图片索引(RefPicIdx)–该索引指示要使用参考图片列表内的哪个参考图片。

3.运动矢量(MV)–该矢量指示参考图片内要用于预测当前块的位置。

在本公开中,帧间预测信息也被称为运动信息。运动信息存储在每个帧间块中,因此每个帧间块保持其自己的运动信息。

运动信息信令

当前的VVC包括针对每个块以信号通知运动信息的若干方法。其中一种方法是合并。这里描述的方法的动机是使用其他块中的运动信息来预测当前块的运动信息。

合并方法

VVC中的合并方法与高效视频编码(HEVC)标准提供的方法类似。该方法首先生成运动信息候选的列表(即,合并列表)。合并列表的长度在VVC(版本4)中为6,在HEVC中为5。从其他编码块中导出候选。例如,编码块可以是时间共位块或空间上相邻的相邻块,如图3A中所示的那些。图3A示出了五个空间上的相邻块(左(L)、上(T)、左上(TL)、右上(TR)、左下(LB)),它们是包括在合并列表中的运动信息候选。在生成了合并列表之后,选择运动信息候选之一,以用于导出当前块的运动信息。在编码器侧执行候选的选择。在编码器选择最佳候选之后,编码器将索引(merge_idx)包括在发送给解码器的比特流中。解码器接收索引,它遵循与编码器相同的合并列表导出过程,并且使用索引来获取正确的候选。

图3B是合并候选列列表的示例。为了简单起见,仅列出了每个候选的运动矢量。根据图3B中所示的合并列表,当合并索引(merge_idx)等于4时,将选择MV0=(1,1)和MV1=(-1,-1)作为当前块的运动矢量。

可以通过被称为解码器侧运动矢量细化(DMVR)的工具进一步细化当前块的运动矢量。它一般适用于合并模式,并且要求MV是双向预测的。对于合并模式下的块,使用合并模式导出块的初始MV。DMVR在初始MV周围搜索并找到给出L0预测块与L1预测块之间的最小差异的MV。

发明内容

目前存在某些挑战。例如,在常规的DMVR搜索中,不考虑双向预测参数和/或加权预测参数。这种缺乏对预测参数的考虑可能影响DMVR搜索的准确性,因此对DMVR性能具有负面影响。

本公开的实施例通过在DMVR搜索期间考虑预测参数(例如,WP参数或BWA参数)来提高DMVR搜索的准确性。

根据一些实施例,在一方面,提供了一种用于确定预测块以用于对视频流的当前图片中的当前块进行解码或编码的过程。该过程可以从获得第一对初始运动矢量开始,第一对初始运动矢量包括第一初始运动矢量和第二初始运动矢量。该过程还包括:获得第一预测参数;获得第二预测参数,使用第一对初始运动矢量和第一运动矢量偏移来生成第一对经修改的运动矢量,第一对经修改的运动矢量包括第一经修改的运动矢量和第二经修改的运动矢量,使用第一经修改的运动矢量来获得第一预测块,使用第二经修改的运动矢量来获得第二预测块,使用第一预测块和第二预测块来计算第一差,使用第一对初始运动矢量和第二运动矢量偏移来生成第二对经修改的运动矢量,第二对经修改的运动矢量包括第三经修改的运动矢量和第四经修改的运动矢量,使用第三经修改的运动矢量来获得第三预测块;使用第四经修改的运动矢量来获得第四预测块,使用第三预测块和第四预测块来计算第二差,使用第一差和第二差来确定最佳运动矢量偏移,以及使用所确定的最佳运动矢量偏移来确定预测块。

在一些实施例中,获得第一预测块包括使用第一经修改的运动矢量来导出初始第一预测块以及使用初始第一预测块和至少第一预测参数来导出第一预测块,并且获得第三预测块包括使用第三经修改的运动矢量来导出初始第三预测块以及使用初始第三预测块和至少第一预测参数来导出第三预测块。

关于其他实施例,在一方面,提供了一种用于确定预测块以用于对视频流的当前图片中的当前块进行解码或编码的过程。该过程可以从获得一对初始运动矢量开始,一对初始运动矢量包括第一初始运动矢量和第二初始运动矢量。该过程还包括确定是否细化初始运动矢量(s904、s1604),其中,确定是否细化初始运动矢量包括确定是否启用了第一预测方案。该过程还包括作为确定细化初始运动矢量的结果,细化初始运动矢量,或者作为确定不细化初始运动矢量的结果,抑制细化初始运动矢量。

在另一方面,提供了一种包括指令的计算机程序,指令在至少一个处理器上执行时,使得该至少一个处理器执行本文中公开的任一方法。在另一方面,提供了一种包含计算机程序的载体,其中,该载体是电子信号、光信号、无线电信号或计算机可读存储介质中之一。

在另一方面,提供了一种编码器或解码器装置,该编码器或解码器装置可操作以执行本文中公开的任一方法。在一个实施例中,编码器或解码器装置包括处理电路和存储器。在一个实施例中,存储器存储上述计算机程序。

附图说明

并入在本文中并形成说明书的一部分的附图示出了各种实施例。

图1A示出了使用QTBT将CTU划分为CU的示例性划分。

图1B示出了用于当前图片中的块的运动矢量。

图2示出了单向预测和双向预测。

图3A示出了用于取得相邻运动信息的可能的空间块。

图3B示出了合并候选列表的示例。

图4示出了根据实施例的系统。

图5是根据实施例的编码器的示意性框图。

图6是根据实施例的解码器的示意性框图。

图7示出了DMVR过程的一般步骤。

图8A和图8B示出了如何获得经修改的运动矢量。

图9示出了根据一个实施例的DMVR过程。

图10示出了根据一个实施例的DMVR过程。

图11示出了根据一个实施例的DMVR过程。

图12示出了根据一个实施例的DMVR过程。

图13示出了根据一个实施例的DMVR过程。

图14是示出了根据实施例的用于实现编码器或解码器的装置的框图。

图15是示出了根据一些实施例的过程的流程图。

图16是示出了根据一些实施例的过程的流程图。

具体实施方式

图4示出了根据示例实施例的系统400。系统400包括经由网络410(例如互联网或其他网络)与解码器404通信的编码器402。

图5是根据实施例的用于对视频序列的视频帧(图片)中的像素值块(以下称为“块”)进行编码的编码器402的示意性框图。通过由运动估计器50根据相同帧中或先前帧中已经提供的块执行运动估计,来预测当前块。在帧间预测的情况下,运动估计的结果是与参考块相关联的运动或位移矢量。运动矢量被运动补偿器50用于输出块的帧间预测。帧内预测器49计算当前块的帧内预测。来自运动估计器/补偿器50和帧内预测器49的输出在选择器51中输入,选择器51为当前块选择帧内预测或帧间预测。来自选择器51的输出被输入到加法器41的形式的误差计算器,加法器41还接收当前块的像素值。加法器41计算并输出残差,作为块与其预测之间的像素值之差。该误差在变换器42中进行变换(例如通过离散余弦变换),并且由量化器43量化,然后在编码器44(例如通过熵编码器)中进行编码。在帧间编码中,经估计的运动矢量也被带到编码器44,用于生成当前块的编码表示。当前块的经变换和量化的残差也被提供给逆量化器45和逆变换器46以获取原始残差。加法器47将该误差与从运动补偿器50或帧内预测器49输出的块预测相加,以创建可以在下一块的预测和编码中使用的参考块。根据实施例,该新参考块首先由去块滤波器单元100处理,以便执行去块滤波来应对任何块伪影。经处理的新参考块然后临时存储在帧缓冲器48中,在该帧缓冲器中,帧内预测器49和运动估计器/补偿器50可以使用该经处理的新参考块。

图6是根据一些实施例的解码器404的对应示意性框图。解码器404包括解码器61,例如熵解码器,该解码器用于对块的编码表示进行解码,以得到一组经量化和变换的残差。这些残差在逆量化器62中被去量化,并且由逆变换器63逆变换,以得到一组残差。在加法器64中,将这些残差加到参考块的像素值。取决于执行帧间预测还是帧内预测,由运动估计器/补偿器67或帧内预测器66确定参考块。由此,选择器68互连到加法器64以及运动估计器/补偿器67和帧内预测器66。根据实施例,将从加法器64输出得到的解码块输入去块滤波器单元100,以便对任何块伪影进行去块滤波。经滤波的块从解码器504输出,并且另外优选地临时提供给帧缓冲器65,并且可以用作要解码的后续块的参考块。帧缓冲器65由此连接到运动估计器/补偿器67,以使所存储的像素块可由运动估计器/补偿器67使用。来自加法器64的输出优选地也输入到帧内预测器66,以用作未经滤波的参考块。

图7示出了DMVR过程的示例。

在步骤s702中,针对当前图片的块导出两个初始运动矢量(MV0和MV1)。例如,解码器接收合并索引,并且基于所接收的合并索引从合并列表中获取MV0和MV1。

在步骤s704中,基于MV0、MV1和偏移(MVoffset)来获得两个经修改的运动矢量(MV0’和MV1’)。MVoffset与搜索窗中的点相对应,如图8A中所示。在图8A中,搜索窗801包括多个圆。圆803(作为搜索窗801的中心)表示初始MV位置,且搜索窗801的其他圆表示各种偏移候选。例如,搜索窗801中的空心圆与距MV0的初始位置MVoffset=(-1,1)相对应。当存在MVoffset时,第一经修改的运动矢量(MV0’)等于MV0+MVoffset。此外,基于镜像规则,第二经修改的运动矢量(MV1’)等于MV1–MVoffset。换言之,MVoffset表示参考图片之一中的初始MV与经细化的MV之间的偏移。在VVC(版本4)中,细化搜索范围是距初始MV的两个整数亮度样本。

再次参考步骤s704,在获得了MV0’和MV1’之后,使用MV0’导出第一预测块(P0),使用MV1’导出第二预测块(P1)。然后,使用P0和P1来计算样本值差。例如,样本值差可以是两个预测块之间的绝对差(SAD)之和,其中SAD=∑x,y|P0(x,y)-P1(x,y)|,且P(x,y)表示块P中位置(x,y)处的样本值。

针对搜索窗中的每个偏移候选重复地执行生成MV0’和MV1’的步骤、使用MV0’和MV1’导出P0和P1的步骤、以及使用P0和P1计算差的步骤。在针对不同的偏移候选获得多个样本值差之后,确定多个样本值差中的最小样本值差。最小样本值差与最佳偏移(MVoffsetBest)相对应。

在步骤s706中,使用MVoffsetBest和一对初始运动矢量(MV0和MV1)获得一对最佳运动矢量(MV0_best和MV1_best)。具体地,第一最佳运动矢量(MV0_best)可以等于MV0+MVoffsetBest,第二最佳运动矢量(MV1_best)可以等于MV1-MVoffsetBest。

在步骤s708中,使用MV0_best来确定第一最佳预测块(P0_best),使用MV1_best来确定第二最佳预测块(P1_best)。使用P0_best和P1_best来确定最终预测块(Pbi)。当WP和BWA都未启用时,Pbi会是(P0_best+P1_best)>>1。当启用了WP时,Pbi会是(W0×P0_best+O0+W1×P1_best+O1)>>1。当启用了BWA时,Pbi会是(W0×P0_best+W1×P1_best)>>3。

图9示出了根据实施例的DMVR过程900。

过程900可以从步骤s902开始。在步骤s902中,导出初始运动矢量MV0和MV1。步骤s902与图7中的步骤s702类似,省略其重叠说明。

在获得了MV0和MV1之后,在步骤s904中,对当前块是否启用了BWA或WP执行检查。可以通过检查BWA参数(gbi_idx)来确定是否启用了BWA。例如,gbi_idx是二进制值(0或1),并且gbi_idx的值确定是否启用了BWA。

可以通过检查参数(luma_weight_lx_flag)来确定是否启用了WP。例如,luma_weight_lx_flag是二进制值(0或1),并且luma_weight_lx_flag的值确定是否启用了WP。

如果启用了BWA或WP,则过程900进行到步骤s906。

步骤s906包括:作为确定启用了BWA或WP的结果,抑制使用BWA或WP来细化初始运动矢量(例如,停止DMVR过程),并直接使用MV0和MV1来导出预测块。

如果BWA和WP均未启用,则过程900进行到步骤s908。

步骤s908包括:作为确定BWA和WP均未启用的结果,继续细化MV0和MV1的过程(即,继续DMVR过程)。

图10示出了根据实施例的DMVR过程1000。在该实施例中,当针对当前块启用了BWA时,修改DMVR过程,使得在DMVR搜索期间考虑BWA参数。具体地,在DMVR搜索期间,针对参考图片列表Lx(x为0或1)生成预测块涉及使用Lx的对应BWA参数来修改预测块的后续过程。

过程1000可以从步骤s1002开始。在步骤s1002中,导出初始运动矢量MV0和MV1。步骤s1002与图7中的步骤s702类似,省略其重叠说明。

在获得了MV0和MV1之后,在步骤s1004中,执行DMVR搜索。除了在确定给定针对MVoffset的样本值差时,使用第一预测块(P0’)和第二预测块(P1’)而不是第一初始预测块(P0)和第二个初始预测块(P1)之外,步骤s1004与步骤s704类似。具体地,在步骤s1004中,在使用MV0’获得P0之后,通过基于第一预测参数(W0)修改P0来获得P0’。例如,P0’=W0×P0。类似地,在使用MV1’得到P1之后,通过基于第二预测参数(W1)修改P1来获得P1’。例如,P1’=W1×P1。P0’和P1’用于确定针对对应偏移的样本值差。因此,与图7中所示的DMVR过程相比,在DMVR搜索期间考虑了预测参数(即BWA参数),这提高了DMVR搜索的准确性。

如针对步骤s704所说明的,执行步骤s1004会导致找到最佳偏移值(MVoffsetBest),从而在使用不同的偏移候选获得的多个样本值差之中得到最小的样本差。

在步骤s1006中,在获得MVoffsetBest之后,获得一对最佳运动矢量(MV0_best和MV1_best)。步骤s1006与图7中的步骤s706类似,省略其重叠说明。

在步骤s1008中,使用MV0_best来确定第一最佳预测块(P0_best),使用MV1_best来确定第二最佳预测块(P1_best)。使用P0_best和P1_best来确定最终预测块(Pbi)。可以基于(W0×P0_best+W1×P1_best)>>3来确定Pbi。例如,Pbi=(W0×P0_best+W1×P1_best)>>3。

图11示出了根据实施例的DMVR过程1100。在该实施例中,当针对当前块启用了WP时,修改DMVR过程,使得在DMVR搜索期间考虑WP参数。具体地,在DMVR搜索期间,针对参考图片列表Lx(x为0或1)生成预测块的涉及使用Lx的对应WP参数来修改预测块的后续过程。

过程1100可以从步骤s1102开始。在步骤s1102中,导出初始运动矢量MV0和MV1。步骤s1102与图7中的步骤s702类似,省略其重叠说明。

在获得了MV0和MV1之后,在步骤s1104中,执行DMVR搜索。除了在确定针对给定MVoffset的样本值差时,使用第一预测块(P0’)和第二预测块(P1’)而不是第一初始预测块(P0)和第二个初始预测块(P1)之外,步骤s1104与步骤s704类似。具体地,在步骤s1104中,在使用MV0’获得P0之后,通过基于第一预测参数(W0)和第三预测参数(O0)修改P0来获得P0’。例如P0’=W0×P0+O0。类似地,在使用MV1’获得P1之后,通过基于第二预测参数(W1)和第四预测参数(O1)修改P1来获得P1’。例如,P1’=W1×P1+O1。

如针对步骤s704所说明的,执行步骤s1104会导致找到最佳偏移值(MVoffsetBest),从而在使用不同的偏移候选获得的多个样本值差之中得到最小的样本差。

在步骤s1106中,在获得MVoffsetBest之后,获得了一对最佳运动矢量(MV0_Best和MV1_Best)。步骤s1106与图7中的步骤s706类似,省略其重叠说明。

在步骤s1108中,使用MV0_best来确定第一最佳预测块(P0_best),使用MV1_best来确定第二最佳预测块(P1_best)。使用P0_best和P1_best来确定最终预测块(Pbi)。可以基于(W0×P0_best+O0+W1×P1_best+O1)>>1来确定Pbi。例如,Pbi=(W0×P0_best+O0+W1×P1_best+O1)>>1。

图12示出了根据实施例的DMVR过程1200。DMVR过程1200是图10中所示的DMVR过程的备选方案。在DMVR过程1000中,第一初始预测块(P0)和第二初始预测块(P1)都被修改并用于计算样本值差。然而,在DMVR过程1200中,仅修改P0和P1之一。与DMVR过程1000相比,这允许DMVR过程1200实现降低的复杂性。

过程1200可以从步骤s1202开始。在步骤s1202中,导出初始运动矢量MV0和MV1。步骤s1202与图7中的步骤s702类似,省略其重叠说明。

在获得MV0和MV1之后,在步骤s1204中,执行DMVR搜索。除了在确定针对给定MVoffset的样本值差时,使用第一预测块(P0’)而不是第一初始预测块(P0)之外,步骤s1204与步骤s704类似。具体地,在步骤s1204中,在使用MV0’获得P0之后,通过基于第一预测参数(W0)和第二预测参数(W1)修改P0来获得P0’。例如,P0’=(W0/W1)×P0。在计算样本值差时,使用第二初始预测块(P1)而不对第二初始预测块进行修改。

如针对步骤s704所说明的,执行步骤s1204会导致找到最佳偏移值(MVoffsetBest),从而在使用不同的偏移值获得的多个样本值差之中得到最小的样本差。

在步骤s1206中,在获得MVoffsetBest之后,获得了一对最佳运动矢量(MV0_best和MV1_best)。步骤s1206与图7中的步骤s706类似,省略其重叠说明。

在步骤s1208中,使用MV0_best来确定第一最佳预测块(P0_best),使用MV1_best来确定第二最佳预测块(P1_best)。使用P0_best和P1_best来确定最终预测块(Pbi)。具体地,可以基于(W0×P0_best+W1×P1_best)>>3来确定Pbi。例如,Pbi=(W0×P0_best+W1×P1_best)>>3。

在一些实施例中,可以在DMVR搜索期间修改第二初始预测块(P1)而不是第一初始预测块(P0)。例如,在DMVR搜索期间,可以将P1修改为P1’=(W1/W0)×P1。

图13示出了根据实施例的DMVR过程1300。DMVR过程1300是图11中所示的DMVR过程的备选方案。在DMVR过程1100中,第一初始预测块(P0)和第二初始预测块(P1)都被修改并用于计算样本值差。然而,在DMVR过程1300中,仅修改P0和P1之一。与DMVR过程1100相比,这允许DMVR过程1300实现降低的复杂性。

过程1300可以从步骤s1302开始。在步骤s1302中,导出初始运动矢量MV0和MV1。步骤s1302与图7中的步骤s702类似,省略其重叠说明。

在获得MV0和MV1之后,在步骤s1304中,执行DMVR搜索。除了在确定给定MVoffset的样本值差时,使用第一预测块(P0’)而不是第一初始预测块(P0)之外,步骤s1304与步骤s704类似。具体地,在步骤s1304中,在使用MV0’获得P0之后,通过基于第一预测参数(W0)、第二预测参数(W1)、第三预测参数(O0)和第四预测参数(O1)修改P0来得到P0’。例如,P0’=(W0/W1)×P0+((O0–O1)/W1)。在计算样本值差时,使用第二初始预测块(P1)而不对第二初始预测块进行修改。

如针对步骤s704所说明的,执行步骤s1304会导致找到最佳偏移值(MVoffsetBest),从而在使用不同的偏移值获得的多个样本值差之中得到最小的样本差。

在步骤s1306中,在获得MVoffsetBest之后,获得了一对最佳运动矢量(MV0_best和MV1_best)。步骤s1306与图7中的步骤s706类似,省略其重叠说明。

在步骤s1308中,使用MV0_best来确定第一最佳预测块(P0_best),使用MV1_best来确定第二最佳预测块(P1_best)。使用P0_best和P1_best来确定最终预测块(Pbi)。可以基于(W0×P0_best+O0+W1×P1_best+O1)>>1来确定Pbi。例如,Pbi=(W0×P0_best+O0+W1×P1_best+O1)>>1。

在一些实施例中,可以在DMVR搜索期间修改第二初始预测块(P1)而不是第一初始预测块(P0)。例如,在DMVR搜索期间,可以将P1设置为(W1/W0)×P1+((O1–O0)/W0)。

图14是用于实现编码器402或解码器404的装置1400的框图。如图14中所示,装置1400可以包括:处理电路(PC)1402,其可以包括一个或多个处理器(P)1455(例如,通用微处理器和/或一个或多个其他处理器,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)等),这些处理器可以共同位于单个壳体中或单个数据中心中,也可以在地理上分布;网络接口1445包括发射机(Tx)1448和接收机(Rx)1447,使得装置1400能够向连接到网络410(例如,互联网协议(IP)网络)的其他节点发送数据和从其他节点接收数据,网络接口1445连接到网络410;以及本地存储单元(又名“数据存储系统”)1408,其可以包括一个或多个非易失性存储设备和/或一个或多个易失性存储设备。在PC 1402包括可编程处理器的实施例中,可以提供计算机程序产品(CPP)1441。CPP 1441包括计算机可读介质(CRM)1442,该计算机可读介质(CRM)2342存储包括计算机可读指令(CRI)1444在内的计算机程序(CP)1443。CRM1442可以是非暂时性计算机可读介质,例如磁介质(例如,硬盘)、光学介质、存储器设备(例如,随机存取存储器、闪存)等。在一些实施例中,计算机程序1443的CRI 1444被配置为使得在由PC 1402执行时,CRI使得装置1400执行本文中描述的步骤(例如,本文中参考流程图描述的步骤)。在其他实施例中,装置1400可被配置为在不需要代码的情况下执行本文描述的步骤。也就是说,例如,1402可以仅由一个或多个ASIC组成。因此,本文描述的实施例的特征可以以硬件和/或软件实现。

图15是示出了用于确定预测块的过程1500的流程图。过程1500可以在步骤s1502中开始。

步骤s1502包括获得第一对初始运动矢量。

步骤s1504包括获得第一预测参数。

步骤s1506包括获得第二预测参数。

步骤s1508包括使用第一对初始运动矢量和第一运动矢量偏移量来生成第一对经修改的运动矢量,第一对经修改的运动矢量包括第一经修改的运动矢量和第二经修改的运动矢量。

步骤s1510包括使用第一经修改的运动矢量来获得第一预测块。

步骤s1512包括使用第二经修改的运动矢量来获得第二预测块。

步骤s1514包括使用第一预测块和第二预测块来计算第一差。

步骤s1516包括使用第一对初始运动矢量和第二运动矢量偏移来生成第二对经修改的运动矢量,第二对经修改的运动矢量包括第三经修改的运动矢量和第四经修改的运动矢量。

步骤s1518包括使用第三经修改的运动矢量来获得第三预测块。

步骤s1520包括使用第四经修改的运动矢量来获得第四预测(P4)块。

步骤s1522包括使用第三预测块和第四预测块来计算第二差。

步骤s1524包括使用第一差和第二差来确定最佳运动矢量偏移。

步骤s1526包括使用所确定的最佳运动矢量偏移来确定预测块。

在一些实施例中,过程1500还包括:使用第一初始运动矢量和最佳运动矢量偏移来确定第一最佳运动矢量;使用第二初始运动矢量和最佳运动矢量偏移来确定第二最佳运动矢量;使用第一最佳运动矢量来生成第一最佳预测块;使用第二最佳运动矢量来生成第二最佳预测块,并且基于第一最佳预测块和第一预测参数的乘积以及第二最佳预测块和第二预测参数的乘积来确定预测块。

在一些实施例中,获得第二预测块包括使用第二经修改的运动矢量来导出初始第二预测块,使用初始第二预测块和至少第二预测参数来导出第二预测块,并且获得第四预测块包括使用第四经修改的运动矢量来导出初始第四预测块,使用初始第四预测块和至少第二预测参数来导出第四预测块。

在一些实施例中,基于初始第一预测块和第一预测参数的乘积来导出第一预测块,并且基于初始第二预测块和第二预测参数的乘积来导出第二预测块。

在一些实施例中,基于(W1/W2)*Pi1来导出第一预测块,其中W1是第一预测参数,W2是第二预测参数,且Pi1是初始第一预测块。

在一些实施例中,过程1500还包括获得第三预测参数和获得第四预测参数。

在一些实施例中,基于(W1×P1_best)+O3+(W2×P2_best)+O4来确定预测块,其中W1是第一预测参数,P1_best是第一最佳预测块,O3是第三预测参数,W2是第二预测参数,P2_best是第二最佳预测块,且O4是第四预测参数。

在一些实施例中,还至少基于第三预测参数来导出第一预测块。

在一些实施例中,还基于第三预测参数与第四预测参数之间的差来导出第一预测块。

在一些实施例中,第一预测参数是用于加权预测的参数之一或者用于具有加权平均的广义双向预测的参数之一。

图16是示出了用于确定预测块的过程1600的流程图。过程1600可以在步骤s1602中开始。

步骤s1602包括获得一对初始运动矢量。

步骤s1604包括确定是否细化初始运动矢量,其中,确定是否细化初始运动矢量包括确定是否启用了第一预测方案。

步骤s1606包括作为确定细化初始运动矢量的结果,细化初始运动矢量,并且使用经细化的运动矢量来生成预测块。步骤s1608包括作为确定不细化初始运动矢量的结果,抑制细化初始运动矢量,并且使用初始运动矢量来生成预测块。

在一些实施例中,确定是否细化初始运动矢量还包括确定是否启用了第二预测方案。在一些实施例中,第一预测方案是加权预测且第二预测方案是具有加权平均的广义双向预测。在一些实施例中,确定是否细化初始运动矢量还包括:作为确定启用了第一预测方案或第二预测方案的结果,确定抑制细化初始运动矢量;或者,作为确定既未启用第一预测方案也未启用第二预测方案的结果,确定细化初始运动矢量。

各种实施例的概述

A1.一种用于确定预测块(Pbi)以用于对视频流的当前图片中的当前块进行解码或编码的方法(1500),该方法包括:获得第一对初始运动矢量(s1502),第一对初始运动矢量包括第一初始运动矢量(MV1)和第二初始运动矢量(MV2);获得第一预测参数(W1)(s1504);获得第二预测参数(W2)(s1506);使用第一对初始运动矢量和第一运动矢量偏移(MVoffset1)来生成第一对经修改的运动矢量(s1508),第一对经修改的运动矢量包括第一经修改的运动矢量(MV1’)和第二经修改的运动矢量(MV2’);使用第一经修改的运动矢量来获得第一预测块(P1)(s1510);使用第二经修改的运动矢量来获得第二预测块(P2)(s1512);使用第一预测块和第二预测块来计算第一差(s1514);使用第一对初始运动矢量和第二运动矢量(MVoffset2)偏移来生成第二对经修改的运动矢量(s1516),第二对经修改的运动矢量包括第三经修改的运动矢量(MV3’)和第四经修改的运动矢量(MV4’);使用第三经修改的运动矢量来获得第三预测块(P3)(s1518);使用第四经修改的运动矢量来获得第四预测块(P4)(s1520);使用第三预测块和第四预测块来计算第二差(s1522);使用第一差和第二差来确定最佳运动矢量偏移(s1524);以及使用所确定的最佳运动矢量偏移来确定预测块(Pbi)(s1526),其中,获得第一预测块(P1)包括使用第一经修改的运动矢量来导出初始第一预测块(Pi1),并且使用Pi1和至少第一预测参数(W1)来导出第一预测块P1,以及获得第三预测块(P3)包括使用第三经修改的运动矢量来导出初始第三预测块(Pi3),并且使用Pi1和至少第一预测参数(W1)来导出第三预测块P3。

A2.根据实施例A1所述的方法,还包括:使用第一初始运动矢量(MV1)和最佳运动矢量偏移(MVoffsetBest)来确定第一最佳运动矢量(MV1_best);使用第二初始运动矢量(MV2)和最佳运动矢量偏移(MVoffsetBest)来确定第二最佳运动矢量(MV2_best);使用第一最佳运动矢量(MV1_best)来生成第一最佳预测块(P1_best);使用第二最佳运动矢量(MV2_best)来生成第二最佳预测块(P2_best);以及基于第一最佳预测块(P1_best)和第一预测参数(W1)的乘积以及第二最佳预测块(P2_best)和第二预测参数(W2)的乘积来确定预测块(Pbi)。

A3.根据实施例A1至A2所述的方法,其中,获得第二预测块(P2)包括使用第二经修改的运动矢量来导出初始第二预测块(Pi2),并且使用初始第二预测块(Pi2)和至少第二预测参数(W2)来导出第二预测块(P2);以及获得第四预测块(P4)包括使用第四经修改的运动矢量来导出初始第四预测块(Pi4),并且使用初始第四预测块(Pi4)和至少第二预测参数(W2)来导出第四预测块。

A4.根据实施例A3所述的方法,其中,基于初始第一预测块(Pi1)和第一预测参数(W1)的乘积来导出第一预测块(P1),并且基于初始第二预测块(Pi2)和第二预测参数(W2)的乘积来导出第二预测块(P2)。

A5.根据实施例A1至A2所述的方法,基于(W1/W2)*Pi1来导出第一预测块(P1),其中W1是第一预测参数,W2是第二预测参数,且Pi1是初始第一预测块(Pi1)。

A6.根据实施例A1至A5所述的方法,还包括:获得第三预测参数(O3);以及获得第四预测参数(O4)。

A7.根据实施例A6所述的方法,其中,基于(W1×P1_best)+O3+(W2×P2_best)+O4来确定预测块(Pbi),其中,W1是第一预测参数,P1_best是第一最佳预测块,O3是第三预测参数,W2是第二预测参数,P2_best是第二最佳预测块,且O4是第四预测参数。

A8.根据实施例A7所述的方法,其中,还至少基于第三预测参数(O3)来导出第一预测块(P1)。

A9.根据实施例A7所述的方法,其中,还基于第三预测参数(O3)与第四预测参数(O4)之间的差来导出第一预测块(P1)。

A10.根据实施例A1至A9所述的方法,其中,第一预测参数(W1)是用于加权预测的参数之一或者用于具有加权平均的广义双预测(BWA)的参数之一。

B1.一种用于确定预测块(Pbi)以用于对视频流的当前图片中的当前块进行解码或编码的方法(1600),该方法包括:获得一对初始运动矢量(s1602),一对初始运动矢量包括第一初始运动矢量(MV1)和第二初始运动矢量(MV2);确定是否细化初始运动矢量(s1604);以及作为确定细化初始运动矢量的结果,细化初始运动矢量(s1606),其中确定是否细化初始运动矢量包括:确定是否启用了第一预测方案和/或第二预测方案;以及作为确定启用了第一预测方案或第二预测方案的结果,确定抑制细化初始运动矢量,或者作为确定既未启用第一预测方案也未启用第二预测方案的结果,确定细化初始运动矢量。

B2.根据实施例B1的方法,其中,第一预测方案是加权预测(WP),第二预测方案是具有加权平均的广义双向预测(BWA)。

C1.一种编码器或解码器装置(1400),该装置(1400)适于:确定预测块(Pbi),以用于对视频流的当前图片中的当前块进行编码或解码,其中,该装置适于使得该装置通过执行包括以下操作的过程来确定预测块:获得第一对初始运动矢量(s1502),第一对初始运动矢量包括第一初始运动矢量(MV1)和第二初始运动矢量(MV2);获得第一预测参数(W1)(s1504);获得第二预测参数(W2)(s1506);使用第一对初始运动矢量和第一运动矢量偏移(MVoffset1)来生成第一对经修改的运动矢量(s1508),第一对经修改的运动矢量包括第一经修改的运动矢量(MV1’)和第二经修改的运动矢量(MV2’);使用第一经修改的运动矢量来获得第一预测块(P1)(s1510);使用第二经修改的运动矢量来获得第二预测块(P2)(s1512);使用第一预测块和第二预测块来计算第一差(s1514);使用第一对初始运动矢量和第二运动矢量偏移(MVoffset2)来生成第二对经修改的运动矢量(s1516),第二对经修改的运动矢量包括第三经修改的运动矢量(MV3’)和第四经修改的运动矢量(MV4’);使用第三经修改的运动矢量来获得第三预测块(P3)(s1518);使用第四经修改的运动矢量来获得第四预测块)(P4)(s1520);使用第三预测块和第四预测块来计算第二差(s1522);使用第一差和第二差来确定最佳运动矢量偏移(s1524);以及使用所确定的最佳运动矢量偏移量来确定预测块(Pbi)(s1526),其中,获得第一预测块(P1)包括使用第一经修改的运动矢量来导出初始第一预测块(Pi1),并且使用Pi1和至少第一预测参数(W1)来导出P1,并且获得第三预测块(P3)包括使用第三经修改的运动矢量来导出初始第三预测块(Pi3),并且使用Pi3和至少第一预测参数(W1)来导出P3。

C2.根据实施例C1所述的装置,其中,该装置还适于执行根据实施例A2至A10中任一项所述的步骤。

D1.一种编码器或解码器装置(1400),该装置(1400)适于:确定预测块(Pbi),以用于对视频流的当前图片中的当前块进行编码或解码,其中,该装置适于使得该装置通过执行包括以下操作的过程来确定预测块:获得一对初始运动矢量(s1602),一对初始运动矢量包括第一初始运动矢量(MV1)和第二初始运动矢量(MV2);确定是否细化初始运动矢量(s1604);以及作为确定细化初始运动矢量(s1606)的结果,细化初始运动矢量,其中,确定是否细化初始运动矢量包括:确定是否启用了第一预测方案和/或第二预测方案;以及作为确定启用了第一预测方案或第二预测方案的结果,确定抑制细化初始运动矢量,或者作为确定既未启用第一预测方案也未启用第二预测方案的结果,确定细化初始运动矢量。

D2.根据实施例D1所述的装置,其中,第一预测方案是加权预测(WP),第二预测方案是具有加权平均的广义双预测(BWA)。

E1.一种计算机程序,包括指令,该指令在至少一个处理器上执行时,使该至少一个处理器执行根据实施例A1至A10或B1至B2中任一项所述的方法。

E2.一种包含根据实施例E1所述的计算机程序在内的载体,其中,载体是电信号、光学信号、无线电信号或计算机可读存储介质之一

虽然在本文中描述了各种实施例(包括含有对修改3GPP标准的提议的所附附录),但是应当理解,它们仅作为示例而不是限制被呈现。因此,本公开的宽度和范围不应受到上述示例性实施例中任意一个的限制。此外,上述要素以其所有可能变型进行的任意组合都包含在本公开中,除非另有指示或以其他方式和上下文明确冲突。

附加地,虽然在上面描述并在附图中示出的处理被示为一系列步骤,但是其仅用于说明目的。因此,可以想到可增加一些步骤、可省略一些步骤,可重排步骤顺序,以及可并行执行一些步骤。

35页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于帧内预测模式与块差分脉冲编码调制模式之间交互的方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类