子块运动矢量预测中基于空域邻近块的运动候选推导的制作方法

文档序号:20597378发布日期:2020-05-01 21:19阅读:292来源:国知局
子块运动矢量预测中基于空域邻近块的运动候选推导的制作方法

相关申请的交叉引用

根据适用的专利法和/或依据巴黎公约的规则,本申请是为了及时要求于2018年10月24日提交的国际专利申请no.pct/cn2018/111587和2018年12月28日提交的国际专利申请no.pct/cn2018/124984的优先权和利益。上述申请的全部公开通过引用而并入作为本专利文档的公开的一部分。

本专利文档通常针对图像和视频编码技术。



背景技术:

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



技术实现要素:

描述了与数字视频编码相关的设备、系统和方法,具体地,描述了与简化用于视频编码的子块运动候选列表相关的设备、系统和方法。所描述的方法可以应用于现有的视频编码标准(例如,高效视频编码(highefficiencyvideocoding,hevc))和未来的视频编码标准或视频编解码器。

在一个代表性方面,所公开的技术可以用于提供用于视频处理的方法。该方法包括:在视觉媒体数据的当前块和当前块的比特流表示之间的转换期间,确定当前块的至少一个子块的时域运动矢量预测候选;以及基于子块的时域运动矢量预测候选来执行该转换。时域运动矢量预测候选基于当前块的k个邻近块而确定,k是正整数。

在另一代表性方面,所公开的技术可以用于提供用于视频处理的方法。该方法包括在视频的当前块和视频的比特流表示之间的转换期间,基于当前块的时域邻近块来确定时域运动矢量预测候选。时域邻近块基于从一个或多个空域邻近块选择的空域邻近块的运动信息而识别,该一个或多个空域邻近块与在视频块的merge列表构建过程中使用的至少一个空域邻近块不同。该方法还包括基于时域运动矢量预测候选来执行该转换。

在另一代表性方面,所公开的技术可以用于提供用于视频处理的方法。该方法包括:对于视频的当前块和当前块的比特流表示之间的转换,基于视频和比特流表示的过去(past)转换而维持运动候选表;基于运动候选表来推导时域运动矢量预测候选;以及基于时域运动矢量预测候选来执行该转换。

在另一代表性方面,所公开的技术可以用于提供用于视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,确定当前块的一个或多个时域运动矢量预测候选;以及基于一个或多个时域运动矢量预测候选来执行该转换。一个或多个时域运动矢量预测候选可以通过基于初始运动矢量识别当前块的第一时域相邻块并且检查附加时域相邻块以获得一个或多个时域运动矢量预测候选而确定,其中第一时域相邻块包括无效运动信息。

在另一代表性方面,所公开的技术可以用于提供用于视频处理的方法。该方法包括对于视频的当前块和视频的比特流表示之间的转换,确定当前块的一个或多个时域运动矢量预测候选。一个或多个时域运动矢量预测候选包括默认时域运动矢量预测候选。该方法还包括基于一个或多个时域运动矢量预测候选来执行该转换。

在另一代表性方面,所公开的技术可以用于提供用于视频处理的方法。该方法包括对于视频的当前块和视频的比特流表示之间的转换,确定包括至少一个子块编码类型的子块级别merge候选列表。该方法还包括基于子块级别merge候选列表来执行该转换。

在另一代表性方面,所公开的技术可以用于提供用于视频处理的方法,该方法包括对于视频的当前块和视频的比特流表示之间的转换,基于在图片头、图片参数集(pps)、条带头或片组头中信令通知的指示来确定子块级别编码技术。该方法还包括基于子块级别编码技术来执行该转换。

在另一代表性方面,所公开的技术可以用于提供用于视频处理的方法,该方法包括:对于视频的当前块和视频的比特流表示之间的转换,使用适用于当前块和比特流表示之间的块级别时域运动矢量预测候选转换的推导过程,来确定子块级别时域运动候选;以及基于子块级别时域运动候选来执行该转换。

在另一代表性方面,所公开的技术可以用于提供用于视频处理的方法,该方法包括:对于视频的当前块和视频的比特流表示之间的转换,使用适用于当前块和比特流表示之间的子块级别时域运动候选转换的推导过程,来确定块级别时域运动矢量预测候选;以及基于块级别时域运动矢量预测候选来执行该转换。

在另一代表性方面,所公开的技术可以用于提供用于视频处理的方法。该方法包括:对于当前视频块的子块级别处理,选择与空域邻近块相关联的运动信息;基于运动信息来推导运动矢量预测候选;将运动矢量预测候选添加到不同于merge列表的基于子块的merge列表,其中基于子块的merge列表不包括块级别预测候选;以及基于运动矢量预测候选来重构当前视频块或解码其他视频块。

在另一代表性方面,所公开的技术可以用于提供用于视频处理的方法。该方法包括:对于当前视频块的子块级别处理,推导运动矢量预测候选;将merge索引分配给运动矢量预测候选的类型;以及将运动矢量预测候选和merge索引添加到不同于merge列表的基于子块的merge列表,其中基于子块的merge列表不包括块级别预测候选。

在又一代表性方面,所公开的技术可以用于提供用于视频处理的方法。该方法包括:对于当前视频块的子块级别处理,推导运动矢量预测候选;以及基于自适应排序将运动矢量预测候选添加到不同于merge列表的基于子块的merge列表,其中基于子块的merge列表不包括块级别预测候选。

在另一示例方面,公开了一种视频处理的方法。该方法包括使用以下中的一个为当前视频块和当前视频块的比特流表示之间的转换确定基于子块的编码模式的默认运动候选:(a)通过将起始运动候选缩放到参考图片列表x内的参考图片索引而推导的单向预测候选;或者(b)通过缩放到两个参考图片列表内的参考图片索引而推导的双向预测候选;或者(c)取决于当前视频块的图片类型或条带类型,(a)或(b)中的候选;或者(d)为当前视频块的时域运动矢量预测值(temporalmotionvectorpredictor,tmvp)过程推导的候选。

在又一代表性方面,上述方法以处理器可执行代码的形式而体现,并且存储在计算机可读程序介质中。

在又一代表性方面,公开了一种被配置为或可操作来执行上述方法的设备。该设备可以包括被编程来实施该方法的处理器。

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

在附图、说明书和权利要求书中更详细地描述了所公开技术的上述以及其他方面和特征。

附图说明

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

图2a和图2b分别示出了简化的4参数仿射模型和简化的6参数仿射模型的示例。

图3示出了每子块的仿射运动矢量场(motionvectorfield,mvf)的示例。

图4a和图4b示出了af_merge仿射运动模式的示例候选。

图5示出了仿射merge模式的候选位置的示例。

图6示出了仿射merge模式的候选位置的另一示例。

图7示出了具有子块的一个编码单元(codingunit,cu)和cu的邻近块的示例。

图8示出了仿射merge模式的候选位置的又一示例。

图9示出了用于可选时域运动矢量预测(alternativetemporalmotionvectorprediction,atmvp)时域块识别的空域邻近块的示例。

图10示出了识别atmvp的可选起始点的示例。

图11示出了根据所公开技术的用于视频编码的示例方法的流程图。

图12示出了根据所公开技术的用于视频编码的另一示例方法的流程图。

图13示出了根据所公开技术的用于视频编码的又一示例方法的流程图。

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

图15示出了如何识别用于默认运动推导的表示块的示例。

图16是其中可以实施所公开技术的示例视频处理系统的框图。

图17是根据本公开的用于视频处理的方法的流程图表示。

图18是根据本公开的用于视频处理的另一方法的流程图表示。

图19是根据本公开的用于视频处理的另一方法的流程图表示。

图20是根据本公开的用于视频处理的另一方法的流程图表示。

图21是根据本公开的用于视频处理的另一方法的流程图表示。

图22是根据本公开的用于视频处理的另一方法的流程图表示。

图23是根据本公开的用于视频处理的另一方法的流程图表示。

图24a是根据本公开的用于视频处理的另一方法的流程图表示。

图24b是根据本公开的用于视频处理的又一方法的流程图表示。

具体实施方式

由于对更高分辨率视频的需求日益增长,视频编码方法和技术在现代技术中无处不在。视频编解码器通常包括压缩或解压缩数字视频的电子电路或软件,并且正在不断被改进以提供更高的编码效率。视频编解码器将未压缩视频转换成压缩格式,反之亦然。视频质量、用于表示视频的数据量(由比特率决定)、编码和解码算法的复杂性、对数据丢失和错误的敏感性、编辑的易用性、随机访问和端到端延迟(时延)之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如,高效视频编码(hevc)标准(也称为h.265或mpeg-hpart2)、待最终确定的多功能视频编码(versatilevideocoding,vvc)标准或其他当前和/或未来的视频编码标准。

基于子块的预测首先通过高效视频编码(hevc)标准被引入视频编码标准。利用基于子块的预测,诸如编码单元(cu)或预测单元(predictionunit,pu)的块被分成几个不重叠的子块。不同的子块可以被分配不同的运动信息,诸如参考索引或运动矢量(motionvector,mv),并且对每个子块单独执行运动补偿(motioncompensation,mc)。图1示出了基于子块的预测的示例。

所公开技术的实施例可以应用于现有的视频编码标准(例如,hevc、h.265)和未来的标准,以降低硬件实施复杂性或提高编码性能。在本文档中使用章节标题来提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实施方式)仅限制于各个章节。

1.联合探索模型(jointexplorationmodel,jem)的示例

在一些实施例中,使用被称为联合探索模型(jem)的参考软件探索未来的视频编码技术。在jem中,基于子块的预测被用于几个编码工具,诸如仿射预测、可选时域运动矢量预测、空时运动矢量预测(spatial-temporalmotionvectorprediction,stmvp)、双向光流(bi-directionalopticalflow,bio)、帧速率上转换(frame-rateupconversion,fruc)。仿射预测也被用到vvc中。

1.1仿射预测的示例

在hevc中,只有平移运动模型被应用于运动补偿预测(motioncompensationprediction,mcp)。而在现实世界中,有许多种运动,例如放大/缩小、旋转、透视运动和其他不规则运动。在vvc中,应用简化的仿射变换运动补偿预测。如图2a和图2b所示,块的仿射运动场分别由两个(在使用变量a、b、e和f的4参数仿射模型中)或三个(在使用变量a、b、c、d、e和f的6参数仿射模型中)控制点运动矢量来描述。

块的运动矢量场(mvf)分别用4参数仿射模型和6参数仿射模型由以下等式描述:

这里,(mvh0,mvh0)是左上角控制点(controlpoint,cp)的运动矢量,(mvh1,mvh1)是右上角控制点的运动矢量,并且(mvh2,mvh2)是左下角控制点的运动矢量,(x,y)表示代表点相对于当前块内的左上方样点的坐标。cp运动矢量可以用信令通知(像在仿射amvp模式中)或者即时推导(像在仿射merge模式中)。w和h是当前块的宽度和高度。实际上,除法是通过右移和舍入运算来实施的。在vtm中,代表点被定义为子块的中心位置,例如,当子块的左上角相对于当前块内的左上方样点的坐标是(xs,ys)时,代表点的坐标被定义为(xs+2,ys+2)。

在无除法设计中,等式(1)和(2)被实施为:

对于等式(1)中所示的4参数仿射模型:

对于等式(2)中所示的6参数仿射模型:

因此,运动矢量可以推导为:

off=1<<(s-1)

这里,s表示计算精度。例如,在vvc中,s=7。在vvc中,在mc中用于具有(xs,ys)处的左上方样点的子块的mv由等式(6)计算,其中x=xs+2,并且y=ys+2。

为了推导每个4×4子块的运动矢量,如图3所示,根据等式(1)或(2)计算每个子块的中心样点的运动矢量,并舍入到1/16的分数精确度。然后,应用运动补偿插值滤波器以用推导的运动矢量生成每个子块的预测。

仿射模型可以从空域邻近仿射编码块(诸如左侧、上侧、右上侧、左下和左上侧邻近块)继承,如图4a所示。例如,如果在仿射模式下编码图4a中的邻域左下方块a,如由图4b中的a0表示的,则提取包含块a的邻近cu/pu的左上角、右上角和左下角的控制点(cp)运动矢量mv0n、mv1n和mv2n。基于mv0n、mv1n和mv2n计算当前cu/pu上的左上角/右上方/左下方的运动矢量mv0c、mv1c和mv2c(仅用于6参数仿射模型)。

在一些实施例中(例如,vtm-2.0),如果当前块是仿射编码的,则子块(例如,vtm中的4×4块)lt存储mv0,rt存储mv1。如果当前块是用6参数仿射模型编码的,则lb存储mv2;否则(用4参数仿射模型),lb存储mv2’。其他子块存储用于mc的mv。

在一些实施例中,当cu是用仿射merge模式(例如,在af_merge模式下)编码的时,它从有效邻域重构块得到用仿射模式编码的第一块。并且候选块的选择顺序是从左侧、上侧、右上侧、左下方到左上侧,如图4a所示。

在仿射merge模式下,可将当前块的推导的cpmvmv0c、mv1c和mv2c用作cpmv。或者它们可以在vvc中用作仿射帧间模式的mvp。应当注意,对于merge模式,如果当前块是用仿射模式编码的,则在推导当前块的cpmv之后,当前块可以被进一步划分为多个子块,并且每个块基于当前块的推导的cpmv来推导其运动信息。

2.示例实施例

不同于其中仅一个仿射空域邻近块可以用于推导块的仿射运动的vtm,在jvet-k0186中,针对af_merge模式构建单独的仿射候选列表。

(1)将继承的仿射候选插入到候选列表中

在示例中,继承的仿射候选是指候选是从用仿射模式编码的有效邻域重构块中推导的。

如图5所示,候选块的扫描顺序是a1、b1、b0、a0和b2。当选择一个块(例如a1)时,应用两步过程:

(a)首先,使用覆盖该块的cu的三个角运动矢量来推导当前块的两个/三个控制点;和

(b)基于当前块的控制点来推导当前块内的每个子块的子块运动。

(2)插入构建的仿射候选

在一些实施例中,如果仿射merge候选列表中的候选数量小于maxnumaffinecand,则将构建的仿射候选插入到候选列表中。

构建的仿射候选意味着候选是通过组合每个控制点的邻域运动信息而构建的。

控制点的运动信息首先从图5所示的指定空域邻域和时域邻域中推导。cpk(k=1、2、3、4)表示第k个控制点。a0、a1、a2、b0、b1、b2和b3是用于预测cpk(k=1、2、3)的空域位置;t是用于预测cp4的时域位置。

cp1、cp2、cp3和cp4的坐标分别是(0,0)、(w,0)、(h,0)和(w,h),其中w和h是当前块的宽度和高度。

每个控制点的运动信息根据以下优先级顺序而获得:

ο对于cp1,检查优先级为b2→b3→a2。如果b2可用,则使用b2。否则,如果b2不可用,则使用b3。如果b2和b3都不可用,则使用a2。

如果所有三个候选都不可用,就无法获得cp1的运动信息。

ο对于cp2,检查优先级为b1→b0;

ο对于cp3,检查优先级为a1→a0;

ο对于cp4,使用t。

其次,使用控制点的组合来构建运动模型。

需要三个控制点的运动矢量来计算6参数仿射模型中的变换参数。三个控制点可以从以下四个组合之一选择({cp1,cp2,cp4}、{cp1,cp2,cp3}、{cp2,cp3,cp4}、{cp1,cp3,cp4})。例如,使用cp1、cp2和cp3控制点来构建6参数仿射运动模型,表示为affine(cp1,cp2,cp3)。

需要两个控制点的运动矢量来计算4参数仿射模型中的变换参数。两个控制点可以从以下六个组合之一选择({cp1,cp4}、{cp2,cp3}、{cp1,cp2}、{cp2,cp4}、{cp1,cp3}、{cp3,cp4})。例如,使用cp1和cp2控制点来构建4参数仿射运动模型,表示为affine(cp1,cp2)。

构建的仿射候选的组合按以下顺序插入到候选列表中:

{cp1,cp2,cp3}、{cp1,cp2,cp4}、{cp1,cp3,cp4}、{cp2,cp3,cp4}、{cp1,cp2}、{cp1,cp3}、{cp2,cp3}、{cp1,cp4}、{cp2,cp4}、{cp3,cp4}

(3)插入零运动矢量

如果仿射merge候选列表中的候选数量小于maxnumaffinecand,则零运动矢量被插入到候选列表中,直到列表满为止。

3.高级时域运动矢量预测(advancedtemporalmotionvectorprediction,atmvp)示例

在一些现有的实施方式中,高级时域运动矢量预测(atmvp)被包括在基准集(benchmarkset,bms)-1.0参考软件中,其基于来自时域邻近图片的并置块的运动信息来推导一个编码单元(cu)的子块的多个运动。尽管它提高了时域运动矢量预测的效率,但针对现有的atmvp设计识别到以下复杂性问题:

ο如果使用多个参考图片,不同atmvpcu的并置图片可能不相同。这意味着需要提取多个参考图片的运动场。

ο每个atmvpcu的运动信息总是基于4×4单元而推导,导致多次调用对一个atmvpcu内部的每个4×4子块的运动推导和运动补偿。

3.1用一个固定的并置图片的简化并置块推导的示例

在该示例方法中,描述了一种简化的设计,以使用与在hevc中相同的并置图片作为用于atmvp推导的并置图片,该并置图片在条带头处被信令通知。在块级别,如果邻近块的参考图片不同于该并置图片,则使用hevc时域mv缩放方法来缩放该块的mv,并且在atmvp中使用缩放后的mv。

将用于提取并置图片rcol中的运动场的运动矢量表示为mvcol。为了最小化由mv缩放造成的影响,在用于推导mvcol的空域候选列表中的mv以如下方式被选择:如果候选mv的参考图片是并置图片,则该mv被选择并用作mvcol,而无需任何缩放。否则,具有最接近并置图片的参考图片的mv被选择以用缩放推导mvcol。

3.2自适应atmvp子块尺寸的示例

在该示例方法中,针对atmvp运动推导支持子块尺寸的条带级别自适应。在一些情况下,atmvp也被称为子块时域运动矢量预测(sub-blocktemporalmotionvectorprediction,sbtmvp)。具体地,用于atmvp运动推导的一个默认子块尺寸是在序列级别被信令通知的。此外,一个标志在条带级别被信令通知,以指示默认子块尺寸是否用于当前条带。如果标志为假(false),则对应的atmvp子块尺寸在条带的条带头中被进一步信令通知。

3.3简化atmvp推导的示例

在一些实施例中,atmvp以两步预测cu内的子cu的运动矢量。第一步是识别在条带头处信令通知的并置图片中的对应块。第二步是将当前cu划分为子cu,并从对应于并置图片中的每个子cu的块获得每个子cu的运动信息。

在第一步中,通过总是扫描空域merge候选的mv两次(每个列表一次)来识别并置块。如图6所示,通过检查a1→b1→b0→a0→atmvp→b2→tmvp来执行merge候选列表的构建。因此,merge列表中mvp候选的数量在atmvp之前多达4个,这意味着在最坏的情况下,第一步中的扫描过程需要检查每个列表的所有4个候选块。

为了简化邻近块的扫描过程,该方法将用于推导并置块的扫描过程的数量限制为一次,这意味着仅检查merge列表中的第一可用候选。如果候选不满足当前vvc工作草案中atmvp邻近块扫描的条件(与列表0和列表1相关联的运动矢量都没有指向并置图片),则零运动矢量将被用于推导并置图片中的并置块。在这种方法中,检查过程执行多达1次。这样的运动矢量(例如,在当前设计中,它可以是与一个空域邻近块相关联的运动,或者零运动矢量)被称为atmvp的起始点mv。

3.4子块运动信息的推导

执行两个步骤以便填充不同子块的所有运动信息。

1.查找默认运动信息:

1.基于当前块内的中心位置和并置图片中的起始点mv来识别块(即,覆盖(x0+w/2+(spmv_x>>k),y0+h/2+(spmv_y>>k))的块,其中分别地,(x0,y0)是左上方样点的坐标,(w,h)是块的宽度和高度;(spmv_x,spmv_y)是起始点mv,并且k表示运动矢量的精度,(spmv_x>>k,spmv_y>>k)表示整数mv)。

2.如果所识别的块是帧内编码的,则atmvp过程被终止,并且atmvp候选被设置为不可用。

3.否则(所识别的块是帧间编码的),所识别的块的运动信息可以被用来推导默认运动信息(例如,缩放到某些参考图片)。取决于参考图片,默认运动信息可以是单向预测或双向预测。

图15示出了如何识别默认运动推导的表示块的示例。覆盖并置图片中该位置(实心圆)的块是默认运动推导的表示块。

2.如果找到默认运动,则对于每个子块,基于其子块内的中心位置和起始点mv来定位并置图片中的代表块。

1.如果代表块被编码为帧间模式,则代表块的运动信息被用来推导最终子块的运动(即,缩放到某些参考图片)。

2.如果代表块被编码为帧内模式,则子块的运动被设置为默认运动信息。

4.空时运动矢量预测(stmvp)示例

在stmvp方法中,子cu的运动矢量按照光栅扫描顺序而递归地推导。图7示出了具有四个子块的一个cu和邻近块的示例。考虑一个8×8cu,它包含四个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开始)。从每个列表的邻近块获得的运动信息被缩放到给定列表的第一参考帧。接下来,子块a的时域运动矢量预测值(tmvp)通过按照如在hevc中指定的tmvp推导的相同过程而推导。位置d处的并置块的运动信息被相应地提取和缩放。最后,在检索和缩放运动信息之后,针对每个参考列表分别平均所有可用的运动矢量(多达3个)。平均运动矢量被指定为当前子cu的运动矢量。

5.仿射merge候选列表的示例实施例

5.1示例实施例

在vtm-2.0.1的仿射merge模式中,只有第一可用仿射邻域可以用于推导仿射merge模式的运动信息。在一些实施例中,仿射merge模式的候选列表通过搜索有效仿射邻域并组合每个控制点的邻域运动信息而构建。

仿射merge候选列表如以下步骤而构建:

(1)插入继承的仿射候选

继承的仿射候选意味着候选是从其有效邻域仿射编码块的仿射运动模型推导的。在公共基础中,如图8所示,候选位置的扫描顺序是:a1、b1、b0、a0和b2。

在推导候选之后,执行完整的修剪过程,以检查是否已将相同的候选插入到列表中。如果存在相同的候选,则推导的候选被丢弃。

(2)插入构建的仿射候选

如果仿射merge候选列表中的候选数量小于maxnumaffinecand(在该示例中设置为5),则将构建的仿射候选插入到候选列表中。构建的仿射候选意味着候选是通过组合每个控制点的邻域运动信息而构建的。

控制点的运动信息首先从图8所示的指定空域邻域和时域邻域推导。cpk(k=1、2、3、4)表示第k个控制点。a0、a1、a2、b0、b1、b2和b3是用于预测cpk(k=1、2、3)的空域位置;t是用于预测cp4的时域位置。

cp1、cp2、cp3和cp4的坐标分别是(0,0)、(w,0)、(h,0)和(w,h),其中w和h是当前块的宽度和高度。

每个控制点的运动信息根据以下优先级顺序而获得:

ο对于cp1,检查优先级为b2→b3→a2。如果b2可用,则使用b2。否则,如果b2不可用,则使用b3。如果b2和b3都不可用,则使用a2。如果所有三个候选都不可用,就无法获得cp1的运动信息。

ο对于cp2,检查优先级为b1→b0;

ο对于cp3,检查优先级为a1→a0;

ο对于cp4,使用t。

其次,使用控制点的组合来构建运动模型。

需要三个控制点的运动信息来构建6参数仿射候选。三个控制点可以从以下四个组合之一选择({cp1,cp2,cp4}、{cp1,cp2,cp3}、{cp2,cp3,cp4}、{cp1,cp3,cp4})。组合{cp1,cp2,cp3}、{cp2,cp3,cp4}、{cp1,cp3,cp4}被转换为由左上方、右上方和左下方控制点表示的6参数运动模型。

需要两个控制点的运动信息来构建4参数仿射候选。两个控制点可以从以下六个组合之一选择({cp1,cp4}、{cp2,cp3}、{cp1,cp2}、{cp2,cp4}、{cp1,cp3}、{cp3,cp4})。组合{cp1,cp4}、{cp2,cp3}、{cp2,cp4}、{cp1,cp3}、{cp3,cp4}被转换为由左上方和右上方控制点表示的4参数运动模型。

构建的仿射候选的组合如以下顺序插入到候选列表中:

{cp1,cp2,cp3}、{cp1,cp2,cp4}、{cp1,cp3,cp4}、{cp2,cp3,cp4}、{cp1,cp2}、{cp1,cp3}、{cp2,cp3}、{cp1,cp4}、{cp2,cp4}、{cp3,cp4}

对于组合的参考图片列表x(x是0或1),控制点中具有最高使用率的参考图片索引被选择作为列表x的参考图片索引,并且指向不同参考图片的运动矢量被缩放。

在推导候选之后,将执行完整的修剪过程,以检查是否已将相同的候选插入到列表中。如果存在相同的候选,则推导的候选被丢弃。

(3)用零运动矢量填充

如果仿射merge候选列表中的候选数量少于5,则具有零参考索引的零运动矢量被插入到候选列表中,直到列表满为止。

因此,该单独仿射merge列表的复杂性生成如下:

6.子块merge候选列表的示例

在一些实施例中,除了用于非子块merge候选的规则merge列表之外,所有与子块相关的运动候选都被放在单独的merge列表中。例如,与子块相关的运动候选被放在被命名为“子块merge列表”的单独的merge列表中。在一个示例中,子块merge列表包括仿射merge候选、atmvp候选和/或基于子块的stmvp候选。

6.1示例实施例

在一些实施例中,正常merge列表中的atmvpmerge候选被移动到仿射merge列表的第一位置。使得新列表(例如,基于子块的merge候选列表)中的所有merge候选都基于子块编码工具。

7.现有方法的缺点

使用第一可用空域merge候选的想法对于atmvp候选被添加到规则merge模式的情况是有益的。当atmvp候选被添加到基于子块的merge列表时,仍然需要经过规则merge列表构建过程,这中断了将atmvp添加到基于子块的merge列表的动机,即,减少了子块merge列表和规则merge列表之间的交互。对于最坏的情况,它仍然需要检查四个空域邻近块的可用性,并检查它是否是帧内编码的。

在一些实施例中,atmvp候选总是在仿射运动候选之前被插入到merge列表中,这对于具有仿射运动的序列可能不是有效的。

在一些实施例中,在检查并置图片中的时域块之后,atmvp候选可能不可用。因此,对于给定的merge索引,例如等于0,它可以表示与简化的硬件实施方式不兼容的atmvp候选或仿射merge候选。

8.用于简化子块运动候选列表的示例方法

所公开技术的实施例简化了生成子块运动候选列表,这可以提高视频编码效率并增强现有和未来两者的视频编码标准,在针对各种实施方式描述的以下示例中进行了阐述。在以下不应被解释为限制性的示例中,术语“atmvp”不限于“基于子块的atmvp”,它也可以表示也可以被解释为tmvp候选的“基于非子块的atmvp”。此外,以下方法也可以应用于其他运动候选列表构建过程,诸如amvp候选列表、具有非子块merge候选的规则merge候选。

此外,在以下示例中,运动类别被定义为包括用相同编码工具推导的所有运动候选。换句话说,对于每个编码工具,诸如仿射、atmvp、stmvp,对应的运动候选属于单个运动类别。

示例1

在atmvp候选推导过程中,可以访问和利用仅一个空域邻近块的运动信息,而不是在用于atmvp候选推导的规则merge列表中查找第一可用merge候选。例如,如果仅有的空域邻近块的运动信息可用,则可以基于这样的运动信息来确定atmvp候选。作为另一示例,如果仅有的空域邻近块的运动信息不可用,则可以基于默认运动信息,诸如零运动矢量,确定atmvp候选。

在一些实施例中,该仅有的空域邻近块被定义为规则merge列表中要检查的第一空域邻近块,诸如图5中描绘的a1。

在一些实施例中,该仅有的空域邻近块被定义为检查顺序(诸如a1、b1、b0、a0、b2)中的第一可用空域邻近块。例如,当邻近块存在并且在编码当前块时已经被编码时,它被视为可用的。在一些实施例中,当邻近块存在于相同片(tile)中并且在编码当前块时已经被编码时,它被视为可用的。在一个示例中,要按顺序检查的邻近块是a1、b1。

在一些实施例中,该仅有的空域邻近块可以不同于规则merge模式推导过程中使用的那些块。

在一些实施例中,可以访问前k个空域邻近块的运动信息。在一个示例中,k等于2,3。

空域邻近块的检查顺序可以与规则merge列表推导过程中使用的顺序相同或不同。

示例2

在一些实施例中,可以从通过编码单元的空域邻近块的运动信息识别的时域块推导atmvp候选,其中该时域块在规则merge列表推导过程中没有使用。

在一些实施例中,atmvp过程中使用的空域邻近块可以与在规则merge列表推导过程中使用的那些完全不同。例如,可以使用图5中的块b3、a2、a3。

在一些实施例中,atmvp过程中使用的空域邻近块的一部分可以与在规则merge列表推导过程中使用的那些相同,而剩余的不同。例如,可以使用如图5所示的块a1、b1、b3、a2、a3。

在一些实施例中,在识别时域块之前,可以进一步缩放(多个)所选空域邻近块的运动信息。

示例3

在一些实施例中,从基于历史的mv预测(history-basedmvprediction,hmvp)表或列表提取的hmvp候选可以用于推导atmvp候选,而不是依赖于邻近块的运动信息。基于历史的运动矢量预测(hmvp)方法使用先前编码的运动信息以用于预测。也就是说,可以基于在视频处理期间推导的运动候选表(例如,可以包括atmvp候选和非atmvp候选)来推导atmvp候选。当前编码单元的推导的atmvp候选可以用于更新运动候选表。例如,可以在执行修剪之后将推导的atmvp候选添加到表中。后续处理可以基于更新的运动候选表而执行。

在一些实施例中,缩放可以应用于hmvp候选。

示例4

在一些实施例中,使用(多个)邻近块或(多个)hmvp来推导atmvp候选可以是自适应的。

在一些实施例中,可以在vps/sps/pps/条带头/片组头/片/ctu/cu/pu/ctu行中从编码器向解码器信令通知使用哪个(哪些)块。

在一些实施例中,使用哪个(哪些)块可以取决于当前块的宽度和/或高度。图9示出了用于atmvp时域块识别的空域邻近块的示例。

示例5

当atmvp过程中识别的时域块(诸如由来自当前设计中的第一可用merge候选的(缩放的)运动矢量或由零运动矢量指向的)不能返回有效atmvp候选时(例如,时域块是帧内编码的),可以搜索更多的时域块,直到找到一个或多个atmvp候选。

可以进一步检查所识别的时域块的右下方。图10中描绘了示例。图10示出了由通过现有技术找到的起始点的右下方块识别的可选起始点的示例。

在一些实施例中,可以定义搜索顺序,例如,从所识别的时域块的邻近左侧、上侧、右侧、底部;然后以一个步进(step),所识别的时域块的非相邻左侧、上侧、右侧、底部,以此类推。

在一个示例中,要检查的所有时域块都应该在某个区域内,诸如在与所识别的时域块相同的ctu内;或者在所识别的时域块的相同ctu行内。

在一些实施例中,如果在检查所识别的时域块和/或更多时域块之后没有可用的atmvp候选,则可以利用默认atmvp候选。

在一个示例中,默认atmvp候选可以被定义为从空域邻近块继承的运动候选。在一些实施例中,可以进一步缩放从空域邻近块继承的运动候选。

在一些实施例中,可以从起始点mv推导默认atmvp候选。

i.示例1可以用于查找起始点mv。

ii.在一个示例中,起始点mv可以是与空域相邻或非相邻或时域块相关联的运动矢量,其对应的参考图片是并置参考图片。

iii.在一个示例中,起始点mv可以是与第一空域块相关联的运动矢量,其对应的参考图片是并置参考图片。

iv.在一个示例中,起始点mv可以是零运动矢量。

v.在一个示例中,起始点mv可以以与当前vvc设计相同的方式而定义,即,如果第一空域邻近块(例如,检查顺序为a1、b1、b0、a0、b2)是帧间编码的,并且其列表x(x为0或1)的运动矢量指向并置图片,则起始点mv被设置为列表x的第一空域邻近块的相关联的mv。否则,起始点mv被设置为零运动矢量。

vi.在一个示例中,当通过起始点mv和当前块的中心位置识别的表示块的相关联的运动不可用时(例如,表示块是帧内编码的或者表示块不可用(例如,在限制区域之外)),起始点mv被视为表示块的运动信息。在一些实施例中,默认运动信息是从起始点mv(即,从表示块的运动信息)推导的。

vii.此外,在一些实施例中,对于任何子块,如果通过起始点mv和当前子块的中心位置识别的其表示块的相关联的运动不可用,则起始点mv被视为表示块的运动信息,并且用于推导子块运动。

在一个示例中,默认atmvp候选可以被设置为零运动矢量。此外,在一些实施例中,与atmvp候选相关联的参考图片可以被设置为并置图片。

示例6

当运动矢量被用于推导atmvp候选的默认运动信息(即,默认atmvp候选)时,可以通过将起始运动矢量缩放到参考图片列表x内的参考图片索引来推导单向预测候选。也就是说,默认atmvp候选是单向预测候选。

在一个示例中,参考图片索引被设置为0。

在一个示例中,参考图片索引被设置为对应于短期参考图片的最小参考图片索引。

在一个示例中,参考图片索引被设置为由参考图片列表x的tmvp候选使用的索引。

在一个示例中,参考图片列表x被设置为列表0或列表1。

在一个示例中,参考图片列表x取决于条带/图片类型和/或并置图片来自的参考图片列表。

在一个示例中,x被设置为列表(bslice/picture?1-getcolfroml0flag():0)。当并置图片来自列表0时,函数getcolfroml0flag()返回1;并且当并置图片来自列表1时返回0。

示例7

当运动矢量被用于推导atmvp候选的默认运动信息(即,默认atmvp候选)时,可以通过将运动矢量缩放到两个参考图片列表内的某些参考图片索引来推导双向预测候选。也就是说,默认atmvp候选是双向预测候选。

对于每个参考图片,选择某个参考图片索引。在一个示例中,它可以被定义为与用于tmvp候选的目标参考图片索引(例如,在当前vvc设计中为0)的参考图片索引相同。

示例8

将默认运动信息设置为单向预测候选还是双向预测候选可以取决于图片/条带类型。在一些实施例中,它可以取决于块维度。在一个示例中,如果少于64个样点,则在atmvp过程中利用单向预测默认运动信息。

示例9

最终merge候选列表针对每个运动类别包括至少一个候选。

运动类别可以是时域运动矢量预测候选类别、仿射运动候选类别或其他类型的类别。在一些实施例中,至少一个atmvp候选总是被包括在merge候选列表中。

在一些实施例中,至少一个仿射候选总是被包括在merge候选列表中。

示例10

可以将merge索引分配给给定的运动类别。当merge索引已知时,解码器可以准备好从对应于该运动类别的分支加载信息。

例如,范围[m,n](包括m和n)内的merge索引可以对应于atmvp候选。

范围[k,l](包括k和l)内的merge索引可以对应于仿射候选。

在一个示例中,m=n=0,k=1,l>=k

在一些实施例中,(多个)分配的索引可以是自适应的。

在一个示例中,可以在vps/sps/pps/条带头/片组头/片/ctu/cu/pu/ctu行中从编码器向解码器信令通知(多个)分配的索引。

在一个示例中,(多个)分配的索引可以取决于当前块的宽度和/或高度。

示例11

当多个atmvp候选被添加到merge候选列表(例如,子块merge候选列表)时,可以在所有atmvp候选之前添加仿射运动候选。

在一些实施例中,atmvp候选和仿射运动候选可以以交织的方式而插入,即,一个或多个仿射运动候选在atmvp候选之前,一些在atmvp候选之后。

示例12

仿射运动候选和非仿射运动候选(例如,atmvp和/或stmvp候选)的顺序可以从块到块、或者从片到片、或者从图片到图片、或者从序列到序列而自适应地改变。

自适应顺序可以取决于邻近块的编码信息和/或当前块的编码信息。

在一个示例中,如果所有或大多数所选邻近块用仿射模式而编码,则可以在其他非仿射运动候选之前添加仿射运动候选。

自适应顺序可以取决于可用仿射运动候选的数量和/或非仿射候选的数量。

在一个示例中,如果可用仿射运动候选和非仿射运动候选的数量之间的比率大于阈值,则可以在非仿射运动候选之前插入仿射运动候选。

自适应顺序可以仅适用于前k个仿射运动候选(例如,k被设置为1)。

在这种情况下,只有前k个仿射运动候选可以被自适应地决定是插入在非仿射运动候选之前还是之后。

当甚至有超过2个类别时(即,在当前设计中仅仿射和atmvp候选),插入不同运动候选的自适应顺序仍然可以应用。

示例13

可以在图片头/pps/条带头/片组头中信令通知子块相关技术的指示。当该指示告知子块相关技术被禁用时,不需要在块级别信令通知这样的技术的任何相关信息。

在一个示例中,可以信令通知图片头/条带头/片头处的atmvp的指示(诸如标志)。

在一个示例中,可以信令通知图片头/条带头/片头处的仿射的指示(诸如标志)。

示例14

可以预先定义或在sps/vps/pps/图片头/片组头/条带等中信令通知不同运动类别(例如,atmvp、仿射、stmvp)的运动候选的顺序。

在一个示例中,可以信令通知标志以指示仿射运动候选是否应该在所有非仿射运动候选之后。

在一个示例中,可以信令通知标志以指示atmvp运动候选是否应该在所有仿射运动候选之前。

示例15

期望将atmvp子块运动推导过程和tmvp过程整合起来。在一个示例中,子块运动推导过程重新使用tmvp过程。在一个示例中,tmvp过程重新使用子块运动推导过程。

示例16

对于子块merge候选列表,atmvp候选可以总是可用的,并且不允许时域信息推导仿射候选。在一个示例中,子块merge候选列表等于0的merge索引总是对应于atmvp候选。在一个示例中,子块merge候选列表不等于0的merge索引总是对应于仿射候选。

9.附加实施例示例

本章节给出了一个如何使atmvp候选始终可用的实施例。与最新的vvc规范相比的更改是加粗的(对于新添加的),或者斜体的(对于删除的)。

9.1示例#1(填充子块的单向预测默认atmvp候选,如果需要)

8.3.4.4基于子块的时域合并基础(mergingbase)运动数据的推导过程(注意:默认运动信息)

该过程的输入是:

-包含当前编码块的亮度编码树块的左上方样点的位置(xctb,yctb),

-覆盖右下侧中心样点的并置亮度编码块的左上方样点的位置(xcolctrcb,ycolctrcb)。

-邻近编码单元的可用性标志availableflaga0、availableflaga1、availableflagb0和availableflagb1,

-邻近编码单元的参考索引refidxlxa0、refidxlxa1、refidxlxb0和refidxlxb1,

-邻近编码单元的预测列表利用标志predflaglxa0、predflaglxa1、predflaglxb0和predflaglxb1,

-邻近编码单元的1/16分数样点精确度的运动矢量mvlxa0、mvlxa1、mvlxb0和mvlxb1。

该过程的输出是:

-运动矢量ctrmvl0和ctrmvl1,

-预测列表利用标志ctrpredflagl0和ctrpredflagl1,

-参考索引ctrrefidxl0和ctrrefidxl1,

-时域运动矢量tempmv。

变量tempmv设置如下:

tempmv[0]=0(8-501)

tempmv[1]=0(8-502)

变量currpic指定当前图片。

变量availableflagn设置为等于false(假),并且以下情况适用:

-当availableflaga0等于1时,以下情况适用:

-availableflagn设置为等于true(真),

-refidxlxn设置为等于refidxlxa0,并且mvlxn设置为等于mvlxa0,x由0和1替换。

-当availableflagn等于false且availableflaglb0等于1时,以下情况适用:

-availableflagn设置为等于true,

-refidxlxn设置为等于refidxlxb0,并且mvlxn设置为等于mvlxb0,x由0和1替换。

-当availableflagn等于false且availableflagb1等于1时,以下情况适用:

-availableflagn设置为等于true。

-refidxlxn设置为等于refidxlxb1,并且mvlxn设置为等于mvlxb1,x由0和1替换。

-当availableflagn等于false且availableflaga1等于1时,以下情况适用:

-availableflagn设置为等于true。

-refidxlxn设置为等于refidxlxa1,并且mvlxn设置为等于mvlxa1,x由0和1替换。

tempmv设置为零运动矢量。

当availableflagn等于true时,以下情况适用:

-如果所有以下条件都为真(true),则tempmv设置为等于mvl1n:

-predflagl1n等于1,

-diffpicordercnt(colpic,refpiclist1[refidxl1n])等于0,

-对于当前条带的每个参考图片列表中的每个图片apic,diffpicordercnt(apic,currpic)小于或等于0,

-slice_type等于b,

-collocated_from_l0_flag等于0。

-否则,如果所有以下条件都为真,则tempmv设置为等于mvl0n:

-predflagl0n等于1,

-diffpicordercnt(colpic,refpiclist0[refidxl0n])等于0。

colpic内部的并置块的位置(xcolcb,ycolcb)推导如下。

xcolcb=clip3(xctb,

min(curpicwidthinsamplesy-1,xctb+(1<<ctblog2sizey)+3),(8-503)

xcolctrcb+(tempmv[0]>>4))

ycolcb=clip3(yctb,

min(curpicheightinsamplesy-1,yctb+(1<<ctblog2sizey)-1),(8-504)

ycolctrcb+(tempmv[1]>>4))

数组colpredmode设置为等于由colpic指定的并置图片的预测模式数组cupredmode。

运动矢量ctrmvl0和ctrmvl1、预测列表利用标志ctrpredflagl0和ctrpredflagl1、以及参考索引ctrrefidxl0和ctrrefidxl1推导如下:

-设置ctrpredflagl0=0,ctrpredflagl1=0。

-如果colpredmode[xcolcb][ycolcb]等于mode_inter,则以下情况适用:

-变量currcb指定覆盖当前图片内部的(xctrcb,yctrcb)的亮度编码块。

-变量colcb指定覆盖colpic内部由((xcolcb>>3)<<3,(ycolcb>>3)<<3)给出的修改位置的亮度编码块。

-亮度位置(xcolcb,ycolcb)设置为等于并置亮度编码块相对于并置图片的左上方亮度样点的左上方样点,并置亮度编码块由colcb指定,并置图片由colpic指定。

-调用8.3.2.12子节中时域运动矢量预测的推导过程,其中currcb、colcb、(xcolcb,ycolcb)、centerrefidxl0和设置为等于1的sbflag作为输入,并且将输出分配给ctrmvl0和ctrpredflagl0。

-调用8.3.2.12子节中时域运动矢量预测的推导过程,其中currcb、colcb、(xcolcb,ycolcb)、centerrefidxl1和设置为等于1的sbflag作为输入,并且将输出分配给ctrmvl1和ctrpredflagl1。

-如果ctrpredflagl0和ctrpredflagl1都等于0,则以下情况适用:

-设置目标参考图片列表索引x=slice.isinterb()?1-slice.getcolfroml0flag():0

-将tempmv缩放到参考图片列表x,参考图片索引等于0,并且将ctrmvlx设置为缩放后的tempmv。

-ctrpredflaglx=1。

-否则,以下情况适用:

ctrpredflagl0=0(8-505)

ctrpredflagl1=0(8-506)

示例#2(填充子块的双向预测默认atmvp候选,如果需要)

8.3.4.4基于子块的时域合并基础运动数据的推导过程(注意:默认运动信息)该过程的输入是:

-包含当前编码块的亮度编码树块的左上方样点的位置(xctb,yctb),

-覆盖右下侧中心样点的并置亮度编码块的左上方样点的位置(xcolctrcb,ycolctrcb)。

-邻近编码单元的可用性标志availableflaga0、availableflaga1、availableflagb0和availableflagb1,

-邻近编码单元的参考索引refidxlxa0、refidxlxa1、refidxlxb0和refidxlxb1,

-邻近编码单元的预测列表利用标志predflaglxa0、predflaglxa1、predflaglxb0和predflaglxb1,

-邻近编码单元的1/16分数样点精确度的运动矢量mvlxa0、mvlxa1、mvlxb0和mvlxb1。

该过程的输出是:

-运动矢量ctrmvl0和ctrmvl1,

-预测列表利用标志ctrpredflagl0和ctrpredflagl1,

-参考索引ctrrefidxl0和ctrrefidxl1,

-时域运动矢量tempmv。

变量tempmv设置如下:

tempmv[0]=0(8-501)

tempmv[1]=0(8-502)

变量currpic指定当前图片。

变量availableflagn设置为等于false(假),并且以下情况适用:

-当availableflaga0等于1时,以下情况适用:

-availableflagn设置为等于true(真),

-refidxlxn设置为等于refidxlxa0,并且mvlxn设置为等于mvlxa0,x由0和1替换。

-当availableflagn等于false且availableflaglb0等于1时,以下情况适用:

-availableflagn设置为等于true,

-refidxlxn设置为等于refidxlxb0,并且mvlxn设置为等于mvlxb0,x由0和1替换。

-当availableflagn等于false且availableflagb1等于1时,以下情况适用:

-availableflagn设置为等于true。

-refidxlxn设置为等于refidxlxb1,并且mvlxn设置为等于mvlxb1,x由0和1替换。

-当availableflagn等于false且availableflaga1等于1时,以下情况适用:

-availableflagn设置为等于true。

-refidxlxn设置为等于refidxlxa1,并且mvlxn设置为等于mvlxa1,x由0和1替换。

tempmv设置为零运动矢量。

当availableflagn等于true时,以下情况适用:

-如果所有以下条件都为真(true),则tempmv设置为等于mvl1n:

-predflagl1n等于1,

-diffpicordercnt(colpic,refpiclist1[refidxl1n])等于0,

-对于当前条带的每个参考图片列表中的每个图片apic,diffpicordercnt(apic,currpic)小于或等于0,

-slice_type等于b,

-collocated_from_l0_flag等于0。

-否则,如果所有以下条件都为真,则tempmv设置为等于mvl0n:

-predflagl0n等于1,

-diffpicordercnt(colpic,refpiclist0[refidxl0n])等于0。

colpic内部的并置块的位置(xcolcb,ycolcb)推导如下。

xcolcb=clip3(xctb,

min(curpicwidthinsamplesy-1,xctb+(1<<ctblog2sizey)+3),(8-503)

xcolctrcb+(tempmv[0]>>4))

ycolcb=clip3(yctb,

min(curpicheightinsamplesy-1,yctb+(1<<ctblog2sizey)-1),(8-504)

ycolctrcb+(tempmv[1]>>4))

数组colpredmode设置为等于由colpic指定的并置图片的预测模式数组cupredmode。

运动矢量ctrmvl0和ctrmvl1、预测列表利用标志ctrpredflagl0和ctrpredflagl1、以及参考索引ctrrefidxl0和ctrrefidxl1推导如下:

-设置ctrpredflagl0=0,ctrpredflagl1=0。

-如果colpredmode[xcolcb][ycolcb]等于mode_inter,则以下情况适用:

-变量currcb指定覆盖当前图片内部的(xctrcb,yctrcb)的亮度编码块。

-变量colcb指定覆盖colpic内部由((xcolcb>>3)<<3,(ycolcb>>3)<<3)给出的修改位置的亮度编码块。

-亮度位置(xcolcb,ycolcb)设置为等于并置亮度编码块相对于并置图片的左上方亮度样点的左上方样点,并置亮度编码块由colcb指定,并置图片由colpic指定。

-调用8.3.2.12子节中时域运动矢量预测的推导过程,其中currcb、colcb、(xcolcb,ycolcb)、centerrefidxl0和设置为等于1的sbflag作为输入,并且将输出分配给ctrmvl0和ctrpredflagl0。

-调用8.3.2.12子节中时域运动矢量预测的推导过程,其中currcb、colcb、(xcolcb,ycolcb)、centerrefidxl1和设置为等于1的sbflag作为输入,并且将输出分配给ctrmvl1和ctrpredflagl1。

-如果ctrpredflagl0和ctrpredflagl1都等于0,则以下情况适用:

-设置目标参考图片列表索引x=0

-将tempmv缩放到参考图片列表x,参考图片索引等于0,并且将ctrmvlx设置为缩放后的tempmv。

-ctrpredflaglx=1。

-如果当前条带/图片是b条带,

1.设置目标参考图片列表索引x=1

2.将tempmv缩放到参考图片列表x,参考图片索引等于0,并且将ctrmvlx设置为缩放后的tempmv。

3.ctrpredflaglx=1。

-否则,以下情况适用:

ctrpredflagl0=0(8-505)

ctrpredflagl1=0(8-506)

示例3:来自一个空域块的atmvp候选起始点mv

8.3.4.4基于子块的时域合并基础运动数据的推导过程(注意:默认运动信息)该过程的输入是:

-包含当前编码块的亮度编码树块的左上方样点的位置(xctb,yctb),

-覆盖右下侧中心样点的并置亮度编码块的左上方样点的位置(xcolctrcb,ycolctrcb)。

-邻近编码单元的可用性标志availableflaga0、availableflaga1、availableflagb0和availableflagb1,

-邻近编码单元的参考索引refidxlxa0、refidxlxa1、refidxlxb0和refidxlxb1,

-邻近编码单元的预测列表利用标志predflaglxa0、predflaglxa1、predflaglxb0和predflaglxb1,

-邻近编码单元的1/16分数样点精确度的运动矢量mvlxa0、mvlxa1、mvlxb0和mvlxb1。

该过程的输出是:

-运动矢量ctrmvl0和ctrmvl1,

-预测列表利用标志ctrpredflagl0和ctrpredflagl1,

-参考索引ctrrefidxl0和ctrrefidxl1,

-时域运动矢量tempmv。

变量tempmv设置如下:

tempmv[0]=0(8-501)

tempmv[1]=0(8-502)

变量currpic指定当前图片。

变量availableflagn设置为等于false(假),并且以下情况适用:

-当availableflaga0等于1时,以下情况适用:

-availableflagn设置为等于true(真),

-refidxlxn设置为等于refidxlxa0,并且mvlxn设置为等于mvlxa0,x由0和1替换。

-当availableflagn等于false且availableflaglb0等于1时,以下情况适用:

-availableflagn设置为等于true,

-refidxlxn设置为等于refidxlxb0,并且mvlxn设置为等于mvlxb0,x由0和1替换。

-当availableflagn等于false且availableflagb1等于1时,以下情况适用:

-availableflagn设置为等于true。

-refidxlxn设置为等于refidxlxb1,并且mvlxn设置为等于mvlxb1,x由0和1替换。

-当availableflagn等于false且availableflaga1等于1时,以下情况适用:

-availableflagn设置为等于true。

-refidxlxn设置为等于refidxlxa1,并且mvlxn设置为等于mvlxa1,x由0和1替换。

当availableflagn等于true时,以下情况适用:

-……

示例#4(子块和tmvp过程的对齐)

8.3.4.4基于子块的时域合并基础运动数据的推导过程

该过程的输入是:

-包含当前编码块的亮度编码树块的左上方样点的位置(xctb,yctb),

-覆盖右下侧中心样点的并置亮度编码块的左上方样点的位置(xcolctrcb,ycolctrcb)。

-邻近编码单元的可用性标志availableflaga0、availableflaga1、availableflagb0和availableflagb1,

-邻近编码单元的参考索引refidxlxa0、refidxlxa1、refidxlxb0和refidxlxb1,

-邻近编码单元的预测列表利用标志predflaglxa0、predflaglxa1、predflaglxb0和predflaglxb1,

-邻近编码单元的1/16分数样点精确度的运动矢量mvlxa0、mvlxa1、mvlxb0和mvlxb1。

该过程的输出是:

-运动矢量ctrmvl0和ctrmvl1,

-预测列表利用标志ctrpredflagl0和ctrpredflagl1,

-参考索引ctrrefidxl0和ctrrefidxl1,

-时域运动矢量tempmv。

变量tempmv设置如下:

tempmv[0]=0(8-501)

tempmv[1]=0(8-502)

变量currpic指定当前图片。

变量availableflagn设置为等于false(假),并且以下情况适用:

-……

当availableflagn等于true时,以下情况适用:

-如果所有以下条件都为真(true),则tempmv设置为等于mvl1n:

-predflagl1n等于1,

-diffpicordercnt(colpic,refpiclist1[refidxl1n])等于0,

-对于当前条带的每个参考图片列表中的每个图片apic,diffpicordercnt(apic,currpic)小于或等于0,

-slice_type等于b,

-collocated_from_l0_flag等于0。

-否则,如果所有以下条件都为真,则tempmv设置为等于mvl0n:

-predflagl0n等于1,

-diffpicordercnt(colpic,refpiclist0[refidxl0n])等于0。

colpic内部的并置块的位置(xcolcb,ycolcb)推导如下。

xcolcb=clip3(xctb,

min(curpicwidthinsamplesy-1,xctb+(1<<ctblog2sizey)+3),(8-503)

xcolctrcb+(tempmv[0]>>4))

ycolcb=clip3(yctb,

min(curpicheightinsamplesy-1,yctb+(1<<ctblog2sizey)-1),(8-504)

ycolctrcb+(tempmv[1]>>4))

数组colpredmode设置为等于由colpic指定的并置图片的预测模式数组cupredmode。

运动矢量ctrmvl0和ctrmvl1、预测列表利用标志ctrpredflagl0和ctrpredflagl1、以及参考索引ctrrefidxl0和ctrrefidxl1推导如下:

-如果colpredmode[xcolcb][ycolcb]等于mode_inter,则以下情况适用:

-变量currcb指定覆盖当前图片内部的(xctrcb,yctrcb)的亮度编码块。

-变量colcb指定覆盖colpic内部由((xcolcb>>3)<<3,(ycolcb>>3)<<3)给出的修改位置的亮度编码块。

-亮度位置(xcolcb,ycolcb)设置为等于并置亮度编码块相对于并置图片的左上方亮度样点的左上方样点,并置亮度编码块由colcb指定,并置图片由colpic指定。

-调用8.3.2.12子节中时域运动矢量预测的推导过程,其中currcb、colcb、(xcolcb,ycolcb)、centerrefidxl0和设置为等于1的sbflag作为输入,并且将输出分配给ctrmvl0和ctrpredflagl0。

-调用8.3.2.12子节中时域运动矢量预测的推导过程,其中currcb、colcb、(xcolcb,ycolcb)、centerrefidxl1和设置为等于1的sbflag作为输入,并且将输出分配给ctrmvl1和ctrpredflagl1。

-否则,以下情况适用:

ctrpredflagl0=0(8-505)

ctrpredflagl1=0(8-506)

8.3.2.11时域亮度运动矢量预测的推导过程

该过程的输入是:

-……

该过程的输出是:

-1/16分数样点精确度的运动矢量预测mvlxcol,

-可用性标志availableflaglxcol。

变量currcb指定亮度位置(xcb,ycb)处的当前亮度编码块。

变量mvlxcol和availableflaglxcol推导如下:

-如果slice_temporal_mvp_enabled_flag等于0,则mvlxcol的两个分量都设置为等于0,并且availableflaglxcol设置为等于0。

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

1.右下方并置运动矢量推导如下:

xcolbr=xcb+cbwidth(8-330)

ycolbr=ycb+cbheight(8-331)

-如果ycb>>ctblog2sizey等于ycolbr>>ctblog2sizey,ycolbr小于pic_height_in_luma_samples且xcolbr小于pic_width_in_luma_samples,则以下情况适用:

-变量colcb指定覆盖由colpic指定的并置图片内部由((xcolbr>>3)<<3,(ycolbr>>3)<<3)给出的修改位置的亮度编码块。

-亮度位置(xcolcb,ycolcb)设置为等于并置亮度编码块相对于并置图片的左上方亮度样点的左上方样点,并置亮度编码块由colcb指定,并置图片由colpic指定。

-调用8.3.2.12节中指定的并置运动矢量的推导过程,其中currcb、colcb、(xcolcb,ycolcb)、refidxlx和设置为等于0的sbflag作为输入,并且将输出分配给mvlxcol和availableflaglxcol。

-否则,mvlxcol的两个分量都设置为等于0,并且availableflaglxcol设置为等于0。

2.当availableflaglxcol等于0时,中心并置运动矢量推导如下:

xcolctr=xcb+(cbwidth>>1)(8-332)

ycolctr=ycb+(cbheight>>1)(8-333)

-变量colcb指定覆盖由colpic指定的并置图片内部由((xcolctr>>3)<<3,(ycolctr>>3)<<3)给出的修改位置的亮度编码块。

-亮度位置(xcolcb,ycolcb)设置为等于并置亮度编码块相对于并置图片的左上方亮度样点的左上方样点,并置亮度编码块由colcb指定,并置图片由colpic指定。

-调用8.3.2.12节中指定的并置运动矢量的推导过程,其中currcb、colcb、(xcolcb,ycolcb)、refidxlx和设置为等于0的sbflag作为输入,并且将输出分配给mvlxcol和availableflaglxcol。

8.3.2.12并置运动矢量的推导过程

该过程的输入是:

-变量currcb,其指定当前编码块,

-变量colcb,其指定并置图片内部的并置编码块,并置图片由colpic指定,

-亮度位置(xcolcb,ycolcb),其指定并置亮度编码块相对于并置图片的左上方亮度样点的左上方样点,并置亮度编码块是由colcb指定的,并置图片是由colpic指定的,

-参考索引refidxlx,其中x为0或1,

-指示子块时域合并候选的标志sbflag。

该过程的输出是:

-1/16分数样点精确度的运动矢量预测mvlxcol,

-可用性标志availableflaglxcol。

变量currpic指定当前图片。

数组predflagl0col[x][y]、mvl0col[x][y]和refidxl0col[x][y]分别设置为等于由colpic指定的并置图片的predflagl0[x][y]、mvl0[x][y]和refidxl0[x][y],并且数组predflagl1col[x][y]、mvl1col[x][y]和refidxl1col[x][y]分别设置为等于由colpic指定的并置图片的predflagl1[x][y]、mvl1[x][y]和refidxl1[x][y]。

变量mvlxcol和availableflaglxcol推导如下:

-如果colcb在帧内预测模式下编码,则mvlxcol的两个分量都设置为等于0,并且availableflaglxcol设置为等于0。

-否则,运动矢量mvcol、参考索引refidxcol和参考列表标识符listcol推导如下:

-如果sbflag等于0,availableflaglxcol设置为1,并且以下情况适用:

-如果predflagl0col[xcolcb][ycolcb]等于0,则mvcol、refidxcol和listcol分别设置为等于mvl1col[xcolcb][ycolcb]、refidxl1col[xcolcb][ycolcb]和l1。

-否则,如果predflagl0col[xcolcb][ycolcb]等于1并且predflagl1col[xcolcb][ycolcb]等于0,则mvcol、refidxcol和listcol分别设置为等于mvl0col[xcolcb][ycolcb]、refidxl0col[xcolcb][ycolcb]和l0。

-否则(predflagl0col[xcolcb][ycolcb]等于1且predflagl1col[xcolcb][ycolcb]等于1),进行以下分配:

-如果nobackwardpredflag等于1,则mvcol、refidxcol和listcol分别设置为等于mvlxcol[xcolcb][ycolcb]、refidxlxcol[xcolcb][ycolcb]和lx。

-否则,mvcol、refidxcol和listcol分别设置为等于mvlncol[xcolcb][ycolcb]、refidxlncol[xcolcb][ycolcb]和ln,其中n是collocated_from_l0_flag的值。

-否则(sbflag等于1),以下情况适用:

-如果predflaglxcol[xcolcb][ycolcb]等于1,则mvcol、refidxcol和listcol分别设置为等于mvlxcol[xcolcb][ycolcb]、refidxlxcol[xcolcb][ycolcb]和lx,availableflaglxcol设置为1。

-否则(predflaglxcol[xcolcb][ycolcb]等于0),以下情况适用:

-如果对于当前条带的每个参考图片列表中的每个图片apic,diffpicordercnt(apic,currpic)小于或等于0,并且predflaglycol[xcolcb][ycolcb]等于1,则mvcol、refidxcol和listcol分别设置为mvlycol[xcolcb][ycolcb]、refidxlycol[xcolcb][ycolcb]和ly,其中y等于!x,其中,x是针对其调用该过程的x的值。availableflaglxcol设置为1。

-mvlxcol的两个分量都设置为0,并且availableflaglxcol设置为0。

当availableflaglxcol等于true时,mvlxcol和availableflaglxcol推导如下:

……(剩余细节类似于vvc规范的当前版本)。

上述示例可以并入到以下描述的方法(例如,可以在视频解码器和/或视频编码器处实施的方法1100、1200和1300)的上下文中。

图11示出了用于视频处理的示例方法的流程图。方法1100包括,在步骤1110处,对于当前视频块的子块级别处理,选择与空域邻近块相关联的运动信息。

在一些实施例中,并且在示例1的上下文中,该空域邻近块是在基于子块的merge列表中检查的第一空域邻近块。

在一些实施例中,并且在示例4的上下文中,选择空域邻近块是基于视频参数集(videoparameterset,vps)、序列参数集(sequenceparameterset,sps)、图片参数集(pictureparameterset,pps)、条带头、片组头、编码树单元(codingtreeunit,ctu)、片、编码单元(cu)、预测单元(pu)或ctu行中的信令。在其他实施例中,选择空域邻近块是基于当前视频块的高度或宽度。

方法1100包括,在步骤1120处,基于运动信息来推导运动矢量预测候选。

在一些实施例中,并且在示例2的上下文中,推导运动矢量预测候选包括以下步骤:基于运动信息来识别时域邻近块,以及基于时域邻近块来推导运动矢量预测候选。在一些实施例中,运动信息在识别时域邻近块之前被缩放。

在一些实施例中,并且在示例2的上下文中,识别时域邻近块包括以下步骤:在多个时域邻近块中的每一个上执行顺序多步搜索,以及在识别出多个时域邻近块中返回至少一个有效运动矢量预测候选的第一个时域邻近块时终止顺序多步搜索。在一个示例中,顺序多步搜索是在包括所识别的时域邻近块的编码树单元(ctu)中的一个或多个时域块上进行的。在另一示例中,顺序多步搜索是在包括所识别的时域邻近块的编码树单元(ctu)的单个行中的一个或多个时域块上进行的。

在一些实施例中,并且在示例3的上下文中,在推导运动矢量预测候选之前,运动信息被基于历史的运动矢量预测(hmvp)候选替换。在示例中,hmvp候选在推导运动矢量预测候选之前被缩放。

方法1100包括,在步骤1130处,将运动矢量预测候选添加到基于子块的merge列表,其中该基于子块的merge列表不同于merge列表并且不包括块级别预测候选。

方法1100包括,在步骤1140处,基于运动矢量预测候选来重构当前视频块或解码其他视频块。

图12示出了用于视频处理的示例方法的流程图。方法1200包括,在步骤1210处,对于当前视频块的子块级别处理,推导运动矢量预测候选。

方法1200包括,在步骤1220处,将merge索引分配给运动矢量预测候选的类型。

方法1200包括,在步骤1230处,将运动矢量预测候选和merge索引添加到基于子块的merge列表,其中该基于子块的merge列表不同于merge列表并且不包括块级别预测候选。

在一些实施例中,并且在示例7的上下文中,方法1200进一步包括以下步骤:确定与当前视频块相关联的运动信息的类型,以及基于来自基于子块的merge列表的一个或多个运动矢量预测候选来重构当前视频块或者解码其他视频块,其中一个或多个运动矢量预测候选是基于该类型而选择的。在一个示例中,第一范围内的merge索引对应于一个或多个可选时域运动矢量预测(atmvp)候选。在另一示例中,第二范围内的merge索引对应于一个或多个仿射候选。在又一示例中,merge索引基于视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带头、片组头、编码树单元(ctu)、片、编码单元(cu)、预测单元(pu)或ctu行中的信令。在又一示例中,运动矢量预测候选的类型是仿射运动矢量预测候选、可选时域运动矢量预测(atmvp)候选或空时运动矢量预测(stmvp)候选。

在一些实施例中,并且在示例8的上下文中,将运动矢量预测候选添加到基于子块的merge列表是基于自适应排序的。在一个示例中,一个或多个可选时域运动矢量预测(atmvp)候选在任何仿射运动矢量预测候选之前被添加到基于子块的merge列表。在另一示例中,一个或多个仿射运动矢量预测候选在任何可选时域运动矢量预测(atmvp)候选之前被添加到基于子块的merge列表。

图13示出了用于视频处理的示例方法的流程图。方法1300包括,在步骤1310处,对于当前视频块的子块级别处理,推导运动矢量预测候选。

方法1300包括,在步骤1320处,基于自适应排序将运动矢量预测候选添加到基于子块的merge列表,其中该基于子块的merge列表不同于merge列表并且不包括块级别预测候选。

在一些实施例中,并且在示例9的上下文中,自适应排序基于当前块的编码信息。在其他实施例中,自适应排序基于当前块的一个或多个邻近块的编码信息。在又一些实施例中,自适应排序基于视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带头、片组头、编码树单元(ctu)、片、编码单元(cu)、预测单元(pu)或ctu行中的信令。在又一些实施例中,自适应排序基于可用仿射运动矢量预测候选的第一数量和/或可用非仿射运动矢量预测候选的第二数量。

在一些实施例中,例如,如章节8中的第6-8项和15-16项所公开的,示例视频处理方法包括使用以下中的一个为当前视频块和当前视频块的比特流表示之间的转换确定基于子块的编码模式的默认运动候选:(a)通过将起始运动候选缩放到参考图片列表x内的参考图片索引而推导的单向预测候选;或者(b)通过缩放到两个参考图片列表内的参考图片索引而推导的双向预测候选;或者(c)取决于当前视频块的图片类型或条带类型,(a)或(b)中的候选;或者(d)为当前视频块的时域运动矢量预测值(tmvp)过程推导的候选。例如,在选项(a)下,起始运动矢量可以是与指向并置图片的块或具有指向并置图片的运动矢量的第一空域邻近块相关联的运动矢量、或零运动矢量、或运动矢量的另一选择。章节8的第6-8项和第15-16项中描述了附加的特征和实施方式选项。

9.所公开技术的示例实施方式

图14是视频处理装置1400的框图。装置1400可以用来实施本文描述的方法中的一种或多种。装置1400可以体现在智能电话、平板电脑、计算机、物联网(internetofthings,iot)接收器等中。装置1400可以包括一个或多个处理器1402、一个或多个存储器1404、以及视频处理硬件1406。(多个)处理器1402可以被配置为实施本文档中描述的一种或多种方法(包括但不限于方法1100、1200和1300)。存储器(多个存储器)1404可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件1406可以用来在硬件电路中实施本文档中描述的一些技术。

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

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

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

图17是根据本公开的用于视频处理的方法1700的流程图表示。方法1700包括,在操作1710处,在视频的当前块和视频的比特流表示之间的转换期间,确定当前块的至少一个子块的时域运动矢量预测候选。时域运动矢量预测候选基于当前块的k个邻近块而确定,k是正整数。方法1700包括,在操作1720处,基于子块的时域运动矢量预测候选来执行该转换。

在一些实施例中,时域运动矢量预测候选完全基于当前块的k个邻近块而确定。在一些实施例中,k=1。在一些实施例中,k=2或3。在一些实施例中,在没有检查当前块的merge列表中的所有运动候选的情况下,时域运动矢量预测候选被确定。在一些实施例中,k个空域邻近块中的一个与在视频块的merge列表构建过程中检查的第一空域邻近块相同。在一些实施例中,视频块的空域邻近块与当前块的左下角相邻。在一些实施例中,k个空域邻近块中的至少一个不同于在视频块的merge列表构建过程中检查的空域邻近块。在一些实施例中,k个空域邻近块通过以第一顺序检查多个可用空域邻近块而确定。

在一些实施例中,该方法进一步包括在执行当前块的转换之前对空域邻近块进行编码的情况下,确定空域邻近块可用。在一些实施例中,空域邻近块在与当前块相同的片内。在一些实施例中,多个可用空域邻近块包括与当前块的左下角相邻的第一块和与当前块的右上角相邻的第二块。在一些实施例中,该方法包括以第一顺序检查当前块的k个空域邻近块,其中视频块的基于块的merge列表构建过程中的空域邻近块以第二顺序而检查,第二顺序不同于第一顺序。在一些实施例中,k等于1,并且第一顺序指示与当前块的左下角相邻的第一空域邻近块要被检查,而第二顺序指示与视频块的右上角相邻的第二空域邻近块要被检查。

在一些实施例中,时域运动矢量预测包括可选时域运动矢量预测(atmvp)候选。在一些实施例中,该方法包括:根据k个空域邻近块的运动信息来识别时域块;以及基于所识别的时域块的运动信息来推导子块的运动信息。在一些实施例中,该方法进一步包括:根据k个邻近块的运动信息来识别不同图片中的第二视频块;以及基于第二视频块来推导子块的时域运动信息。在一些实施例中,子块尺寸是8×8。在一些实施例中,子块尺寸与块尺寸相同。

在一些实施例中,该转换包括编码当前块以生成比特流表示。在一些实施例中,该转换包括解码比特流表示以生成当前块。在一些实施例中,时域运动矢量预测候选包括可选时域运动矢量预测(atmvp)候选。

图18是根据本公开的用于视频处理的方法1800的流程图表示。方法1800包括,在操作1810处,在视频的当前块和视频的比特流表示之间的转换期间,基于当前块的时域邻近块来确定时域运动矢量预测候选。时域邻近块基于从一个或多个空域邻近块选择的空域邻近块的运动信息而识别,该一个或多个空域邻近块与在视频块的merge列表构建过程中使用的至少一个空域邻近块不同。方法1800还包括,在操作1820处,基于时域运动矢量预测候选来执行该转换。

在一些实施例中,时域运动矢量预测候选包括可选时域运动矢量预测(atmvp)候选。在一些实施例中,一个或多个空域邻近块不同于当前块的merge列表中的所有候选。在一些实施例中,一个或多个空域邻近块包括与当前块的左上角相邻的块。在一些实施例中,一个或多个空域邻近块的子集与从视频块的merge列表构建过程推导的一个或多个候选相同。在一些实施例中,一个或多个空域邻近块包括与当前块的左下角相邻的第一块或与当前块的右上角相邻的第二块。

在一些实施例中,运动信息在时域邻近块被识别之前被缩放。在一些实施例中,空域邻近块是基于视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带头、片组头、编码树单元(ctu)、片、编码单元(cu)、预测单元(pu)或ctu行中的信息而选择的。在一些实施例中,空域邻近块是基于当前块的高度或宽度而选择的。

图19是根据本公开的用于视频处理的方法1900的流程图表示。方法1900包括,在操作1910处,对于视频的当前块和视频的比特流表示之间的转换,基于视频和比特流表示的过去转换而维持运动候选表。方法1900包括,在操作1920处,基于运动候选表来推导时域运动矢量预测候选。方法1900还包括,在操作1930处,基于时域运动矢量预测候选来执行该转换。

在一些实施例中,时域运动矢量预测候选包括可选时域运动矢量预测(atmvp)候选。在一些实施例中,时域运动矢量预测候选在该转换之前被缩放。在一些实施例中,该方法包括基于时域运动矢量预测候选来更新运动候选表。在一些实施例中,该方法包括使用更新的运动候选表来执行视频和比特流表示的后续转换。在一些实施例中,推导时域运动矢量预测候选进一步包括基于第二视频块的空域邻近块来推导时域运动矢量预测候选。

图20是根据本公开的用于视频处理的方法2000的流程图表示。方法2000包括,在操作2010处,对于视频的当前块和视频的比特流表示之间的转换,确定当前块的一个或多个时域运动矢量预测候选。方法2000还包括,在操作2020处,基于一个或多个时域运动矢量预测候选来执行该转换。一个或多个时域运动矢量预测候选可以通过基于初始运动矢量识别当前块的第一时域相邻块并且检查附加时域相邻块以获得一个或多个时域运动矢量预测候选而确定。第一时域相邻块包括无效运动信息。

在一些实施例中,一个或多个时域运动矢量预测候选包括可选时域运动矢量预测(atmvp)候选。在一些实施例中,第一时域相邻块是帧内编码的。在一些实施例中,附加时域相邻块包括第二时域相邻块,其中该第二时域相邻块包括与第一相邻时域块的起始点的右下角相邻的起始点。

在一些实施例中,附加时域相邻块基于与第一时域相邻块相关联的块的顺序多步搜索而识别。在一些实施例中,顺序多步搜索包括以左侧、上侧、右侧和底部的顺序检查第一时域相邻块的空域相邻块。在一些实施例中,顺序多步搜索进一步包括以左侧、上侧、右侧和底部的顺序检查距离第一时域相邻块一个步进的空域非相邻块。在一些实施例中,附加时域相邻块位于与第一时域相邻块相关联的区域内。在一些实施例中,该区域包括与第一时域相邻块相关联的编码树单元(ctu)。在一些实施例中,该区域包括与第一时域相邻块相关联的ctu的单个行。

图21是根据本公开的用于视频处理的方法2100的流程图表示。方法2100包括,在操作2110处,对于视频的当前块和视频的比特流表示之间的转换,确定当前块的一个或多个时域运动矢量预测候选。一个或多个时域运动矢量预测候选包括默认时域运动矢量预测候选。方法2100包括,在操作2120处,基于一个或多个时域运动矢量预测候选来执行该转换。

在一些实施例中,在基于初始运动矢量识别当前块的第一时域相邻块之后,默认时域运动矢量预测候选被确定。第一时域相邻块包括无效运动信息。在一些实施例中,默认时域运动矢量是从当前块的空域邻近块继承的。在一些实施例中,默认时域运动矢量被缩放。在一些实施例中,默认时域运动矢量预测候选是基于起始点运动矢量(或初始运动矢量)而推导的。起始点运动矢量(或初始运动矢量)与当前块的空域相邻块、或零运动矢量相关联。在一些实施例中,起始点运动矢量完全基于与当前块的一个或多个空域相邻块相关联的运动信息而确定。在一些实施例中,起始点运动矢量与一块相关联,其中该块的对应参考图片与当前块的参考图片并置。在一些实施例中,该块包括当前块的空域相邻块、当前块的空域非相邻块或当前块的时域相邻块。

在一些实施例中,在根据连续顺序从当前块的空域相邻块选择的第一空域相邻块是帧间编码的并且第一空域相邻块的第一运动矢量指向当前块的并置图片的情况下,起始运动矢量被确定为第一运动矢量,否则其中起始运动矢量被确定为零运动矢量。在一些实施例中,在通过起始点运动矢量和块的中心位置识别的表示块的运动信息不可用的情况下,起始点运动矢量被确定为表示块的运动信息。表示块是覆盖对应于并置图片中的起始点运动矢量的点的块。在一些实施例中,起始点运动矢量用于推导子块运动。

在一些实施例中,默认时域运动矢量是通过将运动矢量缩放到参考图片列表x内的参考图片索引而推导的单向预测候选,x为0或1。在一些实施例中,参考图片索引是0。在一些实施例中,参考图片索引是对应于短期参考图片的最小参考图片索引。在一些实施例中,x基于与当前块相关联的条带或图片而确定。

在一些实施例中,默认时域运动矢量是通过将运动矢量缩放到参考图片列表内的参考图片索引而推导的双向预测候选。在一些实施例中,对于参考图片列表中的每个参考图片,参考图片索引与时域运动矢量预测候选的目标参考图片索引相同。在一些实施例中,默认时域运动矢量是单向预测候选还是双向预测候选是基于与当前块相关联的条带类型的图片类型而确定的。在一些实施例中,默认时域运动矢量是单向预测候选还是双向预测候选是基于当前块的尺寸而确定的。

图22是根据本公开的用于视频处理的方法2200的流程图表示。方法2200包括,在操作2210处,对于视频的当前块和视频的比特流表示之间的转换,确定包括至少一个子块编码类型的子块级别merge候选列表。方法2200包括,在操作2220处,基于子块级别merge候选列表来执行该转换。

在一些实施例中,至少一个子块编码类型包括基于子块的时域运动矢量预测编码类型。在一些实施例中,至少一个子块编码类型包括仿射运动预测编码类型。在一些实施例中,至少一个子块编码类型中的每一个被分配有一定范围的merge索引。在一些实施例中,第一范围内的merge索引对应于基于子块的时域运动矢量预测编码类型。在一些实施例中,第一范围包括单个值0。在一些实施例中,第二范围内的merge索引对应于仿射运动预测编码类型。在一些实施例中,第二范围不包括值0。

在一些实施例中,基于子块的时域运动矢量预测编码类型的运动候选在子块级别merge候选列表中总是可用。在一些实施例中,仅允许时域信息来推导基于子块的时域运动矢量预测编码类型的运动候选。在一些实施例中,编码类型的一定范围的merge索引在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带头、片组头、编码树单元(ctu)、片、编码单元(cu)、预测单元(pu)或ctu行中被信令通知。在一些实施例中,编码类型的一定范围的merge索引基于当前块的宽度或高度。

在一些实施例中,至少一个子块编码类型的运动候选基于自适应排序被添加到子块级别merge候选列表。在一些实施例中,自适应排序指示基于子块的时域运动矢量预测编码类型的运动候选在仿射运动预测编码类型的运动候选之前被添加到子块级别merge候选列表。在一些实施例中,自适应排序指示基于子块的时域运动矢量预测编码类型的运动候选和仿射运动预测类型的运动候选以交织的方式被添加到子块级别merge候选列表。在一些实施例中,自适应排序基于当前块或当前块的邻近块的编码信息。在一些实施例中,在当前块的大多数邻近块是仿射编码的情况下,自适应排序指示仿射运动预测编码类型的运动候选在其他类型的运动候选之前被添加到子块级别merge候选列表。在一些实施例中,自适应排序基于子块级别merge候选列表中的仿射运动候选与非仿射运动候选的比率。在一些实施例中,在比率大于阈值的情况下,自适应排序指示仿射运动编码类型的运动候选在其他类型的运动候选之前被添加到子块级别merge候选列表。在一些实施例中,自适应排序适用于子块级别merge候选列表中的前k个仿射运动候选,k是正整数。在一些实施例中,自适应排序是通过在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带头、片组头、编码树单元(ctu)、片、编码单元(cu)、预测单元(pu)或ctu行中而信令通知的。

图23是根据本公开的用于视频处理的方法2300的流程图表示。方法2300包括,在操作2310处,对于视频的当前块和视频的比特流表示之间的转换,基于在图片头、图片参数集(pps)、条带头或片组头中信令通知的指示来确定子块级别编码技术。方法2300包括,在操作2320,基于子块级别编码技术来执行该转换。

在一些实施例中,子块级别编码技术包括基于子块的时域运动矢量预测编码技术。在一些实施例中,子块级别编码技术包括仿射编码技术。在一些实施例中,该指示指示子块编码技术被禁用。

在一些实施例中,子块级别运动推导过程和块级别运动推导过程可以被整合。图24a是根据本公开的用于视频处理的方法2400的流程图表示。方法2400包括,在操作2410处,对于视频的当前块和视频的比特流表示之间的转换,使用适用于当前块和比特流表示之间的块级别时域运动矢量预测候选转换的推导过程,来确定子块级别时域运动候选。方法2400还包括,在操作2420处,基于子块级别时域运动候选来执行该转换。图24b是根据本公开的用于视频处理的方法2450的流程图表示。方法2450包括,在操作2460处,对于视频的当前块和视频的比特流表示之间的转换,使用适用于当前块和比特流表示之间的子块级别时域运动候选转换的推导过程,来确定块级别时域运动矢量预测候选。方法2450还包括,在操作2360处,基于块级别时域运动矢量预测候选来执行该转换。

在一些实施例中,上述方法中的转换包括编码当前块以生成比特流表示。在一些实施例中,上述方法中的转换包括解码比特流表示以生成当前块。

所公开技术的一些实施例包括做出启用视频处理工具或模式的决定或确定。在示例中,当视频处理工具或模式被启用时,编码器将在视频的块的处理中使用或实施该工具或模式,但是可以不必基于该工具或模式的使用来修改产生的比特流。也就是说,当基于该决定或确定启用视频处理工具或模式时,从视频的块到视频的比特流表示的转换将使用视频处理工具或模式。在另一示例中,当视频处理工具或模式被启用时,解码器将在知道比特流已经基于视频处理工具或模式而修改的情况下处理比特流。也就是说,将使用基于该决定或确定而启用的视频处理工具或模式来执行从视频的比特流表示到视频的块的转换。

所公开技术的一些实施例包括做出禁用视频处理工具或模式的决定或确定。在示例中,当视频处理工具或模式被禁用时,编码器将不在视频的块到视频的比特流表示的转换中使用该工具或模式。在另一示例中,当视频处理工具或模式被禁用时,解码器将在知道比特流尚未使用基于该决定或确定而启用的视频处理工具或模式而被修改的情况下处理比特流。

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

本专利文档中描述的主题和功能操作的实施方式可以在各种系统、数字电子电路中、或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施方式可以实施为一个或多个计算机程序产品,即在有形且非暂时性计算机可读介质上编码的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置运行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组合、或它们中的一个或多个的组合。术语“数据处理单元”或“数据处理装置”包含用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。

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

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

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

旨在将说明书与附图一起视为仅示例性的,其中示例性意味着示例。此外,“或”的使用旨在包括“和/或”,除非上下文另外明确地指示。

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

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

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

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