掌桥专利:专业的专利平台
掌桥专利
首页

用于基于历史的仿射参数的修剪方法

文献发布时间:2023-06-19 11:34:14


用于基于历史的仿射参数的修剪方法

根据适用的专利法和/或依照巴黎公约的规定,本申请及时要求提交于2018年11月16日的国际专利申请No.PCT/CN2018/115935、提交于2019年1月1日的No.PCT/CN2019/070003、提交于2019年1月10日的No.PCT/CN2019/071221、提交于2019年2月2日的No.PCT/CN2019/074600,以及提交于2019年2月22日的No.PCT/CN2019/075867的优先权和权益。国际专利申请No.PCT/CN2018/115935、PCT/CN2019/070003、PCT/CN2019/071221、提交于2019年2月2日的No.PCT/CN2019/074600以及PCT/CN2019/075867的全部公开通过引用而并入作为本申请公开的一部分。

技术领域

本文档涉及视频和图像编解码技术。

背景技术

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

发明内容

本公开技术可以由视频或图像解码器或编码器实施例使用,其中使用利用基于历史的运动矢量预测(History based Motion Vector Prediction,HMVP)的几何分割。

在一个示例方面中,公开了一种视频处理的方法。该方法包括:由处理器将与第一视频块的运动矢量相关联的参数存储在存储器中,参数与第一视频块的运动矢量的4参数仿射模型或6参数仿射模型中的一者或两者相关;以及使用参数执行第一视频块的进一步处理。

在另一个示例方面中,一种视频处理的方法包括:由处理器将表示代表性点相对于第一视频块的左上方样点的坐标的控制点运动矢量(Control Point Motion Vector,CPMV)存储在存储器中;以及使用CPMV执行第一视频块的进一步处理。

在另一个示例方面中,一种视频处理的方法包括:由处理器执行对与第一视频块的运动矢量相关联的参数的确定,参数与第一视频块的运动矢量的4参数仿射模型或6参数仿射模型中的一者或两者相关;确定用于存储参数的缓冲区已满;修改缓冲区,使得缓冲区未满;将参数存储在未满的缓冲区中;以及使用存储在缓冲区中的参数执行第一视频块的进一步处理。

在另一个示例方面中,一种视频处理的方法包括:由处理器刷新用于存储与第一视频块的运动矢量相关联的参数的缓冲区,参数与第一视频块的运动矢量的4参数仿射模型或6参数仿射模型中的一者或两者相关;以及使用存储在缓冲区中的参数执行第一视频块的进一步处理。

在另一个示例方面中,一种视频处理的方法包括:由处理器识别存储器中与第一视频块的运动矢量相关联的参数,参数与第一视频块的运动矢量的4参数仿射模型或6参数仿射模型中的一者或两者相关;以及使用与第一视频块相关联的参数进行第二视频块的处理。

在另一个示例方面中,一种视频处理的方法包括:由处理器识别存储器中与第一视频块的运动矢量相关联的参数,参数与第一视频块的运动矢量的4参数仿射模型或6参数仿射模型中的一者或两者相关;由处理器基于参数来确定第二视频块使用4参数仿射模型或6参数仿射模型之一;基于由第二视频块使用的4参数仿射模型或6参数仿射模型,生成第二视频块的仿射Merge候选列表;以及使用仿射Merge候选列表执行第二视频块的进一步处理。

在另一个示例方面中,一种视频处理的方法包括:由处理器识别与第一视频块的运动矢量(MV)相关联的参数;由处理器基于第一视频块的参数来推导仿射模型,仿射模型是4参数仿射模型或6参数仿射模型中的一者或两者;以及使用仿射模型执行第一视频块的进一步处理。

在另一个示例方面中,一种视频处理的方法包括:从仿射基于历史的运动矢量预测(HMVP)缓冲区推导仿射Merge候选;以及通过将仿射Merge候选插入到作为仿射Merge列表或子块Merge列表的列表中并通过从该列表移除继承的仿射Merge候选来修改该列表。

在另一个示例方面中,一种视频处理的方法包括:从仿射基于历史的运动矢量预测(HMVP)缓冲区推导仿射Merge高级运动矢量预测(Advanced Motion VectorPrediction,AMVP)候选;以及通过将仿射AMVP候选插入到仿射AMVP候选列表中并通过从该列表移除继承的仿射AMVP候选来修改该列表。

在一个示例方面中,一种视频处理的方法包括:基于存储在缓冲区中的与由第一块使用的仿射模型相关联的仿射相关信息,为视频的当前块和当前块的比特流表示之间的转换推导与要由当前块使用的仿射模型相关联的仿射相关信息,其中,第一块在当前块之前被仿射编解码;以及通过使用推导的仿射相关信息来执行该转换。

在另一个示例方面中,一种视频处理的方法包括:基于与仿射编解码的第一块的仿射模型相关联的运动矢量(MV)、该第一块的宽度和该第一块的高度,计算与该第一块的仿射模型相关联的仿射参数的第一集合,以及裁剪所计算的仿射参数的第一集合。

在另一个示例方面中,一种视频处理的方法包括:对于视频的当前块和当前块的比特流表示之间的转换,从存储在用于存储仿射模型的缓冲区中的多个仿射模型推导当前块的虚拟仿射模型;以及通过使用虚拟仿射模型来执行该转换。

在另一个示例方面中,一种视频处理的方法包括:为视频的当前块和当前块的比特流表示之间的转换推导与当前块的仿射模型相关联的仿射参数的第一集合;将仿射参数的第一集合与存储在用于存储仿射参数的缓冲区中的仿射参数的集合中的一个或多个进行比较,以便确定仿射参数的第一集合是否与仿射参数的至少一个集合相同或类似;以及基于该确定来决定是否或如何更新用于存储仿射参数的缓冲区。

在另一个示例方面中,一种视频处理的方法包括:基于存储在用于存储在视频的当前块之前编解码的块的仿射相关信息的缓冲区中的仿射参数,为该当前块和当前块的比特流表示之间的转换推导与当前块的仿射模型相关联的仿射相关信息;以及通过使用推导的仿射相关信息来执行该转换。

在另一个示例方面中,一种视频处理的方法包括:基于存储在用于存储在视频的当前块之前编解码的块的仿射相关信息的缓冲区中的仿射参数的集合,为该当前块和当前块的比特流表示之间的转换推导当前块的仿射模型;生成仿射Merge候选列表,其中,仿射Merge候选列表包括基于推导的当前块的仿射模型的当前块的仿射Merge候选;以及基于仿射Merge候选列表来执行该转换。

在另一个示例方面中,一种视频处理的方法包括:为视频的当前块和当前块的比特流表示之间的转换生成作为仿射高级运动矢量预测(AMVP)编解码块的当前块的仿射AMVP候选列表,其中,候选列表包括基于存储在用于存储在当前块之前编解码的块的仿射相关信息的缓冲区中的仿射参数的至少一个AMVP候选;以及基于仿射AMVP候选列表来执行该转换。

在另一个示例方面中,一种视频处理的方法包括:基于存储在用于存储在视频的当前块之前编解码的块的仿射相关信息的缓冲区中的仿射参数以及一个或多个单元块,为该当前块和当前块的比特流表示之间的转换推导当前块的仿射候选;将推导的仿射候选插入到仿射候选列表中;以及通过使用仿射候选列表来执行该转换。

在另一个示例方面中,一种视频处理的方法包括:基于存储在仿射基于历史的运动矢量预测(HMVP)缓冲区中的仿射参数,为视频的当前块和当前块的比特流表示之间的转换推导当前块的仿射候选;将推导的仿射候选插入到仿射候选列表中;以及通过使用仿射候选列表来执行该转换。

在另一个示例方面中,上述方法可以由包括处理器的视频编码器装置实施。

在又一个示例方面中,这些方法可以以处理器可执行指令的形式体现,并被存储在计算机可读程序介质上。

在本文档中进一步描述了这些和其他方面。

附图说明

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

图2示出了4参数仿射模型和6参数仿射模型的示例。

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

图4示出了AF_MERGE的候选的示例。

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

图6示出了135度分割和45度划分的示例。

图7示出了临近块的位置。

图8示出了应用第1加权因子组的编解码单元(CU)的示例。

图9示出了运动矢量存储的示例。

图10示出了具有提出的基于历史的运动矢量预测(HMVP)方法的解码流程图的示例。

图11示出了HMVP方法中更新表的示例。

图12示出了最终运动矢量表达(UMVE)搜索过程的示例。

图13示出了UMVE搜索点的示例。

图14示出了距离索引和距离偏移映射的示例。

图15示出了从临近块的运动矢量(MV)和存储在缓冲区中的参数的集合推导CPMV的示例。

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

图17示出了视频编码器的示例实施方式的框图。

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

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

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

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

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

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

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

图25示出了并置单元块的可能位置的示例。

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

图27示出了4x4基本块中的示例位置。

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

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

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

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

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

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

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

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

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

具体实施方式

本文档提供了可以由图像或视频比特流的解码器使用的各种技术,以改进解压缩或解码的数字视频或图像的质量。为了简洁起见,术语“视频”在本文中用于包括图片的序列(传统上称为视频)和单独的图像。此外,视频编码器还可在编码过程期间实施这些技术,以便重建用于进一步编码的解码的帧。

在本文档中使用章节标题是为了易于理解,并且不将实施例和技术限于对应的章节。这样,一个章节的实施例可以与其他章节的实施例组合。

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高级视频编解码(Advanced Video Coding,AVC)和H.265/HEVC标准。自H.262以来,视频编解码标准基于混合视频编解码结构,其中利用了时域预测加变换编解码。为了探索HEVC以外的未来视频编解码技术,VCEG和MPEG于2015年联合成立了联合视频探索团队(Joint Video Exploration Team,JVET)。自那以后,JVET采用了许多新方法,并将其放入命名为联合探索模型(Joint Exploration Model,JEM)的参考软件中。在2018年4月,VCEG(Q6/16)和ISO/IEC JTC1 SC29/WG11(MPEG)之间的联合视频专家小组(Joint Video Expert Team,JVET)成立,以致力于VVC标准,目标是与HEVC相比比特率降低50%。

基于子块的预测首先由HEVC附录I(3D-HEVC)引入视频编解码标准。利用基于子块的预测,诸如编解码单元(CU)或预测单元(Prediction Unit,PU)的块被分成几个非重叠子块。不同的子块可以被分配不同的运动信息,诸如参考索引或运动矢量(Motion Vector,MV),并且对每个子块单独执行运动补偿(Motion Compensation,MC)。图1展示了基于子块的预测的概念。

为了探索HEVC以外的未来视频编解码技术,VCEG和MPEG于2015年联合成立了联合视频探索团队(JVET)。自那以后,JVET采用了许多新方法,并将其放入命名为联合探索模型(JEM)的参考软件中。

在JEM中,基于子块的预测被用于多种编解码工具,诸如仿射预测、可选时域运动矢量预测(Alternative Temporal Motion Vector Prediction,ATMVP)、空时运动矢量预测(Spatial-Temporal Motion Vector Prediction,STMVP)、双向光流(Bi-directionalOptical flow,BIO)和帧速率上转换(Frame-Rate Up Conversion,FRUC)。仿射预测也被采用进VVC。

图17是视频编码器的示例实施方式的框图。图17示出了编码器实施方式具有内置的反馈路径,其中视频编码器还执行视频解码功能(重建视频数据的压缩表示以用于下一视频数据的编码)。

2.1仿射预测

在HEVC中,只有平移运动模型被应用于运动补偿预测(Motion CompensationPrediction,MCP)。而在现实世界中,有许多种运动,例如放大/缩小、旋转、透视运动和其他不规则运动。在VVC中,应用简化的仿射变换运动补偿预测。如图2所示,块的仿射运动场由两个(在图2的左侧上的4参数仿射模型中)或三个(在图2的右侧上的6参数仿射模型中)控制点运动矢量来描述。

图3示出了仿射编解码块的子块中的MV的示例。

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

其中,(mv

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

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

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

最终,

Off=1<<(S-1) (7)

其中,S表示计算精度。例如,在VVC中,S=7。在VVC中,在MC中用于具有(xs,ys)处的左上方样点的子块的MV由(6)计算,其中x=xs+2,并且y=ys+2。

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

仿射模型可以从空域临近仿射编解码块(诸如左侧、上侧、右上侧、左下和左上侧临近块)继承,如图4(a)所示。例如,如果在仿射模式下编解码图4(a)中的邻域左下侧块A,如由图4(b)中的A0表示的,则提取包含块A的临近CU/PU的左上角、右上角和左下角的控制点(CP)运动矢量mv

应当注意,当CU是用仿射Merge模式(即,在AF_MERGE模式下)编解码的时,它从有效邻域重构块得到用仿射模式编解码的第一块。并且候选块的选择顺序是从左侧、上侧、右上侧、左下侧到左上侧,如图4(a)所示。

在仿射Merge模式下,可将当前块的推导的CP MV mv

2.2仿射Merge候选列表

不同于其中仅一个仿射空域临近块可以用于推导块的仿射运动的VTM。提出为AF_MERGE模式构建单独的仿射候选列表。

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

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

如图5所示,候选块的扫描顺序是A1、B1、B0、A0和B2。当选择一个块(例如A1)时,应用两步过程:

首先,使用覆盖该块的CU的三个角运动矢量来推导当前块的两个/三个控制点。

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

插入构建的仿射候选

如果仿射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}

插入零运动矢量

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

2.3仿射Merge候选列表

2.5.1仿射Merge模式

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

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

插入继承的仿射候选

继承的仿射候选意味着候选是从其有效邻域仿射编解码块的仿射运动模型推导的。在公共基础中,如图5所示,候选位置的扫描顺序是:A1、B1、B0、A0和B2。

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

插入构建的仿射候选

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

控制点的运动信息首先从图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。如果B

对于CP2,检查优先级为B1->B0;

对于CP3,检查优先级为A1->A0;

对于CP4,使用T。

其次,控制点的组合用于构建仿射Merge候选。

需要三个控制点的运动信息来构建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的参考索引,并且指向不同参考图片的运动矢量将被缩放。

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

用零运动矢量填充

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

2.5.2仿射Merge模式

提出了对仿射Merge模式的以下简化。

通过比较覆盖临近位置的编解码单元,而不是比较推导的仿射候选,简化了继承的仿射候选的修剪过程。多达2个继承的仿射候选被插入仿射Merge列表。构建的仿射候选的修剪过程被完全移除。

在构建的仿射候选中移除MV缩放操作。如果控制点的参考索引不同,则构建的运动模型被丢弃。

构建的仿射候选的数量从10个减少到6个。

还提出了利用诸如ATMVP的子块预测的其他Merge候选也被放到仿射Merge候选列表中。在这种情况下,仿射Merge候选列表可以用诸如子块Merge候选列表的一些其他名称来重命名。

2.4仿射Merge模式的控制点MV偏移

基于第一仿射Merge候选的CPMV偏移生成新的仿射Merge候选。如果第一仿射Merge候选启用4参数仿射模型,则通过偏移第一仿射Merge候选的2个CPMV,为每个新的仿射Merge候选推导2个CPMV;否则(启用6参数仿射模型),则通过偏移第一个仿射Merge候选的3个CPMV,为每个新的仿射Merge候选推导3个CPMV。在单向预测中,CPMV偏移被应用于第一候选的CPMV。在具有相同方向上的列表0和列表1的双向预测中,CPMV偏移如下应用于第一候选:

MVnew(L0),i=MVold(L0)+MVoffset(i)

MVnew(L1),i=MVold(L1)+MVoffset(i)

在具有相反方向上的列表0和列表1的双向预测中,CPMV偏移如下应用于第一候选:

MVnew(L0),i=MVold(L0)+MVoffset(i)

MVnew(L1),i=MVold(L1)-MVoffset(i)

在本文献中,具有各种偏移幅度的各种偏移方向可以用于生成新的仿射Merge候选。测试了两种实施方式:

生成具有8个不同的偏移方向和2个不同的偏移幅度的16个新的仿射Merge候选,如以下偏移集所示:

偏移集={(4,0),(0,4),(-4,0),(0,-4),(-4,-4),(4,-4),(4,4),(-4,4),(8,0),(0,8),(-8,0),(0,-8),(-8,-8),(8,-8),(8,8),(-8,8)}。

对于该设计,仿射Merge列表增加到20。潜在仿射Merge候选的数量总共为31个。

生成具有4个不同的偏移方向和1个偏移幅度的4个新的仿射Merge候选,如以下偏移集所示:

偏移集={(4,0),(0,4),(-4,0),(0,-4)}。

仿射Merge列表被保持为5。移除四个时域构建的仿射Merge候选,以保持潜在仿射Merge候选的数量不变,即总共为15个。假设CPMV1、CPMV2、CPMV3和CPMV4的坐标是(0,0)、(W,0)、(H,0)和(W,H)。注意,CPMV4是从如图6所示的时域MV推导的。移除的候选是以下四个时域相关的构建的仿射Merge候选:{CP2,CP3,CP4}、{CP1,CP4}、{CP2,CP4}、{CP3,CP4}。

2.5广义双向预测改进

采用了提出的广义双向预测改进(GBi)。

在示例中,提出了GBi。改进了GBi的增益复杂度权衡。GBi在双向预测模式下对来自L0和L1的预测值应用不相等的权重。在帧间预测模式中,基于速率失真优化(Rate-Distortion Optimization,RDO)来评估包括相等权重对(1/2,1/2)的多个权重对,并将所选权重对的GBi索引信令通知给解码器。在Merge模式下,GBi索引是从临近CU继承的。在BMS2.1 GBi中,双向预测模式下的预测值生成如等式(1)中所示。

PGBi=(w0*PL0+w1*PL1+RoundingOffsetGBi)>>shiftNumGBi,

其中PGBi是GBi的最终预测值。w0和w1是所选的GBi权重对,并分别应用于列表0(L0)和列表1(L1)的预测值。RoundingOffsetGBi和shiftNumGBi用于归一化GBi中的最终预测值。支持的w1权重集为{-1/4,3/8,1/2,5/8,5/4},其中五个权重对应一个相等权重对和四个不相等权重对。混合增益,即w1和w0之和,固定为1.0。因此,对应的w0权重集为{5/4,5/8,1/2,3/8,-1/4}。权重对选择在CU级别。

对于非低延迟图片,权重集尺寸从五减为三,其中w1权重集为{3/8,1/2,5/8},并且w0权重集为{5/8,1/2,3/8}。非低延迟图片的权重集尺寸减小适用于BMS2.1 GBi和本贡献中的所有GBi测试。

在示例中,提出了一种解决方案来进一步改进GBi性能。具体地,在现有GBi设计的基础上应用以下修改。

2.5.1GBi编码器错误修复

为了减少GBi编码时间,在当前编码器设计中,编码器将存储从GBi权重等于4/8估计的单向预测运动矢量,并将它们重新用于其他GBi权重的单向预测搜索。这种快速编码方法应用于平移运动模型和仿射运动模型两者。采用了6参数仿射模型和4参数仿射模型。当GBi权重等于4/8时,BMS2.1编码器存储单向预测仿射MV时,不区分4参数仿射模型和6参数仿射模型。因此,在用GBi权重4/8编码后,4参数仿射MV可能被6参数仿射MV覆写。对于其他GBi权重,存储的6参数仿射MV可用于4参数仿射ME,或者存储的4参数仿射MV可用于6参数仿射ME。所提出的GBi编码器错误修复是分离4参数和6参数仿射MV存储。当GBi权重等于4/8时,编码器基于仿射模型类型存储那些仿射MV,并且对于其他GBi权重,基于仿射模型类型重新使用对应的仿射MV。

2.5.2GBi的CU尺寸约束

在该方法中,GBi对于小CU是禁用的。在帧间预测模式下,如果使用双向预测,并且CU区域小于128个亮度样点,则GBi被禁用而不需要任何信令通知。

2.5.3利用GBi的Merge模式

在Merge模式下,不信令通知GBi索引。相反,它是从它所合并到的临近块继承的。当选择了TMVP候选时,则在该块中关闭GBi。

2.5.4利用GBi的仿射预测

当当前块用仿射预测编解码时,可以使用GBi。对于仿射帧间模式,信令通知GBi索引。对于仿射Merge模式,GBi索引是从它所合并到的临近块继承的。如果选择了构建的仿射模型,则在该块中关闭GBi。

2.6三角形预测模式

三角形预测模式(Triangular Prediction Mode,TPM)的概念是引入一种用于运动补偿预测的新的三角形分割。如图6所示,它在对角线方向或反对角线方向上将CU划分为两个三角形预测单元。使用从单向预测候选列表推导的其自己的单向预测运动矢量和参考帧索引,对CU中的每个三角形预测单元进行帧间预测。在预测三角形预测单元之后,对对角线边缘执行自适应加权处理。然后,将变换和量化过程应用于整个CU。请注意,该模式仅应用于跳过和Merge模式。

2.6.1TPM的单向预测候选列表

单向预测候选列表由五个单向预测运动矢量候选组成。如图7所示,它是从包括五个空域临近块(1到5)和两个时域并置块(6到7)的七个临近块推导的。按照单向预测运动矢量、双向预测运动矢量的L0运动矢量、双向预测运动矢量的L1运动矢量以及双向预测运动矢量的L0和L1运动矢量的平均运动矢量的顺序,收集七个临近块的运动矢量并将其放入单向预测候选列表中。如果候选的数量少于五个,则零运动矢量被添加到列表中。添加到该列表中的运动候选被称为TPM运动候选。

更具体地,涉及以下步骤:

从A

设置变量numCurrMergeCand=0

对于从A

应用

对于从A

应用

对于从A

应用

对于从A

如果列表0参考图片的条带QP小于列表1参考图片的条带QP,则首先将列表1的运动信息缩放到列表0参考图片,并将两个MV(一个来自原始列表0,并且另一个是来自列表1的缩放后的MV)的平均添加到Merge列表中,即,来自列表0运动候选的平均单向预测,并且numCurrMergeCand增加1。

否则,首先将列表0的运动信息缩放到列表1参考图片,并将两个MV(一个来自原始列表1,另一个是来自列表0的缩放后的最大值)的平均添加到Merge列表中,即,来自列表1运动候选的平均单向预测,并且numCurrMergeCand增加1。

应用

如果numCurrMergeCand小于5,则添加零运动矢量候选。

2.6.1.1自适应加权过程

在预测每个三角形预测单元之后,将自适应加权过程应用于两个三角形预测单元之间的对角线边缘,以推导整个CU的最终预测。两个加权因子组被定义如下:

第1加权因子组:{7/8,6/8,4/8,2/8,1/8}和{7/8,4/8,1/8}分别用于亮度和色度样点;

第2加权因子组:{7/8,6/8,5/8,4/8,3/8,2/8,1/8}和{6/8,4/8,2/8}分别用于亮度和色度样点。

基于两个三角形预测单元的运动矢量的比较来选择加权因子组。当两个三角形预测单元的参考图片彼此不同或者它们的运动矢量差大于16像素时,使用第二加权因子组。否则,使用第一加权因子组。示例如图8所示。

2.6.1.2运动矢量存储

三角形预测单元的运动矢量(图9中的Mv1和Mv2)存储在4×4网格中。对于每个4×4网格,取决于4×4网格在CU中的位置,存储单向预测运动矢量或双向预测运动矢量。如图9所示,为位于非加权区域(即,不位于对角线边缘)的4×4网格存储单向预测运动矢量Mv1或Mv2。另一方面,为位于加权区域的4×4网格存储双向预测运动矢量。双向预测运动矢量根据以下规则从Mv1和Mv2中推导:

在Mv1和Mv2具有来自不同方向(L0或L1)的运动矢量的情况下,Mv1和Mv2被简单地组合以形成双向预测运动矢量。

在Mv1和Mv2都来自相同的L0(或L1)方向的情况下,

如果Mv2的参考图片与L1(或L0)参考图片列表中的图片相同,则Mv2被缩放到该图片。Mv1和缩放的Mv2被组合以形成双向预测运动矢量。

如果Mv1的参考图片与L1(或L0)参考图片列表中的图片相同,则Mv1被缩放到该图片。缩放的Mv1和Mv2被组合以形成双向预测运动矢量。

否则,对于加权区域只存储Mv1。

2.7基于历史的运动矢量预测

提出了一种基于历史的MVP(HMVP)方法,其中HMVP候选被定义为先前编解码块的运动信息。在编码/解码过程期间,维护具有多个HMVP候选的表。当遇到新的条带时,表被清空。每当存在帧间编解码的非仿射块时,相关联的运动信息被作为新的HMVP候选添加到表的最后条目。整体编解码流程如图10和图11所描绘的。

在本文献中,表尺寸S被设置为6,这指示最多可以将6个HMVP候选添加到表中。当将新的运动候选插入到表时,利用约束FIFO规则,其中首先应用冗余检查以寻找表中是否存在相同的HMVP。如果找到,则从表中移除相同的HMVP,然后将后面的全部HMVP候选向前移动,即索引减少1。

HMVP候选可以在Merge候选列表构建过程中使用。按顺序检查表中最晚的几个HMVP候选,并将其在TMVP候选之后插入到候选列表中。对HMVP候选应用修剪,以空域或时域Merge候选,排除子块运动候选(即ATMVP)。

为了减少修剪操作的次数,引入了三个简化:

由L表示的待检查的HMPV候选的数量被设置如下:

L=(N<=4)?M:(8-N) (1)

其中,N指示表中可用非子块Merge候选的数量,并且M指示表中可用的HMVP候选的数量。

此外,一旦可用Merge候选的总数达到信号通知的最大允许Merge候选减去1,就终止根据HMVP列表的Merge候选列表构建过程。

此外,用于组合的双向预测Merge候选推导的对的数量从12减少到6。

类似地,HMVP候选也可以在AMVP候选列表构建过程中使用。表中最后K个HMVP候选的运动矢量插入在TMVP候选之后。仅将具有与AMVP目标参考图片相同的参考图片的HMVP候选用于构建AMVP候选列表。修剪被应用于HMVP候选对象。在本文献中,将K设置为4,同时AMVP列表尺寸保持不变,即等于2。

2.8最终运动矢量表达(UMVE)

在本文献中,提出了最终运动矢量表达(UMVE)。UMVE在VVC中也称为具有MVD的Merge(MMVD)。UMVE利用提出的运动矢量表达方法被用于跳过或Merge模式。

UMVE重用与VVC中相同的Merge候选。在Merge候选当中,可以选择候选,并通过所提出的运动矢量表达方法进一步扩展。

UMVE提供了具有简化信令的新的运动矢量表达。表达式方法包括起点、运动幅度和运动方向。

图12示出了UMVE搜索过程的示例。图13示出了UMVE搜索点的示例。

所提出的技术按原样使用Merge候选列表。但是对于UMVE的扩展,仅考虑默认Merge类型(MRG_TYPE_DEFAULT_N)的候选。

基本候选索引定义了起点。基本候选索引指示列表中的候选当中的最佳候选,如下所示。

表1:基本候选IDX

如果基本候选的数量等于1,则不信令通知基本候选IDX。

距离索引是运动幅度信息。距离索引指示距起点信息的预定义距离。预定义距离如下:

表2:距离IDX

方向索引表示MVD相对于起点的方向。方向索引可以表示如下所示的四个方向。

表3:方向IDX

UMVE标志在发送跳过标志和Merge标志之后立即被信令通知。如果跳过和Merge标志为真,则解析UMVE标志。如果UMVE标志等于1,则解析UMVE语法。但是,如果不是1,则解析AFFINE标志。如果AFFINE标志等于1,这就是AFFINE模式,但是,如果不是1,则解析跳过/Merge索引以用于VTM的跳过/Merge模式。

不需要由于UMVE候选的附加行缓冲。因为软件的跳过/Merge候选直接用作基本候选。使用输入的UMVE索引,在运动补偿之前就决定MV的补充。不需要为此保留长行缓冲区。

2.9帧间-帧内模式

以帧间-帧内模式,多假设预测组合一个帧内预测和一个Merge索引预测。在MergeCU中,为Merge模式信令通知一个标志,以当标志为真时从帧内候选列表中选择帧内模式。对于亮度分量,帧内候选列表从包括DC模式、平面模式、水平模式和垂直模式的4种帧内预测模式中推导,并且帧内候选列表的尺寸可以是3或4,这取决于块形状。当CU宽度大于CU高度的两倍时,水平模式不包括帧内模式列表,并且当CU高度大于CU宽度的两倍时,垂直模式从帧内模式列表中移除。使用加权平均来组合由帧内模式索引选择的一个帧内预测模式和由Merge索引选择的一个Merge索引预测。对于色度分量,DM总是在没有额外信令的情况下应用。用于组合预测的权重描述如下。当选择DC模式或平面模式,或CB宽度或高度小于4时,施加相等的权重。对于CB宽度和高度大于或等于4的那些CB,当选择水平/垂直模式时,一个CB首先被垂直/水平划分为四个等面积区域。每个权重集,表示为(w_intra

2.10具有预测偏移的仿射Merge模式

所提出的方法选择第一可用仿射Merge候选作为基本预测值。然后,它将运动矢量偏移应用于来自基本预测值的每个控制点的运动矢量值。如果没有可用的仿射Merge候选,则不使用该提出的方法。

所选择的基本预测值的帧间预测方向和每个方向的参考索引被不加改变地使用。

在当前实施方式中,当前块的仿射模型被假定为4参数模型,只需要推导2个控制点。因此,仅基本预测值的前2个控制点将被用作控制点预测值。

对于每个控制点,zero_MVD标志被用于指示当前块的控制点是否具有与对应控制点预测值相同的MV值。如果zero_MVD标志为真,则控制点不需要其他信令。否则,对控制点信令通知距离索引和偏移方向索引。

使用尺寸为5的距离偏移表,如下表所示。信令通知距离索引,以指示使用哪个距离偏移。距离索引和距离偏移值的映射如图14所示。

表1-距离偏移表

方向索引可以表示如下所示的四个方向,其中只有x或y方向可能有MV差,但不是两个方向都有。

如果帧间预测是单向预测,则信令通知的距离偏移被应用于每个控制点预测值的偏移方向。结果将是每个控制点的MV值。

例如,当基本预测值是单向预测时,并且控制点的运动矢量值是MVP(v

MV(vx,vy)=MVP(vpx,vpy)+MV(x-dir-factor*distance-offset,y-dir-factor*distance-offset);

如果帧间预测是双向预测,则信令通知的距离偏移被应用在控制点预测值的L0运动矢量的所信令通知的偏移方向上;并且具有相反方向的相同距离偏移被应用于控制点预测值的L1运动矢量。结果将是每个控制点在每个帧间预测方向上的MV值。

例如,当基本预测值是双向预测时,并且L0上的控制点的运动矢量值是MVPL0(v0px,v0py),并且L1上的该控制点的运动矢量是MVPL1(v1px,v1py)。当信令通知距离偏移和方向索引时,当前块的对应控制点的运动矢量将计算如下。

MVL0(v0x,v0y)=MVPL0(v0px,v0py)+MV(x-dir-factor*distance-offset,y-dir-factor*distance-offset);

MVL1(v0x,v0y)=MVPL1(v0px,v0py)+MV(-x-dir-factor*distance-offset,-y-dir-factor*distance-offset);

提出了一种简化的方法,以通过信令通知每个块的距离偏移索引和偏移方向索引来减少信令通知开销。相同的偏移将以相同的方式应用于全部可用控制点。在这种方法中,控制点的数量由基本预测值的仿射类型、6参数类型的3个控制点、4参数类型的2个控制点确定。距离偏移表和偏移方向表与2.1中相同。

由于对块的全部控制点一次进行信令通知,因此在该方法中不使用zero_MVD标志。

2.11 P1809115501中的仿射运动数据的表示

在P1809115501中,提出存储仿射参数而非CPMV,以预测随后的编解码块的仿射模型。

2.12 Merge列表设计

存在VVC中支持的三种不同的Merge列表构建过程:

子块Merge候选列表:其包括ATMVP和仿射Merge候选。仿射模式和ATMVP模式共享一个Merge列表构建过程。在此,可以按顺序添加ATMVP和仿射Merge候选。子块Merge列表尺寸在条带头中被信令通知,并且最大值为5。

单向预测TPM Merge列表:对于三角预测模式,即使两个分割可以选择它们自己的Merge候选索引,也共享两个分割的一个Merge列表构建过程。当构建该Merge列表时,检查该块的空域临近块和两个时域块。从空域临近和时域块推导的运动信息在我们的IDF中称为常规运动候选。这些常规运动候选进一步被用来推导多个TPM候选。请注意,变换是在整个块级别进行的,即使两个分割可能使用不同的运动矢量来生成它们自己的预测块。

单向预测TPM Merge列表尺寸被固定为5。

常规Merge列表:对于剩余的编解码块,共享一个Merge列表构建过程。在此,可以按顺序插入空域/时域/HMVP、成对组合的双向预测Merge候选和零运动候选。常规Merge列表尺寸在条带头中被信令通知,并且最大值为6。

2.12.1子块Merge候选列表

建议除了非子块Merge候选的常规Merge列表之外,还将全部子块相关的运动候选放在单独的Merge列表中。

子块相关的运动候选被放在单独的Merge列表中,其被称为“子块Merge候选列表”。

在一个示例中,子块Merge候选列表包括仿射Merge候选和ATMVP候选、和/或基于子块的STMVP候选。

2.12.2仿射Merge候选列表

在本文献中,正常Merge列表中的ATMVP Merge候选被移到仿射Merge列表的第一位置。这样,新的列表中的全部Merge候选(即,基于子块的Merge候选列表)都是基于子块编解码工具。

仿射Merge候选列表通过以下步骤构建:

插入继承的仿射候选

继承的仿射候选意味着该候选是从其有效临近仿射编解码块的仿射运动模型推导的。从临近块的仿射运动模型推导最多两个继承的仿射候选,并将其插入到候选列表中。对于左侧预测值,扫描顺序为{A0,A1};对于上侧预测值,扫描顺序为{B0,B1,B2}。

插入构建的仿射候选

如果仿射Merge候选列表中的候选数量小于MaxNumAffineCand(设置为5),则将构建的仿射候选插入到候选列表中。构建的仿射候选意味着候选是通过组合每个控制点的临近运动信息而构建的。

控制点的运动信息首先从图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。

其次,控制点的组合用于构建仿射Merge候选。

需要三个控制点的运动信息来构建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,CP2},{CP1,CP3})之一选择。这两个组合将被转换为由左上方和右上方控制点表示的4参数运动模型。

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

{CP1,CP2,CP3},{CP1,CP2,CP4},{CP1,CP3,CP4},{CP2,CP3,CP4},{CP1,CP2},{CP1,CP3}

CP的运动信息的可用组合仅在CP具有相同的参考索引时被添加到仿射Merge列表。

用零运动矢量进行填充

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

共享的Merge列表

提出针对CU划分树中的一个祖先节点的全部叶CU共享相同的Merge候选列表,以用于启用对小的跳过/Merge编解码CU的并行处理。祖先节点被称为Merge共享节点。在Merge共享节点假装叶CU的情况下,在Merge共享节点处生成共享Merge候选列表。

3.实施例所解决的问题的示例

如何并置仿射预测与诸如HMVP的其他新编解码工具仍不清楚。

4.实施例的示例

在本文档中,我们提出了以更灵活的方式来控制仿射预测所需的带宽的方法。我们还提出并置仿射预测与其他编解码工具。

下面的详细技术应被视为用以解释一般概念的示例。这些技术不应以狭义的方式进行解释。此外,这些技术可以以任何方式被组合。这些技术和其他技术之间的组合也是适用的。

在下面的讨论中,假设当前块的临近块(例如,上侧或左侧临近CU)的左上角/右上角/左下角/右下角的坐标分别为(LTNx,LTNy)/(RTNx,RTNy)/(LBNx,LBNy)/(RBNx,RBNy);当前CU的左上角/右上角/左下角/右下角的坐标分别为(LTCx,LTCy)/(RTCx,RTCy)/(LBCx,LBCy)/(RBCx,RBCy);仿射编解码的上侧或左侧临近CU的宽度和高度分别为w’和h’;仿射编解码的当前CU的宽度和高度分别为w和h。

左上角、右上角和左下角的CPMV被分别表示为MV0=(MV0x,MV0y),MV1=(MV1x,MV1y)和MV2=(MV2x,MV2y)。

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

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

Shift被定义为

Shift(x,n)=(x+offsset)>>n,

在一个示例中,offset被设置为(1<<(n-1))。在另一个示例中,其被设置为0。

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

应注意到,当诸如ATMVP候选的其他种类的子块Merge候选也被放到列表或可以包括至少一个仿射Merge候选的其他种类的Merge列表中时,术语“仿射Merge候选列表”可以被重新命名(例如“子块Merge候选列表”)。

提出的技术也可以适用于其他种类的运动候选列表,诸如仿射AMVP候选列表。

1.在等式(2)中定义的仿射编解码块的参数a、b、c、d、e和f可以被存储在缓冲区(缓冲区可以是表、或查找表、或先进先出(First-In-First-Out,FIFO)表、或堆栈、或队列、或列表、或链表(link)、或阵列、或具有任何数据结构的任何其他存储(storage))或约束的FIFO表中,其中每个仿射模型是唯一的。在以下讨论中,缓冲区中的一个条目被表示为H[i],其中i是参考条目的索引。

a.替代地,在等式(2)中定义的a、b、c和d可以被存储在缓冲区中;在此情况下,e和f不再被存储。

b.替代地,如果以4参数仿射模式进行编解码,则在等式(1)中定义的a和b可以被存储在缓冲区中;

c.替代地,如果以4参数仿射模式进行编解码,则在等式(1)中定义的a、b、e和f可以被存储在缓冲区中;

d.如果以4参数仿射模式进行编解码,则在等式(2)中定义的参数a、b、c、d、e和f总是被存储在缓冲区中,但被限制为c=-b,d=a。

e.如果以4参数仿射模式进行编解码,则在等式(2)中定义的参数a、b、c和d总是被存储在缓冲区中,但被限制为c=-b,d=a。

f.可以为4参数和6参数仿射模型存储相同数量的参数,例如,存储a、b、c、d、e和f。在另一个示例中,存储a、b、c和d。

g.替代地,可以为4参数和6参数仿射模型存储不同数量的参数,并且也可以存储仿射模型类型(即,4参数或6参数)。

h.哪些参数要被存储在缓冲区中可以取决于仿射模式、帧间或Merge模式、块尺寸、图片类型等。

i.与仿射参数相关联的边信息也可以与仿射参数一起被存储在缓冲区中,诸如帧间预测方向(列表0或列表1、或双向)、以及列表0和/或列表1的参考索引。在本公开中,当讨论存储在缓冲区中的仿射参数的集合时,还可以包括相关联的边信息。

i.如果仿射编解码块是双向预测的,则要被存储的仿射参数的集合包括用于列表0的参数以及用于列表1的参数。

(a)两个参考列表(列表0和列表1)的参数都被存储。

(b)在一个示例中,两个参考列表的参数被独立存储(在两个不同缓冲区中);

(c)替代地,两个参考列表的参数可以与从一者到另一者的预测一起被存储。

j.作为替代存储方法,仿射编解码块的CPMV{MV

i.仿射编解码块的宽度可以与CPMV一起被存储在缓冲区中。

ii.仿射编解码块的高度可以与CPMV一起被存储在缓冲区中。

iii.仿射编解码块的左上方坐标可以与CPMV一起被存储在缓冲区中。

k.在一个示例中,等式(1)中的基本

i.在一个示例中,基本MV所在的位置的坐标也与参数a和b一起被存储。

l.在一个示例中,基本等式(2)中的

i.在一个示例中,基本MV所在的位置的坐标也与参数a、b、c和d一起被存储。

m.在一个示例中,如果存储的参数的集合和它们的基本MV参考相同的参考图片列表,则应该参考相同的参考图片。

n.用于存储编解码/解码的仿射相关信息(诸如CPMV、仿射参数、基本点位置坐标、块宽度和高度)的缓冲区在本文档中也称为“仿射HMVP缓冲区”。

2.在一个示例中,要存储在缓冲区中的参数可以被计算如下

a.

b.

c.

d.

e.对于4参数仿射预测c=-b。

f.对于4参数仿射预测d=a。

g.

h.

i.(e,f)=(mvx,mvy),其中(mvx,mvy)可以是用于编解码一个块的任何MV。

3.提出在没有除运算的情况下计算仿射模型参数。假设标记为w和h的、当前块的宽度和高度等于2

a.

b.

c.

d.

4.仿射模型参数可以在存储在缓冲区中之前被进一步裁剪。

a.在一个示例中,假设参数x(例如,x=a或b或c或d)以K比特进行存储,则x=Clip3(-2

b.例如,a=Clip(-128,127,a),则a被存储为8比特带符号整数。

5.仿射模型参数可以在用于编解码/解码仿射编解码块之前被裁剪(诸如,以推导子块的MV)。

a.在一个示例中,a=Clip3(Min_a,Max_a,a),b=Clip3(Min_b,Max_b,b),c=Clip3(Min_c,Max_c,c),d=Clip3(Min_d,Max_d,d)其中Min_a/b/c/d和Max_a/b/c/d称为裁剪边界。

b.在一个示例中,裁剪边界可以取决于仿射参数的精度(例如,比特深度)。

c.在一个示例中,裁剪边界可以取决于块的宽度和高度。

d.在一个示例中,裁剪边界可以诸如在VPS/SPS/PPS/图片头/条带头/片组头中被信令通知。

e.在一个示例中,裁剪边界可以取决于标准的简表和/或级别。

6.每个仿射编解码块的仿射模型参数可以在解码或编码该块之后被存储在缓冲区中。

a.是否存储仿射编解码块的仿射模型参数可以取决于编解码仿射模式(例如,仿射AMVP或仿射Merge)、仿射编解码块的数量、仿射编解码块的位置、块大小等。

b.在一个示例中,每第K个仿射编解码块的仿射模型参数在解码或编码每K个仿射编解码块之后被存储在缓冲区中。即,每第一个、第二个、…第(K-1)个仿射编解码块的仿射模型参数不存储在缓冲区中。

i.K是诸如2或4的数字。

ii.K可以在VPS/SPS/PPS/条带头/片组头/片中从编码器被信令通知到解码器。

7.用于存储仿射参数的缓冲区可以具有最大容量。

a.缓冲区可以至多存储仿射参数的M个集合,即,对于H[i],i>=0且i

i.M是诸如8或16的整数。

ii.M可以在VPS/SPS/PPS/条带头/片组头/片/CTU线/CTU中从编码器被信令通知到解码器。

iii.M对不同的标准简表/级别/层级可以不同。

8.当用于仿射参数存储的缓冲区未满,(即,存储的仿射参数的集合的数量S小于最大容量M),并且仿射参数的新的集合需要被存储到缓冲区中时,H[S-1]用于存储新的参数并且然后S=S+1。

9.当缓冲区已满(即,存储的仿射参数的集合的数量S等于最大容量M),并且仿射参数的新的集合需要被存储到缓冲区中时,可以进行以下一个或一些策略:

a.仿射参数的新的集合不能被存储到缓冲区中;

b.已经在缓冲区中的一个条目被移除,并且仿射参数的新的集合被存储到缓冲区中。

i.在一个示例中,存储在缓冲区中的最早条目,例如H[0],从缓冲区被移除。

ii.在一个示例中,存储在缓冲区中的最后条目,例如H[M-1],从缓冲区被移除。

iii.在一个示例中,存储在缓冲区中的任何条目,例如H[T],从缓冲区被移除,T>=0且T

iv.如果H[T]被移除,则仿射参数的新的集合被存储为H[T]。

v.如果H[T]被移除,则H[T]之后的全部条目被向前移动。例如,对于以升序从T至M-1的X,H[X]=H[X+1]。然后仿射参数的新的集合被放到缓冲区中的最后条目,例如H[M-1];

vi.如果H[T]被移除,则H[T]之前的全部条目被向后移动。例如,对于以降序从T至1的X,H[X]=H[X-1]。然后仿射参数的新的集合被放到缓冲区中的第一条目,例如H[0];

10.当仿射参数的新的集合需要被存储到缓冲区中时,其可以与已经在缓冲区中的仿射参数的全部或一些集合比较。如果判定为与已经在缓冲区中的仿射参数的至少一个集合相同或类似,其不应被存储到缓冲区中。该过程已知为“修剪”。

a.对于一个参考图片列表(一个预测方向),在以下情况下,仿射参数{a,b,c,d}或{a,b,c,d,e,f}和仿射参数{a’,b’,c’,d’}或{a’,b’,c’,d’,e’,f’}被视为相同或类似:

i.在一个示例中,a==a’。

ii.在一个示例中,b==b’。

iii.在一个示例中,c==c’。

iv.在一个示例中,d==d’。

v.在一个示例中,a==a’且b==b’。

vi.在一个示例中,c==c’且d==d’。

vii.在一个示例中,a==a’且b==b’且c==c’。

viii.在一个示例中,a==a’且b==b’且c==c’且d=d’。

ix.在一个示例中,|a-a’|

x.在一个示例中,|b-b’|

xi.在一个示例中,|c-c’|

xii.在一个示例中,|d-d’|

xiii.在一个示例中,|a-a’|

xiv.在一个示例中,|c-c’|

xv.在一个示例中,|a-a’|

xvi.在一个示例中,|a-a’|

xvii.变量(例如,delta0,delta1,delta2,delta3)可以是预定义数,或其可以取决于编解码信息,诸如块宽度/高度。其对于不同的标准简表/级别/层级可以是不同的。其可以在VPS/SPS/PPS/条带头/片组头/片/CTU线/CTU中从编码器被信令通知到解码器。

b.在以下情况下,仿射参数的两个集合被视为不是相同或类似的:

i.它们与不同的帧间预测方向(列表0或列表1,或双向)相关联,

ii.当列表0是使用中的一个预测方向时,它们与列表0的不同参考索引相关联。

iii.当列表1是使用中的一个预测方向时,它们与列表1的不同参考索引相关联。

iv.它们具有不同数量的仿射参数或它们使用不同的仿射模型。

c.如果仿射参数的两个集合都从双向预测相关联,那么如果列表0的参数被判定为相同(或类似)且列表1的参数也被判定为相同(或类似),则它们被判定为相同(或类似)。

d.仿射参数的新的集合可以与已经在缓冲区中的仿射参数的每个集合比较。

i.替代地,仿射参数的新的集合仅与已经在缓冲区中的仿射参数的一些集合比较。例如,其与前W个条目比较,例如H[0]…H[W-1]。在另一个示例中,其与后W个条目比较,例如H[M-W],H[M-1]。在另一个示例中,其与每W个条目中的一个条目比较,例如H[0],H[W],H[2*W]…。

e.如果发现缓冲区中的一个条目(表示为H[T])与需要被存储到缓冲区中的仿射参数的新的集合相同或类似,则

i.H[T]被移除,然后仿射参数的新的集合被存储为H[T]。

ii.H[T]被移除,然后H[T]之后的全部条目被向前移动。例如,对于以升序从T到M-1的X,H[X]=H[X+1]。然后仿射参数的新的集合被放到缓冲区中的最后条目,例如H[M-1]。

iii.H[T]被移除,然后在H[T]之前的全部条目被向后移动。例如,对于以降序从T至1的X,H[X]=H[X-1]。然后仿射参数的新的集合被放到缓冲区中的第一条目,例如H[0]。

11.存储仿射参数的缓冲区可以被刷新。

a.缓冲区在刷新时被清空。

b.缓冲区在刷新时被清空,然后一个或多个默认仿射参数在刷新时被放到缓冲区中。

i.默认仿射参数对于不同序列可以不同;

ii.默认仿射参数对于不同图片可以不同;

iii.默认仿射参数对于不同条带可以不同;

iv.默认仿射参数对于不同片可以不同;

v.默认仿射参数对于不同CTU(即LCU)线可以不同;

vi.默认仿射参数对于不同CTU可以不同;

vii.默认仿射参数可以在VPS/SPS/PPS/条带头/片组头/片/CTU线/CTU中从编码器被信令通知到解码器。

c.当进行以下时,缓冲区被刷新

i.开始编解码/解码图片的第一块;

ii.开始编解码/解码条带的第一块;

iii.开始编解码/解码片的第一块;

iv.开始编解码/解码CTU(即LCU)线的第一块;

v.开始编解码/解码CTU的第一块;

12.存储在缓冲区中的仿射模型参数可以用于推导当前块的仿射预测。

a.在一个示例中,存储在缓冲区中的参数可以用于当前块的运动矢量预测或运动矢量编解码。

b.在一个示例中,存储在缓冲区中的参数可以用于推导当前仿射编解码块的控制点MV(CPMV)。

c.在一个示例中,存储在缓冲区中的参数可以用于推导在当前仿射编解码块的子块的运动补偿中使用的MV。

d.在一个示例中,存储在缓冲区中的参数可以用于推导对当前仿射编解码块的CPMV的预测。当需要编解码CPMV时,对CPMV的该预测可以用于预测当前块的CPMV。

i.在一个示例中,如果当前块是用4参数仿射模型编解码的,则更高优先级被分配给4参数仿射模型,并且更低优先级被分配给6参数仿射模型。

ii.在一个示例中,如果当前块是用6参数仿射模型编解码的,则更高优先级分配给6参数仿射模型,并且更低优先级分配给4参数仿射模型。

13.临近M×N单元块(例如,VTM中的4×4块)的运动信息和存储在缓冲区中的仿射参数的集合可以一起用于推导当前块的仿射模型。例如,它们可以用于推导在运动补偿中使用的CPMV或子块的MV,如图15所示。

a.假设存储在单元块中的MV为(mv

i.为了推导CPMV,(x,y)可以为(x0’,y0’)、或(x0’+w,y0’)、或(x0’,y0’+h)、或(x0’+w,y0’+h)。

ii.为了推导当前块的子块的MV,(x,y)可以是子块的中心。假设(x00,y00)是子块的左上方位置,子块尺寸为M×N,则

(a)xm=x00+M/2,ym=y00+N/2;

(b)xm=x00+M/2-1,ym=y00+N/2-1;

(c)xm=x00+M/2-1,ym=y00+N/2;

(d)xm=x00+M/2,ym=y00+N/2-1;

iii.在一个示例中,

如果缓冲区中的参数来自用4参数仿射模式编解码的块。

iv.在一个示例中,

如果缓冲区中的参数来自用6参数仿射模式编解码的块。

v.在一个示例中,

无论缓冲区中的参数来自用4参数仿射模式还是6参数仿射模式编解码的块。

b.在一个示例中,从运动矢量和存储在缓冲区中的参数推导当前块的CPMV,并且这些CPMV充当信令通知的当前块的CPMV的MVP。

c.在一个示例中,从运动矢量和存储在缓冲区中的参数推导当前块的CPMV,并且这些CPMV用于推导用于运动补偿的每个子块的MV。

d.在一个示例中,如果当前块是仿射Merge编解码的,则用于运动补偿的每个子块的MV是从运动矢量和存储在临近块中的参数推导的。

e.在一个示例中,用于推导在当前块的运动补偿中使用的CPMV或子块的MV的临近单元块的运动矢量和参数的集合应遵循

如下的一些或全部约束:

i.它们与相同的帧间预测方向(列表0或列表1,或双向)相关联,

ii.当列表0是使用中的一个预测方向时,它们与列表0的相同的参考索引相关联。

iii.当列表1是使用中的一个预测方向时,它们与列表1的相同的参考索引相关联。

图15是从临近块的MV和存储在缓冲区中的参数的集合推导CPMV的示例。

14.从存储在缓冲区中的的仿射参数的集合推导的当前块的仿射模型可以用于生成仿射Merge候选。

a.在一个示例中,边信息(诸如帧间预测方向和与存储的参数相关联的列表0/列表1的参考索引)由生成的仿射Merge候选继承。

b.从存储在缓冲区中的的仿射参数的集合推导的仿射Merge候选可以在从临近块继承的仿射Merge候选之后、构建的仿射Merge候选之前被插入到仿射Merge候选列表中;

c.从存储在缓冲区中的的仿射参数的集合推导的仿射Merge候选可以在构建的仿射Merge候选之后、填充候选之前被插入到仿射Merge候选列表中。

d.从存储在缓冲区中的的仿射参数的集合推导的仿射Merge候选可以在不使用时域运动预测(图5中的块T)的构建的仿射Merge候选之后、使用时域运动预测(图5中的块T)的构建的仿射Merge候选之前被插入到仿射Merge列表中;

e.从存储在缓冲区中的的仿射参数的集合推导的仿射Merge候选可以被插入到仿射Merge候选列表中,并且它们可以与构建的仿射Merge候选和/或填充候选交织。

15.存储在缓冲区中的仿射参数可以用于生成仿射AMVP候选。

a.在一个示例中,用于生成仿射AMVP候选的存储的参数应参考与仿射AMVP编解码块的目标参考图片相同的参考图片。

i.在一个示例中,与存储的参数相关联的参考图片列表应与目标参考图片列表相同。

ii.在一个示例中,与存储的参数相关联的参考索引应与目标参考索引相同。

b.从存储在缓冲区中的的仿射参数的集合推导的仿射AMVP候选可以在从临近块继承的仿射AMVP候选之后、构建的仿射AMVP候选之前被插入到仿射AMVP候选列表中;

c.从存储在缓冲区中的的仿射参数的集合推导的仿射AMVP候选可以在构建的仿射AMVP候选之后、基于HEVC的仿射AMVP候选之前被插入到仿射AMVP候选列表中。

d.从存储在缓冲区中的的仿射参数的集合推导的仿射AMVP候选可以在基于HEVC的仿射AMVP候选之后、填充仿射AMVP候选之前被插入到仿射AMVP候选列表中。

e.从存储在缓冲区中的的仿射参数的集合推导的仿射AMVP候选可以在不使用时域运动预测(图5中的块T)的构建的仿射AMVP候选之后、使用时域运动预测(图5中的块T)的构建的仿射AMVP候选之前被插入到仿射AMVP列表中;

f.在一个示例中,如果当前块是用4参数仿射模型编解码的,则更高优先级被分配给4参数仿射模型,并且更低优先级被分配给6参数仿射模型。

g.在一个示例中,如果当前块是用6参数仿射模型编解码的,则更高优先级被分配给6参数仿射模型,并且更低优先级被分配给4参数仿射模型。

16.缓冲区中的仿射模型参数的多少个集合被添加到候选列表(由N表示)可以是预定义的。

a.N可以在VPS/SPS/PPS/条带头/片组头/片中从编码器被信令通知到解码器。

b.N可以取决于块大小、编解码模式信息(例如,AMVP/Merge)等。

c.N可以取决于标准简表/级别/层级。

d.N可以取决于列表中的可用候选。

i.N可以取决于特定类型的可用候选(例如,继承的仿射运动候选)

17.如何选择缓冲区中要被插入到候选列表中的仿射模型参数的全部集合的部分(例如,如项目符号15中的N)可以是预定义的。

a.在一个示例中,缓冲区中的最晚的若干集合(例如,后N个条目)。

b.其可以取决于缓冲区中的仿射模型参数的集合的索引。

18.当仿射模型参数的多个集合需要被插入到候选列表时,它们可以以索引的升序被添加。

a.替代地,它们可以以索引的降序被添加。

b.替代地,决定插入顺序的规则取决于添加来自缓冲区的那些参数之前的候选列表中的可用候选的数量。

19.存储在缓冲区中的的仿射参数的集合以及它们相关联的基本MV和基本MV所在的位置可以一起用于推导当前块的仿射模型。例如,它们可以用于推导在运动补偿中使用的CPMV或子块的MV。

a.假设相关联的基本MV为(mv

i.为了推导CPMV,(x,y)可以为(x0’,y0’)、或(x0’+w,y0’)、或(x0’,y0’+h)、或(x0’+w,y0’+h)。

ii.为了推导当前块的子块的MV,(x,y)可以是子块的中心。

iii.假设(xm,ym)是基本MV所在的位置(基本位置)的存储的坐标。

iv.在一个示例中,

如果缓冲区中的参数来自用4参数仿射模式编解码的块。

v.在一个示例中,

如果缓冲区中的参数来自用6参数仿射模式编解码的块。

vi.在一个示例中,

无论缓冲区中的参数来自用4参数仿射模式还是6参数仿射模式编解码的块。

b.在一个示例中,从运动矢量和存储在缓冲区中的参数推导当前块的CPMV,并且这些CPMV充当信令通知的当前块的CPMV的MVP。

c.在一个示例中,从相关联的基本MV和存储在缓冲区中的参数推导当前块的CPMV,并且这些CPMV用于推导用于运动补偿的每个子块的MV。

d.在一个示例中,如果当前块是仿射Merge编解码的,则从相关联的基本MV和存储在临近块中的参数推导用于运动补偿的每个子块的MV。

20.空域临近/非相邻M×N单元块(例如,VTM中的4×4块)的运动信息和存储在缓冲区中的的仿射参数的集合可以一起用于推导当前块的仿射模型。例如,它们可以用于推导在运动补偿中使用的CPMV或子块的MV。

a.假设存储在单元块中的MV为(mv

i.为了推导CPMV,(x,y)可以为(x0’,y0’)、或(x0’+w,y0’)、或(x0’,y0’+h)、或(x0’+w,y0’+h)。

ii.为了推导当前块的子块的MV,(x,y)可以是子块的中心。

iii.假设(x00,y00)是空域临近M×N单元块的左上方位置,则基本位置(xm,ym)可以被推导为:

(a)xm=x00+M/2,ym=y00+N/2;

(b)xm=x00+M/2-1,ym=y00+N/2-1;

(c)xm=x00+M/2-1,ym=y00+N/2;

(d)xm=x00+M/2,ym=y00+N/2-1;

iv.在一个示例中,

如果缓冲区中的参数来自用4参数仿射模式编解码的块。

v.在一个示例中,

如果缓冲区中的参数来自用6参数仿射模式编解码的块。

vi.在一个示例中,

无论缓冲区中的参数来自用4参数仿射模式还是6参数仿射模式编解码的块。

b.在一个示例中,从空域临近单元块的运动矢量和存储在缓冲区中的参数推导当前块的CPMV,并且这些CPMV充当信令通知的当前块的CPMV的MVP。

c.在一个示例中,从空域临近单元块的运动矢量和存储在缓冲区中的参数推导当前块的CPMV,并且这些CPMV用于推导用于运动补偿的每个子块的MV。

d.在一个示例中,如果当前块是仿射Merge编解码的,则从空域临近单元块的运动矢量和存储在临近块中的参数推导用于运动补偿的每个子块的MV。

e.在一个示例中,用于推导在当前块的运动补偿中使用的CPMV或子块的MV的空域临近单元块的运动矢量和参数的集合应遵循如下的一些或全部约束:

i.它们与相同的帧间预测方向(列表0或列表1,或双向)相关联,

ii.当列表0是使用中的一个预测方向时,它们与列表0的相同的参考索引相关联。

iii.当列表1是使用中的一个预测方向时,它们与列表1的相同的参考索引相关联。

f.在一个示例中,如果空域临近M×N单元块的MV和存储的仿射参数参考不同的参考图片,则空域临近M×N单元块的MV缩放为参考与存储的仿射参数相同的参考图片,以推导当前块的仿射模型。

21.提出了时域运动矢量预测(TMVP)可以与存储在缓冲区中的仿射参数一起使用。例如,它们可以用于推导在运动补偿中使用的CPMV或子块的MV。

a.并置图片中的并置M×N单元块(例如,VTM中的4×4块)的运动信息和存储在缓冲区中的的仿射参数的集合可以一起用于推导当前块的仿射模型。例如,它们可以用于推导在运动补偿中使用的CPMV或子块的MV。

i.图25示出了并置单元块的可能位置的示例。(A1~A4,B1~B4,…F1~F4,J1~J4,K1~K4,和L1~L4。

b.假设存储在并置单元块中的MV为(mv

i.为了推导CPMV,(x,y)可以为(x0’,y0’)、或(x0’+w,y0’)、或(x0’,y0’+h)、或(x0’+w,y0’+h)。

ii.为了推导当前块的子块的MV,(x,y)可以是子块的中心。

iii.假设(x00,y00)是并置M×N单元块的左上方位置,则基本位置(xm,ym)可以被推导为:

(a)xm=x00+M/2,ym=y00+N/2;

(b)xm=x00+M/2-1,ym=y00+N/2-1;

(c)xm=x00+M/2-1,ym=y00+N/2;

(d)xm=x00+M/2,ym=y00+N/2-1;

iv.在一个示例中,

如果缓冲区中的参数来自用4参数仿射模式编解码的块。

v.在一个示例中,

如果缓冲区中的参数来自用6参数仿射模式编解码的块。

vi.在一个示例中,

无论缓冲区中的参数来自用4参数仿射模式还是6参数仿射模式编解码的块。

c.在一个示例中,从时域临近块的运动矢量和存储在缓冲区中的参数推导当前块的CPMV,并且这些CPMV充当信令通知的当前块的CPMV的MVP。

d.在一个示例中,从时域临近块的运动矢量和存储在缓冲区中的参数推导当前块的CPMV,并且这些CPMV用于推导用于运动补偿的每个子块的MV。

e.在一个示例中,如果当前块是仿射Merge编解码的,则从时域临近块的运动矢量和存储在临近块中的参数推导用于运动补偿的每个子块的MV。

f.在一个示例中,用于推导在当前块的运动补偿中使用的CPMV或子块的MV的时域临近单元块的运动矢量和参数的集合应遵循如下的一些或全部约束:

i.它们与相同的帧间预测方向(列表0或列表1,或双向)相关联,

ii.当列表0是使用中的一个预测方向时,它们与列表0的相同的参考索引相关联。

iii.当列表1是使用中的一个预测方向时,它们与列表1的相同的参考索引相关联。

g.在一个示例中,如果时域临近M×N单元块的MV和存储的仿射参数参考不同的参考图片,则空域时域M×N单元块的MV缩放为参考与存储的仿射参数相同的参考图片,以推导当前块的仿射模型。

i.例如,如果并置图片的POC为POCx;时域临近M×N单元块的MV参考的参考图片的POC为POCy;当前图片的POC为POCz;存储的仿射参数参考的参考图片的POC为POCw,则(mv

mv

mv

22.从存储在缓冲区中的参数和一个或多个空域临近/非相邻单元块推导的仿射Merge候选可以被放到仿射Merge候选列表中。

a.在一个示例中,这些候选刚好被放在继承的仿射Merge候选之后。

b.在一个示例中,这些候选刚好被放在第一构建的仿射Merge候选之后。

c.在一个示例中,这些候选刚好被放在从空域临近块构建的第一仿射Merge候选之后。

d.在一个示例中,这些候选刚好被放在全部构建的仿射Merge候选之后。

e.在一个示例中,这些候选刚好被放在全部零仿射Merge候选之前。

f.在一个示例中,如果另一仿射Merge候选是从空域临近单元块继承的,则空域临近单元块不用于与存储在缓冲区中的参数一起推导仿射Merge候选。

g.在一个示例中,空域临近单元块可以用于仅与存储在缓冲区中的参数的一个集合一起推导仿射Merge候选。换言之,如果空域临近单元块和存储在缓冲区中的参数的集合已经推导仿射Merge候选,则其不能用于与存储在缓冲区中的参数的另一集合一起推导另一仿射Merge候选。

h.在一个示例中,从存储在缓冲区中的参数推导的至多N个仿射Merge候选和空域临近单元块可以被放到仿射Merge候选列表中。N是诸如3的整数。

i.在一个示例中,如果选择从存储在缓冲区中的参数和空域临近单元块推导的仿射Merge候选,则当前块的GBI索引是从空域临近块的GBI索引继承的。

j.在一个示例中,从存储在缓冲区中的参数和空域临近块推导的仿射Merge候选被顺序放到仿射Merge候选列表中。

i.例如,二级嵌套循环方法用于搜索从存储在缓冲区中的参数和空域临近块推导的可用仿射Merge候选,并将它们放到仿射Merge候选列表中。

(a)在第一级循环中,按顺序访问存储在缓冲区中的参数的每个集合。可以从表的开头到结尾、或从表的结尾到开头、或以任何其他预定义或自适应顺序访问它们。

a.在示例中,存储在缓冲区中的参数的一些集合在第一循环中被跳过。例如,表中的前N个或后N个集合被跳过。替代地,如果k%S==0,则H[k]被跳过。替代地,如果k%S!=0,则H[k]被跳过。

(b)对于存储在缓冲区中的参数的每个集合,第二级循环被应用。在第二级循环中,按顺序访问每个空域临近块。例如,按顺序访问如图5所示的块A1、B1、B0、A0和B2。在伪代码实施方式中,嵌套循环可以被描述为:

a.在一个示例中,可以仅有一个空域临近块被包括在第二循环中。例如,仅A1被包括。

b.利用在第一级循环中给定的参数的集合和在第二级循环中给定的空域临近块,如果满足以下条件中的全部或一些,则仿射Merge候选被生成并放到仿射Merge候选列表中。

i.空域临近块可用;

ii.空域临近块是帧间编解码的;

iii.空域临近块不在当前CTU行之外。

iv.参数的集合的帧间预测(列表0、列表1、或双向)和空域临近块的帧间预测(列表0、列表1、或双向)是相同的;

v.参数的集合的列表0的参考索引和空域临近块的列表0的参考索引是相同的;

vi.参数的集合的列表1的参考索引和空域临近块的列表1的参考索引是相同的;

vii.参数的集合的列表0的参考图片的POC与空域临近块的参考图片之一的POC相同。

viii.参数的集合的列表1的参考图片的POC与空域临近块的参考图片之一的POC相同。

c.在一个示例中,如果临近块已经用于推导继承的仿射Merge候选,则其在第二循环中被跳过,不用于与存储的仿射参数一起推导仿射Merge候选。

d.在一个示例中,如果临近块已经用于与存储的仿射参数的集合一起推导仿射Merge候选,则其在第二循环中被跳过,不用于与存储的仿射参数的另一集合一起推导仿射Merge候选。

e.在一个示例中,如果临近块用于推导仿射Merge候选,则该临近块之后的全部其他临近块被跳过,并且跳出第二循环并回到第一循环。在第一循环中访问参数的下一集合。

23.从存储在缓冲区中的参数和一个或多个时域单元块推导的仿射Merge候选可以被放到仿射Merge候选列表中。

a.在一个示例中,这些候选刚好被放在继承的仿射Merge候选之后。

b.在一个示例中,这些候选刚好被放在第一构建的仿射Merge候选之后。

c.在一个示例中,这些候选刚好被放在从空域临近块构建的第一仿射Merge候选之后。

d.在一个示例中,这些候选刚好被放在全部构建的仿射Merge候选之后。

e.在一个示例中,这些候选刚好被放在从存储在缓冲区中的参数和空域临近单元块推导的全部仿射Merge候选之后。

f.在一个示例中,这些候选刚好被放在全部零仿射Merge候选之前。

g.在一个示例中,从存储在缓冲区中的参数和时域临近单元块推导的至多N个仿射Merge候选可以被放到仿射Merge候选列表中。N是诸如3的整数。

h.在一个示例中,如果选择从存储在缓冲区中的参数和时域临近单元块推导的仿射Merge候选,则当前块的GBI索引是从时域临近块的GBI索引继承的。

i.在一个示例中,从存储在缓冲区中的参数和时域临近块推导的仿射Merge候选被顺序放到仿射Merge候选列表中。

i.例如,二级嵌套循环方法用于搜索从存储在缓冲区中的参数和时域临近块推导的可用仿射Merge候选,并将它们放到仿射Merge候选列表中。

(a)在第一级循环中,按顺序访问存储在缓冲区中的参数的每个集合。可以从表的开头到结尾、或从表的结尾到开头、或以任何其他预定义或自适应顺序访问它们。

a.在示例中,存储在缓冲区中的参数的一些集合在第一循环中被跳过。例如,表中的前N个或后N个集合被跳过。替代地,如果k%S==0,则H[k]被跳过。替代地,如果k%S!=0,则H[k]被跳过。

(b)对于存储在缓冲区中的参数的每个集合,第二级循环被应用。在第二级循环中,按顺序访问每个时域临近块。例如,按顺序访问如图25所示的块L4和E4。

在伪代码实施方式中,嵌套循环可以被描述为:

a.在一个示例中,可以仅有一个时域临近块被包括在第二循环中。例如,仅L4被包括。

b.利用在第一级循环中给定的参数的集合和在第二级循环中给定的临近块,如果满足以下条件中的全部或一些,则仿射Merge候选被生成并放到仿射Merge候选列表中。

i.临近块可用;

ii.临近块是帧间编解码的;

iii.临近块不在当前CTU行之外。

iv.参数的集合的帧间预测(列表0、列表1、或双向)和临近块的帧间预测是相同的;

v.参数的集合的列表0的参考索引和临近块的列表0的参考索引是相同的;

vi.参数的集合的列表1的参考索引和临近块的列表1的参考索引是相同的;

vii.参数的集合的列表0的参考图片的POC与临近块的参考图片之一的POC相同。

viii.参数的集合的列表1的参考图片的POC与临近块的参考图片之一的POC相同。

c.在一个示例中,如果临近块已经用于推导继承的仿射Merge候选,则其在第二循环中被跳过,不用于与存储的仿射参数一起推导仿射Merge候选。

d.在一个示例中,如果临近块已经用于与存储的仿射参数的集合一起推导仿射Merge候选,则其在第二循环中被跳过,不用于与存储的仿射参数的另一集合一起推导仿射Merge候选。

e.在一个示例中,如果临近块用于推导仿射Merge候选,则该临近块之后的全部其他临近块被跳过,并且跳出第二循环并回到第一循环。在第一循环中访问参数的下一集合。

24.从存储在缓冲区中的参数和一个或多个空域临近/非相邻单元块推导的仿射AMVP候选可以被放到仿射AMVP候选列表中。

a.在一个示例中,这些候选刚好被放在继承的仿射AMVP候选之后。

b.在一个示例中,这些候选刚好被放在第一构建的AMVP Merge候选之后。

c.在一个示例中,这些候选刚好被放在从空域临近块构建的第一仿射AMVP候选之后。

d.在一个示例中,这些候选刚好被放在全部构建的仿射AMVP候选之后。

e.在一个示例中,这些候选刚好被放在第一平移仿射AMVP候选之后。

f.在一个示例中,这些候选刚好被放在全部平移仿射AMVP候选之后。

g.在一个示例中,这些候选刚好被放在全部零仿射AMVP候选之前。

h.在一个示例中,如果另一仿射AMVP候选是从空域临近单元块继承的,则空域临近单元块不用于与存储在缓冲区中的参数一起推导仿射AMVP候选。

i.在一个示例中,空域临近单元块可以用于仅与存储在缓冲区中的参数的一个集合一起推导仿射AMVP候选。换言之,如果空域临近单元块和存储在缓冲区中的参数的集合已经推导仿射AMVP候选,则其不能用于与存储在缓冲区中的参数的另一集合一起推导另一仿射AMVP候选。

j.在一个示例中,从存储在缓冲区中的参数和空域临近单元块推导的至多N个仿射AMVP候选可以被放到仿射AMVP候选列表中。N是诸如1的整数。

k.在一个示例中,从存储在缓冲区中的参数和空域临近块推导的仿射AMVP候选被顺序放到仿射AMVP候选列表中。

i.例如,二级嵌套循环方法用于搜索从存储在缓冲区中的参数和空域临近块推导的可用仿射AMVP候选,并将它们放到仿射AMVP候选列表中。

(a)在第一级循环中,按顺序访问存储在缓冲区中的参数的每个集合。可以从表的开头到结尾、或从表的结尾到开头、或以任何其他预定义或自适应顺序访问它们。

a.在示例中,存储在缓冲区中的参数的一些集合在第一循环中被跳过。例如,表中的前N个或后N个集合被跳过。替代地,如果k%S==0,则H[k]被跳过。替代地,如果k%S!=0,则H[k]被跳过。

(b)对于存储在缓冲区中的参数的每个集合,第二级循环被应用。在第二级循环中,按顺序访问每个空域临近块。例如,按顺序访问如图5所示的块A1、B1、B0、A0和B2。在伪代码实施方式中,嵌套循环可以被描述为:

a.在一个示例中,可以仅有一个空域临近块被包括在第二循环中。例如,仅A1被包括。

b.利用在第一级循环中给定的参数的集合和在第二级循环中给定的空域临近块,如果满足以下条件中的一些或全部,则仿射AMVP候选被生成并放到仿射AMVP候选列表中。

i.空域临近块可用;

ii.空域临近块是帧间编解码的;

iii.空域临近块不在当前CTU行之外。

iv.参数的集合的列表0的参考索引和空域临近块的列表0的参考索引是相同的;

v.参数的集合的列表1的参考索引和空域临近块的列表1的参考索引是相同的;

vi.参数的集合的列表0的参考索引等于列表0的AMVP信令通知的参考索引。

vii.参数的集合的列表1的参考索引等于列表1的AMVP信令通知的参考索引。

viii.空域临近块的列表0的参考索引等于列表0的AMVP信令通知的参考索引。

ix.空域临近块的列表1的参考索引等于列表1的AMVP信令通知的参考索引。

x.参数的集合的列表0的参考图片的POC与空域临近块的参考图片之一的POC相同。

xi.参数的集合的列表1的参考图片的POC与空域临近块的参考图片之一的POC相同。

xii.列表0的AMVP信令通知的参考图片的POC与空域临近块的参考图片之一的POC相同。

xiii.列表0的AMVP信令通知的参考图片的POC与参数的集合的参考图片之一的POC相同。

c.在一个示例中,如果临近块已经用于推导继承的仿射AMVP候选,则其在第二循环中被跳过,不用于与存储的仿射参数一起推导仿射AMVP候选。

d.在一个示例中,如果临近块已经用于与存储的仿射参数的集合一起推导仿射AMVP候选,则其在第二循环中被跳过,不用于与存储的仿射参数的另一集合一起推导仿射AMVP候选。

e.在一个示例中,如果临近块用于推导仿射AMVP候选,则该临近块之后的全部其他临近块被跳过,并且跳出第二循环并回到第一循环。在第一循环中访问参数的下一集合。

25.从存储在缓冲区中的参数和一个或多个时域单元块推导的仿射AMVP候选可以被放到仿射AMVP候选列表中。

a.在一个示例中,这些候选刚好被放在继承的仿射AMVP候选之后。

b.在一个示例中,这些候选刚好被放在第一构建的AMVPMerge候选之后。

c.在一个示例中,这些候选刚好被放在从空域临近块构建的第一仿射AMVP候选之后。

d.在一个示例中,这些候选刚好被放在全部构建的仿射AMVP候选之后。

e.在一个示例中,这些候选刚好被放在第一平移仿射AMVP候选之后。

f.在一个示例中,这些候选刚好被放在全部平移仿射AMVP候选之后。

g.在一个示例中,这些候选刚好被放在全部零仿射AMVP候选之前。

h.在一个示例中,这些候选刚好被放在从存储在缓冲区中的参数和空域临近单元块推导的全部仿射AMVP候选之后。

i.在一个示例中,从存储在缓冲区中的参数和时域临近单元块推导的至多N个仿射AMVP候选可以被放到仿射Merge候选列表中。N为诸如1的整数。

j.在一个示例中,从存储在缓冲区中的参数和时域临近块推导的仿射AMVP候选被顺序放到仿射AMVP候选列表中。

i.例如,二级嵌套循环方法用于搜索从存储在缓冲区中的参数和时域临近块推导的可用仿射AMVP候选,并将它们放到仿射AMVP候选列表中。

(a)在第一级循环中,按顺序访问存储在缓冲区中的参数的每个集合。可以从表的开头到结尾、或从表的结尾到开头、或以任何其他预定义或自适应顺序访问它们。

a.在示例中,存储在缓冲区中的参数的一些集合在第一循环中被跳过。例如,表中的前N个或后N个集合被跳过。替代地,如果k%S==0,则H[k]被跳过。替代地,如果k%S!=0,则H[k]被跳过。

(b)对于存储在缓冲区中的参数的每个集合,第二级循环被应用。在第二级循环中,按顺序访问每个时域临近块。例如,按顺序访问如图5所示的块A1、B1、B0、A0和B2。在伪代码实施方式中,嵌套循环可以被描述为:

a.在一个示例中,可以仅有一个时域临近块被包括在第二循环中。例如,仅A1被包括。

b.利用在第一级循环中给定的参数的集合和在第二级循环中给定的时域临近块,如果满足以下条件中的一些或全部,则仿射AMVP候选被生成并放到仿射AMVP候选列表中。

i.时域临近块可用;

ii.时域临近块是帧间编解码的;

iii.时域临近块不在当前CTU行之外。

iv.参数的集合的列表0的参考索引和时域临近块的列表0的参考索引是相同的;

v.参数的集合的列表1的参考索引和时域临近块的列表1的参考索引是相同的;

vi.参数的集合的列表0的参考索引等于列表0的AMVP信令通知的参考索引。

vii.参数的集合的列表1的参考索引等于列表1的AMVP信令通知的参考索引。

viii.时域临近块的列表0的参考索引等于列表0的AMVP信令通知的参考索引。

ix.时域临近块的列表1的参考索引等于列表1的AMVP信令通知的参考索引。

x.参数的集合的列表0的参考图片的POC与时域临近块的参考图片之一的POC相同。

xi.参数的集合的列表1的参考图片的POC与时域临近块的参考图片之一的POC相同。

xii.列表0的AMVP信令通知的参考图片的POC与时域临近块的参考图片之一的POC相同。

xiii.列表0的AMVP信令通知的参考图片的POC与参数的集合的参考图片之一的POC相同。

c.在一个示例中,如果临近块已经用于推导继承的仿射AMVP候选,则其在第二循环中被跳过,不用于与存储的仿射参数一起推导仿射AMVP候选。

d.在一个示例中,如果临近块已经用于与存储的仿射参数的集合一起推导仿射AMVP候选,则其在第二循环中被跳过,不用于与存储的仿射参数的另一集合一起推导仿射AMVP候选。

e.在一个示例中,如果临近块用于推导仿射AMVP候选,则该临近块之后的全部其他临近块被跳过,并且跳出第二循环并回到第一循环。在第一循环中访问参数的下一集合。

26.提出使用从仿射HMVP缓冲区推导的仿射Merge候选被放到仿射Merge列表/子块Merge列表中,并且继承的仿射Merge候选可以从列表被移除。

a.在一个示例中,从仿射HMVP缓冲区推导的仿射Merge候选被放到仿射Merge列表/子块Merge列表中,并且继承的仿射Merge候选从列表被排除。

b.在替代示例中,从仿射HMVP缓冲区推导的仿射Merge候选被放到仿射Merge列表/子块Merge列表中,并且从当前CTU行中的块继承的仿射Merge候选从列表被移除。

i.例如,从仿射HMVP缓冲区推导的仿射Merge候选在从与当前CTU行不同的CTU行中的块继承的仿射Merge候选之后被放到仿射Merge列表/子块Merge列表中。

c.替代地,是否添加继承的仿射Merge候选可以取决于仿射HMVP缓冲区。

i.在一个示例中,从仿射HMVP缓冲区推导的仿射Merge候选可以在继承的仿射Merge候选之前被插入到候选列表。

ii.在一个示例中,当仿射HMVP缓冲区为空时,继承的仿射Merge候选可以被添加;否则(如果仿射HMVP缓冲区不为空),继承的仿射Merge候选可以被排除。

d.替代地,是否应用所提出的方法可以取决于块大小。

27.提出使用从仿射HMVP缓冲区推导的仿射AMVP候选被放到仿射AMVP列表中,并且继承的仿射AMVP候选可以从列表被移除。

a.在一个示例中,从仿射HMVP缓冲区推导的仿射AMVP候选被放到仿射AMVP列表中,并且继承的仿射AMVP候选从列表被排除。

b.在替代示例中,从存储在仿射HMVP缓冲区中的推导的仿射AMVP候选被放到仿射AMVP列表中,并且从当前CTU行中的块继承的仿射AMVP候选从列表被移除。

i.例如,从仿射HMVP缓冲区推导的仿射AMVP候选在从与当前CTU行不同的CTU行中的块继承的仿射AMVP候选之后被放到仿射AMVP列表中。

c.替代地,是否添加继承的仿射AMVP候选可以取决于仿射HMVP缓冲区。

d.替代地,是否应用所提出的方法可以取决于块大小。

28.在一个示例中,如果从存储在缓冲区中的参数推导的仿射Merge候选可以被放到列表中,则仿射Merge候选列表的尺寸增大N(例如,N=1)。

29.在一个示例中,如果从存储在缓冲区中的参数推导的仿射AMVP候选可以被放到列表中,则仿射AMVP候选列表的尺寸增大N(例如,N=1)。

30.虚拟仿射模型可以从存储在缓冲区中的多个现有仿射模型进行推导。假设缓冲区已经包括若干仿射模型,第i个候选由Candi表示,参数为(ai,bi,ci,di,ei,fi)。

a.在一个示例中,Candi和Candj的参数可以通过从Candi获取一些参数并从Candj获取剩余参数而组合,以形成虚拟仿射模型。虚拟仿射模型的一个示例是(ai,bi,cj,dj,ei,fi)。

b.在一个示例中,Candi和Candj的参数可以联合用于用函数(诸如平均)生成虚拟仿射模型。虚拟仿射模型的一个示例是((ai+aj)/2,(bi+bj)/2,(ci+cj)/2,(di+dj)/2,(ei+ej)/2,(fi+fj)/2)。

c.虚拟仿射模型可以以与存储的仿射模型类似的方式使用,诸如以上述项目符号。

31.提出了从空域临近块继承的仿射Merge候选不放到基于子块的Merge候选列表中,并且所公开的基于历史的仿射Merge候选被放到基于子块的Merge候选列表中。

a.在一个示例中,所公开的基于历史的仿射Merge候选恰好在ATMVP候选之后被放到基于子块的Merge候选列表中。

b.在一个示例中,所公开的基于历史的仿射Merge候选在构建的仿射Merge候选之前被放到基于子块的Merge候选列表中。

c.提出了从空域临近块继承的仿射Merge候选是否被放到基于子块的Merge候选列表中可以取决于空域临近块的位置。

i.在一个示例中,如果空域临近块在与当前块相同的CTU或CTU行中,则从空域临近块继承的仿射Merge候选被放到基于子块的Merge候选列表中;否则,不放到该列表中。

ii.替代地,如果空域临近块不在与当前块相同的CTU或CTU行中,则从空域临近块继承的仿射Merge候选被放到基于子块的Merge候选列表中;否则,不放到该列表中。

32.提出了从空域临近块继承的仿射AMVP候选不放到仿射MVP候选列表中,并且所公开的基于历史的仿射MVP候选被放到仿射MVP候选列表中。

a.在一个示例中,所公开的基于历史的仿射MVP候选被首先放到仿射MVP候选列表中。

b.提出了从空域临近块继承的仿射AMVP候选是否被放到仿射MVP候选列表中可以取决于空域临近块的位置。

i.在一个示例中,如果空域临近块在与当前块相同的CTU或CTU行中,则从空域临近块继承的仿射AMVP候选被放到仿射MVP候选列表中;否则,不放到该列表中。

ii.替代地,如果空域临近块不在与当前块相同的CTU或CTU行中,则从空域临近块继承的仿射AMVP候选被放到仿射MVP候选列表中;否则,不放到该列表中。

33.多于一个仿射HMVP缓冲区用于存储不同类别中的仿射参数或CPMV。

a.例如,两个缓冲区分别用于存储参考列表0和参考列表1中的仿射参数。

i.在一个示例中,在解码仿射编解码的CU之后,参考列表0的CPMV或参数用于更新参考列表0的HMVP缓冲区。

ii.在一个示例中,在解码仿射编解码的CU之后,参考列表1的CPMV或参数用于更新参考列表1的HMVP缓冲区。

iii.在一个示例中,如果空域临近/非相邻M×N单元块(例如,VTM中的4×4块)的运动信息和存储在缓冲区中的仿射参数的集合一起用于推导当前块的仿射模型,则参考参考列表X的空域临近/非相邻单元块的MV与参考参考列表X的存储在缓冲区中的仿射参数进行组合。X=0或1。

iv.在一个示例中,如果时域临近M×N单元块(例如,VTM中的4×4块)的运动信息和存储在缓冲区中的的仿射参数的集合一起用于推导当前块的仿射模型,则参考参考列表X的时域临近单元块的MV与参考参考列表X的存储在缓冲区中的仿射参数进行组合。X=0或1。

b.例如,N(例如,N=6)个缓冲区用于存储参考不同参考列表中的不同参考索引的仿射参数。在以下讨论中,“参考K”意味着参考图片的参考索引是K。

i.在一个示例中,在解码仿射编解码的CU之后,参考列表X中的参考K的CPMV或参数用于更新列表X中的参考K的HMVP缓冲区。X=0或1。K可以是0,1,2等。

ii.在一个示例中,在解码仿射编解码的CU之后,参考列表X中的参考K的CPMV或参数用于更新列表X中的参考L的HMVP缓冲区,其中K>=L。X=0或1。M可以是1,2,3等。

iii.在一个示例中,如果空域临近/非相邻M×N单元块(例如,VTM中的4×4块)的运动信息和存储在缓冲区中的仿射参数的集合一起用于推导当前块的仿射模型,则参考列表X中的参考K的空域临近/非相邻单元块的MV与参考列表X中的参考K的存储在缓冲区中的仿射参数进行组合。X=0或1。K可以是0,1,2等。

iv.在一个示例中,如果时域临近M×N单元块(例如,VTM中的4×4块)的运动信息和存储在缓冲区中的的仿射参数的集合一起用于推导当前块的仿射模型,则参考列表X中的参考K的时域临近单元块的MV与参考列表X中的参考K的存储在缓冲区中的仿射参数进行组合。X=0或1。K可以是0,1,2等。

v.在一个示例中,如果空域临近/非相邻M×N单元块(例如,VTM中的4×4块)的运动信息和存储在缓冲区中的仿射参数的集合一起用于推导当前块的仿射模型,则参考列表X中的参考K的空域临近/非相邻单元块的MV与参考列表X中的参考L的存储在缓冲区中的仿射参数进行组合,其中K>=L。X=0或1。L可以是1,2,3等。

vi.在一个示例中,如果时域临近M×N单元块(例如,VTM中的4×4块)的运动信息和存储在缓冲区中的的仿射参数的集合一起用于推导当前块的仿射模型,则参考列表X中的参考K的时域临近单元块的MV与参考列表X中的参考L的存储在缓冲区中的仿射参数进行组合,其中K>=L。X=0或1。L可以是1,2,3等。

c.类别的每个仿射HMVP缓冲区的尺寸可以是不同的。

i.在一个示例中,尺寸可以取决于参考图片索引。

ii.例如,参考0的仿射HMVP缓冲区的尺寸为3,参考1的仿射HMVP缓冲区的尺寸为2,并且参考2的仿射HMVP缓冲区的尺寸为1。

34.是否和/或如何更新仿射HMVP缓冲区可以取决于当前CU的编解码模式和/或其他编解码信息。

a.例如,如果CU是以仿射Merge模式编解码的并且Merge候选是从仿射HMVP缓冲区推导的,则HMVP缓冲区在解码该CU之后不被更新。

i.替代地,仿射HMVP缓冲区通过移除与仿射HMVP缓冲区的最后条目相关联的仿射参数而更新。

b.在一个示例中,每当一个块是以仿射模式编解码的时,仿射HMVP缓冲区就可以被更新。

c.在一个示例中,当一个块是以仿射Merge模式编解码的并且该块使用共享Merge列表时,仿射HMVP缓冲区的更新被跳过。

35.在一个示例中,仿射HMVP缓冲区可以被分为M(M>1)个子缓冲区:HB

a.替代地,多个仿射HMVP缓冲区(即,多个仿射HMVP表)可以被分配,它们中的每一个可以对应于上述一个子缓冲区HB

b.在一个示例中,对一个子缓冲区的操作(例如,子缓冲区更新过程、子缓冲区的使用)可以不影响其他子缓冲区。

c.在一个示例中,M是预定义的,诸如10。

d.在一个示例中,前M0个缓冲区与参考图片列表X的仿射参数的存储相关,并且剩余的(M-M0个)缓冲区与参考图片列表Y的仿射参数的存储相关,其中Y=1–X并且X为0或1。

i.替代地,参考图片列表X的仿射参数可以以与参考图片列表Y的那些仿射参数交织的方式被存储。

ii.在一个示例中,参考图片列表X的仿射参数可以被存储在HB

e.在一个示例中,M可以从编码器被信令通知到解码器,诸如在视频级别(例如,VPS)、序列级别(例如,SPS)、图片级别(例如,PPS或图片头)、条带级别(例如,条带头)、片组级别(例如,片组头)。

f.在一个示例中,M可以取决于参考图片的数量。

i.例如,M可以取决于参考列表0中的参考图片的数量;

ii.例如,M可以取决于参考列表1中的参考图片的数量;

g.在一个示例中,每个子缓冲区可以具有相同数量的最大允许数量的条目,表示为N。例如,N=1或N=2;

h.在一个示例中,每个子缓冲区可以具有不同数量的条目的最大允许数量。例如,子缓冲区HB

i.当仿射参数的集合用于更新HMVP缓冲区时,具有子缓冲区索引SI的一个子缓冲区可以被选择,并且然后仿射参数的集合可以用于更新对应的子缓冲区HB

i.在一个示例中,子缓冲区的选择可以基于在其上应用仿射参数的集合的块的编解码信息。

(a)在一个示例中,编解码信息可以包括与仿射参数的集合相关联的参考列表索引(或预测方向)和/或参考索引。

(b)例如,假设仿射参数的集合的参考列表索引和参考索引被表示为X(例如,X为0或1)和RIDX,则所选择的子缓冲区索引SI可以被计算为SI=f(X,RIDX),其中f是函数。

a.在一个示例中,SI=X*MaxR0+min(RIDX,MaxRX-1),其中MaxR0和MaxR1是整数,例如MaxR0=MaxR1=5。

b.替代地,SI=2*min(RIDX,MaxRX-1)+X。

c.在一个示例中,X仅可以为0或1,并且RIDX必须大于或等于0。

d.在一个示例中,MaxR0和MaxR1可以是不同的。

e.在一个示例中,MaxR0/MaxR1可以取决于时域层索引、条带/片组/图片类型、低延迟检查标志等。

f.在一个示例中,MaxR0可以取决于参考列表0中的参考图片的总数量。

g.在一个示例中,MaxR1可以取决于参考列表1中的参考图片的总数量。

h.在一个示例中,MaxR0和/或MaxR1可以从编码器被信令通知到解码器,诸如在视频级别(例如,VPS)、序列级别(例如,SPS)、图片级别(例如,PPS或图片头)、条带级别(例如,条带头)、片组级别(例如,片组头)。

j.当仿射参数的集合用于更新子缓冲区HB

k.空域或时域相邻或非相邻临近块(其还可以简称为“临近块”)可以与存储在一个或多个HMVP仿射子缓冲区中的仿射参数的一个或多个集合组合使用。

36.在一个示例中,仿射HMVP缓冲区和/或仿射HMVP子缓冲区的最大允许尺寸可以等于1。

a.在一个示例中,不需要记录计数器来记录存储在仿射HMVP缓冲区或仿射HMVP子缓冲区中的仿射参数的集合的数量。

37.是否和/或如何对仿射HMVP缓冲区或仿射HMVP子缓冲区进行操作可以取决于集合的全部仿射参数是否为零。

a.在一个示例中,当仿射HMVP缓冲区或仿射HMVP子缓冲区被刷新时,存储在缓冲区或子缓冲区中的全部仿射参数被设置为零。

i.仿射HMVP缓冲区或仿射HMVP子缓冲区可以在编解码/解码每个图片和/或条带和/或片组和/或CTU行和/或CTU和/或CU之前被刷新。

b.在一个示例中,当仿射参数的集合用于更新仿射HMVP缓冲区或仿射HMVP子缓冲区时,如果集合中的全部仿射参数等于零,则缓冲区或子缓冲区不被更新。

c.在一个示例中,当存储在仿射HMVP缓冲区或仿射HMVP子缓冲区中的仿射参数的集合的参数全部为零时,仿射参数的集合不能用于生成仿射Merge候选或仿射AMVP候选。

i.例如,与临近块组合,仿射参数的集合不能用于生成仿射Merge候选或仿射AMVP候选。

ii.例如,当存储在仿射HMVP缓冲区或仿射HMVP子缓冲区的条目中的仿射参数的集合的参数全部为零时,条目被标记为“无效”或“不可用”。

iii.例如,当存储在仿射HMVP缓冲区或仿射HMVP子缓冲区的全部条目中的仿射参数的集合的参数全部为零时,仿射HMVP缓冲区或仿射HMVP子缓冲区被标记为“无效”或“不可用”,和/或缓冲区或子缓冲区的计数器被设置为零。

38.当空域或时域相邻或非相邻临近块(其还可以简称为“临近块”)用于通过组合存储在仿射HMVP缓冲区中的仿射参数来生成仿射Merge候选时,可以仅访问存储在一个或若干相关子缓冲区中的仿射参数。

a.例如,相关子缓冲区可以通过临近块的编解码信息而确定。例如,编解码信息可以包括临近块的参考列表和/或参考索引。

b.例如,存储在相关子缓冲区中的仿射参数的一个或多个集合可以用于与临近块组合地生成仿射Merge候选。

i.例如,存储为相关子缓冲区中的第一条目的仿射参数的集合可以被使用。

ii.例如,存储为相关子缓冲区中的最后条目的仿射参数的集合可以被使用。

c.例如,为参考参考列表0的临近块的MV确定一个相关子缓冲区HB

d.例如,为参考参考列表1的临近块的MV确定一个相关子缓冲区HB

i.HB

e.对于参考具有参考列表LX中的参考索引RIDX的参考图片的临近块的MV,相关子缓冲区索引SI被计算为SI=g(LX,RIDX),其中g是函数。

i.例如,函数g与项目符号35.d中的函数f相同。

ii.在一个示例中,SI=LX*MaxR0+min(RIDX,MaxRX-1),其中MaxR0和MaxR1是整数,例如MaxR0=MaxR1=5。

(a)在一个示例中,LX仅可以为0或1,并且RIDX必须大于或等于0。

(b)MaxR0和MaxR1可以是不同的。

(c)MaxR0可以取决于参考列表0中的参考图片的总数量。

(d)MaxR1可以取决于参考列表1中的参考图片的总数量。

(e)MaxR0和/或MaxR1可以从编码器被信令通知到解码器,诸如在视频级别(例如,VPS)、序列级别(例如,SPS)、图片级别(例如,PPS或图片头)、条带级别(例如,条带头)、片组级别(例如,片组头)。

f.在一个示例中,当临近块是用参考具有参考列表LX中的参考索引RIDX的参考图片的单向预测进行帧间编解码时,如果子缓冲区中存在至少一个条目可用,和/或子缓冲区的计数器不等于0,则可以与存储在相关仿射HMVP子缓冲区中的仿射参数的集合组合地从该临近块生成仿射Merge候选。

i.参考具有参考列表LX中的参考索引RIDX的参考图片,生成的仿射Merge候选也应是单向预测的。

g.在一个示例中,当临近块是用参考具有参考列表0中的参考索引RIDX0和参考列表1中的参考索引RIDX1的参考图片的双向预测进行帧间编解码时,则可以与存储在一个或多个相关仿射HMVP子缓冲区中的仿射参数的一个或多个集合组合地从该临近块生成仿射Merge候选。

i.在一个示例中,参考具有参考列表0中的参考索引RID0和参考列表1中的参考索引RID1的参考图片,生成的仿射Merge候选也应为双向预测的。

(a)仅当在与参考列表0中的参考索引RID0相关的子缓冲区中存在至少一个条目可用(和/或子缓冲区的计数器不等于0),并且在与参考列表1中的参考索引RID1相关的子缓冲区中存在至少一个条目可用(和/或子缓冲区的计数器不等于0)时,才可以生成双向预测的仿射Merge候选。

(b)在一个示例中,如果不能满足以下条件,则不可以与存储在仿射HMVP缓冲区和/或子缓冲区中的仿射参数组合地从临近块生成仿射Merge候选。

a.在与参考列表0中的参考索引RID0相关的子缓冲区中存在至少一个条目可用(和/或子缓冲区的计数器不等于0),并且在与参考列表1中的参考索引RID1相关的子缓冲区中存在至少一个条目可用(和/或子缓冲区的计数器不等于0)。

ii.在替代示例中,参考具有参考列表0中的参考索引RID0或参考列表1中的参考索引RID1的参考图片,生成的仿射Merge候选也可以是单向预测的。

(a)如果在与参考列表0中的参考索引RID0相关的子缓冲区中存在至少一个条目可用(和/或子缓冲区的计数器不等于0),并且在与参考列表1中的参考索引RID1相关的子缓冲区中不存在条目可用(和/或子缓冲区的计数器等于0),则参考具有参考列表0中的参考索引RID0的参考图片,生成的仿射Merge候选是单向预测的。

(b)如果在与参考列表1中的参考索引RID1相关的子缓冲区中存在至少一个条目可用(和/或子缓冲区的计数器不等于0),并且在与参考列表0中的参考索引RID0相关的子缓冲区中不存在条目可用(和/或子缓冲区的计数器等于0),则参考具有参考列表1中的参考索引RID1的参考图片,生成的仿射Merge候选是单向预测的。

h.在一个示例中,在本文档中公开的全部方法可以用于通过组合存储在一个或若干相关子缓冲区中的仿射参数来生成仿射Merge候选。

39.当空域或时域相邻或非相邻临近块(其还可以简称为“临近块”)用于通过组合存储在仿射HMVP缓冲区中的仿射参数来生成仿射AMVP候选时,可以仅访问存储在一个或若干相关子缓冲区中的仿射参数。

a.例如,相关子缓冲区可以通过临近块的编解码信息而确定。例如,编解码信息可以包括临近块的参考列表和/或参考索引。

b.例如,存储在相关子缓冲区中的仿射参数的一个或多个集合可以用于与临近块组合地生成仿射AMVP候选。

i.例如,存储为相关子缓冲区中的第一条目的仿射参数的集合可以被使用。

ii.例如,存储为相关子缓冲区中的最后条目的仿射参数的集合可以被使用。

c.对于具有目标参考列表LX中的目标参考索引RIDX的目标参考图片,相关子缓冲区索引SI被计算为SI=h(LX,RIDX),其中g是函数。

i.例如,函数g与项目符号35.d中的函数f相同。

ii.例如,函数g与项目符号38中的函数g相同。

iii.在一个示例中,SI=LX*MaxR0+min(RIDX,MaxRX-1),其中MaxR0和MaxR1是整数,例如MaxR0=MaxR1=5。

(a)在一个示例中,LX仅可以为0或1,并且RIDX必须大于或等于0。

(b)MaxR0和MaxR1可以是不同的。

(c)MaxR0可以取决于参考列表0中的参考图片的总数量。

(d)MaxR1可以取决于参考列表1中的参考图片的总数量。

(e)MaxR0和/或MaxR1可以从编码器被信令通知到解码器,诸如在视频级别(例如,VPS)、序列级别

(例如,SPS)、图片级别(例如,PPS或图片头)、条带级别(例如,条带头)、片组级别(例如,片组头)。

d.在一个示例中,如果在与目标参考列表LX的目标参考索引RIDX相关的子缓冲区中不存在条目可用(和/或子缓冲区的计数器等于0),则不可以从存储在仿射HMVP缓冲区/子缓冲区中的仿射参数生成仿射AMVP候选。

e.在一个示例中,当临近块是帧间编解码的并且具有参考目标参考列表LX中的目标参考索引RIDX的MV时,则MV用于与存储在相关子缓冲区中的仿射参数组合地生成仿射AMVP候选。

f.在一个示例中,当临近块是帧间编解码的并且不具有参考目标参考列表LX中的目标参考索引RIDX的MV时,则不可以从临近块生成仿射AMVP候选。

i.替代地,当临近块是帧间编解码的并且不具有参考目标参考列表LX中的目标参考索引RIDX的MV时,将检查临近块以确定其是否具有参考参考列表1-LX中的第二参考图片的第二MV,并且第二参考与目标参考图片具有相同的POC。

(a)如果其具有参考参考列表1-LX中的第二参考图片的第二MV,并且第二参考与目标参考图片具有相同的POC,则第二MV用于与存储在相关子缓冲区中的仿射参数组合地生成仿射AMVP候选。否则,不可以从临近块生成仿射AMVP候选。

g.在一个示例中,在本文档中公开的全部方法可以被应用于通过组合存储在一个或若干相关子缓冲区中的仿射参数来生成仿射Merge/AMVP候选。

40.如果以帧内块复制(IBC)模式进行编解码,则临近块不能与存储在仿射HMVP缓冲区或仿射HMVP子缓冲区中的仿射参数组合地用于生成仿射Merge/AMVP候选。

41.如果空域临近块用于生成继承Merge/AMVP候选,则空域临近块不能与存储在仿射HMVP缓冲区/子缓冲区中的仿射参数组合地用于生成仿射Merge/AMVP候选。

42.空域和/或时域临近/非相邻块可以被分为K组(例如,K=2),并且如何将仿射HMVP缓冲区/子缓冲区中的参数与用于编解码当前块的空域和/或时域临近/非相邻块的运动信息组合可以基于该组。

a.与不同组中的空域临近块组合地从存储在仿射HMVP缓冲区/子缓冲区中的仿射参数生成的仿射Merge候选可以被放到仿射Merge候选列表中的不同位置中;

b.与不同组中的空域临近块组合地从存储在仿射HMVP缓冲区/子缓冲区中的仿射参数生成的仿射AMVP候选可以被放到仿射AMVP候选列表中的不同位置中;

c.在一个示例中,空域临近块可以基于它们的编解码信息而分为组。

i.例如,临近块可以基于其是否是仿射编解码的而放到某组中。

ii.例如,临近块可以基于其是否是以AMVP模式进行仿射编解码的而放到某组中。

iii.例如,临近块可以基于其是否是以Merge模式进行仿射编解码的而放到某组中。

d.在一个示例中,空域临近块可以基于它们的位置而分为组。

e.在一个示例中,不是全部临近块被放到K组中。

f.在一个示例中,空域临近块如下被分为两组:

i.首先遇到的仿射编解码的左侧临近块可以被放到组X中。

(a)左侧临近块被顺序检查,例如,如图5所示的块A0、块A1。

(b)在一个示例中,如果首先遇到的仿射编解码的左侧临近块用于生成继承Merge/AMVP候选,则其不被放到组X中。

ii.首先遇到的仿射编解码的上侧临近块被放到组X中。

(a)上侧临近块被顺序检查。例如,如图5所示的块B0、块B1和块B2。

(b)在一个示例中,如果首先遇到的帧间编解码的并且仿射编解码的上侧临近块用于生成继承Merge/AMVP候选,则其不被放到组X中。

iii.其他帧间编解码的临近块可以被放到组Y中,其中Y

不等于X。

g.在一个示例中,与组X中的空域临近块组合地从存储在仿射HMVP缓冲区/子缓冲区中的仿射参数生成的仿射Merge候选可以在第K个构建的仿射Merge候选之前被放到仿射Merge候选列表中。例如,K可以是1或2。

h.在一个示例中,与组Y中的空域临近块组合地从存储在仿射HMVP缓冲区/子缓冲区中的仿射参数生成的仿射Merge候选可以在第K个构建的仿射Merge候选之后被放到仿射Merge候选列表中。例如,K可以是1或2。

i.在一个示例中,与组X中的空域临近块组合地从存储在仿射HMVP缓冲区/子缓冲区中的仿射参数生成的仿射AMVP候选可以在第K个构建的仿射Merge候选之前被放到仿射AMVP候选列表中。例如,K可以是1或2。

j.在一个示例中,与组Y中的空域临近块组合地从存储在仿射HMVP缓冲区/子缓冲区中的仿射参数生成的仿射AMVP候选可以在第K个构建的仿射Merge候选之后被放到仿射AMVP候选列表中。例如,K可以是1或2。

k.在一个示例中,与组X中的空域临近块组合地从存储在仿射HMVP缓冲区/子缓冲区中的仿射参数生成的仿射AMVP候选可以在零候选之前被放到仿射AMVP候选列表中。

43.项目符号20中的基本位置(xm,ym)可以是基本临近块(例如,4×4基本块)内部的任何位置,如图27中所示。

a.例如,(xm,ym)可以是图27中的P22。

b.假设当前块的左上方样点的坐标为(xPos00,yPos00),当前块的右上方样点的坐标为(xPos10,yPos00),当前块的右上方样点的坐标为(xPos00,yPos01),则在图5中:

i.相邻临近基本块A1的(xm,ym)为(xPos00-2,yPos01-1);

ii.相邻临近基本块A0的(xm,ym)为(xPos00-2,yPos01+3);

iii.相邻临近基本块B1的(xm,ym)为(xPos10-1,yPos00-2);

iv.相邻临近基本块B0的(xm,ym)为(xPos10+3,yPos00-2);

v.相邻临近基本块B2的(xm,ym)为(xPos00-2,yPos00-2);

图16是视频处理装置1700的框图。装置1700可以用于实施本文描述的一种或多种方法。装置1700可以体现在智能电话、平板电脑、计算机、物联网(Internet of Things,IoT)接收器等中。装置1700可以包括一个或多个处理器1702、一个或多个存储器1704和视频处理硬件1706。(多个)处理器1702可以被配置为实施本文档中描述的一种或多种方法。存储器(多个存储器)1704可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件1706可以用于以硬件电路实施本文档中描述的一些技术。

图18是处理视频的方法1900的流程图。方法1900包括:在存储器中存储(1905)与第一视频块的运动矢量相关联的参数,参数与第一视频块的运动矢量的4参数仿射模型或6参数仿射模型中的一者或两者相关;以及使用参数执行(1910)第一视频块的进一步处理。

图19是处理视频的方法2000的流程图。方法2000包括:存储(2005)表示代表性点相对于第一视频块的左上方样点的坐标的控制点运动矢量(CPMV);以及使用CPMV执行(2010)第一视频块的进一步处理。

图20是处理视频的方法2100的流程图。方法2100包括:执行对与第一视频块的运动矢量相关联的参数的确定(2105),参数与第一视频块的运动矢量的4参数仿射模型或6参数仿射模型中的一者或两者相关;确定(2110)用于存储参数的缓冲区已满;修改(2115)缓冲区,使得缓冲区未满;将参数存储(2120)在未满的缓冲区中;以及使用存储在缓冲区中的参数执行(2125)第一视频块的进一步处理。

图21是处理视频的方法2200的流程图。方法2200包括:执行对与第一视频块的运动矢量相关联的第一参数的确定(2205),第一参数与第一视频块的运动矢量的4参数仿射模型或6参数仿射模型中的一者或两者相关;确定(2210)缓冲区包括与第一参数类似的第二参数;以及使用第二参数而不是第一参数来执行(2215)第一视频块的进一步处理。

图22是处理视频的方法2300的流程图。方法2300包括:刷新(2305)用于存储与第一视频块的运动矢量相关联的参数的缓冲区,参数与第一视频块的运动矢量的4参数仿射模型或6参数仿射模型中的一者或两者相关;使用存储在缓冲区中的参数执行(2310)第一视频块的进一步处理。

图23是处理视频的方法2400的流程图。方法2400包括:识别(2405)存储器中与第一视频块的运动矢量相关联的参数,参数与第一视频块的运动矢量的4参数仿射模型或6参数仿射模型中的一者或两者相关;以及使用与第一视频块相关联的参数执行(2410)第二视频块的进一步处理。

图24是处理视频的方法2500的流程图。方法2500包括:识别(2505)存储器中与第一视频块的运动矢量相关联的参数,参数与第一视频块的运动矢量的4参数仿射模型或6参数仿射模型中的一者或两者相关;基于参数来确定(2510)第二视频块使用4参数仿射模型或6参数仿射模型之一;基于由第二视频块使用的4参数仿射模型或6参数仿射模型,生成(2515)第二视频块的仿射Merge候选列表;以及使用仿射Merge候选列表执行(2520)第二视频块的进一步处理。

图26是处理视频的方法2600的流程图。方法2600包括:识别(2605)与第一视频块的运动矢量(MV)相关联的参数;基于第一视频块的参数来推导(2610)仿射模型,仿射模型是4参数仿射模型或6参数仿射模型中的一者或两者;以及使用仿射模型执行(2615)第一视频块的进一步处理。

参考方法1900、2000、2100、2200、2300、2400、2500和2600,在本文档的第4章节中描述了确定用于编码的候选及其使用的一些示例。例如,如第4章节所述,可以使用根据与4参数仿射模型或6参数仿射模型相关联的参数来处理视频块。

参考方法1900、2000、2100、2200、2300、2400、2500和2600,可以在视频比特流中编码视频块,其中在该视频比特流中可以通过使用与运动信息预测相关的比特流生成规则来实现比特效率。

方法可以包括:其中与6参数仿射模型相关的四个参数被存储在存储器中,并且与6参数仿射模型相关的两个其他参数不存储在存储器中。

方法可以包括:其中与4参数仿射模型相关的两个参数被存储在存储器中,并且与4参数仿射模型相关的两个其他参数不存储在存储器中。

方法可以包括确定第一视频块是用4参数仿射模型进行编解码的,其中存储参数包括存储与4参数仿射模型相关的四个参数。

方法可以包括:其中与4参数仿射模型相关的第一数量的参数被存储,并且与6参数仿射模型相关的第二数量的参数被存储,第一数量和第二数量相同。

方法可以包括:其中与4参数仿射模型相关的第一数量的参数被存储,并且与6参数仿射模型相关的第二数量的参数被存储,第一数量和第二数量不同。

方法可以包括确定对第一视频块进行编解码的特性,特性包括以下中的一个或多个:仿射模式、帧间或Merge模式的使用、第一视频块的尺寸、图片类型,其中存储的参数基于第一视频块的编解码的特性。

方法可以包括存储以下中的一个或多个:帧间预测方向、或参考索引。

方法可以包括确定第一视频块是双向预测的;以及基于确定第一视频块是双向预测的,存储用于列表0和列表1的参数。

方法可以包括:其中用于列表0的参数被存储在第一缓冲区中,并且用于列表1的参数被存储在第二缓冲区中,第一缓冲和第二缓冲不同。

方法可以包括:其中用于列表0和列表1的参数与从列表0或列表1之一到另一者的预测一起被存储。

方法可以包括:在存储器中存储第一视频块的宽度,其中执行第一视频块的进一步处理是基于宽度的。

方法可以包括:在存储器中存储第一视频块的高度,其中执行第一视频块的进一步处理是基于高度的。

方法可以包括:在存储器中存储指示第一视频块的左上方坐标的信息,其中执行第一视频块的进一步处理是基于左上方坐标的。

方法可以包括在不使用除运算的情况下确定参数。

方法可以包括在将参数存储在存储器中之前裁剪参数。

方法可以包括:其中参数在第一视频块被解码或编码之后被存储。

方法可以包括确定对第一视频块进行编解码的特性,特性包括以下中的一个或多个:编解码仿射模式、仿射编解码视频块的数量、第一视频块的位置、或第一视频块的大小,其中存储的参数基于第一视频块的编解码的特性。

方法可以包括:确定第二视频块是仿射编解码的;以及确定第一视频块是第K个仿射编解码块,其中基于第一视频块是第K个仿射编解码块,与第一视频块相关联的参数被存储在存储器中,并且第二视频块不存储在存储器中。

方法可以包括:其中K为2或4。

方法可以包括:其中K在视频参数集(VPS)、序列参数集(SPS)、图片参数集(PPS)、条带头、片组头或片中从编码器被信令通知到解码器。

方法可以包括:其中存储器存储参数的最大值M个集合。

方法可以包括:其中M为8或16。

方法可以包括:其中M在VPS、SPS、图片参数集PPS、条带头、片组头、片、编解码树单元(CTU)线或CTU中从编码器被信令通知到解码器。

方法可以包括:其中修改缓冲区使得缓冲区未满包括从缓冲区移除最早存储的参数。

方法可以包括:其中修改缓冲区使得缓冲区未满包括从缓冲区移除最晚存储的参数。

方法可以包括由处理器执行对与第一视频块的运动矢量相关联的第三参数的确定,第三参数与第一视频块的运动矢量的4参数仿射模型或6参数仿射模型中的一者或两者相关;确定存储在缓冲区中的第二参数不同于第三参数;基于确定第二参数不同于第三参数,将第三参数存储在缓冲区中;以及使用第三参数执行第一视频块的进一步处理。

方法可以包括:其中确定存储在缓冲区中的第二参数不同于第三参数包括确定第二参数和第三参数与不同的帧间预测方向相关联。

方法可以包括:其中确定存储在缓冲区中的第二参数不同于第三参数包括确定当列表0用作预测方向时第二参数和第三参数与列表0的不同参考索引相关联。

方法可以包括:其中确定存储在缓冲区中的第二参数不同于第三参数包括确定当列表1用作预测方向时第二参数和第三参数与列表1的不同参考索引相关联。

方法可以包括:其中确定存储在缓冲区中的第二参数不同于第三参数包括确定第二参数包括第一数量的参数并且第三参数包括第二数量的参数,第一数量和第二数量不同。

方法可以包括:其中确定存储在缓冲区中的第二参数不同于第三参数包括确定第二参数包括第一数量的参数并且第三参数包括第二数量的参数,第一数量和第二数量不同。

方法可以包括:其中确定存储在缓冲区中的第二参数不同于第三参数包括确定第二参数或第三参数之一与4参数仿射模型相关联,并且另一者与6参数仿射模型相关联。

方法可以包括:其中刷新缓冲区包括不将参数存储在缓冲区中。

方法可以包括:其中刷新缓冲区包括将缓冲区配置为处于与不存储参数相关联的空状态,并且基于缓冲区处于空状态将默认参数存储在缓冲区中。

方法可以包括:其中默认参数基于序列。

方法可以包括:其中默认参数基于图片。

方法可以包括:其中默认参数基于条带。

方法可以包括:其中默认参数基于片。

方法可以包括:其中默认参数基于CTU线。

方法可以包括:其中默认参数基于CTU。

方法可以包括:其中默认参数在VPS、SPS、图片参数集PPS、条带头、片组头、片、CTU线或CTU中从编码器被信令通知到解码器。

方法可以包括确定第一视频块是图片的第一块,其中刷新缓冲区是基于确定第一视频块是图片的第一块。

方法可以包括确定第一视频块是条带的第一块,其中刷新缓冲区是基于确定第一视频块是条带的第一块。

方法可以包括确定第一视频块是片的第一块,其中刷新缓冲区是基于确定第一视频块是片的第一块。

方法可以包括确定第一视频块是CTU线的第一块,其中刷新缓冲区是基于确定第一视频块是CTU线的第一块。

方法可以包括确定第一视频块是CTU的第一块,其中刷新缓冲区是基于确定第一视频块是CTU的第一块。

方法可以包括:其中参数用于第二视频块的运动矢量预测或运动矢量编解码。

方法可以包括:其中参数用于推导第二视频块的控制点运动矢量(CPMV)。

方法可以包括确定第二视频块是用4参数仿射模型编解码的,以及执行第二视频块的进一步处理将与4参数仿射模型相关联的参数优先于与6参数仿射模型相关联的参数。

方法可以包括确定第二视频块是用6参数仿射模型编解码的,以及执行第二视频块的进一步处理将与6参数仿射模型相关联的参数优先于与4参数仿射模型相关联的参数。

方法可以包括识别第一视频块的运动信息,第一视频块临近第二视频块,并且其中执行第二视频块的进一步处理包括使用第一视频块的运动信息。

方法可以包括:其中运动信息也被存储在缓冲区中,并且运动信息和参数用于推导第二视频块的CPMV。

方法可以包括:其中运动矢量也被存储在缓冲区中,并且运动矢量和参数用于推导第二视频块的CPMV。

方法可以包括:其中仿射Merge候选列表继承与参数相关联的帧间预测方向和参考索引。

方法可以包括:其中参数用于生成高级运动矢量预测(AMVP)候选。

方法可以包括:其中参数参考相同的参考图片。

方法可以包括:其中与参数相关联的参考图片列表与目标参考图片列表相同。

方法可以包括:其中与参数相关联的参考索引与目标参考索引相同。

方法可以包括:其中用于生成仿射Merge候选列表的存储在存储器中的参数的集合的数量为N。

方法可以包括:其中N在VPS、SPS、图片参数集PPS、条带头、片组头、或片中从编码器被信令通知到解码器。

方法可以包括:其中N基于第二视频块的大小或第二视频块的编解码模式信息。

方法可以包括:其中N基于标准简表、级别或层级。

方法可以包括:其中N是预定义的。

方法可以包括:其中仿射Merge候选列表为索引的升序。

方法可以包括:其中仿射Merge候选列表为索引的降序。

方法可以包括:其中仿射Merge候选列表基于可用候选的数量为索引的降序或升序。

方法可以包括:其中4参数仿射模型以相同数量的参数被存储为6参数仿射模型,并且6参数仿射模型的一些存储的参数从4参数仿射模型的参数进行推导。

方法可以包括将基本运动矢量(MV)(mv

方法可以包括将基本运动矢量(MV)的位置的坐标存储在存储器中,并且其中进一步处理也基于基本MV,并且其中进一步处理也基于基本MV。

方法可以包括:其中指示a和b的参数也被存储在存储器中。

方法可以包括将基本运动矢量(MV)(mv

方法可以包括将基本运动矢量(MV)的位置的坐标以及参数a、b、c和d存储在存储器中,并且其中进一步处理也基于基本MV。

方法可以包括识别参数的特性,其中仿射模型是基于特性而推导的,特性包括参数的基本运动矢量(MV)或MV的位置中的一个或多个。

方法可以包括:其中推导仿射模型包括推导控制点运动矢量(CPMV)或MV中的一者或两者。

方法可以包括:其中推导仿射模型包括推导CPMV,并且第一视频块的CPMV是从MV和参数推导的。

方法可以包括:其中推导仿射模型包括使用第一视频块的临近视频块的运动信息。

方法可以包括:其中与第一视频块相关联的CPMV从第一视频块的临近视频块的MV进行推导。

方法可以包括:其中CPMV用于推导第一视频块的每个子块的MV。

方法可以包括:其中时域运动矢量预测(TMVP)也与参数一起用于推导仿射模型。

方法可以包括:其中TMVP用于推导CPMV或第一视频块的子块的MV。

方法可以包括:其中推导仿射模型还基于与第一视频块相关的并置图片中的并置视频块的运动信息。

方法可以包括从参数推导仿射Merge候选;以及将非相邻于第一视频块的空域临近视频块添加在包括仿射Merge候选的仿射Merge候选列表中。

方法可以包括:其中仿射Merge候选和空域临近视频块在继承的仿射Merge候选之后被包括在仿射Merge候选列表中。

方法可以包括:其中仿射Merge候选和空域临近视频块在第一构建的仿射Merge候选之后被包括在仿射Merge候选列表中。

方法可以包括:其中仿射Merge候选和空域临近视频块在从空域临近块构建的第一Merge候选之后被包括在仿射Merge候选列表中。

方法可以包括:其中仿射Merge候选和空域临近视频块在构建的仿射Merge候选之后被包括在仿射Merge候选列表中。

方法可以包括:其中仿射Merge候选和空域临近视频块在零仿射Merge候选之后被包括在仿射Merge候选列表中。

方法可以包括:其中仿射Merge候选和空域临近视频块按顺序被包括在仿射Merge候选列表中。

方法可以包括将时域单元块添加在仿射Merge候选列表中。

方法可以包括:其中时域单元块在继承的仿射Merge候选之后被添加在Merge候选列表中。

方法可以包括:其中时域单元块在第一构建的仿射Merge候选之后被添加在Merge候选列表中。

方法可以包括:其中时域单元块在从第一视频块的空域临近块构建的第一仿射Merge候选之后被添加在Merge候选列表中。

方法可以包括:第一视频块的空域临近或非相邻视频块被添加在仿射Merge候选列表中。

方法可以包括:其中空域临近或非相邻视频块在继承的仿射AMVP候选之后被添加到仿射Merge候选列表。

方法可以包括:其中仿射Merge候选列表的尺寸基于确定从参数推导的仿射Merge候选能够被放在仿射Merge候选列表中而增大。

方法可以包括:其中仿射Merge候选列表的尺寸基于确定从参数推导的仿射AMVP候选能够被放在仿射Merge候选列表中而增大。

方法可以包括:基于存储在存储器中的多个仿射模型来推导虚拟仿射模型,其中执行第一视频块的进一步处理包括使用虚拟仿射模型。

方法可以包括:其中生成仿射Merge候选列表包括排除将从空域临近视频块继承的仿射Merge候选插入在基于子块的Merge候选列表中,并且基于历史的Merge候选被插入到子块Merge候选列表中。

方法可以包括:其中基于历史的Merge候选在ATMVP候选之后被插入。

方法可以包括:其中基于历史的Merge候选在构建的仿射Merge候选之前被插入。

方法可以包括:其中生成仿射Merge候选列表包括基于空域临近视频块的位置,将从空域临近视频块继承的仿射Merge候选插入在基于子块的Merge候选中。

方法可以包括:其中位置与当前视频块在相同的编解码树单元(CTU)或CTU行内。

方法可以包括:其中位置与当前视频块在相同的编解码树单元(CTU)或CTU行外部。

方法可以包括:其中生成仿射Merge候选列表包括排除将从空域临近视频块继承的仿射AMVP候选插入在仿射运动矢量预测(MVP)候选列表中,并且基于历史的Merge候选被插入在仿射MVP候选列表中。

方法可以包括:其中基于历史的Merge候选被首先插入到仿射MVP候选列表中。

方法可以包括:其中生成仿射Merge候选列表包括基于空域临近视频块的位置,将从空域临近视频块继承的仿射AMVP候选插入在仿射MVP候选列表中。

方法可以包括:其中位置与当前视频块在相同的编解码树单元(CTU)或CTU行内。

方法可以包括:其中位置不在与当前视频块相同的CTU或CTU行内。

方法可以包括:其中仿射模型参数还在用于编解码或解码仿射编解码块之前被裁剪。

方法可以包括:其中裁剪边界基于仿射模型参数的精度。

方法可以包括:其中裁剪边界基于第一视频块的宽度和高度。

方法可以包括:其中裁剪边界在视频参数集(VPS)、序列参数集(SPS)、图片参数集(PPS)、图片头、条带头或片组头中被信令通知。

方法可以包括:其中裁剪边界基于标准的简表或级别。

方法可以包括:其中继承的仿射Merge候选来自当前编解码树单元(CTU)中的视频块。

方法可以包括:其中仿射Merge候选在继承的仿射Merge候选之前被插入。

方法可以包括确定HMVP缓冲区为空;以及基于确定HMVP缓冲区为空,将继承的仿射Merge候选添加到列表中。

方法可以包括:其中继承的仿射AMVP候选来自当前编解码树单元(CTU)行中的视频块。

方法可以包括:其中仿射HMVP缓冲区包括多个缓冲区,多个缓冲区中的每一个对应于不同类别中的仿射参数或控制点运动矢量(CPMV)的存储。

方法可以包括:其中多个缓冲区包括用以存储参考列表0中的仿射参数的第一缓冲区和用以存储参考列表1中的仿射参数的第二缓冲区。

方法可以包括:其中多个缓冲区用于存储参考不同参考列表中的不同索引的仿射参数。

方法可以包括:其中参考列表X中的参考K的CPMV或仿射参数用于更新列表X中的参考K的HMVP缓冲区,其中X为0或1,并且K为0、1或2。

方法可以包括:其中参考参考K的CPMV或仿射参数用于更新列表X中的参考L的HMVP缓冲区,其中K>=L,X为0或1,并且K是整数。

方法可以包括:其中多个缓冲区中的每一个的尺寸不同。

方法可以包括:其中尺寸基于参考图片索引。

方法可以包括:其中仿射HMVP缓冲区基于当前编解码单元(CU)的编解码模式或编解码信息而更新。

方法可以包括:其中当前CU是以仿射Merge模式编解码的,并且仿射HMVP缓冲区基于当前CU是以仿射Merge模式编解码的而不更新。

方法可以包括:其中仿射HMVP缓冲区基于当前CU是以仿射模式编解码的而更新。

方法可以包括:其中更新HMPV缓冲区基于以仿射Merge模式编解码的当前CU而跳过,并且使用共享Merge列表。

图28是处理视频的方法2800的流程图。方法2800包括:基于存储在缓冲区中的与由第一块使用的仿射模型相关联的仿射相关信息,为视频的当前块和当前块的比特流表示之间的转换推导(2802)与要由当前块使用的仿射模型相关联的仿射相关信息,其中,第一块在当前块之前被仿射编解码;以及通过使用推导的仿射相关信息来执行(2804)该转换。

在一些示例中,仿射模型包括4参数仿射模型和6参数仿射模型中的至少一者。

在一些示例中,存储在缓冲区中的仿射相关信息包括与第一块的仿射模型相关联的仿射参数的第一集合。

在一些示例中,当6参数仿射模型被应用于第一块的转换时,与6参数仿射模型相关的六个参数被存储在缓冲区中,或者当4参数仿射模型被应用于第一块的转换时,与4参数仿射模型相关的四个参数被存储在缓冲区中。

在一些示例中,当6参数仿射模型被应用于第一块的转换时,与6参数仿射模型相关的四个参数被存储在缓冲区中,并且与6参数仿射模型相关的两个其他参数不存储在缓冲区中。

在一些示例中,当4参数仿射模型被应用于第一块的转换时,与4参数仿射模型相关的两个参数被存储在缓冲区中,并且与4参数仿射模型相关的两个其他参数不存储在缓冲区中。

在一些示例中,与6参数仿射模型相关的六个参数总是被存储在缓冲区中,并且当4参数仿射模型被应用于第一块的转换时,六个参数中的第一参数被设置为与六个参数中的第二参数相同,并且六个参数中的第三参数被设置为六个参数中的第四参数的负值。

在一些示例中,与6参数仿射模型相关的四个参数总是被存储在缓冲区中,并且当4参数仿射模型被应用于第一块的转换时,四个参数中的第一参数被设置为与四个参数中的第二参数相同,并且四个参数中的第三参数被设置为四个参数中的第四参数的负值。

在一些示例中,与4参数仿射模型相关的第一数量的参数被存储,并且与6参数仿射模型相关的第二数量的参数被存储,第一数量和第二数量相同。

在一些示例中,第一数量和第二数量为4或6。

在一些示例中,与4参数仿射模型相关的第一数量的参数被存储,并且与6参数仿射模型相关的第二数量的参数被存储,第一数量和第二数量不同。

在一些示例中,第一数量为4并且第二数量为6。

在一些示例中,方法还包括:确定视频的第一块的特性,其中特性包括以下中的一个或多个:仿射模式、帧间或Merge模式的使用、第一块的尺寸、图片类型,其中要被存储在缓冲区中的仿射参数基于视频的第一块的特性而确定。

在一些示例中,与仿射模型的仿射参数相关联的边信息和/或仿射模型类型被存储在缓冲区中,其中该仿射模型类型包括4参数仿射模型或6参数仿射模型,边信息包括以下至少一者:包括列表0或列表1或双向的帧间预测方向、以及列表0和/或列表1参考索引。

在一些示例中,当第一块是双向预测的时,仿射参数的第一集合还包括用于列表0的仿射参数和用于列表1的仿射参数。

在一些示例中,用于列表0的仿射参数被存储在第一缓冲区中,并且用于列表1的仿射参数被存储在与第一缓冲区不同的第二缓冲区中。

在一些示例中,用于列表0的参数和用于列表1的参数中的一者被存储,并且存储的仿射参数用于预测另一参数。

在一些示例中,仿射相关信息包括与第一块的仿射模型相关联的控制点运动矢量(CPMV)的第一集合。

在一些示例中,方法还包括:将第一块的宽度与CPMV的第一集合一起存储在缓冲区中;和/或将第一块的高度与CPMV的第一集合一起存储在缓冲区中;和/或将指示第一块的左上方坐标的信息与CPMV的第一集合一起存储在缓冲区中。

在一些示例中,仿射相关信息包括与第一块的仿射模型相关联的基本运动矢量(MV)

在一些示例中,方法还包括:当4参数仿射模型被应用于第一块的转换时,将基本MV和与4参数仿射模型相关的两个参数一起存储在缓冲区中。

在一些示例中,方法还包括:将基本MV的坐标和与4参数仿射模型相关的两个参数一起存储在缓冲区中。

在一些示例中,方法还包括:当6参数仿射模型被应用于第一块的转换时,将基本MV和与6参数仿射模型相关的四个参数一起存储在缓冲区中。

在一些示例中,将基本MV的坐标和与6参数仿射模型相关的四个参数一起存储在缓冲区中。

在一些示例中,如果存储的仿射参数的集合及其相关联的基本MV参考相同的参考图片列表,则该集合和该基本MV参考相同的参考图片。

在一些示例中,缓冲区是仿射基于历史的运动矢量预测(HMVP)缓冲区。

在一些示例中,方法还包括:基于第一块的特性来确定是否存储与第一块的仿射模型相关联的仿射相关信息,特性包括以下中的一个或多个:包括仿射高级运动矢量预测(AMVP)和/或仿射Merge的编解码仿射模式、仿射编解码视频块的数量、第一块的位置、或第一块的大小。

在一些示例中,方法还包括:对于视频的每第K个块,在对块进行解码或编码之后存储与块的仿射模型相关联的仿射相关信息,K是整数。

在一些示例中,K为2或4。

在一些示例中,K在以下中的至少一者中被信令通知:序列参数集(SPS)、视频参数集(VPS)、图片参数集(PPS)、条带头、片组头、片。

在一些示例中,存储在缓冲区中的仿射相关信息的集合的数量小于或等于预设的最大值M,M是整数。

在一些示例中,M为8或16。

在一些示例中,M在以下中的至少一者中被信令通知:序列参数集(SPS)、视频参数集(VPS)、图片参数集(PPS)、条带头、片组头、片、编解码树单元(CTU)、CTU线。

在一些示例中,M对于不同的标准简表/级别/层级是不同的。

在一些示例中,方法还包括:当存储在缓冲区中的仿射相关信息的集合的数量小于预设的最大值M时,在存储在缓冲区中的仿射相关信息的最后集合之后存储要被存储的仿射相关信息的新的集合。

在一些示例中,方法还包括:当存储在缓冲区中的仿射相关信息的集合的数量等于预设的最大值M时,丢弃要被存储的仿射相关信息的新的集合。

在一些示例中,方法还包括:当存储在缓冲区中的仿射相关信息的集合的数量等于预设的最大值M时,移除用于存储被存储在缓冲区中的仿射相关信息的集合的条目;以及将要被存储的仿射相关信息的新的集合存储在缓冲区中。

在一些示例中,移除存储在缓冲区中的最早条目。

在一些示例中,移除存储在缓冲区中的最后条目。

在一些示例中,移除存储在缓冲区中的任何条目。

在一些示例中,响应于条目被移除,在对应于移除的条目的位置处将仿射相关信息的新的集合存储在缓冲区中。

在一些示例中,响应于条目被移除,以升序在缓冲区中向前移动移除的条目之后的全部条目,并且将仿射相关信息的新的集合存储在缓冲区的最后条目中。

在一些示例中,响应于条目被移除,以降序在缓冲区中向后移动移除的条目之前的全部条目,并且将仿射相关信息的新的集合存储在缓冲区的第一条目中。

在一些示例中,方法还包括刷新缓冲区。

在一些示例中,缓冲区在刷新时被清空。

在一些示例中,缓冲区在刷新时被清空,然后一条或多条默认仿射相关信息在刷新时被放到缓冲区中。

在一些示例中,默认仿射相关信息对于以下中的至少一者不同:不同序列、不同图片、不同条带、不同片、不同CTU线、不同CTU。

在一些示例中,默认仿射相关信息在以下中的至少一者中被信令通知:序列参数集(SPS)、视频参数集(VPS)、图片参数集(PPS)、条带头、片组头、片、CTU、CTU线。

在一些示例中,当开始编解码或解码图片的第一块时,或当开始编解码或解码条带的第一块时,或当开始编解码或解码片的第一块时,或当开始编解码或解码CTU线的第一块时,或当开始编解码或解码CTU的第一块时,缓冲区被刷新。

在一些示例中,仿射相关信息包括第一块的仿射参数、CPMV、宽度、高度或左上方位置中的至少一者。

在一些示例中,方法还包括:做出关于第一块的编解码单元(CU)的编解码模式和/或其他编解码信息的决定;以及基于该决定来确定是否更新缓冲区。

在一些示例中,方法还包括:响应于指示CU是以仿射Merge模式编解码的并且Merge候选从缓冲区进行推导的决定,缓冲区在解码CU之后不更新。

在一些示例中,方法还包括:响应于指示CU是以仿射Merge模式编解码的并且Merge候选从缓冲区进行推导的决定,缓冲区通过将相关联的仿射参数移动到缓冲区的最后条目而更新。

在一些示例中,方法还包括:每当一个块是以仿射模式编解码的时,缓冲区就被更新。

在一些示例中,方法还包括:当一个块是以仿射Merge模式编解码的并且块使用共享Merge列表时,仿射HMVP缓冲区的更新被跳过。

在一些示例中,缓冲区的最大允许尺寸等于1。

在一些示例中,不使用计数器来记录存储在缓冲区中的仿射参数的集合的数量。

在一些示例中,缓冲区是以下中的至少一者:表、或查找表、或先进先出(FIFO)表、或堆栈、或队列、或列表、或链表、或阵列、或具有任何数据结构的任何其他存储。

在一些示例中,对于4参数仿射模型,仿射参数的第一集合包括a、b、c、d中的至少一个变量,

在一些示例中,对于6参数仿射模型,仿射参数的第一集合包括a、b、c、d、e、f中的至少一个变量,

图29是处理视频的方法2900的流程图。方法2900包括:基于与仿射编解码的第一块的仿射模型相关联的运动矢量(MV)、该第一块的宽度和该第一块的高度,计算(2902)与该第一块的仿射模型相关联的仿射参数的第一集合;以及裁剪(2904)所计算的仿射参数的第一集合。

在一些示例中,计算仿射参数的第一集合包括:在不使用除运算的情况下,基于与第一块的仿射模型相关联的运动矢量(MV)、第一块的宽度和第一块的高度、定义计算精度的整数,计算与第一块的仿射模型相关联的仿射参数的第一集合。

在一些示例中,方法还包括:在将仿射参数存储在缓冲区中之前裁剪仿射参数的第一集合。

在一些示例中,仿射参数的第一集合基于仿射参数的比特深度而裁剪。

在一些示例中,仿射参数的第一集合中的仿射参数被裁剪为[-2

在一些示例中,K等于7。

在一些示例中,方法还包括:在推导第一块的子块的运动矢量(MV)之前裁剪仿射参数的第一集合。

在一些示例中,仿射参数的第一集合基于与仿射参数相关联的裁剪边界的集合而裁剪。

在一些示例中,裁剪边界取决于以下中的至少一者:由仿射参数的比特深度确定的仿射参数的精度、第一块的宽度和高度、标准的简表或标准的级别。

在一些示例中,裁剪边界在以下中的至少一者中被信令通知:序列参数集(SPS)、视频参数集(VPS)、图片参数集(PPS)、图片头、条带头、片组头。

图30是处理视频的方法3000的流程图。方法3000包括:对于视频的当前块和当前块的比特流表示之间的转换,从存储在用于存储仿射模型的缓冲区中的多个仿射模型推导(3002)当前块的虚拟仿射模型;通过使用虚拟仿射模型来执行(3004)该转换。

在一些示例中,通过从多个仿射模型当中的第一仿射模型获取一个或多个参数并从多个仿射模型当中的第二仿射模型获取剩余参数,该第一仿射模型和该第二仿射模型的参数被组合,以形成虚拟仿射模型。

在一些示例中,多个仿射模型当中的第一仿射模型和第二仿射模型的参数联合用于通过使用函数来生成虚拟仿射模型,其中,函数是平均。

在一些示例中,当前块的虚拟仿射模型包括4参数仿射模型和6参数仿射模型中的至少一者。

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

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

图31是处理视频的方法3100的流程图。方法3100包括:为视频的当前块和当前块的比特流表示之间的转换推导(3102)与当前块的仿射模型相关联的仿射参数的第一集合;将仿射参数的第一集合与存储在用于存储仿射参数的缓冲区中的仿射参数的集合中的一个或多个进行比较(3104),以便确定仿射参数的第一集合是否与仿射参数的至少一个集合相同或类似;以及基于该确定来决定(3106)是否或如何使用仿射参数的第一集合来更新用于存储仿射参数的缓冲区。

在一些示例中,当前块的仿射模型包括4参数仿射模型和6参数仿射模型中的至少一者。

在一些示例中,对于一个预测方向,响应于仿射参数的第一集合中的一个或多个参数与存储在缓冲区中的仿射参数的至少一个集合中的对应的一个或多个参数相同,确定仿射参数的第一集合与仿射参数的至少一个集合相同或类似。

在一些示例中,对于一个预测方向,响应于仿射参数的第一集合中的至少一个参数中的每一个和存储在缓冲区中的仿射参数的至少一个集合中的对应的参数之间的绝对差小于对应于每个参数的阈值,确定仿射参数的第一集合与仿射参数的至少一个集合相同或类似。

在一些示例中,仿射参数的第一集合包括变量a、b、c或d,或变量a、b、c、d、e、f,

在一些示例中,至少一个参数的数量是一,并且至少一个参数包括变量a、b、c或d。

在一些示例中,至少一个参数的数量是二,并且至少一个参数包括变量a和b或者包括变量c和d。

在一些示例中,至少一个参数的数量是三,并且至少一个参数包括变量a、b和c。

在一些示例中,至少一个参数的数量是四,并且至少一个参数包括变量a、b、c和d。

在一些示例中,阈值是预定义的数。

在一些示例中,阈值取决于当前块的编解码信息,其中编解码信息包括当前块的宽度和/或高度。

在一些示例中,对应于不同参数的阈值对于不同标准简表或级别或层级是不同的。

在一些示例中,阈值在以下中的至少一者中被信令通知:序列参数集(SPS)、视频参数集(VPS)、图片参数集(PPS)、条带头、片组头、片、编解码树单元(CTU)、CTU线。

在一些示例中,响应于要被比较的仿射参数的第一集合和仿射参数的另一集合与不同的帧间预测方向相关联,确定仿射参数的两个集合不相同或不类似,其中帧间预测方向包括列表0、列表1或双向。

在一些示例中,当帧间预测方向列表0是使用中的一个预测方向时,响应于要被比较的仿射参数的第一集合和仿射参数的另一集合与列表0的不同参考索引相关联,确定仿射参数的两个集合不相同或不类似。

在一些示例中,当帧间预测方向列表1是使用中的一个预测方向时,响应于要被比较的仿射参数的第一集合和仿射参数的另一集合与列表1的不同参考索引相关联,确定仿射参数的两个集合不相同或不类似。

在一些示例中,响应于要被比较的仿射参数的第一集合和仿射参数的另一集合具有不同数量的仿射参数或使用不同的仿射模型,确定仿射参数的两个集合不相同。

在一些示例中,当要被比较的仿射参数的第一集合和仿射参数的另一集合都与帧间预测方向双向预测相关联时,响应于仿射参数的两个集合的列表0的参数和列表1的参数都相同或类似,确定仿射参数的两个集合相同或类似。

在一些示例中,仿射参数的第一集合与存储在用于存储仿射参数的缓冲区中的仿射参数的每个集合进行比较。

在一些示例中,仿射参数的第一集合与存储在用于存储仿射参数的缓冲区中的仿射参数的集合的子集进行比较。

在一些示例中,仿射参数的第一集合与存储在用于存储仿射参数的缓冲区中的仿射参数的前W个或后W个集合进行比较,W是整数。

在一些示例中,仿射参数的第一集合与存储在用于存储仿射参数的缓冲区中的仿射参数的每W个集合中的一个集合进行比较,W是整数。

在一些示例中,方法还包括:响应于指示仿射参数的第一集合与存储在缓冲区中的仿射参数的至少一个集合相同或类似的确定,仿射参数的第一集合不被存储在缓冲区中。

在一些示例中,方法还包括:响应于指示仿射参数的第一集合与存储在缓冲区中的仿射参数的一个集合相同或类似的确定,从缓冲区移除仿射参数的一个集合;在对应于移除的仿射参数的一个集合的位置处将仿射参数的第一集合存储在缓冲区中。

在一些示例中,方法还包括:响应于指示仿射参数的第一集合与存储在缓冲区中的仿射参数的一个集合相同或类似的确定,从缓冲区移除仿射参数的一个集合,以升序在缓冲区中向前移动移除的仿射参数的一个集合之后的仿射参数的全部集合,以及在对应于仿射参数的最后一个集合的位置处将仿射参数的第一集合存储在缓冲区中。

在一些示例中,方法还包括:响应于指示仿射参数的第一集合与存储在缓冲区中的仿射参数的一个集合相同或类似的确定,从缓冲区移除仿射参数的一个集合,以降序在缓冲区中向后移动移除的仿射参数的一个集合之前的仿射参数的全部集合,以及在对应于仿射参数的第一个集合的位置处将仿射参数的第一集合存储在缓冲区中。

在一些示例中,方法还包括:响应于指示仿射参数的第一集合与存储在缓冲区中的仿射参数的至少一个集合不相同或不类似的确定,将仿射参数的第一集合存储在缓冲区中。

在一些示例中,方法还包括:使用仿射参数的第一集合来执行该转换。

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

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

图32是处理视频的方法3200的流程图。方法3200包括:基于存储在用于存储在视频的当前块之前编解码的块的仿射相关信息的缓冲区中的仿射参数,为该当前块和当前块的比特流表示之间的转换推导(3202)与当前块的仿射模型相关联的仿射相关信息;以及通过使用仿射相关信息来执行(3204)该转换。

在一些示例中,当前块的仿射模型包括4参数仿射模型和6参数仿射模型中的至少一者。

在一些示例中,存储在缓冲区中的仿射参数用于当前块的运动矢量预测或运动矢量编解码。

在一些示例中,仿射相关信息包括当前块的控制点运动矢量(CPMV)。

在一些示例中,仿射相关信息包括在当前块的子块的运动补偿中使用的运动矢量(MV)。

在一些示例中,仿射相关信息包括对当前块的控制点运动矢量(CPMV)的预测,其中对CPMV的预测用于在需要编解码CPMV时预测当前块的CPMV。

在一些示例中,当当前块用4参数仿射模型编解码时,更高优先级被分配给存储在缓冲区中的4参数仿射模型,并且更低优先级被分配给存储在缓冲区中的6参数仿射模型。

在一些示例中,当当前块用6参数仿射模型编解码时,更高优先级被分配给存储在缓冲区中的6参数仿射模型,并且更低优先级被分配给存储在缓冲区中的4参数仿射模型。

在一些示例中,推导与当前块的仿射模型相关联的仿射相关信息包括:基于存储在缓冲区中的仿射参数的集合和附加运动信息,推导与当前块的仿射模型相关联的仿射相关信息。

在一些示例中,附加运动信息包括以下中的至少一者:临近块的运动信息、或与仿射参数的集合相关联的运动信息、或空域临近或非相邻单元块的运动信息、或时域临近单元块/并置图片中的并置单元块的运动信息,运动信息至少包括运动矢量、参考列表指示和参考图片索引。

在一些示例中,推导当前块的CPMV基于仿射参数的集合,要针对其推导CPMV的位置的坐标,基本位置的坐标,以及以下中的一者:空域或时域临近块的基本MV(mv

在一些示例中,推导当前块的CPMV基于要针对其推导CPMV的位置和基本位置之间的差距。

在一些示例中,位置是基于当前块的左上角的坐标、当前块的宽度和高度而确定的,并且基本位置是基于当前块的左上角的坐标、临近块或临近单元块的大小而确定的。

在一些示例中,推导在当前块的子块的运动补偿中使用的MV基于仿射参数的集合、要针对其推导MV(mv

在一些示例中,推导在当前块的子块的运动补偿中使用的MV基于要针对其推导MV(mv

在一些示例中,位置是基于子块的左上角的坐标、子块的中心和子块的块尺寸而确定的。

在一些示例中,当存储在缓冲区中的仿射参数的集合来自用4参数仿射模型编解码的块时,推导CPMV或MV(mv

在一些示例中,当存储在缓冲区中的仿射参数的集合来自用6参数仿射模型编解码的块时,推导CPMV或MV(mv

在一些示例中,推导CPMV或MV(mv

在一些示例中,推导当前块的CPMV基于存储在缓冲区中的仿射参数的集合以及运动矢量,并且当前块的CPMV充当信令通知的当前块的CPMV的运动矢量预测(MVP)。

在一些示例中,推导当前块的CPMV基于存储在缓冲区中的仿射参数的集合以及运动矢量,并且当前块的CPMV用于推导用于运动补偿的当前块的每个子块的MV。

在一些示例中,当当前块被仿射Merge编解码时,推导用于运动补偿的当前块的每个子块的MV基于存储在缓冲区中的仿射参数的集合以及运动矢量。

在一些示例中,临近单元块或临近块的运动矢量和仿射参数的集合与相同的帧间预测方向相关联,其中帧间预测方向包括列表0、列表1或双向。

在一些示例中,当帧间预测方向列表0是使用中的一个预测方向时,运动矢量和仿射参数的集合与列表0的相同参考索引相关联。

在一些示例中,当帧间预测方向列表1是使用中的一个预测方向时,运动矢量和仿射参数的集合与列表1的相同参考索引相关联。

在一些示例中,当空域临近单元块或临近块的MV和存储在缓冲区中的仿射参数的集合参考不同的参考图片时,空域临近单元块或临近块的MV被缩放为参考与存储在缓冲区中的仿射参数的集合相同的参考图片,以推导当前块的仿射模型。

在一些示例中,当时域临近单元块或临近块的MV和存储在缓冲区中的仿射参数的集合参考不同的参考图片时,时域单元块或临近块的MV被缩放为参考与存储在缓冲区中的仿射参数的集合相同的参考图片,以推导当前块的仿射模型。

图33是处理视频的方法3300的流程图。方法3300包括:基于存储在用于存储在视频的当前块之前编解码的块的仿射相关信息的缓冲区中的仿射参数的集合,为该当前块和当前块的比特流表示之间的转换推导(3302)当前块的仿射模型;生成(3304)仿射Merge候选列表,其中,仿射Merge候选列表包括基于推导的当前块的仿射模型的当前块的仿射Merge候选;以及基于仿射Merge候选列表来执行(3306)该转换。

在一些示例中,与存储的仿射参数的集合相关联的边信息由基于推导的仿射模型的仿射Merge候选继承,其中边信息包括帧间预测方向和列表0/列表1的参考索引,其中该帧间预测方向包括列表0、列表1和双向。

在一些示例中,在列表中的构建的仿射Merge候选之前,在列表中的从临近块继承的仿射Merge候选之后,基于推导的仿射模型的仿射Merge候选被插入到仿射Merge候选列表中。

在一些示例中,在全部其他仿射Merge候选之前,基于推导的仿射模型的仿射Merge候选被插入到仿射Merge候选列表中。

在一些示例中,在列表中的填充候选之前,在列表中的构建的仿射Merge候选之后,基于推导的仿射模型的仿射Merge候选被插入到仿射Merge候选列表中。

在一些示例中,在列表中的使用时域运动预测的构建的仿射Merge候选之前,在列表中的不使用时域运动预测的构建的仿射Merge候选之后,基于推导的仿射模型的仿射Merge候选被插入到仿射Merge候选列表中。

在一些示例中,基于推导的仿射模型的仿射Merge候选被插入到仿射Merge候选列表中,并且与列表中的构建的仿射Merge候选和列表中的填充候选进行交织。

在一些示例中,方法还包括:将基于存储在缓冲区中的仿射参数而推导的N个候选添加到仿射Merge候选列表,N是预定义的整数。

图34是处理视频的方法3400的流程图。方法3400包括:为视频的当前块和当前块的比特流表示之间的转换生成(3402)作为仿射高级运动矢量预测(AMVP)编解码块的当前块的仿射AMVP候选列表,其中,候选列表包括基于存储在用于存储在当前块之前编解码的块的仿射相关信息的缓冲区中的仿射参数的至少一个AMVP候选;以及基于仿射AMVP候选列表来执行(3404)该转换。

在一些示例中,用于生成仿射AMVP候选的存储的仿射参数参考与当前块的目标参考图片相同的参考图片。

在一些示例中,与存储的仿射参数相关联的参考图片列表与当前块的目标参考图片列表相同。

在一些示例中,与存储的仿射参数相关联的参考索引与当前块的目标参考索引相同。

在一些示例中,在列表中的构建的仿射AMVP候选之前,在列表中的从临近块继承的仿射AMVP候选之后,基于仿射参数的仿射AMVP候选被插入到仿射AMVP候选列表中。

在一些示例中,在全部其他仿射AMVP候选之前,基于仿射参数的仿射AMVP候选被插入到仿射AMVP候选列表中。

在一些示例中,在列表中的基于高效视频编解码(HEVC)的AMVP候选之前,在列表中的构建的仿射AMVP候选之后,基于仿射参数的仿射AMVP候选被插入到仿射AMVP候选列表中。

在一些示例中,在列表中的填充仿射AMVP候选之前,在列表中的基于高效视频编解码(HEVC)的AMVP候选之后,基于仿射参数的仿射AMVP候选被插入到仿射AMVP候选列表中。

在一些示例中,在列表中的使用时域运动预测的构建的仿射AMVP候选之前,在列表中的不使用时域运动预测的构建的仿射AMVP候选之后,基于仿射参数的仿射AMVP候选被插入到仿射AMVP候选列表中。

在一些示例中,当当前块用4参数仿射模型编解码时,更高优先级被分配给存储在缓冲区中的4参数仿射模型,并且更低优先级被分配给存储在缓冲区中的6参数仿射模型。

在一些示例中,当当前块用6参数仿射模型编解码时,更高优先级被分配给存储在缓冲区中的6参数仿射模型,并且更低优先级被分配给存储在缓冲区中的4参数仿射模型。

在一些示例中,方法还包括:将基于存储在缓冲区中的仿射参数而推导的N个候选添加到仿射AMVP候选列表,N是预定义的整数。

在一些示例中,N在以下中的至少一者中被信令通知:序列参数集(SPS)、视频参数集(VPS)、图片参数集(PPS)、条带头、片组头、片。

在一些示例中,N取决于以下中的至少一者:当前块的块大小、包括AMVP模式和/或Merge模式的编解码模式信息。

在一些示例中,N取决于候选列表中的可用候选。

在一些示例中,N取决于候选列表中的特定类型的可用候选。

在一些示例中,当N大于1时,以索引的升序、或以索引的降序、或以基于候选列表中的可用候选的数量而确定的顺序,基于存储在缓冲区中的仿射参数而推导的N个候选被添加到候选列表。

在一些示例中,方法还包括:从存储在缓冲区中的仿射参数的全部集合选择仿射参数的N个集合,以推导N个候选,N是整数。

在一些示例中,所选择的仿射参数的N个集合是缓冲区中仿射参数的最晚N个集合。

在一些示例中,所选择的仿射参数的N个集合取决于缓冲区中的仿射模型参数的集合的索引。

图35是处理视频的方法3500的流程图。方法3500包括:基于存储在用于存储在视频的当前块之前编解码的块的仿射相关信息的缓冲区中的仿射参数以及一个或多个单元块,为该当前块和当前块的比特流表示之间的转换推导(3502)当前块的仿射候选;将推导的仿射候选插入(3504)到仿射候选列表中;以及通过使用仿射候选列表来执行(3506)该转换。

在一些示例中,单元块包括由空域临近/非相邻单元块和时域临近单元/非相邻单元块构成的组中的至少一者。

在一些示例中,推导的仿射候选被放在全部其他仿射候选之前,或刚好被放在列表中的继承的仿射候选之后,或刚好被放在列表中的第一构建的仿射候选之后,或刚好被放在列表中的从空域临近块/非相邻块构建的第一仿射候选之后,或刚好被放在列表中的从空域临近块/非相邻块推导的全部仿射候选之后,或刚好被放在列表中的全部构建的仿射候选之后,或刚好被放在全部零仿射候选之前。

在一些示例中,当从空域或时域临近/非相邻单元块继承另一仿射候选时,空域或时域临近/非相邻单元块不用于用存储在缓冲区中的仿射参数推导仿射候选。

在一些示例中,空域或时域临近/非相邻单元块用于仅用存储在缓冲区中的仿射参数的一个集合来推导仿射候选。

在一些示例中,从存储在缓冲区中的仿射参数以及单元块推导的至多N个仿射候选能够被放到仿射候选列表中,N是整数。

在一些示例中,如果选择从存储在缓冲区中的仿射参数以及单元块推导的仿射候选,则当前块的广义双向预测改进(GBI)索引从空域或时域临近/非相邻单元块的GBI索引继承。

在一些示例中,从存储在缓冲区中的仿射参数以及单元块推导的仿射候选按顺序被放到仿射候选列表中。

在一些示例中,方法还包括:通过使用二级嵌套循环方法来搜索从存储在缓冲区中的仿射参数以及单元块推导的可用仿射候选;将可用仿射候选插入到仿射候选列表中。

在一些示例中,在第一级循环中,以从表的开头到结尾的顺序、或从表的结尾到开头的顺序、或任何其他预定义或自适应顺序访问存储在缓冲区中的仿射参数的每个集合。

在一些示例中,存储在缓冲区中的仿射参数的一些集合在第一循环中被跳过。

在一些示例中,对于存储在缓冲区中的仿射参数的每个集合,第二级循环被应用,其中每个单元块按顺序被访问。

在一些示例中,仅一个空域临近/非相邻单元块被包括在第二级循环中,或者仅一个时域临近/非相邻单元块被包括在第二级循环中。

在一些示例中,如果满足以下条件中的全部或部分,则利用在第一级循环中给定的仿射参数的集合和在第二级循环中给定的空域或时域临近单元块,仿射候选被生成并放到仿射候选列表中,条件为:

i、空域或时域临近/非相邻单元块可用;

ii、空域或时域临近/非相邻单元块是帧间编解码的;

iii、空域或时域临近/非相邻单元块不在当前CTU行之外;

iv、仿射参数的集合的包括列表0、列表1或双向的帧间预测和空域或时域临近/非相邻单元块的帧间预测是相同的;

v、仿射参数的集合的列表0的参考索引和空域或时域临近/非相邻单元块的参考索引是相同的;

vi、仿射参数的集合的列表1的参考索引和空域或时域临近/非相邻单元块的参考索引是相同的;

vii、仿射参数的集合的列表0的参考图片的POC与空域或时域临近/非相邻单元块的参考图片之一的POC相同。

viii、仿射参数的集合的列表1的参考图片的POC与空域或时域临近/非相邻单元块的参考图片之一的POC相同。

在一些示例中,当空域或时域临近单元块已经用于推导继承的仿射候选时,空域或时域临近单元块在第二循环中被跳过,并且不用于用存储的仿射参数推导仿射候选。

在一些示例中,当空域或时域临近块已经用于用存储在缓冲区中的仿射参数的集合推导仿射候选时,空域或时域临近块在第二循环中被跳过,并且不用于用存储在缓冲区中的仿射参数的另一集合推导仿射候选。

在一些示例中,当空域或时域临近块用于推导仿射候选时,该临近块之后的全部其他临近块被跳过,并且跳出第二循环,以便回到第一循环,并且仿射参数的下一集合在第一循环中被访问。

在一些示例中,当从存储在缓冲区中的仿射参数推导的仿射候选能够被放到列表中时,仿射候选列表的尺寸增大N,其中N是整数。

在一些示例中,仿射候选是仿射Merge候选,并且仿射候选列表是仿射Merge候选列表。

在一些示例中,仿射候选是仿射AMVP候选,并且仿射候选列表是仿射AMVP候选列表。

在一些示例中,推导的仿射候选刚好被放在列表中的第一平移仿射AMVP候选之后或放在列表中的全部平移仿射AMVP候选之后。

图36是处理视频的方法3600的流程图。方法3600包括:基于存储在仿射基于历史的运动矢量预测(HMVP)缓冲区中的仿射参数,为视频的当前块和当前块的比特流表示之间的转换推导(3602)当前块的仿射候选;将推导的仿射候选插入(3604)到仿射候选列表中;以及通过使用仿射候选列表来执行(3606)该转换。

在一些示例中,从当前块的空域临近块继承的仿射候选不被放到列表中。

在一些示例中,从当前块的空域临近块继承的仿射候选从列表被排除。

在一些示例中,推导的仿射候选在从与当前CTU行不同的CTU行中的块继承的仿射候选之后被插入到列表中。

在一些示例中,从当前CTU行中的块继承的仿射候选从列表被移除。

在一些示例中,从当前块的空域临近块继承的仿射候选是否被插入到列表中取决于空域临近块的位置。

在一些示例中,当空域临近块在与当前块相同的CTU或CTU行中时,从空域临近块继承的仿射候选被插入到列表中。

在一些示例中,当空域临近块不在与当前块相同的CTU或CTU行中时,从空域临近块继承的仿射候选被放到列表中。

在一些示例中,是否插入从当前块的空域临近块继承的仿射Merge候选取决于仿射HMVP缓冲区。

在一些示例中,当仿射HMVP缓冲区为空时,继承的仿射Merge候选被添加到列表;并且当仿射HMVP缓冲区不为空时,继承的仿射Merge候选从列表被排除。

在一些示例中,是否插入从当前块的空域临近块继承的仿射Merge候选取决于块大小。

在一些示例中,仿射候选是仿射Merge候选,并且仿射候选列表是仿射Merge候选列表/基于子块的Merge候选列表。

在一些示例中,仿射候选是仿射AMVP候选,并且仿射候选列表是仿射AMVP候选列表。

在一些示例中,推导的仿射Merge候选刚好在可选时域运动矢量预测(ATMVP)候选之后被插入到列表中。

在一些示例中,推导的仿射Merge候选在构建的仿射Merge候选之前被插入到列表中。

在一些示例中,推导的仿射AMVP候选被首先插入到列表中。

在一些示例中,基本位置是临近单元块内部的任何位置。

在一些示例中,基本位置是基于当前块的左上角的坐标、临近单元块的大小而确定的。

应当理解,当被压缩的编解码单元的形状与传统的正方形块或半正方形的矩形块显著不同时,所公开的技术可以被体现在视频编码器或解码器中以提高压缩效率。例如,使用诸如尺寸为4×32或32×4的单元的长或高编解码单元的新的编解码工具可以受益于所公开的技术。

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

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

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

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

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

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

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

相关技术
  • 用于基于历史的仿射参数的修剪方法
  • 基于历史的仿射参数的使用
技术分类

06120112978929