减少仿射继承所需的线缓冲器存储的制作方法

文档序号:26013061发布日期:2021-07-23 21:34阅读:116来源:国知局
减少仿射继承所需的线缓冲器存储的制作方法

根据巴黎公约适用的专利法和/或规则,本申请旨在及时要求2018年12月8日提交的国际专利申请no.pct/cn2018/119946、2018年12月14日提交的国际专利申请号pct/cn2018/121118、2019年2月14日提交的国际专利申请no.pct/cn2019/075094以及2019年2月22日提交的国际专利申请no.pct/cn2019/075846的优先权和利益。国际专利申请no.pct/cn2018/119946、pct/cn2018/121118、pct/cn2019//075094和pct/cn2019/075846的全部公开内容作为本申请公开内容的一部分通过引用而并入。

该专利文档涉及图像和视频编解码(coding)和解码。



背景技术:

数字视频在互联网和其他数字通信网络中占据最大的带宽使用。随着能够接收和显示视频的联网用户设备的数量增加,预计数字视频使用的带宽需求将继续增长。



技术实现要素:

所公开的技术可以由视频解码器或编码器实施例在使用控制点运动矢量和仿射编解码的视频解码或编码期间使用。

在一个示例方面,公开了一种处理视频方法。该方法包括:将用于确定其他视频块的继承运动信息的第一组运动矢量(mv)、用于推导当前视频块的子块的mv的第二组mv以及包括在当前视频块的比特流表示中的第三组mv与当前视频块相关联;以及使用第一组mv、第二组mv或第三组mv来执行当前视频块和比特流表示之间的转换。

在另一示例方面,公开了另一种视频处理方法。该方法包括:使用当前块的仿射继承运动矢量(motionvector,mv)来执行当前块和当前块的比特流表示之间的转换,其中,仿射继承mv是从(1)为相邻的临近基本块(表示为badj)而存储的mv或者(2)仿射历史列表中推导出的。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:使用当前块的仿射继承运动矢量(mv)来执行当前块和当前块的比特流表示之间的转换,其中,仿射继承mv是从存储在与当前块相邻地临近的第一基本块中的第一mv和存储在与第一构建块有一偏移的第二基本块中的第二mv中推导出的。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:将用于确定在第一块之后编解码的块的继承运动信息的第一组控制点运动矢量(controlpointmotionvector,cpmv)与用于推导第一块的子块的mv的第二组cpmv或为第一块信令通知的第三组cpmv相关联,其中第一组cpmv与第二组cpmv或第三组cpmv不相同;基于第一组cpmv来确定在第一块之后编解码的第二块的继承运动信息;以及通过使用继承运动信息来执行第二块和第二块的比特流表示之间的转换。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:为视频的第一块和第一块的比特流表示之间的转换,基于存储的运动矢量(mv)来推导视频的第一块的仿射继承运动矢量(mv);以及通过使用仿射继承mv来执行转换。

在又一示例方面,公开了另一种视频处理的方法。该方法包括:为视频的当前块和当前块的比特流表示之间的转换,基于第一存储运动矢量(mv)和与第一存储mv不同的第二存储mv来推导当前块的仿射继承运动矢量(mv),其中第一存储mv存储在与当前块临近的第一基本块中,并且第二存储mv存储在与第一基本块有一偏移的第二基本块中;以及通过使用当前块的仿射继承mv来执行转换。

在又一示例方面,公开了另一种视频处理方法。该方法包括:为当前块和当前块的比特流表示之间的转换,推导与当前块的仿射模型相关联的仿射模型参数集的一个或多个参数;移位一个或多个参数;以及存储所移位的一个或多个参数。

在又一示例方面,公开了一种视频编码器装置。视频编码器装置包括处理器,该处理器被配置为实施本文描述的方法。

在又一示例方面,公开了一种视频解码器装置。视频解码器装置包括处理器,该处理器被配置为实施本文描述的方法。

在又一方面,公开了一种其上存储有代码的计算机可读介质。当由处理器执行时,该代码使得处理器实施本文档中描述的方法。

本文档中描述了这些和其他方面。

附图说明

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

图2示出了空域merge候选的示例位置。

图3示出了考虑用于空域merge候选的冗余检查的候选对的示例。

图4a-图4b示出了n×2n和2n×n分割的第二pu的示例位置。

图5是时域merge候选的运动矢量缩放的图示。

图6示出了时域merge候选c0和c1的候选位置。

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

图8总结了运动矢量预测候选的推导过程。

图9是空域运动矢量候选的运动矢量缩放的示例图示。

图10示出了编解码单元cu的可选运动矢量预测值(alternativemotionvectorpredictor,atmvp)运动预测的示例。

图11示出了具有四个子块(a-d)及其临近块(a-d)的一个cu的示例。

图12示出了用于以不同的mv精度进行编码的示例流程图。

图13a-图13b分别示出了4和6参数简化仿射运动模型。

图14示出了每一子块的仿射mvf的示例。

图15a示出了4参数仿射模型的示例。

图15b示出了6参数仿射模型的示例。

图16示出了用于继承仿射候选的af_inter的mvp的示例。

图17示出了用于所构造的仿射候选的af_inter的示例mvp。

图18a示出了在五个临近块场景中的af_merge的候选的示例。

图18b示出了cpmv预测值推导过程的示例流程。

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

图20示出了在ctu行的仿射继承的示例。

图21示出了存储在相邻的临近基本块中的mv的示例

图22示出了4×4基本块中的位置。

图23示出了两个相邻的临近块的mv的示例。

图24示出了用于跨越ctu行的仿射继承的mv的示例。

图25是视频处理方法的示例的流程图。

图26是视频处理装置的示例的框图。

图27示出了找到第一基本块和第二基本块的示例性流程图(矩形块指示整个过程的终止)。

图28示出了找到第一基本块和第二基本块的另一示例性流程图(矩形块指示整个过程的终止)。

图29是视频处理方法的示例的流程图。

图30是视频处理方法的示例的流程图。

图31是视频处理方法的示例的流程图。

图32是视频处理方法的示例的流程图。

具体实施方式

本文档提供了各种技术,视频比特流的解码器可以使用这些技术来提高解压缩或解码的数字视频或图像的质量。此外,视频编码器还可以在编码过程中实施这些技术,以便重新构造用于进一步编码的解码帧。

为了便于理解,在本文档中使用了章节标题,并且不将实施例和技术限制到相应的章节。这样,来自一个章节的实施例可以与来自其他章节的实施例相结合。

1.概述

该专利文档涉及视频编解码技术。具体地,它涉及视频编解码中的运动矢量编解码。它可以应用于现有的视频编解码标准,如hevc,或待定稿的标准(通用视频编解码)。它也可能适用于未来的视频编解码标准或视频编解码器。

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以外的未来视频编解码技术,由vceg和mpeg于2015年联合成立了联合视频探索组(jvet)。此后,jvet采用了许多新方法,并将其输入到名为联合探索模型(jem)的参考软件中。2018年4月,在vceg(q6/16)和iso/iecjtc1sc29/wg11(mpeg)之间创建了联合视频专家组(jvet),致力于目标是与hevc相比比特率降低50%的vvc标准。

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

每个帧间预测的pu(predictionunit,预测单元)具有一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。两个参考图片列表之一的使用也可以使用inter_pred_idc信令通知。运动矢量可以被显式地编解码为相对于预测值的增量。

当以跳过模式对cu进行编解码时,一个pu与cu相关联,并且没有显著的残差系数,没有编解码的运动矢量增量或参考图片索引。指定了merge模式,由此从临近pu获得当前pu的运动参数,包括空域和时域候选。merge模式不仅应用于跳过模式,还可以应用于任何帧间预测pu。merge模式的可选方案是运动参数的显式地传输,其中运动矢量(更准确地,与运动矢量预测值相比的运动矢量差(motionvectordifference,mvd))、每个参考图片列表的对应参考图片索引和参考图片列表的使用按每一pu显式地信令通知。在本公开中,这种模式被命名为高级运动矢量预测(advancedmotionvectorprediction,amvp)。当信令指示要使用两个参考图片列表之一时,从一个样点块中产生pu。这被称为“单向预测”。单向预测可用于p条带和b条带。

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

下文提供了在hevc指定的帧间预测模式的细节。描述将以merge模式开始。

2.1.1参考图片列表

在hevc中,术语帧间预测被用于表示从除当前解码图片之外的参考图片的数据元素(例如,样点值或运动矢量)推导的预测。像在h.264/avc中一样,可以从多个参考图片中预测图片。用于帧间预测的参考图片被组织在一个或多个参考图片列表中。参考索引识别列表中的哪个参考图片应该用于创建预测信号。

单个参考图片列表(列表0)被用于p条带,并且两个参考图片列表(列表0和列表1)被用于b条带。应该注意,就捕获/显示顺序而言,列表0/1中包括的参考图片可以来自过去和未来的图片。

2.1merge模式

2.1.2.1merge模式的候选的推导

当使用merge模式预测pu时,从比特流中解析指向merge候选列表中的条目的索引并将其用于检索运动信息。该列表的构造在hevc标准中被指定,并且可以根据以下一系列步骤进行概述:

·步骤1:初始候选推导

ο步骤1.1:空域候选推导

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

ο步骤1.3:时域候选推导

·步骤2:附加候选插入

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

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

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

下面,详细描述与前述步骤相关联的操作。

2.1.2.2空域候选推导

在空域merge候选的推导中,在位于图2中描绘的位置的候选当中选择最多四个merge候选。推导的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任何pu不可用(例如,因为它属于另一条带或片)或者是帧内编解码的时,才考虑位置b2。在添加位置a1处的候选之后,对剩余候选的添加进行冗余检查,其确保具有相同运动信息的候选被排除在列表之外,从而提高编解码效率。为了降低计算复杂度,在所提到的冗余检查中不考虑所有可能的候选对。相反,只考虑与图3中的箭头链接的对,并且如果用于冗余检查的对应候选没有相同的运动信息,则候选仅被添加到列表中。重复运动信息的另一源是与不同于2n×2n的分割相关联的“第二pu”。作为示例,图4a-图4b分别描绘了n×2n和2n×n的情况下的第二pu。当当前pu被分割为n×2n时,位置a1处的候选不被考虑用于列表构造。实际上,通过添加该候选将导致两个预测单元具有相同的运动信息,这对于在编解码单元中只具有一个pu是冗余的。类似地,当当前pu被分割为2n×n时,不考虑位置b1。

图2示出了空域merge候选的位置。

图3示出了考虑用于空域merge候选的冗余检查的候选对。

图4a-图4b示出了n×2n和2n×n分割的第二pu的位置。

2.1.2.3时域候选推导

在该步骤中,仅一个候选被添加到列表。具体地,在该时域merge候选的推导中,基于属于与给定参考图片列表内的当前图片具有最小poc(pictureordercount,图片顺序计数)差的图片的并置(co-located)pu来推导缩放运动矢量。在条带头中显式地信令通知要用于推导并置pu的参考图片列表。在图5中,如虚线所示的获得用于时域merge候选的缩放运动矢量,该缩放运动矢量是使用poc距离tb和td从并置pu的运动矢量进行缩放的,其中tb被定义为当前图片的参考图片与当前图片之间的poc差,并且td被定义为并置图片的参考图片与并置图片之间的poc差。时域merge候选的参考图片索引被设置为等于零。hevc规范中描述了缩放过程的实际实现。对于b条带,两个运动矢量(一个用于参考图片列表0,另一个用于参考图片列表1)被获得并组合,以生成双向预测merge候选。

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

在属于参考帧的并置pu(y)中,在候选c0和c1之间选择时域候选的位置,如图6所描绘的。如果位置c0处的pu不可用、是帧内编解码的、或者在当前编解码树单元(codingtreeunit,ctu,又称最大编解码单元(largestcodingunit,lcu))行的外部,则使用位置c1。否则,在时域merge候选的推导中使用位置c0。

图6示出了时域merge候选的候选位置c0和c1的示例。

2.1.2.4附加候选插入

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

插入零运动候选以填充merge候选列表中的剩余条目,并因此达到maxnummergecand容量。这些候选具有零空域位移和参考图片索引,该索引从零开始并且在每次向列表中添加新的零运动候选时增加。最终,不对这些候选执行冗余检查。

2.1.3amvp

amvp利用运动矢量与临近pu的空时相关性,该空时相关性用于运动参数的显式传输。对于每个参考图片列表,通过首先检查左边、上方的时域临近的pu位置的可用性、移除冗余候选并添加零矢量以使候选列表为恒定长度,来构造运动矢量候选列表。然后,编码器可以从候选列表中选择最佳预测值,并发送指示所选候选的对应索引。与merge索引信令类似,使用截断一元对最佳运动矢量候选的索引进行编码。在这种情况下,要编码的最大值是2(见图8)。在接下来的章节中,将提供关于运动矢量预测候选的推导过程的细节。

2.1.3.1推导amvp候选

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

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

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

2.1.3.2构造空域运动矢量候选

在空域运动矢量候选的推导中,在从位于如图2所描绘的位置的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候选的并行推导。否则,针对上方运动矢量不允许空域缩放。

图9是空域运动矢量候选的运动矢量缩放的图示。

在空域缩放过程中,以与时域缩放类似的方式来缩放临近pu的运动矢量,如图9所描绘的。主要差异在于参考图片列表和当前pu的索引被给定作为输入;实际缩放过程与时域缩放的过程相同。

2.1.3.3时域运动矢量候选

除了参考图片索引推导之外,用于推导时域merge候选的所有过程与用于推导空域运动矢量候选的过程相同(参见图6)。参考图片索引被信令通知给解码器。

2.2jem中基于子cu的运动矢量预测方法

在具有qtbt(quadtreesplusbinarytrees,四叉树加二叉树)的jem中,每个cu对于每个预测方向最多可以有一个运动参数集。通过将大cu划分为子cu并且推导大cu的所有子cu的运动信息,在编码器中考虑两个子cu级别运动矢量预测方法。可选时域运动矢量预测(atmvp)方法允许每个cu从比并置参考图片中的当前cu小的多个块中提取多个运动信息集。在空时运动矢量预测(spatial-temporalmotionvectorprediction,stmvp)方法中,通过使用时域运动矢量预测量和空域临近运动矢量来递归地推导子cu的运动矢量。

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

图10示出了针对cu的atmvp运动预测的示例。

2.2.1可选时域运动矢量预测

在可选时域运动矢量预测(atmvp)方法中,通过从比当前cu小的块提取多个运动信息(包括运动矢量和参考索引)集来修改运动矢量时域运动矢量预测(temporalmotionvectorprediction,tmvp)。子cu是正方形的n×n块(n默认设置为4)。atmvp分两个步骤来预测cu内的子cu的运动矢量。第一步骤是用所谓的时域矢量来识别参考图片中的对应块。参考图片被称为运动源图片。第二步骤是将当前cu划分为子cu,并从与每个子cu相对应的块中获得运动矢量以及每个子cu的参考索引。

在第一步骤中,参考图片和对应块由当前cu的空域临近块的运动信息确定。为了避免临近块的反复的扫描过程,使用当前cu的merge候选列表中的第一merge候选。第一可用运动矢量以及其相关联的参考索引被设置为时域矢量和运动源图片的索引。这样,在atmvp中,与tmvp相比,可以更准确地识别对应块,其中对应块(有时称为并置块)总是相对于当前cu处于右下或中心位置。

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

2.2.2空时运动矢量预测

在该方法中,按照光栅扫描顺序递归地推导子cu的运动矢量。图11示出了该概念。让我们考虑8×8的cu,它包含4个4×4的子cu:a、b、c和d。当前帧中的临近的4×4块被标记为a、b、c和d。

子cua的运动推导通过识别其两个空域邻居(neighbour)开始。第一邻居是子cua上方的n×n块(块c)。如果这个块c不可用或是帧内编解码的,则检查子cua上方的其它n×n块(从左到右,从块c开始)。第二邻居是子cua左边的块(块b)。如果块b不可用或是帧内编解码的,则检查子cua左边的其它块(从上到下,从块b开始)。从每个列表的临近块中获得的运动信息被缩放到给定列表的第一参考帧。接下来,通过遵循如hevc指定的tmvp推导的相同过程来推导子块a的时域运动矢量预测量(tmvp)。在位置d处的并置块的运动信息被相应地提取和缩放。最后,在检索和缩放运动信息之后,对每个参考列表单独地平均所有可用的运动矢量(多达3个)。平均运动矢量被分配为当前子cu的运动矢量。

图11示出了具有4个子块(a-d)及其临近块(a-d)的一个cu的示例。

2.2.3子cu运动预测模式信令

子cu模式被启用作为附加merge候选,并且不需要附加语法元素来信令通知这些模式。两个附加merge候选被添加到每个cu的merge候选列表以表示atmvp模式和stmvp模式。如果序列参数集指示启用了atmvp和stmvp,则使用多达七个merge候选。附加merge候选的编码逻辑与hm中的merge候选的编码逻辑相同,这意味着,对于p条带或b条带中的每个cu,针对两个附加merge候选还需要两次rd(ratedistortion,率失真)检查。

在jem中,merge索引的所有二进制数都由cabac进行上下文编解码。而在hevc中,只对第一个二进制数进行上下文编解码,对其余的二进制数进行上下文旁路编解码。

2.3vvc中的帧间预测方法

有几种用于帧间预测改进的新的编解码工具,诸如用于信令通知mvd的自适应运动矢量差分辨率(adaptivemotionvectordifferenceresolution,amvr)、仿射预测模式、三角形预测模式(tpm)、atmvp、广义双向预测(generalizedbi-prediction,gbi)、双向光流(bio)。

2.3.1vvc中的编解码块结构

在vvc中,采用四叉树/二叉树/多叉树(qt/bt/tt)结构将图片划分成正方形或矩形块。

在vvc中,除了qt/bt/tt之外,对于i帧,还可以采用单独的树(也称为双重编解码树(dualcodingtree))。对于单独的树,针对亮度分量和色度分量单独地信令通知编解码块结构。

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

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

对于具有至少一个非零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检查。

编码过程如图12所示。首先,测试1/4像素mv,计算rd成本并表示为rdcost0,然后测试整数mv,rd成本表示为rdcost1。如果rdcost1<th*rdcost0(其中th是正值),则测试4像素mv;否则,跳过4像素mv。基本上,当检查整数或4像素mv时,对于1/4像素mv已知运动信息和rd成本等,可以将其重用(reuse)以加速整数或4像素mv的编码过程。

图12是以不同mv精度进行编码的流程图。

2.3.3仿射运动补偿预测

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

块的运动矢量场(mvf)由以下等式描述,分别为等式(1)的4参数仿射模型(其中4参数仿射模型被定义为变量a、b、e和f)和等式(2)的6参数仿射模型(其中4参数仿射模型被定义为变量a、b、c、d、e和f):

其中,(mvh0,mvh0)是左上角控制点的运动矢量,并且(mvh1,mvh1)是右上角控制点的运动矢量,并且(mvh2,mvh2)是左下角控制点的运动矢量,所有3个运动矢量被称为控制点运动矢量(cpmv),(x,y)表示当前块内代表点(representativepoint)相对于左上样点的坐标,并且(mvh(x,y),mvv(x,y))是针对位于(x,y)处的样点而推导出的运动矢量。cp运动矢量可以被信令通知(像在仿射amvp模式下那样)或者动态推导(像在仿射merge模式下那样)。w和h是当前块的宽度和高度。实际上,除法是通过右移和四舍五入操作来实施的。在vtm中,代表点被定义为子块的中心位置,例如,当子块的左上角相对于当前块内的左上样点的坐标是(xs,ys)时,代表点的坐标被定义为(xs+2,ys+2)。对于每个子块(即vtm中的4×4),利用代表点来推导整个子块的运动矢量。

为了进一步简化运动补偿预测,应用了基于子块的仿射变换预测。为了推导每个m×n子块的运动矢量(在当前vvc中m和n都设置为4),可以根据等式(1)和(2)计算每个子块的中心样点的运动矢量(如图14所示),并取整到1/16分数精度。然后,针对1/16像素应用运动补偿插值滤波器,以生成具有推导出的运动矢量的每个子块的预测。仿射模式引入了1/16像素的插值滤波器。

图14示出了每个子块的仿射mvf的示例。

在mcp之后,每个子块的高精度运动矢量被取整并保存为与正常运动矢量相同的精度。

2.3.3.1仿射预测的信令

类似于平移运动模型,也有两种模式用于信令通知由于仿射预测而产生的边信息(sideinformation)。它们是affine_inter和affine_merge模式。

2.3.3.2af_inter模式的示例

对于宽度和高度都大于8的cu,可以应用af_inter模式。在比特流中信令通知cu级别的仿射标志,以指示是否使用af_inter模式。

在这种模式下,对于每个参考图片列表(列表0或列表1),仿射amvp候选列表按以下顺序用三种类型的仿射运动预测值构造,其中每个候选包括当前块的估计cpmv。在编码器侧(诸如图17中的mv0mv1mv2)发现的最佳cpmv和估计的cpmv的差被信令通知。另外,进一步信令通知从其中推导估计的cpmv的仿射amvp候选的索引。

1)继承仿射运动预测值

检查顺序类似于hevcamvp列表构造中的空域mvp的顺序。首先,从{a1,a0}中的被仿射编解码并且具有与当前块中相同的参考图片的第一块推导的左边的继承仿射运动预测值。第二,从{b1,b0,b2}中的被仿射编解码并且具有与当前块中相同的参考图片的第一块推导上方的继承仿射运动预测值。图16中描绘了五个块a1、a0、b1、b0、b2。

一旦发现临近块是用仿射模式进行编解码的,覆盖临近块的编解码单元的cpmv被用于推导当前块的cpmv的预测值。例如,如果a1是用非仿射模式进行编解码的,并且a0是用4参数仿射模式进行编解码的,则左边的继承仿射mv预测值将从a0推导。在这种情况下,覆盖a0的cu的cpmv(如图18b所示,对于左上的cpmv表示为对于右上的cpmv表示为)用于推导当前块的估计cpmv(对于当前块的左上位置(坐标(x0,y0))、右上位置(坐标(x1,y1))和右下位置(坐标(x2,y2))表示为)。

2)构造的仿射运动预测值

如图17所示,构造的仿射运动预测值包括从具有相同参考图片的临近帧间编解码块推导的控制点运动矢量(cpmv)。如果当前仿射运动模型是4参数仿射,则cpmv的数量是2,否则如果当前仿射运动模型是6参数仿射,则cpmv的数量是3。左上的cpmv是由组{a,b,c}中被仿射编解码并且具有与当前块中相同的参考图片的第一块处的mv推导的。右上的cpmv是由组{d,e}中的被帧间编解码并且具有与当前块中相同的参考图片的第一第一块处的mv推导的。左下的cpmv是由组{f,g}中的被帧间编解码并且具有与当前块中相同的参考图片的第一块处的mv推导的。

-如果当前仿射运动模型是4参数仿射,则只有当两者都被建立时,构造的仿射运动预测值才被插入候选列表,也就是说,被用作当前块的左上(坐标(x0,y0))、右上(坐标(x1,y1))位置的估计cpmv。

-如果当前仿射运动模型是6参数仿射,则只有当都被建立时,构造的仿射运动预测值才被插入候选列表,也就是说,被用作当前块的左上(坐标(x0,y0))、右上(坐标(x1,y1))和右下(坐标(x2,y2))位置的估计cpmv。

当将构造的仿射运动预测值插入候选列表时,不应用修剪过程。

3)正常amvp运动预测值

在仿射运动预测值的数量达到最大值之前,以下条件适用。

1)通过将所有cpmv设置为等于(如果可用),推导仿射运动预测值。

2)通过将所有cpmv设置为等于(如果可用),推导仿射运动预测值。

3)通过将所有cpmv设置为等于(如果可用),推导仿射运动预测值。

4)通过将所有cpmv设置为等于hevctmvp(如果可用),推导仿射运动预测值。

5)通过将所有cpmv设置为零mv,推导仿射运动预测值。

注意,已经在构造的仿射运动预测值推导出

图15a示出了4参数仿射模型的示例。图15b示出了6参数仿射模型的示例。

图16示出了继承仿射候选的af_inter的mvp的示例。

图17示出了构造的仿射候选的af_inter的mvp的示例。在af_inter模式下,当使用4/6参数仿射模式时,需要2/3个控制点,并且因此需要为这些控制点编解码2/3个mvd,如图15a和图15b所示。提出了如下推导mv,即从mvd0中预测mvd1和mvd2。

其中,mvdi和mv1分别是左上像素(i=0)、右上像素(i=1)或左下像素(i=2)的预测运动矢量、运动矢量差和运动矢量,如图15b所示。请注意,两个运动矢量(例如,mva(xa,ya)和mvb(xb,yb))的相加等于两个分量的分别总和,也就是说,newmv=mva+mvb,并且newmv的两个分量分别设置为(xa+xb)和(ya+yb)。

2.3.3.3af_merge模式

当在af_merge模式下应用cu时,它从有效的临近重构块中获得用仿射模式编解码的第一块。并且候选块的选择顺序是从左、上、右上、左下到左上,如图18a所示(依次由a、b、c、d、e表示)。例如,如果临近的左下块如图18b中a0所示以仿射模式进行编解码,则提取包含块a的临近的cu/pu的左上角、右上角和左下角的控制点(cp)运动矢量mv0n、mv1n和mv2n。并且基于mv0n、mv1n和mv2n计算当前cu/pu上的左上角/右上/左下的运动矢量mv0c、mv1c和mv2c(仅用于6参数仿射模型)。应该注意,如果当前块是仿射编解码的,则位于左上角的子块(例如,vtm的4×4块)存储mv0,位于右上角的子块可以存储mv1。如果当前块用6参数仿射模型进行编解码,则位于左下角的子块存储mv2;否则(在4参数仿射模型的情况下),lb存储mv2'。其他子块存储用于mc的mv。

在根据等式(1)和(2)中的简化仿射运动模型推导出当前cu的cpmvmv0c、mv1c和mv2c之后,生成当前cu的mvf。为了识别当前cu是否以af_merge模式进行编解码,当有至少一个临近块以仿射模式进行编解码时,在比特流中信令通知仿射标志。

图18a示出了在5个临近块的情况下的af_merge的示例候选。

图18b示出了cpmv预测值推导过程的示例。

提出了用以下步骤来构造仿射merge候选列表:

1)插入继承的仿射候选

继承仿射候选是指候选是从其有效临近仿射编解码块的仿射运动模型推导的。从临近块的仿射运动模型中推导出最多两个继承仿射候选,并将其插入候选列表。对于左边的预测值,扫描顺序为{a0,a1};对于上方的预测值,扫描顺序是{b0,b1,b2}。

2)插入构造的仿射候选

如果仿射merge候选列表中的候选数量小于maxnumaffinecand(例如,5),则将构造的仿射候选插入候选列表。构造仿射候选是指通过组合每个控制点的临近运动信息来构造候选。

a)控制点的运动信息首先从图19所示的指定的空域邻居和时域邻居中推导。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是当前块的宽度和高度。

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

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

-对于cp1,检查优先级为b2->b3->a2。如果b2可用,则使用b2。

否则,如果b2可用,则使用b3。如果b2和b3都不可用,则使用a2。

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

-对于cp2,检查优先级为b1->b0。

-对于cp3,检查优先级为a1->a0。

-对于cp4,使用t。

b)其次,使用控制点的组合来构造仿射merge候选。

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

ii.构造4参数仿射候选需要两个控制点的运动信息。这两个控制点可以从两个组合({cp1,cp2}、{cp1,cp3})中选择一个。这两个组合将被转换为由左上和右上控制点表示的4参数运动模型。

iii.按以下顺序将构造的仿射候选的组合插入候选列表:

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

i.对于每个组合,针对每个cp来检查列表x的参考索引,如果它们全部相同,则该组合对于列表x具有有效的cpmv。如果该组合对于列表0和列表1都没有有效的cpmv,则该组合被标记为无效。否则,它是有效的,并且将cpmv放入子块merge列表中。

3)用零运动矢量进行填充

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

更具体地,对于子块merge候选列表,有4参数merge候选,其中mv设置为(0,0)并且预测方向设置为来自列表0的单向预测(对于p条带)和双向预测(对于b条带)。

2.3.3.4仿射模型继承所需的存储

ctu内部所需的内存

为了进行如图18b所示的仿射模型继承,将附加信息存储在ctu内部的每个8×8块中。

1)两个参考列表有三个cpmv,需要2(2个参考列表)×2(x和y分量)×16(一个分量16比特)×3(3个cpmv)=192比特(或软件设计中的24字节)。

2)cu的左上角的坐标,需要2×13=26比特(或软件设计中的4字节)。

3)cu的宽度和高度,要求2×7=14比特(或软件设计中的2字节)。

因此,针对每个8×8块总共需要存储232比特(或30字节)的边信息。我们应该注意到,在hevc中,需要存储在每个8×8块中的运动信息的总量是2(2个参考列表)×2(x和y分量)×16(一个分量16比特)×4(4个4×4块的4个mv)=256比特(或软件设计中的32字节)。

因此,在软件设计中,运动信息所需的ctu内部的内存增加了232/256=90%或30/32=94%。这极大地增加了高速缓冲存储器的需求。

线缓冲器所需的内存

对于在ctu行边界处的块,提出减少仿射继承所需的线缓冲内存。图20示出了当当前cu处于ctu行边界时的示例。假设选择从覆盖(xle1,yle1)的4×4块继承仿射模型,然后找到覆盖(xle1,yle1)的临近cu。找到临近cu的左下4×4块和右下块的mv(在图中标记为vle0和vle1)。当前块的cpmv计算如下:

通过使用4参数模型以及通过下式来推导出当前cu的控制点矢量

并且如果当前cu使用6参数仿射运动模型,则通过下式推导出控制点矢量

因为不需要当前ctu行之外的临近块的cpmv,所以不需要将cpmv存储在线缓冲器中。此外,高度和左上角坐标的y分量不需要存储在线缓冲器中。然而,宽度和左上角坐标的x分量仍然需要存储在线缓冲器中。

图20示出了在ctu行处的仿射继承的示例。

对于仿射继承,提出对于仿射继承而存储仿射参数a、b、c和d,而不是存储cpmv。对于历史运动矢量预测(hmvp),提出可以存储仿射参数a、b、c和d,以生成用于仿射merge或仿射帧间编解码的历史运动矢量预测(hmvp)。用于存储基于历史的仿射模型的缓冲器/表/列表被称为仿射hmvp缓冲器/表/列表。

3.由本文描述的实施例和技术解决的问题的示例

在当前的设计中,仿射继承所需的额外存储仍然是一个大问题。

此外,在跨越ctu行的仿射继承的当前设计中,关于与一个位置相关联但被假设与另一个位置相关联的mv,存在未对准(misalignment)。

如图20所示,通过使用4参数模型以及通过下式来推导出当前cu的控制点矢量

并且如果当前cu使用6参数仿射运动模型,则通过下式推导出控制点矢量

在上述等式中,(xle1,yle1)和(xle0,yle0)分别用作以仿射模式的编解码单元的右下和左下样点坐标的代表位置。

假设将vle0分配给临近cu的左下位置(表示为(xe0,y0))。然而,将vle0分配给临近cu的左下子块的中心位置。

另外,需要知道仿射编解码的cu的坐标以及cu的宽度,因为需要识别覆盖cu的左下和右下样点的两个代表子块。在以上示例中,覆盖(xle0,yle0)的子块被称为第一代表子块,并且覆盖(xle1,yle1)的子块被称为第二代表子块。因此,需要附加的线缓冲器来存储cu宽度、坐标等。

4.实施例和技术的示例

以下项目的详细列表应被视为解释一般概念的示例。这些实施例不应被狭义地解释。此外,这些发明可以以任何方式进行组合。

在以下讨论中,satshift(x,n)被定义为

shift(x,n)被定义为shift(x,n)=(x+offset0)>>n。

在一个示例中,offset0和/或offset1被设置为(1<<n)>>1或(1<<(n-1))。在另一示例中,offset0和/或offset1被设置为0。

clip3(min,max,x)被定义为

减少仿射继承所需的ctu内存储

1.用于对后续块进行仿射继承的块的第一组cpmv(分别位于代表点(xf0,yf0)、(xf1,yf1)和(xf2,yf2),表示为mvf0、mvf1和mvf2)可以不同于用于推导每个子块的mv的块的第二组cpmv(分别位于代表点(xs0,ys0)、(xs1,ys1)和(xs2,ys2),表示为mvs0、mvs1和mvs2)或从编码器信令通知给解码器的第三组cpmv(分别位于代表点(xt0,yt0)、(xt1,yt1)和(xt2,yt2),表示为mvt0、mvt1和mvt2)。

a)在一个示例中,第二组cpmv与第三组cpmv相同。

b)在一个示例中,第一组cpmv是从第二组或第三组cpmv推导出的。

c)在一个示例中,在对块进行编解码/解码之后存储第一组cpmv。

d)在一个示例中,代表点的坐标(诸如(xfi,yfi)、(xsi,ysi)、(xti,yti))被定义为相对于在仿射运动补偿过程中使用的一个子块的坐标。

2.第一组中的两个cpmv的代表点之间的相对偏移可能不取决于块的宽度或高度。

a)在一个示例中,对分别位于代表点(xf0,yf0)、(xf1,yf1)和(xf2,yf2)的块b的cpmv(表示为mvf0、mvf1和mvf2)进行存储。在另一示例中,对分别位于位置(xf0,yf0)和(xf1,yf1)的块b的cpmv(表示为mvf0和mvf1)进行存储。(xf0,yf0)、(xf1,yf1)和(xf2,yf2)可以在块b内部,或者它们在其外部。

b)在一个示例中,yf1=yf0,xf1=xf0+pw。

c)在一个示例中,xf1=xf0,yf1=yf0+ph。

d)在一个示例中,yf2=yf0,xf2=xf0+pw。

e)在一个示例中,xf2=xf0,yf2=yf0+ph。

f)在一个示例中,yf2=yf1,xf2=xf1+pw。

g)在一个示例中,xf2=xf1,yf2=yf1+ph。

h)pw和ph是整数。

i.在一个示例中,pw=2m。例如,pw可以等于4、8、16、32、64或128。

ii.在一个示例中,pw=-2m。例如,pw可以等于-4、-8、-16、-32、-64或-128。

iii.在一个示例中,ph=2m。例如,ph可以等于4、8、16、32、64或128。

iv.在一个示例中,ph=-2m。例如,ph可以等于-4、-8、-16、-32、-64或-128。

v.不存储pw和ph。

1.在一个示例中,它们是固定的。

2.在另一示例中,它们在vps/sps/pps/条带头/片组头/片/ctu中被信令通知。

3.在另一示例中,它们在不同的标准等级(profile)/级别/层级中可能不同。

4.在另一示例中,它们可以取决于条带/图片的最大cu尺寸或/和最小cu尺寸。

i)在一个示例中,mvf0=mvs0,(xf0,yf0)=(xs0,ys0),或mvf0=mvt0,(xf0,yf0)=(xt0,yt0);

j)在一个示例中,mvf0=mvs1,(xf0,yf0)=(xs1,ys1),或mvf0=mvt1,(xf0,yf0)=(xt1,yt1);

k)在一个示例中,mvf0=mvs2,(xf0,yf0)=(xs2,ys2),或mvf0=mvt2,(xf0,yf0)=(xt2,yt2);

l)在一个示例中,以(xf0,yf0)、(xf1,yf1)和(xf2,yf2)作为输入坐标,通过等式(1)从mvs0和mvs1中推导出mvf0、mvf1和mvf2。

m)在一个示例中,以(xf0,yf0)、(xf1,yf1)和(xf2,yf2)作为输入坐标,通过等式(2)从mvs0、mvs1和mvs2中推导出mvf0、mvf1和mvf2。

n)在一个示例中,以(xf0,yf0)、(xf1,yf1)和(xf2,yf2)作为输入坐标,通过等式(1)从mvt0和mvt1中推导出mvf0、mvf1和mvf2。

o)在一个示例中,以(xf0,yf0)、(xf1,yf1)和(xf2,yf2)作为输入坐标,通过等式(2)从mvt0、mvt1和mvt2中推导出mvf0、mvf1和mvf2。

p)在一个示例中,仅当用6参数仿射模型对当前块进行编解码时,才计算mvf2。

i.可替换地,不管是用6参数仿射模型还是用6参数仿射模型对当前块进行编解码,都计算mvf2。

3.存储cpmv之间的差,而不是存储cpmv本身。

a)在一个示例中,存储d1=mvf1-mvf0;

b)在一个示例中,存储d2=mvf2-mvf0;

c)在一个示例中,d1和d2都被存储;

i.在一个示例中,仅当用6参数仿射模型对当前块进行编解码时,才存储d2。

ii.可替换地,不管是用6参数仿射模型还是用6参数仿射模型对当前块进行编解码,都存储d2。

d)在一个示例中,cpmv和cpmv之间的差可以存储在一起。例如,存储mvf0、d1和d2。

4.可以在存储之前对所存储的cpmv或cpmv之间的差进行移位。假设mv是要存储的cpmv或cpmv之间的差,则

a)例如,mv’x=satshift(mvx,n),并且mv’y=satshift(mvy,n)。存储mv’=(mv’x,mv’y)而不是mv。

b)例如,mv’x=shift(mvx,n),并且mv’y=shift(mvy,n)。存储mv’=(mv’x,mv’y)而不是mv。

c)例如,n是整数,诸如2或4;

i.在一个示例中,n取决于运动精度。

ii.当存储cpmv或存储cpmv之间的差时,n可能不同。

d)在一个示例中,在用于仿射继承之前,存储的mv’首先左移。

5.可以在存储之前对要存储的cpmv或cpmv之间的差进行限幅。假设mv是要存储的cpmv或cpmv之间的差,则

a)mv’x=clip3(minv,maxv,mvx),并且mv’y=clip3(minv,maxv,mvy)。存储mv’=(mv’x,mv’y)而不是mv。

b)在一个示例中,用k个比特来存储mv,则minv=-2k-1,maxv=2k-1-1。例如,当k=8时,minv=-128,maxv=127。

i.k可能取决于mv是cpmv还是cpmv之间的差而不同。

c)在一个示例中,首先对所存储的mv’进行移位,然后在它用于仿射继承之前对其进行限幅。

6.存储在表示为badj的相邻的临近基本块中的mv被用于推导当前块的仿射继承mv。

a)图21示出了存储在相邻的临近基本块中的mv的示例:l、a、lb、ar和al。在vtm中,基本块是4×4块。

b)存储在相邻的临近基本块badj中的mv被表示为mva=(mvha,mvva),则将表示为(mvh(x,y),mvv(x,y))的、位于位置(x,y)的当前块的仿射继承mv被推导为

或者

其中,(x0,y0)是mva的代表点。

i.(x0,y0)可以是基本块badj内部的任何位置。图22示出了一个示例。(x0,y0)可以是pij中的任何一个(i=0…wb-1,j=0…hb-1),其中wb和hb是基本块的宽度和高度。在该示例中,wb=hb=4。在一个示例中,假设badj中左上角样点的坐标是(xtl,ytl),则(x0,y0)可以是(xtl+i,ytl+j)中的任何一个(i=0…wb-1,j=0…hb-1)。

1.例如,(x0,y0)可以是图22中的p22。

2.假设当前块的左上样点的坐标是(xpos00,ypos00),当前块的右上样点的坐标是(xpos10,ypos00),当前块的右上样点的坐标是(xpos00,ypos01),则在图21中:

a.相邻的临近基本块l的(x0,y0)为(xpos00-2,ypos01-1);

b.相邻的临近基本块lb的(x0,y0)为(xpos00-2,ypos01+3);

c.相邻的临近基本块a的(x0,y0)为(xpos10-1,ypos00-2);

d.相邻的临近基本块ar的(x0,y0)为(xpos10+3,ypos00-2);

e.相邻的临近基本块al的(x0,y0)为(xpos00-2,ypos00-2)。

ii.(x0,y0)可以是基本块badj的外部或边界处的任何位置。

1.例如,假设badj中左上角样点的坐标是(xtl,ytl),则(x0,y0)可以是(xtl+i,ytl+j)中的任何一个,其中i可以是-1、0、wb-1或wb;j可以是-1、0、hb-1或hb。

iii.假设badj中左上角样点的坐标是(xtl,ytl),并且(x0,y0)=(xtl+i,ytl+j)。

1.i和j可以取决于badj的位置。例如,如果badj是图21中的块l,则i=0,j=hb-1,但是如果badj是图21中的块a,则i=wb-1,j=0。

2.i和j可以取决于当前块的宽度和高度。

3.i和j可以在vps/sps/pps/条带头/片组头/片/ctu/cu中被信令通知。

4.在另一示例中,i和j在不同的标准等级/级别/层级中可能不同。

iv.位置(x,y)可以在当前块的子块中,则取决于mva来继承子块的mv。

v.位置(x,y)可以是当前块的一个角,则取决于mva来继承当前块的cpmv。

1.在一个示例中,继承的cpmv可以用于预测仿射帧间编解码的当前块的所信令通知的cpmv。

2.在一个示例中,继承的cpmv可以直接用作仿射merge编解码的当前块的cpmv。

vi.在一个示例中,如果当前块使用4参数仿射模型,则应用等式(3)。如果当前块使用6参数仿射模型,则应用等式(4)。

vii.可替换地,不管当前块使用4参数仿射模型还是6参数仿射模型,都应用等式(4)。

c)等式(3)和等式(4)中的a、b、c和d计算如下

i.在一个示例中,a、b、c和d是从覆盖相邻的临近基本块badj的cu的第二组或第三组中存储的cpmv中推导出的,如项目符号1中所声明的。假设覆盖相邻的临近基本块badj的cu是块z,则mvt0=(mvht0,mvvt0),mvt1=(mvht1,mvvt1),mvt2=(mvht2,mvvt2)是块z的第二组或第三组中的cpmv。wt和ht是块z的宽度和高度。

ii.在一个示例中,a、b、c和d是从覆盖相邻的临近基本块badj的cu的第一组中存储的cpmv中推导出的,如项目符号1中所声明的。假设覆盖相邻的临近基本块badj的cu是块z,则mvt0=(mvht0,mvvt0)、mvt1=(mvht1,mvvt1)和mvt2=(mvht2,mvvt2)是块z的第一组中的cpmv。wt和ht是项目符号2中声明的pw和ph。

iii.在一个示例中,直接从存储装置中提取mvht1-mvht0、mvvt1-mvvt0、mvht2-mvht0、mvvt2-mvvt0,如项目符号3中所声明的。

图21示出了存储在相邻的临近基本块中的mv的示例。

图22示出了4×4基本块中的位置。

减少仿射继承所需的线缓冲存储。

7.存储在与当前块相邻地临近的第一基本块中的第一mv和存储在与第一基本块具有已知偏移的第二基本块中的第二mv被用于推导当前块的cpmv。

a)在一个示例中,存储在第一相邻的临近基本块中的mv被表示为mva=(mvha,mvva),然后通过等式(3)推导出表示为(mvh(x,y),mvv(x,y))的、位于位置(x,y)的当前块的仿射继承mv,并且通过等式(5)推导出a、b。

i.在一个示例中,等式(5)中的mvt0和mvt1分别被设置为等于存储在第一基本块中的mv和存储在第二基本块中的mv。wt被设置为两个基本块之间的水平偏移。

b)可替换地,a、b可以推导为

其中,ht被设置为两个基本块之间的水平偏移。

c)例如,wt和ht必须是2n的形式,诸如4、8、16……

d)假设(xlt0,ylt0)和(xlt1,ylt1)分别表示第一基本块和第二基本块的左上角样点的坐标,则

i.第一基本块和第二基本块之间的水平偏移被定义为xlt1-xlt0;

ii.第一基本块和第二基本块之间的垂直偏移被定义为ylt1-ylt0;

e)在一个示例中,当第一基本块在当前块(诸如图23中的块a、al和ar)的上方时,ylt1-ylt0必须等于0。

f)在一个示例中,当第一基本块在当前块的左边时(诸如图23中的块l、lb和al),xlt1-xlt0必须等于0。

g)如何选择第二基本块取决于第一块的位置。

i.例如,如果xlt0%m不等于0,则ylt1=ylt0且xlt1=xlt0–offset,其中offset是诸如4、8或16的正数,例如,m=8且offset=4。

ii.例如,如果xlt0%m等于0,则ylt1=ylt0且ylt1=ylt0+offset,其中offset是诸如4、8或16的正数,例如,m=8且offset=4。iii.例如,如果xlt0%m等于0,则ylt1=ylt0且xlt1=xlt0+offset,其中offset是诸如4、8或16的正数,例如,m=8且offset=4。iv.例如,如果xlt0%m不等于0,则xlt1=xlt0且ylt1=ylt0–offset,其中offset是诸如4、8或16的正数,例如,m=8且offset=4。

v.例如,如果xlt0%m等于0,则xlt1=xlt0且ylt1=ylt0+offset,其中offset是诸如4、8或16的正数,例如,m=8且offset=4。

vi.图23示出了成对的第一基本块和第二基本块的示例:al和al’、a和a’、ar和ar’、l和l’、lb和lb’。

vii.例如,如果第一块在当前块的左上方(诸如图23中的块al),则ylt1=ylt0且xlt1=xlt0+offset,其中offset是诸如4、8或16的正数。

viii.例如,如果第一块在当前块的右上方(诸如图23中的块ar),则ylt1=ylt0且xlt1=xlt0-offset,其中offset是诸如4、8或16的正数。

ix.例如,如果第一块在当前块的左上方(诸如图23中的块al),并且当前块的左边界也是ctu的左边界,则ylt1=ylt0且xlt1=xlt0+offset,其中offset是诸如4、8或16的正数。

x.例如,如果第一块在当前块的右上方(诸如图23中的块ar),并且当前块的右边界也是ctu的右边界,则ylt1=ylt0且xlt1=xlt0-offset,其中offset是诸如4、8或16的正数。

xi.例如,如果xlt0–offset<xlt_al,其中xlt_al是当前块的左上方的临近基本块(诸如图23中的块al)的左上坐标,则ylt1=ylt0且xlt1=xlt0+offset,其中offset是诸如4、8或16的正数。

xii.例如,如果xlt0+offset>xrt_ar,其中xrt_ar是当前块的右上方的临近基本块(诸如图23中的块ar)的右上坐标,则ylt1=ylt0且xlt1=xlt0-offset,其中offset是诸如4、8或16的正数。

xiii.例如,如果xlt0–offset<xlt_al,其中xlt_al是当前块的左上方的临近基本块(诸如图23中的块al)的左上坐标,并且当前块的左边界也是ctu的左边界,则ylt1=ylt0且xlt1=xlt0+offset,其中offset是诸如4、8或16的正数。

xiv.例如,如果xlt0+offset>xrt_ar,其中xrt_ar是当前块的右上方的临近基本块(诸如图23中的块ar)的右上坐标,并且当前块的右边界也是ctu的右边界,则ylt1=ylt0且xlt1=xlt0-offset,其中offset是诸如4、8或16的正数。

h)第二基本块可以从若干个候选基本块中选择。

i.例如,m个候选基本块的左上位置被表示为(xc0,yc0)、(xc1yc1)、……、(xcm-1,ycm-1)。按顺序检查m个候选基本块,以找到一个候选基本块,该候选基本块是帧间编解码的并且具有参考与第一基本块的mv所参考的参考图片相同的mv。所找到的候选被选为第二基本块。

1.在一个示例中,m=2。yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0–offset,其中offset是诸如4、8或16的正数。

2.在一个示例中,m=2。xc0=xlt0,yc0=ylt0–offset,xc1=xlt0,yc1=ylt0–offset,其中offset是诸如4、8或16的正数。

3.在一个示例中,m=2。yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,其中offset是诸如4、8或16的正数。

4.在一个示例中,m=2。xc0=xlt0,yc0=ylt0–offset,xc1=xlt0,yc1=ylt0+offset,其中offset是诸如4、8或16的正数。

ii.是否和/或如何从候选基本块中选择第二基本块可以取决于第一基本块的位置和/或当前块的位置。

1.例如,m=1。如果第一块在当前块的左上方(诸如图23中的块al),则yc0=ylt0,xc0=xlt0+offset,其中offset是诸如4、8或16的正数。

a.例如,在其他情况下,m=2。yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,其中offset是诸如4、8或16的正数。

2.例如,m=1。如果第一块在当前块的右上方(诸如图23中的块ar),则yc0=ylt0,xc0=xlt0-offset,其中offset是诸如4、8或16的正数。

a.例如,在其他情况下,m=2。yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,其中offset是诸如4、8或16的正数。

3.例如,m=1。如果第一块在当前块的左上方(诸如图23中的块al),并且当前块的左边界也是ctu的左边界,则yc0=ylt0,xc0=xlt0+offset,其中offset是诸如4、8或16的正数。

a.例如,在其他情况下,m=2。yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,其中offset是诸如4、8或16的正数。

4.例如,m=1。如果第一块在当前块的右上方(诸如图23中的块ar),并且当前块的右边界也是ctu的右边界,则yc0=ylt0,xc0=xlt0-offset,其中offset是诸如4、8或16的正数。

a.例如,在其他情况下,m=2。yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,其中offset是诸如4、8或16的正数。

5.例如,m=1。如果xlt0–offset<xlt_al,其中xlt_al是当前块的左上方的临近基本块(诸如图23中的块al)的左上坐标,则yc0=ylt0,xc0=xlt0+offset,其中offset是诸如4、8或16的正数。

a.例如,在其他情况下,m=2。yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,其中offset是诸如4、8或16的正数。

6.例如,m=1。如果xlt0+offset>xrt_ar,其中xrt_ar是当前块的右上方的临近基本块(诸如图23中的块ar)的右上坐标,则yc0=ylt0,xc0=xlt0-offset,其中offset是诸如4、8或16的正数。

a.例如,在其他情况下,m=2。yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,其中offset是诸如4、8或16的正数。

7.例如,m=1。如果xlt0–offset<xlt_al,其中xlt_al是当前块的左上方的临近基本块(例如图23中的块al)的左上坐标,并且当前块的左边界也是ctu的左边界,则yc0=ylt0,xc0=xlt0+offset,其中offset是诸如4、8或16的正数。

a.例如,在其他情况下,m=2。yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,其中offset是诸如4、8或16的正数。

8.例如,m=1。如果xlt0+offset>xrt_ar,其中xrt_ar是当前块的右上方的临近基本块(诸如图23中的块ar)的右上坐标,并且当前块的右边界也是ctu的右边界,则yc0=ylt0,xc0=xlt0-offset,其中offset是诸如4、8或16的正数。

a.例如,在其他情况下,m=2。yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,其中offset是诸如4、8或16的正数。

i)如果不能找到第二基本块,则不能从第一基本块进行仿射继承,该第二基本块是帧间编解码的并且具有参考与第一基本块的mv所参考的参考图片相同的mv。

j)在一个示例中,是否以及如何应用该项目符号中的方法可以取决于当前块的位置。

i.例如,该项目符号中的方法仅在仿射模型从上方的临近块继承并且其不在当前ctu或ctu行中时应用。

ii.例如,该项目符号中的方法仅在仿射模型从上方或左边的临近块继承并且其不在当前ctu时应用。

k)提出了通过从其推导出仿射模型继承的子块来识别第一代表子块。在这种情况下,与从其推导出仿射模型继承的一个块相关联的运动矢量被用作等式(3)中的(mvha,mvva)。

l)提出了如图24所示的实施例。

i.如果当前块从基本块bb继承仿射模型(bb可以是a、ar或al,bb的左上位置是(xbb,ybb),bb必须是仿射编解码的),则bb被视为第一相邻的临近基本块。并且以下过程适用于找到第二相邻的临近基本块。

如果xbb%8==0,则首先检查bb右边的基本块bbr(如果bb是a,则bbr是ar;如果bb是ar,则bbr是ar’;如果bb是al,则bbr是al”);否则(xbb%8!=0),则首先检查bb左边的基本块bbl(如果bb是a,则bbl是a’;如果bb是ar,则bbl是a;如果bb是al,则bbl是al’)。

ii.当首先检查bbr时,如果bbr是仿射编解码的,并且它具有给定的参考列表的与bb相同的参考索引,则bbr被视为第二相邻的临近基本块。否则,bbl将被视为第二相邻的临近基本块。

iii.当首先检查bbl时,如果bbl是仿射编解码的,并且它具有给定的参考列表的与bb相同的参考索引,则bbl被视为第二相邻的临近基本块。否则,bbr将被视为第二相邻的临近基本块。

m)例如,是从多个候选中还是从预定义的偏移中找到第二块取决于第一块的位置和/或当前块的位置。

i.提出了如图24所示的实施例。

1.如果当前块从基本块bb继承仿射模型(bb可以是a、ar或al,bb的左上位置是(xbb,ybb),bb必须是仿射编解码的),则bb被视为第一相邻的临近基本块。并且以下过程适用于找到第二相邻的临近基本块。

a.如果bb是al,并且当前块的左边界是ctu的左边界,则仅检查bb右边的基本块bbr(al”)。如果bbr是仿射编解码的,并且它具有给定的参考列表的与bb相同的参考索引,则bbr被视为第二相邻的临近基本块。否则,从bb继承的仿射模型不可用。

b.否则,如果xbb%s==0,则首先检查bb右边的基本块bbr(如果bb是a,则bbr是ar;如果bb是ar,则bbr是ar’;如果bb是al,则bbr是al”);否则(xbb%s!=0),首先检查bb左边的基本块bbl(如果bb是a,则bbl是a’;如果bb是ar,则bbl是a;如果bb是al,则bbl是al’)。例如,s等于8。

i.当首先检查bbr时,如果bbr是仿射编解码的,并且它具有给定的参考列表的与bb相同的参考索引,则bbr被视为第二相邻的临近基本块。否则,bbl将被视为第二相邻的临近基本块。

ii.当首先检查bbl时,如果bbl是仿射编解码的,并且它具有给定的参考列表的与bb相同的参考索引,则bbl被视为第二相邻的临近基本块。否则,bbr将被视为第二相邻的临近基本块。

n)在本文档中公开的第一基本单元和第二基本单元之间的offset是正整数。

i.在一个示例中,offset必须是2k的形式。

ii.在一个示例中,offset可以取决于最小允许的cu宽度。

iii.在一个示例中,offset可以取决于最小允许的cu高度。

iv.在一个示例中,offset可以取决于基本块宽度。

v.在一个示例中,offset可能取决于基本块高度。

vi.在一个示例中,offset可以取决于仿射编解码适用的cu的最小允许宽度。

vii.在一个示例中,offset可以取决于仿射编解码适用的cu的最小允许高度。

viii.在一个示例中,offset可以从编码器信令通知给解码器。

o)如果当基本块q是第一块时,基本块p被选择作为第二块,则当p是第一块时,不允许选择q作为第二块。

i.在一个示例中,不允许p是第一块。

ii.在一个示例中,当p是第一块时,如果q在p的右边,则第二块只能从p的左边的基本单元中选择。

iii.在一个示例中,当p是第一块时,如果q在p的左边,则第二块只能从p的右边的基本单元中选择。

iv.在一个示例中,当p是第一块时,如果q在p的下方,则第二块只能从p的上方的基本单元中选择。

v.在一个示例中,当p是第一块时,如果q在p的上方,则第二块只能从p的下方的基本单元中选择。

p)在一个示例中,相邻的临近基本块可以在与当前块相邻的行或列上。例如,在图23中,al’、ar’、lb’也可以被视为相邻的临近块。

q)在一个示例中,如果第一基本块满足以下条件中的一个、几个或全部,则认为它是“有效的”:

i.它是帧间编解码的;

ii.它不是帧内块复制编解码的;

iii.它是仿射编解码的;

iv.它是仿射merge编解码的;

v.它是仿射帧间编解码的;

r)在一个示例中,第二基本块是否被认为是“有效的”可以取决于第一基本块的信息。

s)在一个示例中,如果第二基本块满足以下条件中的一个、几个或全部,则认为它是“有效的”:

i.它是帧间编解码的;

ii.它不是帧内块复制编解码的;

iii.它是仿射编解码的;

iv.它是仿射merge编解码的;

v.它是仿射帧间编解码的;

vi.它具有与第一基本块相同的帧间预测方向;

vii.它具有与第一基本块相同的参考列表0的参考索引;

viii.它具有与第一基本块相同的参考列表1的参考索引;

ix.它具有与第一基本块相同的帧间预测方向和相同的参考索引;

x.它具有与第一基本块相同的参考列表x(x是0和/或1)中参考图片的图片顺序计数(poc)值;

t)在一个示例中,检查临近基本块(诸如图24中的ar、a和al1)上方的每个候选,以便确定它是否是有效的第一基本块。例如,顺序可以是ar、a、al1或a、ar、al1。

i.在一个示例中,如果检查一个基本块bb(bb可以是ar、a或al1),并且bb是有效的第一基本块,则检查其左边的基本块和/或其右边的基本块,以便找到对应的第二基本块。

1.在一个示例中,首先检查bb右边的基本块bbr。如下给出用于确定第一基本块和第二基本块的详细步骤的示例:

-如果bbr是有效的第二基本块,则输出bb和bbr作为第一基本块和第二基本块;

-否则(bbr无效),检查bb左边的基本块bbl;

i.如果bbl是有效的第二基本块,则输出bb和bbl作为第一基本块和第二基本块;

ii.否则(bbl无效),则按顺序检查下一个基本块是第一基本块。在替代示例中,不能输出有效的第一基本块和第二基本块。

2.可替换地,首先检查bb左边的基本块bbl。如下给出用于确定第一基本块和第二基本块的详细步骤的示例:

-如果bbl是有效的第二基本块,则输出bb和bbl作为第一基本块和第二基本块;

-否则(bbl无效),检查bb右边的基本块bbr;

i.如果bbr是有效的第二基本块,则输出bb和bbr作为第一基本块和第二基本块;

ii.否则(bbr无效),则按顺序检查下一个基本块,确定它是否是有效的第一基本块。

1.可替换地,没有有效的第一基本块和第二基本块可以从上方临近基本块输出。

ii.在一个示例中,如果检查一个基本块bb(bb可以是ar、a或al1),并且bb是有效的第一基本块,则仅检查其左边的基本块bbl,以找到对应的第二基本块。如下给出用于确定第一基本块和第二基本块的详细步骤的示例:

-如果bbl是有效的第二基本块,则输出bb和bbl作为第一基本块和第二基本块;

-否则(bbl无效),则输出bb和bb右边的基本块bbr作为第一基本块和第二基本块;

a.可替换地,bb不被用作第一基本块,并且按顺序检查下一个基本块以确定它是否是有效的第一基本块。

b.可替换地,没有有效的第一基本块和第二基本块可以从上方临近基本块输出。

iii.可替换地,如果检查基本块bb(bb可以是ar、a或al1),并且bb是有效的第一基本块,则仅检查其右边的基本块bbr以找到对应的第二基本块。如下给出用于确定第一基本块和第二基本块的详细步骤的示例:

-如果bbr是有效的第二基本块,则输出bb和bbr作为第一基本块和第二基本块;

-否则(bbr无效),则输出bb和bb左边的基本块bbl作为第一基本块和第二基本块;

a.可替换地,bb不被用作第一基本块,并且按顺序检查下一个基本块以确定它是否是有效的第一基本块。

b.可替换地,没有有效的第一基本块和第二基本块可以从上方临近基本块输出。

图27和图28示出了如何选择第一基本块和第二基本块的两个示例性流程图。

iv.在一个示例中,可以检查哪个上方临近基本块来确定第一基本块可以取决于当前块的位置和/或仿射运动补偿的子块尺寸。

1.例如,如果当前块在ctu的左边界,则候选基本块是图24中的ar、a和al”。例如,如果xpos00%ctu_w==0(xpos00是当前块的左上坐标,ctu_w是ctu的宽度),则当前块位于ctu的左边界。

a.例如,如果当前块位于ctu的左边界,则候选基本块是ar、a和al”;否则,候选是ar、a和al1。

v.基本块是否可以用作第一基本块可以取决于当前块的位置。

1.例如,如果当前块位于ctu的左边界,则图24中的基本块al1不能用作第一基本块。

2.例如,如果当前块位于ctu的左边界,则图24中的基本块al’不能用作第一基本块。

3.例如,如果当前块位于ctu的右边界,则图24中的基本块ar不能用作第一基本块。例如,如果(xpos00+w)%ctu_w==0(xpos00是当前块的左上坐标,w是当前块的宽度,ctu_w是ctu的宽度),则当前块位于ctu的右边界。

4.例如,如果当前块位于ctu的右边界,则图24中的基本块ar’不能用作第一基本块。

vi.基本块是否可以用作第二基本块可以取决于当前块的位置。

1.例如,如果当前块位于ctu的左边界,则图24中的基本块al1不能用作第二基本块。

2.例如,如果当前块位于ctu的左边界,则图24中的基本块al’不能用作第二基本块。

3.例如,如果当前块位于ctu的右边界,则图24中的基本块ar不能用作第二基本块。

4.例如,如果当前块位于ctu的右边界,则图24中的基本块ar’不能用作第二基本块。

u)在一个示例中,可以交换第一基本块和第二基本块。

i.在一个示例中,首先交换输出的第一基本块和第二基本块,然后将其用于对一个块进行解码。

ii.可替换地,可以交换上述第一基本块和第二基本块的确定过程。

图23示出了两个相邻的临近块的mv的示例。

对所存储的仿射参数的扩展

8.可以在存储之前对所存储的仿射参数进行移位。假设要存储m(m可以是a、b、c或d),则

a)例如,m’=satshift(m,n)。存储m’而不是m。

b)例如,m’=shift(m,n)。存储m’而不是m。

c)例如,n是整数,诸如2或4;

i.在一个示例中,n取决于运动精度。

ii.在一个示例中,对于不同的仿射参数,n可以不同。

i.在一个示例中,n可以在vps/sps/pps//条带头/片组头/片/ctu/cu中被信令通知。

ii.在另一示例中,n在不同的标准等级/级别/层级中可能不同。

d)在一个示例中,所存储的仿射参数在用于仿射继承之前首先左移。

e)在一个示例中,首先对所存储的m’进行移位,然后在其用于仿射继承之前对其进行限幅。

对仿射hmvp的扩展

9.在一个示例中,如项目符号1和项目符号2中公开的第一组中的cpmv可以存储在仿射hmvp缓冲器/表/列表中,以表示一个基于历史的候选仿射模型。

10.在一个示例中,如项目符号3中公开的cpmv之间的差可以存储在仿射hmvp缓冲器/表/列表中,以表示一个基于历史的候选仿射模型。

11.本文中提出的诸如项目符号4和项目符号5的所有方法都可以应用于仿射hmvp缓冲器/表/列表中存储的cpmv或cpmv之间的差。

12.当cpmv或cpmv之间的差不是来自临近块而是来自仿射历史缓冲器/表/列表时,可以应用项目符号6中公开的所有方法。

更精确的mv位置

13.提出了用于从一个块进行仿射继承的mv的位置应该与用于推导出该块的mv的位置对齐。

a)在如图20所示的一个示例中,通过使用4参数模型以及通过下式来推导出当前cu的控制点矢量

并且如果当前cu使用6参数仿射运动模型,则通过下式推导出控制点矢量

i.例如,offx=1且offy=-1;

ii.例如,offx=2且offy=-2;

iii.例如,offx=1且offy=-2;

iv.例如,offx=2且offy=-1;

v.例如,offx=1且offy=-3;

vi.例如,offx=2且offy=-3;

b)在如图20所示的一个示例中,通过使用4参数模型以及通过下式来推导出当前cu的控制点矢量

并且如果当前cu使用6参数仿射运动模型,则通过下式推导出控制点矢量

i.例如,offx=-1和offy=-1;

ii.例如,offx=-2和offy=-2;

iii.例如,offx=-1和offy=-2;

iv.例如,offx=-2和offy=-1;

v.例如,offx=-1和offy=-3;

vi.例如,offx=-2和offy=-3;

5.实施例

在一个实施例中,项目符号6被应用于不在ctu行边界处进行仿射继承。示例性解码过程被指定为(这里的章节编号是指vvc标准的当前版本):

8.3.3.2子块merge模式下运动矢量和参考索引的推导过程

……

2.当sps_affine_enabled_flag等于1时,样点位置(xnba0,ynba0)、(xnba1,ynba1)、(xnba2,ynba2)、(xnbb0,ynbb0)、(xnbb1,ynbb1)、(xnbb2,ynbb2)、(xnbb3,ynbb3)以及变量numsbx和numsby的推导如下:

(xa0,ya0)=(xcb-2,ycb+cbheight+2)(8-309)

(xa1,ya1)=(xcb-2,ycb+cbheight-2)(8-310)

(xa2,ya2)=(xcb-1,ycb)(8-311)

(xb0,yb0)=(xcb+cbwidth+2,ycb-2)(8-312)

(xb1,yb1)=(xcb+cbwidth-2,ycb-2)(8-313)

(xb2,yb2)=(xcb-2,ycb-2)(8-314)

(xb3,yb3)=(xcb,ycb-1)(8-315)

numsbx=cbwidth>>2(8-316)

numsby=cbheight>>2(8-317)

3.当sps_affine_enabled_flag等于1时,变量availableflaga被设置为等于false,并且以下内容适用于从(xnba0,ynba0)到(xnba1,ynba1)的(xnbak,ynbak):

-以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)和临近亮度位置(xnbak,ynbak)作为输入,调用如条款6.4.x中指定的块的可用性推导过程,并且将输出分配给块可用性标志availableak。

-当availableak等于true且motionmodelidc[xnbak][ynbak]大于0且availableflaga等于false时,以下情况适用:

-变量availableflaga被设置为等于true,motionmodelidca被设置为等于motionmodelidc[xnbak][ynbak],(xnb,ynb)被设置为等于(cbposx[xnbak][ynbak],cbposy[xnbak][ynbak]),nbw被设置为等于cbwidth[xnbak][ynbak],nbh被设置为等于cbheight[xnbak][ynbak],并且numcpmv被设置为等于motionmodelidc[xnbak][ynbak]+1。

-对于被0或1替换的x,以下情况适用:

-当predflaglx[xnbak][ynbak]等于1时,以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度和高度(cbwidth,cbheight)、临近亮度编解码块位置(xnb,ynb)、临近子块中心位置(xnbak,ynbak)、临近亮度编解码块宽度和高度(nbw,nbh)以及控制点运动矢量的数量numcpmv作为输入,以控制点运动矢量预测值候选cpmvlxa[cpidx](其中cpidx=0..numcpmv-1)作为输出,调用如条款8.3.3.5中指定的从临近块推导出亮度仿射控制点运动矢量的推导过程。

-进行以下分配:

predflaglxa=predflaglx[xnbak][ynbak](8-318)

refidxlxa=refidxlx[xnbak][ynbak](8-319)

4.当sps_affine_enabled_flag等于1时,变量availableflagb被设置为等于false,并且以下内容适用于从(xnbb0,ynbb0)到(xnbb2,ynbb2)的(xnbbk,ynbbk):

-以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)和临近亮度位置(xnbbk,ynbbk)作为输入,调用如条款6.4.x中指定的块的可用性推导过程,并且将输出分配给块可用性标志availablebk。

-当availablebk等于true且motionmodelidc[xnbbk][ynbbk]大于0且availableflagb等于false时,以下情况适用:

-变量availableflagb被设置为等于true,motionmodelidcb被设置为等于motionmodelidc[xnbbk][ynbbk],(xnb,ynb)被设置为等于(cbposx[xnbab][ynbbk],cbposy[xnbbk][ynbbk]),nbw被设置为等于cbwidth[xnbbk][ynbbk],nbh被设置为等于cbheight[xnbbk][ynbbk],并且numcpmv被设置为等于motionmodelidc[xnbbk][ynbbk]+1。

-对于被0或1替换的x,以下情况适用:

-当predflaglx[xnbbk][ynbbk]等于true时,以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度和高度(cbwidth,cbheight)、临近亮度编解码块位置(xnb,ynb)、临近子块中心位置(xnbbk,ynbbk)、临近亮度编解码块宽度和高度(nbw,nbh)以及控制点运动矢量的数量numcpmv作为输入,以控制点运动矢量预测值候选cpmvlxb[cpidx](其中cpidx=0..numcpmv-1)作为输出,调用如条款8.3.3.5中指定的从临近块推导出亮度仿射控制点运动矢量的推导过程。

-进行以下分配:

8.3.3.5从临近块推导亮度仿射控制点运动矢量的推导过程

该过程的输入为:

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

-两个变量cbwidth和cbheight,指定当前亮度编解码块的宽度和高度,

-亮度位置(xnb,ynb),指定相对于当前图片的左上亮度样点的临近亮度编解码块的左上样点,

-亮度位置(xnbc,ynbc),指定相对于当前图片的左上亮度样点的临近亮度编解码子块的中心样点,

-两个变量nnbw和nnbh,指定临近亮度编解码块的宽度和高度,

-控制点运动矢量的数量numcpmv。

该过程的输出是亮度仿射控制点矢量cpmvlx[cpidx],其中cpidx=0..numcpmv–1,并且x为0或1。

变量isctuboundary被推导如下:

-如果以下所有条件均为真,则isctuboundary被设置为等于true:

-((ynb+nnbh)%ctbsizey)等于0

-ynb+nnbh等于ycb

-否则,isctuboundary被设置为等于false。

变量log2nbw和log2nbh推导如下:

log2nbw=log2(nnbw)(8-369)

log2nbh=log2(nnbh)(8-370)

变量mvscalehor、mvscalever、dhorx和dverx的推导如下:

-如果isctuboundary等于true,则以下情况适用:

mvscalehor=mvlx[xnb][ynb+nnbh-1][0]<<7(8-371)

mvscalever=mvlx[xnb][ynb+nnbh-1][1]<<7(8-372)

dhorx=(mvlx[xnb+nnbw-1][ynb+nnbh-1][0]-mvlx[xnb][ynb+nnbh-1][0])<<(7-log2nbw)(8-373)

dverx=(mvlx[xnb+nnbw-1][ynb+nnbh-1][1]-mvlx[xnb][ynb+nnbh-1][1])<<(7-log2nbw)(8-374)

-否则(isctuboundary等于false),以下情况适用:

mvscalehor=mvlx[xnbc][ynbc][0][0]<<7(8-375)

mvscalever=mvlx[xnbc][ynbc][0][1]<<7(8-376)

dhorx=(cpmvlx[xnb+nnbw-1][ynb][1][0]-cpmvlx[xnb][ynb][0][0])<<(7-log2nbw)(8-377)

dverx=(cpmvlx[xnb+nnbw-1][ynb][1][1]-cpmvlx[xnb][ynb][0][1])<<(7-log2nbw)(8-378)

变量dhory和dvery推导如下:

-如果isctuboundary等于false,并且motionmodelidc[xnb][ynb]等于2,则以下情况适用:

dhory=(cpmvlx[xnb][ynb+nnbh-1][2][0]-cpmvlx[xnb][ynb][2][0])<<(7-log2nbh)(8-379)

dvery=(cpmvlx[xnb][ynb+nnbh-1][2][1]-cpmvlx[xnb][ynb][2][1])<<(7-log2nbh)(8-380)

-否则(isctuboundary等于true或motionmodelidc[xnb][ynb]等于1),以下情况适用:

dhory=-dverx(8-381)

dvery=dhorx(8-382)

亮度仿射控制点运动矢量cpmvlx[cpidx](其中cpidx=0..numcpmv–1,并且x为0或1)推导如下:

-当isctuboundary等于true时,ynb被设置为等于ycb。然后xnbc被设置为等于xnb,ynbc被设置为等于ynb。

-前两个控制点运动矢量cpmvlx[0]和cpmvlx[1]推导如下:

cpmvlx[0][0]=(mvscalehor+dhorx*(xcb-xnbc)+dhory*(ycb-ynbc))(8-383)

cpmvlx[0][1]=(mvscalever+dverx*(xcb-xnbc)+dvery*(ycb-ynbc))(8-384)

cpmvlx[1][0]=(mvscalehor+dhorx*(xcb+cbwidth-xnbc)+dhory*(ycb-ynbc))(8-385)

cpmvlx[1][1]=(mvscalever+dverx*(xcb+cbwidth-xnbc)+dvery*(ycb-ynbc))(8-386)

-如果numcpmv等于3,则第三控制点矢量cpmvlx[2]推导如下:

cpmvlx[2][0]=(mvscalehor+dhorx*(xcb-xnbc)+dhory*(ycb+cbheight-ynbc))(8-387)

cpmvlx[2][1]=(mvscalever+dverx*(xcb-xnbc)+dvery*(ycb+cbheight-ynbc))(8-388)

-以设置为等于cpmvlx[cpidx]的mvx、设置为等于7的rightshift、以及设置为等于0的leftshift作为输入,并且以取整的cpmvlx[cpidx]作为输出(其中x为0或1,并且cpidx=0..numcpmv-1),调用如条款8.3.2.12中指定的运动矢量的取整过程。

……

8.3.3.7亮度仿射控制点运动矢量预测值的推导过程

该过程的输入为:

……

1.列表numcpmvpcandlx中的控制点运动矢量预测值候选的数量被设置为等于0。

2.变量availableflaga和availableflagb都被设置为等于false。

3.样点位置(xnba0,ynba0)、(xnba1,ynba1)、(xnba2,ynba2)、(xnbb0,ynbb0)、(xnbb1,ynbb1)和(xnbb2,ynbb2)推导如下:

(xa0,ya0)=(xcb-2,ycb+cbheight+2)(8-440)

(xa1,ya1)=(xcb-2,ycb+cbheight-2)(8-441)

(xb0,yb0)=(xcb+cbwidth+2,ycb-2)(8-442)

(xb1,yb1)=(xcb+cbwidth-2,ycb-2)(8-443)

(xb2,yb2)=(xcb-2,ycb-2)(8-444)

4.以下内容适用于从(xnba0,ynba0)到(xnba1,ynba1)的(xnbak,ynbak):

-以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)和临近亮度位置(xnbak,ynbak)作为输入,调用如条款6.4.x[ed.(bb):neighbouringblocksavailabilitycheckingprocesstbd]中指定的块的可用性推导过程,并且将输出分配给块可用性标志availableak。

-当availableak等于true且motionmodelidc[xnbak][ynbak]大于0且availableflaga等于false时,以下情况适用:

-变量(xnb,ynb)被设置为等于(cbposx[xnbak][ynbak],cbposy[xnbak][ynbak]),nbw被设置为等于cbwidth[xnbak][ynbak],并且nbh被设置为等于cbheight[xnbak][ynbak]。

-如果predflaglx[xnbak][ynbak]等于1,并且diffpicordercnt(refpiclistx[refidxlx[xnbak][ynbak]],refpiclistx[refidxlx])等于0,则以下情况适用:

-变量availableflaga被设置为真

-以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度和高度(cbwidth,cbheight)、临近亮度编解码块位置(xnb,ynb)、临近亮度编解码块宽度和高度(nbw,nbh)以及控制点运动矢量的数量numcpmv作为输入,以控制点运动矢量预测值候选cpmvplx[cpidx](其中cpidx=0..numcpmv-1)作为输出,调用如条款8.3.3.5中指定的从临近块推导出亮度仿射控制点运动矢量的推导过程。

-以设置为等于cpmvplx[cpidx]的mvx、设置为等于2的rightshift、以及设置为等于2的leftshift作为输入,并且以取整的cpmvplx[cpidx]作为输出(其中cpidx=0..numcpmv-1),调用如条款8.3.2.12中指定的运动矢量的取整过程。

-进行以下分配:

cpmvplistlx[numcpmvpcandlx][0]=cpmvplx[0](8-445)

cpmvplistlx[numcpmvpcandlx][1]=cpmvplx[1](8-446)

cpmvplistlx[numcpmvpcandlx][2]=cpmvplx[2](8-447)

numcpmvpcandlx=numcpmvpcandlx+1(8-448)

-否则如果predflagly[xnbak][ynbak](其中y=!x)等于1且diffpicordercnt(refpiclisty[refidxly[xnbak][ynbak]],refpiclistx[refidxlx])等于0,则以下情况适用:

-变量availableflaga被设置为true

-以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度和高度(cbwidth,cbheight)、临近亮度编解码块位置(xnb,ynb)、临近子块中心位置(xnbak,ynbak)、临近亮度编解码块宽度和高度(nbw,nbh)以及控制点运动矢量的数量numcpmv作为输入,以控制点运动矢量预测值候选cpmvply[cpidx](其中cpidx=0..numcpmv-1)作为输出,调用如条款8.3.3.5中指定的从临近块推导出亮度仿射控制点运动矢量的推导过程。

-以设置为等于cpmvply[cpidx]的mvx、设置为等于2的rightshift、以及设置为等于2的leftshift作为输入,并且以取整的cpmvply[cpidx]作为输出(其中cpidx=0..numcpmv-1),调用如条款8.3.2.12中指定的运动矢量的取整过程。

-进行以下分配:

cpmvplistlx[numcpmvpcandlx][0]=cpmvply[0](8-449)

cpmvplistlx[numcpmvpcandlx][1]=cpmvply[1](8-450)

cpmvplistlx[numcpmvpcandlx][2]=cpmvply[2](8-451)

numcpmvpcandlx=numcpmvpcandlx+1(8-452)

5.以下内容适用于从(xnbb0,ynbb0)到(xnbb2,ynbb2)的(xnbbk,ynbbk):

-以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)和临近亮度位置(xnbbk,ynbbk)作为输入,调用如条款6.4.x[ed.(bb):neighbouringblocksavailabilitycheckingprocesstbd]中指定的块的可用性推导过程,并且将输出分配给块可用性标志availablebk。

-当availablebk等于true且motionmodelidc[xnbbk][ynbbk]大于0且availableflagb等于false时,以下情况适用:

-变量(xnb,ynb)被设置为等于(cbposx[xnbbk][ynbbk],cbposy[xnbbk][ynbbk]),nbw被设置为等于cbwidth[xnbbk][ynbbk],并且nbh被设置为等于cbheight[xnbbk][ynbbk]。

-如果predflaglx[xnbbk][ynbbk]等于1,并且diffpicordercnt(refpiclistx[refidxlx[xnbbk][ynbbk]],refpiclistx[refidxlx])等于0,则以下情况适用:

-变量availableflagb被设置为true

-以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度和高度(cbwidth,cbheight)、临近亮度编解码块位置(xnb,ynb)、临近子块中心位置(xnbbk,ynbbk)、临近亮度编解码块宽度和高度(nbw,nbh)以及控制点运动矢量的数量numcpmv作为输入,以控制点运动矢量预测值候选cpmvplx[cpidx](其中cpidx=0..numcpmv-1)作为输出,调用如条款8.3.3.5中指定的从临近块推导出亮度仿射控制点运动矢量的推导过程。

-以设置为等于cpmvplx[cpidx]的mvx、设置为等于2的rightshift、以及设置为等于2的leftshift作为输入,并且以取整的cpmvplx[cpidx]作为输出(其中cpidx=0..numcpmv-1),调用如条款8.3.2.12中指定的运动矢量的取整过程。

-进行以下分配:

cpmvplistlx[numcpmvpcandlx][0]=cpmvplx[0](8-453)

cpmvplistlx[numcpmvpcandlx][1]=cpmvplx[1](8-454)

cpmvplistlx[numcpmvpcandlx][2]=cpmvplx[2](8-455)

numcpmvpcandlx=numcpmvpcandlx+1(8-456)

-否则,如果predflagly[xnbbk][ynbbk](其中y=!x)等于1且diffpicordercnt(refpiclisty[refidxly[xnbbk][ynbbk]],refpiclistx[refidxlx])等于0,则以下情况适用:

-变量availableflagb被设置为true

-以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度和高度(cbwidth,cbheight)、临近亮度编解码块位置(xnb,ynb)、临近亮度编解码块宽度和高度(nbw,nbh)、以及控制点运动矢量的数量numcpmv作为输入,以控制点运动矢量预测值候选cpmvply[cpidx](其中cpidx=0..numcpmv-1)作为输出,调用如条款8.3.3.5中指定的从临近块推导出亮度仿射控制点运动矢量的推导过程。

-以设置为等于cpmvply[cpidx]的mvx、设置为等于2的rightshift、以及设置为等于2的leftshift作为输入,并且以取整的cpmvply[cpidx]作为输出(其中cpidx=0..numcpmv-1),调用如条款8.3.2.12中指定的运动矢量的取整过程。

-进行以下分配:

cpmvplistlx[numcpmvpcandlx][0]=cpmvply[0](8-457)

cpmvplistlx[numcpmvpcandlx][1]=cpmvply[1](8-458)

cpmvplistlx[numcpmvpcandlx][2]=cpmvply[2](8-459)

numcpmvpcandlx=numcpmvpcandlx+1(8-460)

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

图25是视频处理的示例方法2500的流程图。方法2500包括:将用于确定其他视频块的继承运动信息的第一组运动矢量(mv)、用于推导当前视频块的子块的mv的第二组mv、以及包括在当前视频块的比特流表示中的第三组mv与当前视频块相关联(2502);以及使用第一组mv、第二组mv或第三组mv来执行(2504)当前视频块和比特流表示之间的转换。

应当理解,已经公开了几种技术,这些技术通过允许在基于仿射编解码的视频编码和解码期间减少用于存储cpmv的内存量,将有益于结合在诸如智能手机、膝上型电脑、台式机和类似设备的视频处理设备内的视频编码器和解码器实施例。可以使用以下基于子句的描述来描述各种实施例和技术。

1.一种视频处理的方法,包括:

将用于确定其他视频块的继承运动信息的第一组运动矢量(mv)、用于推导当前视频块的子块的mv的第二组mv、以及包括在当前视频块的比特流表示中的第三组mv与当前视频块相关联;以及

使用第一组mv、第二组mv或第三组mv来执行当前视频块和比特流表示之间的转换。

2.根据条款1所述的方法,其中,第一组mv包括分别位于代表点(xf0,yf0)、(xf1,yf1)和(xf2,yf2)的控制点mv(cpmv)mvf0、mvf1和mvf2。

3.根据条款1-2中任一项所述的方法,其中,第二组mv包括分别位于代表点(xs0,ys0)、(xs1,ys1)和(xs2,ys2)的控制点mv(cpmv),表示为mvs0、mvs1和mvs2。

4.根据条款1-3中任一项所述的方法,其中,第三组mv包括分别位于代表点(xt0,yt0)、(xt1,yt1)和(xt2,yt2)的控制点mv(cpmv),表示为mvt0、mvt1和mvt2。

5.根据条款1-4中任一项所述的方法,其中,第二组mv与第三组mv相同。

6.根据条款1-5中任一项所述的方法,其中,第一组mv是从第二组mv或第三组mv推导出的。

7.根据条款1-2中任一项所述的方法,其中,第一组中两个控制点mv的代表点之间的相对偏移独立于当前视频块的宽度或高度。

8.根据条款2所述的方法,其中:

yf1=yf0,xf1=xf0+pw,或

xf1=xf0,yf1=yf0+ph,或

yf2=yf0,xf2=xf0+pw,或

xf2=xf0,yf2=yf0+ph,或

yf2=yf1,xf2=xf1+pw,或

xf2=xf1,yf2=yf1+ph,或

其中,pw和ph是整数。

8.根据条款4-7中任一项所述的方法,其中

mvf0=mvs0,(xf0,yf0)=(xs0,ys0),或mvf0=mvt0,(xf0,yf0)=(xt0,yt0);或者

mvf0=mvs1,(xf0,yf0)=(xs1,ys1),或mvf0=mvt1,(xf0,yf0)=(xt1,yt1);或者

mvf0=mvs2,(xf0,yf0)=(xs2,ys2),或mvf0=mvt2,(xf0,yf0)=(xt2,yt2)。

9.根据条款2-8中任一项所述的方法,还包括存储差值d1=mvf1-mvf0。

10.根据条款2-9中任一项所述的方法,还包括存储差值d2=mvf2-mvf0。

11.根据条款9-10中任一项所述的方法,其中,存储包括存储运动矢量值的比特移位版本。

12.根据条款11所述的方法,其中,存储还包括在存储之前对运动矢量值进行限幅。

条款1-12的其他示例和实施例在第4节中描述,例如,第1-3项。

13.一种视频处理的方法,包括:使用当前块的仿射继承运动矢量(mv)来执行当前块和当前块的比特流表示之间的转换,其中,仿射继承mv是从(1)为相邻的临近基本块(表示为badj)而存储的mv或者(2)仿射历史列表中推导出的。

14.根据条款13所述的方法,其中,为badj存储的mv包括:l(左)、a(上)、lb(左下)、ar(右上)和al(左上),并且其中,badj是4×4尺寸的块。

15.根据条款13-14中任一项所述的方法,其中,使用位置(x0,y0)处的badj的运动矢量mva来计算当前块中位置(x,y)处的mv,其中(x0,y0)是以下之一:(a)badj内部的位置,或(b)badj的外部或边界上的位置。

16.根据条款15所述的方法,其中,位置(x,y)是(1)在当前块的子块中,或(2)在当前块的角。

17.根据条款13-16中任一项所述的方法,其中,当前块使用4参数仿射模型。

18.根据条款13-16中任一项所述的方法,其中,当前块使用6参数仿射模型。

条款13-18的其他示例和实施例在第4节中描述,例如,第3-6项。

19.一种视频处理的方法,包括:使用当前块的仿射继承运动矢量(mv)来执行当前块和当前块的比特流表示之间的转换,其中,仿射继承mv是从存储在与当前块相邻地临近的第一基本块中的第一mv和存储在与第一构建块有一偏移的第二基本块中的第二mv中推导出的。

20.根据条款19所述的方法,其中,仿射继承mv是使用利用系数a和b加权的运动矢量之间的x差和y差的线性加权而推导的,其中a和b是从偏移中推导出的。

21.根据条款19-20中任一项所述的方法,其中,该偏移的值是第一基本块的位置的函数。

22.根据条款19-21中任一项所述的方法,其中,通过按顺序检查m个候选基本块,从m个候选基本块中选择第二基本块,其中m是整数。

23.根据条款19-22中任一项所述的方法,其中,第一构建块和第二基本构建块是帧间编解码的,并且参考相同的参考图片。

24.根据条款1-23中任一项所述的方法,其中,当前块的仿射参数在存储之前进行移位。

25.根据条款24所述的方法,其中,比特移位量(1)随着转换期间使用的运动精度而变化,或者(2)对于不同的仿射参数是不同的。

26.根据条款24所述的方法,其中,仿射参数在存储之前进行限幅。

27.根据条款1-12中任一项所述的方法,其中,第一组mv中的mv被存储并用于当前块的基于历史的候选仿射模型的基于历史的运动矢量预测值表中。

28.根据条款9-10所述的方法,其中,d1和d2被存储并用于当前块的基于历史的候选仿射模型的基于历史的运动矢量预测值表中。

29.根据条款19所述的方法,其中,与当前块相邻地临近的第一基本块是a(上)、ar(右上)或al(左上)中的一个,并且其中,第一基本块的左上样点被表示为xbb。

30.根据条款29所述的方法,其中(xbb%8=0),其中第一基本块右边的块是仿射编解码的,并且具有给定的参考列表的与第一基本块的参考索引相同的参考索引,并且其中第二基本块是第一基本块右边的块。

31.根据条款29所述的方法,其中(xbb%8=0),其中第一基本块右边的块不是仿射编解码的,或者具有给定的参考列表的与第一基本块的参考索引不同的参考索引,并且其中第二基本块是第一基本块左边的块。

32.根据条款29所述的方法,其中(xbb%8≠0),其中第一基本块左边的块是仿射编解码的,并且具有给定的参考列表的与第一基本块的参考索引相同的参考索引,并且其中第二基本块是第一基本块的左边的块。

33.根据条款29所述的方法,其中(xbb%8≠0),其中第一基本块左边的块不是仿射编解码的,或者具有给定的参考列表的与第一基本块的参考索引不同的参考索引,并且其中第二基本块是第一基本块右边的块。

34.根据条款19所述的方法,其中,与当前块相邻地临近的第一基本块位于与当前块相邻的行或列中。

35.根据条款19所述的方法,其中,至少一个仿射继承mv与第一mv或第二mv对准。

36.根据条款19所述的方法,其中,取决于第一基本块的位置来选择第二基本块,其中第一基本块的位置在当前块的左上、右上、左边界或右边界,并且取决于该位置,基于该位置来选择对应的偏移。

37.根据条款19所述的方法,其中,使用取决于第一基本块的位置或当前块的位置的技术从多个候选块中选择第二基本块。

38.根据条款19-37中任一项所述的方法,其中,基于第一块的位置或当前块的位置做出从多个候选或从预定偏移中找到第二块的决定。

39.根据条款38所述的方法,其中,在当前块从基本块继承仿射模型的情况下,然后将基本块视为第一临近基本块,并根据基于基本块的位置的规则来确定第二临近基本块。

40.根据条款19-39中任一项所述的方法,其中,在基本块p被选择作为第二块并且基本块q被选择作为第一块的情况下,则该方法不包括在另一视频块的转换期间使用基本块p作为第一块并且使用基本块q作为第二块。

41.根据条款41所述的方法,其中,另一视频块与当前视频块处于相同编解码树单元行或相同条带中。

条款36-41中描述的技术的其他特征和示例在第4节第7(g)、7(h)、7(m)、7(n)和7(o)项中提供。

42.根据条款1-41中任一项所述的方法,其中,该转换包括从当前块的像素值生成比特流表示。

43.根据条款1-41中任一项所述的方法,其中,该转换包括从比特流表示生成当前块的像素值。

44.一种视频编码器装置,包括被配置为实施根据条款1-43中的任何一项或多项所述的方法的处理器。

45.一种视频解码器装置,包括被配置为实施根据条款1-43中的任何一项或多项所述的方法的处理器。

46.一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于执行根据条款1至43中任一项所述的方法的程序代码。

图29是处理视频的方法2900的流程图。方法2900包括,将用于确定在第一块之后编解码的块的继承运动信息的第一组控制点运动矢量(cpmv)与用于推导第一块的子块的mv的第二组cpmv或为第一块信令通知的第三组cpmv相关联(2902),其中第一组cpmv与第二组cpmv或第三组cpmv不相同;基于第一组cpmv来确定(2904)在第一块之后编解码的第二块的继承运动信息;通过使用继承运动信息来执行(2906)第二块和第二块的比特流表示之间的转换。

在一些示例中,第一组cpmv是从第二组cpmv或第三组cpmv推导出的。

在一些示例中,该方法还包括:在第一块的转换之后存储第一组cpmv。

在一些示例中,第二组cpmv与第三组cpmv相同。

在一些示例中,第一组cpmv的多个代表点坐标、第二组cpmv的多个代表点坐标和/或第三组cpmv的多个代表点坐标被定义为相对于在仿射运动补偿过程中使用的一个块或子块的坐标。

在一些示例中,第一组cpmv中的两个cpmv的代表点之间的相对偏移独立于第一块的宽度或高度。

在一些示例中,第一组cpmv的代表点在第一块的内部或第一块的外部。

在一些示例中,yf1=yf0,xf1=xf0+pw,或xf1=xf0,yf1=yf0+ph,或yf2=yf0,xf2=xf0+pw,或xf2=xf0,yf2=yf0+ph,或yf2=yf1,xf2=xf1+pw,或xf2=xf1,yf2=yf1+ph,其中(xf0,yf0)、(xf1,yf1)、(xf2,yf2)是第一组的多个代表点的坐标,并且pw和ph是整数。

在一些示例中,pw=2m,或pw=-2m,或ph=2m,或ph=-2m,m是2至7范围内的整数。

在一些示例中,不存储pw和ph。

在一些示例中,pw和ph是固定的。

在一些示例中,pw和ph是在序列参数集(sps)、视频参数集(vps)、图片参数集(pps)、条带头、片组头、片或ctu中的至少一个中被信令通知的。

在一些示例中,pw和ph在不同的标准等级或级别或层级中是不同的。

在一些示例中,pw和ph取决于条带或图片的最大编解码单元(cu)尺寸或/和最小cu尺寸。

在一些示例中,在第一组cpmv中,mvf0=mvs0,(xf0,yf0)=(xs0,ys0),或mvf0=mvt0,(xf0,yf0)=(xt0,yt0);或mvf0=mvs1,(xf0,yf0)=(xs1,ys1),或mvf0=mvt1,(xf0,yf0)=(xt1,yt1);或mvf0=mvs2,(xf0,yf0)=(xs2,ys2),或mvf0=mvt2,(xf0,yf0)=(xt2,yt2);其中,运动矢量mvf0、mvf1、mvf2是第一组cpmv的在多个代表点坐标(xf0,yf0)、(xf1,yf1)、(xf2,yf2)处的多个cpmv,运动矢量mvs0、mvs1、mvs2是第二组cpmv的在多个代表点坐标(xs0,ys0)、(xs1,ys1)、(xs2,ys2)处的多个cpmv,并且运动矢量mvt0、mvt1、mvt2是在第三组cpmv的在多个代表点坐标(xt0,yt0)、(xt1,yt1)、(xt2,yt2)处的多个cpmv。

在一些示例中,通过使用以坐标(xf0,yf0)、(xf1,yf1)和(xf2,yf2)作为仿射模型的输入坐标的4参数仿射模型,从第二组cpmv中的运动矢量mvs0和mvs1中推导出第一组cpmv中的运动矢量mvf0、mvf1和mvf2。

在一些示例中,通过使用以(xf0,yf0)、(xf1,yf1)和(xf2,yf2)作为仿射模型的输入坐标的6参数仿射模型,从第二组cpmv中的运动矢量mvs0、mvs1和mvs2中推导出第一组cpmv中的运动矢量mvf0、mvf1和mvf2。

在一些示例中,通过使用以(xf0,yf0)、(xf1,yf1)和(xf2,yf2)作为仿射模型的输入坐标的4参数仿射模型,从第三组cpmv中的运动矢量mvt0和mvt1中推导出第一组cpmv中的运动矢量mvf0、mvf1和mvf2。

在一些示例中,通过使用以(xf0,yf0)、(xf1,yf1)和(xf2,yf2)作为仿射模型的输入坐标的6参数仿射模型,从第三组cpmv中的运动矢量mvt0、mvt1和mvt2中推导出第一组cpmv中的运动矢量mvf0、mvf1和mvf2。

在一些示例中,仅当第一块是用6参数仿射模型进行编解码的时,才计算包括运动矢量mvf0、mvf1和mvf2的第一组cpmv中的运动矢量mvf2,或者不管第一块是用4参数仿射模型还是6参数仿射模型进行编解码的,都计算包括运动矢量mvf0、mvf1和mvf2的第一组cpmv中的运动矢量mvf2。

在一些示例中,该方法还包括:存储第一组cpmv中的cpmv之间的一个或多个差(d1、d2)。

在一些示例中,第一组mv包括运动矢量mvf0、mvf1和mvf2,存储d1=mvf1-mvf0,或者存储d2=mvf2-mvf0,或者存储d1和d2两者。

在一些示例中,仅当第一块是用6参数仿射模型进行编解码的时,才存储d2。

在一些示例中,当第一块是用6参数仿射模型或6参数仿射模型进行编解码的时,存储d2。

在一些示例中,该方法还包括:一起存储第一组cpmv和第一组cpmv中的cpmv之间的一个或多个差(d1、d2)。

在一些示例中,利用移位函数来移位第一组cpmv中的多个cpmv和/或第一组cpmv中的cpmv之间的一个或多个差,并且存储移位的cpmv和/或差。

在一些示例中,移位函数satshift(x,n)被定义为:其中n是整数,并且offset0和/或offset1被设置为(1<<n)>>1或(1<<(n-1))或((1<<n)>>1)-1,或者offset0和/或offset1被设置为0。

在一些示例中,移位函数satshift(x,n)被定义为:shift(x,n)=(x+offset0)>>n,其中n是整数,并且offset0被设置为(1<<n)>>1或(1<<(n-1))或((1<<n)>>1)-1,或者offset0被设置为0。

在一些示例中,n是2或4,或者n取决于运动精度。

在一些示例中,在存储第一组cpmv中的cpmv的情况下的n不同于在存储第一组cpmv中的cpmv之间的差的情况下的n。

在一些示例中,所存储的cpmv在用于在第一块之后编解码的块的仿射继承之前首先左移。

在一些示例中,用限幅函数对第一组cpmv中的多个cpmv和/或第一组cpmv中的cpmv之间的一个或多个差进行限幅,并且存储限幅后的cpmv和/或差。

在一些示例中,限幅函数clip3(min,max,x)被定义为:

其中,min是限幅函数的较低阈值,max是限幅函数的较高阈值。

在一些示例中,当用k个比特存储cpmv或差时,min=-2k-1,并且max=2k-1-1,k是整数。

在一些示例中,k取决于要存储的是cpmv还是差而不同。

在一些示例中,用移位函数和限幅函数顺序地处理第一组cpmv中的多个cpmv和/或第一组cpmv中的cpmv之间的一个或多个差,并且存储经处理的cpmv和/或差。

在一些示例中,第一组cpmv中的多个cpmv被存储到仿射(历史运动矢量预测)hmvp缓冲器或表或列表中,以表示一个基于历史的候选仿射模型。

在一些示例中,第一组cpmv中的cpmv之间的一个或多个差被存储到仿射(历史运动矢量预测)hmvp缓冲器或表或列表中,以表示一个基于历史的候选仿射模型。

在一些示例中,用移位函数移位和/或用限幅函数限幅存储在hmvp缓冲器或表或列表中的一个或多个cpmv或一个或多个差。

图30是处理视频的方法3000的流程图。方法3000包括:为视频的第一块和第一块的比特流表示之间的转换,基于存储的运动矢量(mv)来推导(3002)视频的第一块的仿射继承运动矢量(mv);通过使用仿射继承mv来执行(3004)转换。

在一些示例中,mv被存储在相邻的临近基本块中。

在一些示例中,mv被存储在仿射(历史运动矢量预测)hmvp缓冲器或表或列表中。

在一些示例中,存储在相邻的临近基本块中的mv至少包括:存储在左边相邻的临近基本块(l)中的mv、存储在上方相邻的临近基本块(a)中的mv、存储在左下相邻的临近基本块(lb)中的mv、存储在右上相邻的临近基本块(ar)中的mv以及存储在左上相邻的临近基本块(al)中的mv。

在一些示例中,相邻的临近基本块是4×4块。

在一些示例中,基于以(x-x0,y-y0)作为仿射模型的输入坐标的仿射模型,通过使用在代表点(x0,y0)处的相邻的临近基本块的第一mv(mva=(mvha,mvva)),推导第一块中的在位置(x,y)处的仿射继承mv。

在一些示例中,代表点(x0,y0)是基本块内部的任何位置。

在一些示例中,代表点(x0,y0)是基本块外部或边界处的任何位置。

在一些示例中,代表点(x0,y0)的坐标是基于相邻的临近基本块中左上角样点的坐标(xtl,ytl)和包括两个变量(i,j)的附加信息来确定的。

在一些示例中,两个变量中的第一变量(i)取决于基本块的宽度,并且两个变量中的第二变量(j)取决于基本块的高度。

在一些示例中,变量(i,j)取决于临近基本块的位置。

在一些示例中,代表点(x0,y0)的坐标是基于第一块的左上样点的坐标(xpos00,ypos00)、第一块的右上样点的坐标(xpos10,ypos00)和第一块的右上样点的坐标(xpos00,ypos01)来确定的。

在一些示例中,左边相邻的临近基本块l的代表点(x0,y0)的坐标是(xpos00-2,ypos01-1);左下相邻的临近基本块(lb)的代表点(x0,y0)的坐标是(xpos00-2,ypos01+3);上方相邻的临近基本块(a)的代表点(x0,y0)的坐标是(xpos10-1,ypos00-2);右上相邻的临近基本块(ar)的代表点(x0,y0)的坐标是(xpos10+3,ypos00-2);左上相邻的临近基本块(al)的代表点(x0,y0)的坐标是(xpos00-2,ypos00-2)。

在一些示例中,附加信息取决于相邻的临近基本块的位置或相邻的临近基本块,或者在序列参数集(sps)、视频参数集(vps)、图片参数集(pps)、条带头、片组头、片、编解码树单元(ctu)、cu中的至少一个中信令通知附加信息。

在一些示例中,附加信息在不同的标准等级或级别或层级中是不同的。

在一些示例中,基于以(x-x0,y-y0)作为仿射模型的输入坐标的仿射模型,通过使用在代表点(x0,y0)处的相邻的临近基本块的第一mv(mva),推导第一块的子块中的在位置(x,y)处的仿射继承mv。

在一些示例中,子块中的在位置(x,y)处的仿射继承mv被用于对子块执行运动补偿。

在一些示例中,基于以(x-x0,y-y0)作为仿射模型的输入坐标的仿射模型,通过使用在代表点(x0,y0)处的相邻的临近基本块的第一mv(mva),推导在作为第一块的角的位置(x,y)处的仿射继承mv,以作为第一块的继承控制点运动矢量(cpmv)。

在一些示例中,继承cpmv被用于预测仿射帧间编解码的第一块的所信令通知的cpmv。

在一些示例中,继承cpmv被直接用作仿射merge编解码的第一块的cpmv。

在一些示例中,当第一块使用4参数仿射模型时,用于推导第一块中的在位置(x,y)处的仿射继承mv的仿射模型是:

其中,a和b是仿射模型的变量。

在一些示例中,当第一块使用6参数仿射模型时,用于推导第一块中的在位置(x,y)处的仿射继承mv的仿射模型是:

其中,a、b、c和d是仿射模型的变量。

在一些示例中,变量a、b或变量a、b、c、d计算如下:

其中,mvt0=(mvht0,mvvt0)、mvt1=(mvht1,mvvt1)、mvt2=(mvht2,mvvt2)分别是在覆盖相邻的临近基本块的第二块的第一组cpmv中的在三个代表点处的cpmv,并且wt和ht取决于第二块的代表点之间的相对偏移,其中,第一组cpmv被用于确定在第二块之后编解码的块的继承运动信息。

在一些示例中,变量a、b或变量a、b、c、d计算如下:

其中,mvt0=(mvht0,mvvt0)、mvt1=(mvht1,mvvt1)、mvt2=(mvht2,mvvt2)分别是在覆盖相邻的临近基本块的第二块的第二组cpmv或第三组cpmv中的在三个代表点处的cpmv,并且wt和ht是第二块的宽度和高度,其中,第二组cpmv被用于推导第二块的每个子块的mv,并且第三组cpmv从编码器信令通知给解码器。

在一些示例中,变量a、b或变量a、b、c、d计算如下:

其中,mvt0=(mvht0,mvvt0)、mvt1=(mvht1,mvvt1)、mvt2=(mvht2,mvvt2)分别是在覆盖相邻的临近基本块的第二块的在三个代表点处的cpmv,并且wt和ht是第二块的宽度和高度,其中,mvht1-mvht0、mvvt1-mvvt0、mvht2-mvht0、mvvt2-mvvt0是直接从用于存储块的cpmv之间的差的存储装置中取出的。

在一些示例中,该转换从比特流表示生成视频的第一/第二块。

在一些示例中,该转换从视频的第一/第二块生成比特流表示。

图31是处理视频的方法3100的流程图。方法3100包括:为视频的当前块和当前块的比特流表示之间的转换,基于第一存储运动矢量(mv)和与第一存储mv不同的第二存储mv来推导(3102)当前块的仿射继承运动矢量(mv),其中第一存储mv被存储在与当前块临近的第一基本块中,并且第二存储mv被存储在与第一基本块有一偏移的第二基本块中;以及通过使用当前块的仿射继承mv来执行(3104)转换。

在一些示例中,与当前块临近的第一基本块包括以下中的至少一个:左边的临近基本块(l)、上方的临近基本块(a)、左下的临近基本块(lb)、右上的临近基本块(ar,ar’)和左上的临近基本块(al,al’,al1,al”)。

在一些示例中,基于具有参数a和b的仿射模型,通过使用存储在点(x0,y0)处第一基本块中的第一存储mv(mva=(mvha,mvva))或与在点(x0,y0)处第一基本块的子块相关联的第一存储mv(mva=(mvha,mvva)),推导当前块中的在位置(x,y)处的仿射继承mv((mvh(x,y),mvv(x,y)),运动矢量((mvh(x,y),mvv(x,y))通过下式来推导:

在一些示例中,参数a和b计算如下:

其中,mvt0=(mvht0,mvvt0)和mvt1=(mvht1,mvvt1)分别被设置为等于存储在第一基本块中的mv和存储在第二基本块中的mv,并且wt是第一基本块和第二基本块之间的水平偏移。

在一些示例中,参数a和b计算如下:

其中,mvt0=(mvht0,mvvt0)和mvt1=(mvht1,mvvt1)分别被设置为等于存储在第一基本块中的mv和存储在第二基本块中的mv,并且ht是第一基本块和第二基本块之间的垂直偏移。

在一些示例中,wt=2n且ht=2m,其中n和m是整数。

在一些示例中,当第一基本块和第二基本块的左上样点的坐标分别是(xlt0,ylt0)和(xlt1,ylt1)时,第一基本块和第二基本块之间的水平偏移被定义为xlt1-xlt0,和/或第一基本块和第二基本块之间的垂直偏移被定义为ylt1-ylt0。

在一些示例中,当第一基本块在当前块的上方时,垂直偏移为0。

在一些示例中,当第一基本块在当前块的左边时,水平偏移为0。

在一些示例中,第二基本块是取决于第一基本块的位置而选择的。

在一些示例中,第一基本块和第二基本块的左上样点的坐标分别是(xlt0,ylt0)和(xlt1,ylt1),并且

其中,当xlt0%m不等于0时,m是整数,ylt1=ylt0且xlt1=xlt0–offset,或者xlt1=xlt0且ylt1=ylt0–offset,其中offset是正数。

在一些示例中,第一基本块和第二基本块的左上样点的坐标分别是(xlt0,ylt0)和(xlt1,ylt1),并且

其中,当xlt0%m等于0时,m是整数,ylt1=ylt0且xlt1=xlt0+offset,或xlt1=xlt0且ylt1=ylt0+offset,其中offset是正数。

在一些示例中,第一基本块和第二基本块的左上样点的坐标分别是(xlt0,ylt0)和(xlt1,ylt1),并且当第一块在当前块的左上方时,或者当第一块在当前块的左上方并且当前块的左边界也是ctu的左边界时,或者当xlt0–offset<xlt_al,其中xlt_al是当前块的左上方的临近基本块的左上坐标时,或者当xlt0–offset<xlt_al,其中xlt_al是当前块的左上方的临近基本块的左上坐标,并且当前块的左边界也是ctu的左边界时,

ylt1=ylt0且xlt1=xlt0+offset,其中offset是正数。

在一些示例中,第一基本块和第二基本块的左上样点的坐标分别是(xlt0,ylt0)和(xlt1,ylt1),并且当第一块在当前块的右上方时,或者当第一块在当前块的右上方,并且当前块的右边界也是ctu的右边界时,或者当xlt0+offset>xrt_ar,其中xlt_ar是当前块的右上方的临近基本块的右上坐标时,或者当xlt0+offset>xrt_ar,其中xlt_ar是当前块的右上方的临近基本块的右上坐标,并且当前块的右边界也是ctu的右边界时,ylt1=ylt0且xlt1=xlt0-offset,其中offset是正数。

在一些示例中,第二基本块是从m个候选基本块中选择的,m是整数。

在一些示例中,通过按顺序检查m个候选基本块以便确定m个候选基本块中的一个,其是帧间编解码的并且具有参考与第一基本块的mv所参考的相同的参考图片的mv,作为第二基本块来选择第二基本块。

在一些示例中,第一基本块的左上样点的坐标是(xlt0,ylt0),并且m个候选基本块的左上位置的坐标分别是(xc0,yc0)、(xc1yc1)、…、(xcm-1,ycm-1),并且当m是2时,yc0=ylt0,xc0=xlt0–offset,且yc1=ylt0,xc1=xlt0+offset,或者xc0=xlt0,yc0=ylt0–offset,且xc1=xlt0,yc1=ylt0+offset,或者yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,或者xc0=xlt0,yc0=ylt0–offset,xc1=xlt0,yc1=ylt0+offset,其中offset是正数。

在一些示例中,是否和/或如何从m个候选基本块中选择第二基本块取决于第一基本块的位置和/或当前块的位置。

在一些示例中,第一基本块的左上样点的坐标是(xlt0,ylt0),并且m个候选基本块的左上位置的坐标分别是(xc0,yc0)、(xc1yc1)、…、(xcm-1,ycm-1),并且当m为1时,如果第一基本块在当前块的左上方,则yc0=ylt0,xc0=xlt0+offset,或者如果第一块在当前块的右上方,则yc0=ylt0,xc0=xlt0-offset,或者如果第一块在当前块的左上方,并且当前块的左边界也是ctu的左边界,则yc0=ylt0,xc0=xlt0+offset,或者如果第一块在当前块的右上方,并且当前块的右边界也是ctu的右边界,则yc0=ylt0,xc0=xlt0-offset,或者如果xlt0–offset<xlt_al,其中xlt_al是当前块左上的临近基本块的左上坐标,则yc0=ylt0,xc0=xlt0+offset,或者如果xlt0+offset>xrt_ar,其中xrt_ar是当前块的右上方的临近基本块的右上坐标,则yc0=ylt0,xc0=xlt0-offset,或者如果xlt0–offset<xlt_al,其中xlt_al是当前块的左上方的临近基本块的左上坐标,并且当前块的左边界也是ctu的左边界,则yc0=ylt0,xc0=xlt0+offset,或者如果xlt0+offset>xrt_ar,其中xrt_ar是当前块的右上方的临近基本块的右上坐标,并且当前块的右边界也是ctu的右边界,则yc0=ylt0,xc0=xlt0-offset,其中offset是正数。

在一些示例中,第一基本块的左上样点的坐标是(xlt0,ylt0),并且m个候选基本块的左上位置的坐标分别是(xc0,yc0)、(xc1yc1)、…、(xcm-1,ycm-1),并且当m为2时,如果第一基本块在当前块的左上方,则yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,或者如果第一基本块在当前块的右上方,则yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,或者如果第一基本块在当前块的左上方,并且当前块的左边界也是ctu的左边界,则yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,或者如果第一基本块在当前块的右上方,并且当前块的右边界也是ctu的右边界,则yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,或者如果xlt0–offset<xlt_al,其中xlt_al是当前块的左上方的临近基本块的左上坐标,则yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,或者如果xlt0+offset>xrt_ar,其中xrt_ar是当前块的右上方的临近基本块的右上坐标,则yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,或者如果xlt0–offset<xlt_al,其中xlt_al是当前块的左上方的临近基本块的左上坐标,并且当前块的左边界也是ctu的左边界,则yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,或者如果xlt0+offset>xrt_ar,其中xrt_ar是当前块的右上方的临近基本块的右上坐标,并且当前块的右边界也是ctu的右边界,则yc0=ylt0,xc0=xlt0–offset,yc1=ylt0,xc1=xlt0+offset,其中offset是正数。

在一些示例中,当不能找到帧间编解码的并且具有参考与第一基本块的mv所参考的参考图片相同的mv的第二基本块时,不能从第一基本块中推导出当前块的仿射继承运动矢量(mv)。

在一些示例中,是否和/或如何推导当前块的仿射继承运动矢量(mv)取决于当前块的位置。

在一些示例中,根据当前块中的临近块是否位于当前块所在的编解码树单元(ctu)或ctu行中,以不同方式从当前块的上方临近块继承当前块的仿射模型。

在一些示例中,当从不位于当前块所在的ctu或ctu行中的、当前块的上方或左边临近块继承当前块的仿射模型时,基于第一存储运动矢量(mv)和第二存储mv,推导出当前块的仿射继承运动矢量(mv)。

在一些示例中,是否和/或如何从多个候选或根据预定义偏移选择第二基本块取决于第一块的位置和/或当前块的位置,并且其中第二基本块是第二临近基本块。

在一些示例中,从与当前块临近的第一基本块继承当前块的仿射模型,该第一基本块是仿射编解码的,并且包括以下中的至少一个:上方的临近基本块(a)、右上的临近基本块(ar)和左上的临近基本块(al),并且其中第一基本块的左上位置是(xbb,ybb)。

在一些示例中,当xbb%8=0时,通过以下方式选择第二临近基本块:

检查第一基本块右边的基本块是否是被仿射编解码的并且具有给定的参考列表的与第一基本块相同的参考索引;并且如果是,则选择第一基本块右边的基本块作为第二临近基本块,否则,选择第一基本块左边的基本块作为第二临近基本块。

在一些示例中,当xbb%8!=0时,通过以下方式选择第二临近基本块:

检查第一基本块左边的基本块是否是被仿射编解码的并且具有给定的参考列表的与第一基本块相同的参考索引;并且如果是,则选择第一基本块左边的块作为第二临近基本块,否则,选择第一基本块右边的块作为第二临近基本块。

在一些示例中,当第一基本块是al并且当前块的左边界是ctu的左边界时,通过以下方式选择第二临近基本块:仅检查第一基本块右边的基本块是否是仿射编解码的并且具有给定的参考列表的与第一基本块相同的参考索引;并且如果是,则选择第一基本块右边的基本块作为第二临近基本块,否则,不能从第一基本块继承当前块的仿射模型。

在一些示例中,当xbb%s=0时,通过以下方式选择第二临近基本块:检查第一基本块右边的基本块是否是仿射编解码的并且具有给定的参考列表的与第一基本块相同的参考索引;并且如果是,则选择第一基本块右边的基本块作为第二临近基本块,否则,选择第一基本块左边的基本块作为第二临近基本块。

在一些示例中,当xbb%s!=0时,通过以下方式选择第二临近基本块:检查第一基本块左边的基本块是否是仿射编解码的并且具有给定的参考列表的与第一基本块相同的参考索引;并且如果是,则选择第一基本块左边的块作为第二临近基本块,否则,选择第一基本块右边的块作为第二临近基本块。

在一些示例中,s等于8。

在一些示例中,第一基本块和第二基本块之间的偏移是正整数。

在一些示例中,偏移是2k的形式,k是整数,或取决于最小允许的cu宽度和/或高度,或取决于基本块的宽度和/或高度,或取决于适用仿射编解码的cu的最小允许的宽度和/或高度,或从编码器信令通知给解码器。

在一些示例中,在第一仿射继承过程中当基本块p被选择作为第二基本块并且当基本块q是第一基本块时,当基本块p是第二仿射继承过程中的第一基本块时,不允许基本块q被选择作为第二基本块。

在一些示例中,在第一仿射继承过程中当基本块p被选择作为第二基本块并且当基本块q是第一基本块时,不允许基本块p作为第二仿射继承过程中的第一基本块。

在一些示例中,当基本块p是第二仿射继承过程中的第一块时,如果基本块q在基本块p的右边,则第二仿射继承过程中的第二基本块只能从基本块p左边的基本块中选择,或者如果基本块q在基本块p的左边,则第二基本块只能从基本块p右边的基本块中选择,或者如果基本块q在基本块p的下方,则第二基本块只能从基本块p上方的基本块中选择,或者如果基本块q在基本块p的上方,则第二基本块只能从基本块p下方的基本块中选择。

在一些示例中,临近基本块在与当前块相邻的行或列上。

在一些示例中,如果第一基本块满足以下条件中的至少一个,则第一基本块被确定为有效:i.它是帧间编解码的;ii.它不是帧内块复制编解码的;iii.它是仿射编解码的;iv.它是仿射merge编解码的;v.它是仿射帧间编解码的。

在一些示例中,第二基本块是否被确定为有效取决于第一基本块的信息。

在一些示例中,如果第二基本块满足以下条件中的至少一个,则第二基本块被确定为有效:i.它是帧间编解码的;ii.它不是帧内块复制编解码的;iii.它是仿射编解码的;iv.它是仿射merge编解码的;v.它是仿射帧间编解码的;vi.它具有与第一基本块相同的帧间预测方向;vii.它具有与第一基本块相同的参考列表0的参考索引;viii.它具有与第一基本块相同的参考列表1的参考索引;ix.它具有与第一基本块相同的帧间预测方向和相同的参考索引;x.它在参考列表x中具有与第一基本块相同的参考图片的图片顺序计数(poc)值,其中x是0和/或1。

在一些示例中,按预定顺序检查当前块的上方临近基本块的每个基本块,以确定它是否是有效的第一基本块。

在一些示例中,按从左到右或从右到左的顺序检查当前块的上方临近基本块。

在一些示例中,上方临近基本块包括以下中的至少一个:上方的临近基本块(a)、右上的临近基本块(ar)和第一左上的临近基本块(al1)。

在一些示例中,当上方临近基本块中的一个基本块(bb)是有效的第一基本块时,检查有效的第一基本块(bb)的左边和/或右边的基本块以确定对应的第二基本块。

在一些示例中,首先检查有效的第一基本块(bb)右边的基本块(bbr)以确定它是否是有效的第二基本块,并且当基本块(bbr)是有效的第二基本块时,输出有效的第一基本块(bb)和有效的第二基本块(bbr)作为第一基本块和第二基本块。

在一些示例中,当基本块(bbr)是无效的时,检查有效的第一基本块(bb)左边的基本块(bbl)以确定它是否是有效的第二基本块,并且当基本块(bbl)是有效的第二基本块时,输出有效的第一基本块(bb)和有效的第二基本块(bbl)作为第一基本块和第二基本块。

在一些示例中,当基本块(bbl)是无效的时,按顺序检查一个基本块(bb)左边的下一个基本块以确定它是否是有效的第一基本块。

在一些示例中,当基本块(bbl)是无效的时,没有有效的第一基本块和有效的第二基本块从上方临近基本块中输出。

在一些示例中,首先检查有效的第一基本块(bb)左边的基本块(bbl)以确定它是否是有效的第二基本块,并且当基本块(bbl)是有效的第二基本块时,输出有效的第一基本块(bb)和有效的第二基本块(bbl)作为第一基本块和第二基本块。

在一些示例中,当基本块(bbl)是无效的时,检查有效的第一基本块(bb)右边的基本块(bbr)以确定它是否是有效的第二基本块,并且当基本块(bbr)是有效的第二基本块时,输出有效的第一基本块(bb)和有效的第二基本块(bbr)作为第一基本块和第二基本块。

在一些示例中,当基本块(bbr)是无效的时,按顺序检查一个基本块(bb)右边的下一个基本块以确定它是否是有效的第一基本块。

在一些示例中,当基本块(bbr)是无效的时,没有有效的第一基本块和有效的第二基本块从上方临近基本块中输出。

在一些示例中,仅检查有效的第一基本块(bb)右边的基本块(bbr)以确定它是否是有效的第二基本块,并且当基本块(bbr)是有效的第二基本块时,输出有效的第一基本块(bb)和有效的第二基本块(bbr)作为第一基本块和第二基本块。

在一些示例中,当基本块(bbr)是无效的时,输出有效的第一基本块(bb)和有效的第一基本块左边的基本块(bbl)作为第一基本块和第二基本块。

在一些示例中,当基本块(bbr)是无效的时,按顺序检查一个基本块(bb)右边的下一个基本块以确定它是否是有效的第一基本块。

在一些示例中,当基本块(bbl)是无效的时,没有有效的第一基本块和有效的第二基本块从上方临近基本块中输出。

在一些示例中,仅检查有效的第一基本块(bb)左边的基本块(bbl)以确定它是否是有效的第二基本块,并且当基本块(bbl)是有效的第二基本块时,输出有效的第一基本块(bb)和有效的第二基本块(bbl)作为第一基本块和第二基本块。

在一些示例中,当基本块(bbl)是无效的时,输出有效的第一基本块(bb)和有效的第一基本块右边的基本块(bbr)作为第一基本块和第二基本块。

在一些示例中,当基本块(bbl)是无效的时,按顺序检查一个基本块(bb)左边的下一个基本块以确定它是否是有效的第一基本块。

在一些示例中,当基本块(bbl)是无效的时,没有有效的第一基本块和有效的第二基本块从上方临近基本块中输出。

在一些示例中,从上方临近基本块中选择要检查以用于确定第一基本块的候选基本块取决于当前块的位置和/或仿射运动补偿的子块尺寸。

在一些示例中,当当前块位于ctu的左边界时,候选基本块包括以下中的至少一个:上方的临近基本块(a)、右上的临近基本块(ar)和第一左上的临近基本块(al1),并且当当前块不位于ctu的左边界时,候选基本块包括以下中的至少一个:上方临近基本块(a)、右上临近基本块(ar)和第二左上相邻的临近基本块(al”)。

在一些示例中,来自上方临近基本块的候选基本块是否可以用作第一基本块取决于当前块的位置。

在一些示例中,当当前块位于ctu的左边界时,左上的临近基本块(al1、al”)不能用作第一基本块。

在一些示例中,当当前块位于ctu的右边界时,右上的临近基本块(ar、ar’)不能用作第一基本块。

在一些示例中,来自上方临近基本块的候选基本块是否可以用作第二基本块取决于当前块的位置。

在一些示例中,当当前块位于ctu的左边界时,左上的临近基本块(al1、al’)不能用作第一基本块。

在一些示例中,当当前块位于ctu的右边界时,右上的临近基本块(ar、ar’)不能用作第一基本块。

在一些示例中,第一基本块和第二基本块是可交换的。

在一些示例中,首先交换第一基本块和第二基本块,并且通过使用交换的第一基本块和第二基本块来执行当前块的转换。

在一些示例中,第一基本块和第二基本块的确定过程是可交换的。

在一些示例中,该转换从比特流表示生成当前视频块。

在一些示例中,该转换从当前视频块生成比特流表示。

图32是处理视频的方法3200的流程图。方法3200包括:为视频的当前块和当前块的比特流表示之间的转换,推导(3202)与当前块的仿射模型相关联的仿射模型参数集的一个或多个参数;移位(3204)一个或多个参数;以及存储(3206)所移位的一个或多个参数。

在一些示例中,移位一个或多个参数还包括利用第一移位函数satshift(x,n)来移位一个或多个参数,第一移位函数被定义为:

其中,x是一个或多个参数中的一个,n是整数,并且offset0和/或offset1被设置为(1<<n)>>1或(1<<(n-1))或((1<<n)>>1)-1,或者offset0和/或offset1被设置为0。

在一些示例中,移位一个或多个参数还包括利用第二移位函数shift(x,n)来移位一个或多个参数,第二移位函数shift(x,n)被定义为:

shift(x,n)=(x+offset0)>>n,

其中,x是一个或多个参数中的一个,n是整数,并且offset0被设置为(1<<n)>>1或(1<<(n-1))或((1<<n)>>1)-1,或者offset0被设置为0。

在一些示例中,n是2或4。

在一些示例中,n取决于运动精度,或者n对于仿射模型参数集中的不同参数是不同的。

在一些示例中,n是在序列参数集(sps)、视频参数集(vps)、图片参数集(pps)、条带头、片组头、片、编解码树单元(ctu)、编解码单元(cu)中的至少一个中被信令通知的。

在一些示例中,n在不同的标准等级或级别或层级中是不同的。

在一些示例中,所存储的参数在用于在当前块之后编解码的块的仿射继承之前首先左移。

在一些示例中,将所存储的参数在用于在当前块之后编解码的块的仿射继承之前,顺序地利用移位函数来移位和利用限幅函数来限幅。

在一些示例中,仿射模型参数集的参数a通过来计算,其中mvh0是当前块的左上角控制点的水平运动矢量分量,mvh1是当前块的右上角控制点的水平运动矢量分量,并且w是当前块的宽度。

在一些示例中,仿射模型参数集的参数b通过来计算,其中mvv0是当前块的左上角控制点的垂直运动矢量分量,mvv1是当前块的右上角控制点的垂直运动矢量分量,并且w是当前块的宽度。

在一些示例中,仿射模型参数集的参数c通过来计算,其中mvh0是当前块的左上角控制点的水平运动矢量分量,mvh2是当前块的左下角控制点的水平运动矢量分量,并且h是当前块的高度。

在一些示例中,仿射模型参数集的参数d通过来计算,其中mvv0是当前块的左上角控制点的垂直运动矢量分量,mvv2是当前块的左下角控制点的垂直运动矢量分量,并且h是当前块的高度。

在一些示例中,仿射模型参数集的参数e通过来计算,其中mvh0是当前块的左上角控制点的水平运动矢量分量。

在一些示例中,仿射模型参数集的参数f通过来计算,其中mvv0是当前块的左上角控制点的垂直运动矢量分量。

在一些示例中,仿射模型参数集的参数e和f通过(e,f)=(mvxi,mvyi)来计算,其中(mvxi,mvyi)是任何点的运动矢量。

在一些示例中,当前块的宽度和高度被标注为w和h,w和h等于2wb和2hb,其中wb和hb是大于1的整数。

在一些示例中,仿射模型参数集的参数a通过来计算,其中p是整数并且表示计算精度,mvh0是当前块的左上角控制点的水平运动矢量分量,并且mvh1是当前块的右上角控制点的水平运动矢量分量。

在一些示例中,其中仿射模型参数集的参数b通过来计算,其中p是整数并且表示计算精度,mvv0是当前块的左上角控制点的垂直运动矢量分量,并且mvv1是当前块的右上角控制点的垂直运动矢量分量。

在一些示例中,仿射模型参数集的参数c通过来计算,其中p是整数并且表示计算精度,mvh0是当前块的左上角控制点的水平运动矢量分量,并且mvh2是当前块的左下角控制点的水平运动矢量分量。

在一些示例中,仿射模型参数集的参数d通过来计算,其中p是整数并且表示计算精度,mvv0是当前块的左上角控制点的垂直运动矢量分量,并且mvv2是当前块的左下角控制点的垂直运动矢量分量。

在一些示例中,p被设置为7。

在一些示例中,该方法还包括:在存储一个或多个参数之前,对一个或多个参数进行限幅。

在一些示例中,如果用k个比特来存储一个或多个参数中的一个参数x,则x=clip3(-2k-1,2k-1-1,x),其中x=a或b或c或d,并且k是大于1的整数。

在一些示例中,x是a、b、c、d、e或f。

在一些示例中,k等于8。

在一些示例中,仿射模型参数集包括与由下式给出的6参数仿射模型相对应的6个变量(a、b、c、d、e、f)

其中,mvh(x,y)是当前块的运动矢量的水平分量,mvv(x,y)是当前块的运动矢量的垂直分量,并且(x,y)表示代表点相对于当前块内左上样点的坐标;,(mvh0,mvv0)是当前块的左上角控制点(cp)的运动矢量,并且(mvh1,mvv1)是当前块的右上角控制点的运动矢量,并且(mvh2,mvv2)是当前块的左下角控制点的运动矢量。

在一些示例中,一个或多个参数包括a、b、c和d。

在一些示例中,仿射模型参数集包括与由下式给出的4参数仿射模型相对应的4个变量(a、b、e、f)

其中,mvh(x,y)是当前块的运动矢量的水平分量,mvv(x,y)是当前块的运动矢量的垂直分量,并且(x,y)表示代表点相对于当前块内左上样点的坐标;(mvh0,mhv0)是当前块的左上角控制点(cp)的运动矢量,并且(mvh1,mvv1)是当前块的右上角控制点的运动矢量。

在一些示例中,一个或多个参数包括a和b。

在一些示例中,一个或多个参数包括a、b、e和f。

在一些示例中,一个或多个参数包括a、b、c、d、e和f,并且其中,当用4参数仿射模型来执行当前块和当前块的比特流表示之间的转换时,限制c=-b和d=a。

在一些示例中,一个或多个参数包括a、b、c和d,并且其中,当用4参数仿射模式来执行当前块和当前块的比特流表示之间的转换时,限制c=-b和d=a。

在一些示例中,当用4参数仿射模式来执行当前块和当前块的比特流表示之间的转换时,参数c=-b。

在一些示例中,当用4参数仿射模式来执行当前块和当前块的比特流表示之间的转换时,参数d=a。

在一些示例中,该方法还包括:基于所存储的移位的一个或多个参数,执行在当前块之后编解码的块和在当前块之后编解码的块的比特流表示之间的转换。

在一些示例中,该方法还包括:基于所存储的一个或多个参数,执行当前块和当前块的比特流表示之间的转换。

在一些示例中,该转换从比特流表示中生成在当前块之后编解码的块。

在一些示例中,该转换从在当前块之后编解码的块生成比特流表示。

本领域技术人员将理解,公开了用于在各种视频编解码场景下使用运动候选列表的技术。视频块可以被编码成比特流表示,该比特流表示包括放置在各种头或网络适配层等中的非连续比特,等等。

本文档中描述的所公开的以及其他的解决方案、示例、实施例、模块和功能操作的实施方式可以在数字电子电路中被实施,或者在计算机软件、固件或硬件(包括本文档中公开的结构及其结构等同物)中被实施,或者在它们中的一个或多个的组合中被实施。所公开的以及其他的实施例可以被实施为一个或多个计算机程序产品,即编码在计算机可读介质上的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置运行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组合、或它们中的一个或多个的组合。术语“数据处理装置”包含用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如机器生成的电、光或电磁信号,其被生成来对信息进行编码以传输到合适的接收器装置。

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

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

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

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

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

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

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