首页 / 专利库 / 广播 / 帧内预测 / HMVP+非相邻运动

HMVP+非相邻运动

阅读:0发布:2020-05-28

专利汇可以提供HMVP+非相邻运动专利检索,专利查询,专利分析的服务。并且描述了使用包含编码候选的历史信息来编码和解码数字视频的设备、系统和方法。在典型方面,一种用于视频处理的方法包括:通过组合一个或多个运动候选表和来自一个或多个非相邻 块 的非相邻候选集,确定视频的视频数据块的运动候选列表。该方法还包括使用所述运动候选列表执行视频数据块和视频的比特流表示之间的转换。,下面是HMVP+非相邻运动专利的具体信息内容。

1.一种用于视频处理的方法,其包括:
通过组合运动候选的一个或多个表和来自视频数据的一个或多个非相邻块的非相邻候选集,确定视频的视频数据块的运动候选列表;以及
使用所述运动候选列表执行视频数据块和视频的比特流表示之间的转换。
2.根据权利要求1所述的方法,其中所述组合包括:
检查来自所述非相邻候选集的m个候选;以及
检查来自所述运动候选的一个或多个表的n个运动候选,
其中m和n是正整数。
3.根据权利要求2所述的方法,其中所述组合包括:
将来自所述非相邻候选集的m个候选中的至少一个添加到所述运动候选列表。
4.根据权利要求2或3所述的方法,其中所述组合包括:
将来自所述运动候选的一个或多个表的n个运动候选中的至少一个添加到所述运动候选列表。
5.根据权利要求1至4中任一项所述的方法,其中所述组合包括:
以交织方式检查来自所述非相邻候选集和所述运动候选的一个或多个表的候选。
6.根据权利要求5所述的方法,其中所述检查包括:
在检查来自所述一个或多个表的运动候选之前,检查来自所述非相邻候选集的非相邻候选。
7.根据权利要求5所述的方法,其中所述检查包括:
检查来自所述非相邻候选集的双向预测运动候选;
检查来自所述运动候选的一个或多个表的运动候选;以及
检查来自所述非相邻候选集的单向预测运动候选。
8.根据权利要求5所述的方法,其中所述检查包括:
检查来自所述非相邻候选集的非相邻候选;以及
基于与所述非相邻候选关联的非相邻块的编码特性,用来自所述运动候选的一个或多个表的运动候选替换所述非相邻候选。
9.根据权利要求8所述的方法,其中所述非相邻块的编码特性指示所述非相邻块位于预定范围之外。
10.根据权利要求9所述的方法,其中所述预定范围包括最大编码单元的当前行。
11.根据权利要求8所述的方法,其中所述非相邻块的编码特性指示所述非相邻块被内编码或帧内块复制编码。
12.根据权利要求1至11中任一项所述的方法,其中所述非相邻候选集具有比所述运动候选的一个或多个表更高的优先级。
13.根据权利要求12所述的方法,其中所述组合包括:
在检查运动候选的一组表之前,检查来自所述非相邻候选集的所有候选。
14.根据权利要求1至11中任一项所述的方法,其中所述运动候选的一个或多个表具有比所述非相邻候选集更高的优先级。
15.根据权利要求14所述的方法,其中所述组合包括:
在检查所述非相邻候选集之前,检查来自运动候选的一组表的所有候选。
16.根据权利要求1至15中任一项所述的方法,其中通过进一步组合从指定运动预测方法生成的候选来获得所述运动候选列表。
17.根据权利要求16所述的方法,其中所述指定运动预测方法包括时间运动矢量预测器(TMVP)方法。
18.根据权利要求1至17中任一项所述的方法,其中运动候选与运动信息关联,所述运动信息包括以下的至少一种:预测方向、参考图片索引、运动矢量值、强度补偿标志、仿射标志、运动矢量差精度或运动矢量差值。
19.根据权利要求1至18中任一项所述的方法,其中所述运动候选列表包括用于Merge编码块的多个Merge候选。
20.根据权利要求1至19中任一项所述的方法,其中所述运动候选列表包括用于帧内编码块的帧内预测模式。
21.根据权利要求1至20中任一项所述的方法,其中所述运动候选列表包括用于照明补偿编码块的多个照明补偿参数。
22.根据权利要求1至21中任一项所述的方法,其中所述运动候选列表包括在滤波处理中使用的滤波器参数。
23.根据权利要求1至22中任一项所述的方法,其中使用Merge模式对视频数据块进行编码,并且所述非相邻候选集包括多个Merge候选。
24.根据权利要求1至23中任一项所述的方法,其中使用高级运动矢量预测(AMVP)模式对视频数据块进行编码,并且所述非相邻候选集包括多个AMVP候选。
25.一种视频系统中的装置,其包括处理器和其上具有指令的非暂时性存储器,其中所述指令在由所述处理器执行时使所述处理器实现根据权利要求1至24中任一项所述的方法。
26.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于执行根据权利要求1至24中任一项所述的方法的程序代码。

说明书全文

HMVP+非相邻运动

[0001] 相关申请的交叉引用
[0002] 根据适用的《专利法》和/或《巴黎公约》的规定,本申请及时要求于2018年7月2日提交的国际专利申请No.PCT/CN2018/093987的优先权和权益。出于美国法律的所有目的,国际专利申请No.PCT/CN2018/093987的全部公开以引用方式并入作为该专利文件的公开的一部分。

技术领域

[0003] 该专利文件涉及视频编码技术、设备和系统。

背景技术

[0004] 尽管视频压缩有所进步,但数字视频仍占互联网和其他数字通信网络上的最大带宽使用。随着能够接收和显示视频的连接用户设备的数量增加,预计数字视频使用的带宽需求将继续增长。发明内容
[0005] 描述了与使用包含编码候选的一组查找表(LUT)来编码和解码数字视频有关的设备、系统和方法。所述方法可以应用于现有视频编码标准(例如,高效视频编码(HEVC))和未来视频编码标准或视频编解码器
[0006] 在一个典型方面,公开的技术可以用于提供一种用于视频处理的方法。该方法包括执行视频的视频数据的第一和视频的比特流表示之间的转换,以及基于所述视频数据的第一块的编码特性,使用与所述第一块关联的运动信息更新运动候选表。
[0007] 在另一典型方面,公开的技术可以用于提供一种用于处理视频的方法。该方法包括在当前视频块和视频的比特流表示之间的转换期间保持一个或多个运动候选表,将与当前视频块关联的运动候选与所述一个或多个表中的多个条目进行比较,以及基于所述比较更新所述一个或多个表。
[0008] 在另一典型方面,公开的技术可以用于提供一种用于视频处理的方法。该方法包括执行视频的视频块和视频的比特流表示之间的转换,同时在所述转换中保持一个或多个运动候选表,基于所述视频块中的当前视频块的编码特性,确定使用所述一个或多个运动候选表执行当前视频块和视频的比特流表示之间的转换的适合性,根据所述适合性执行当前视频块和视频的比特流表示之间的转换,以及选择性地使用与当前视频块关联的运动候选更新所述一个或多个运动候选表。
[0009] 在另一典型方面,公开的技术可以用于提供一种用于视频处理的方法。该方法包括在当前视频块和包括当前视频块的视频的比特流表示之间的转换期间保持一个或多个运动候选表,确定使用Merge模式或高级运动矢量预测模式(AMVP)对当前视频块进行编码,以及基于所述确定,使用所述一个或多个运动候选表执行当前视频块和视频的比特流表示之间的转换。
[0010] 在另一典型方面,公开的技术可以用于提供一种用于视频处理的方法。该方法包括通过组合一个或多个运动候选表和来自一个或多个非相邻块的非相邻候选集,确定视频的视频数据块的运动候选列表。该方法还包括使用所述运动候选列表执行视频数据块和视频的比特流表示之间的转换。
[0011] 在另一典型方面,公开的技术可以用于提供一种用于视频处理的方法。该方法包括以从多个可用运动矢量精度选择的M像素(pel)或子像素的运动矢量精度,保持用于视频的视频块和视频的比特流表示之间的转换的高级运动矢量预测(AMVP)候选列表。M是正整数。该方法包括对于与视频块关联的每个可用高级运动矢量预测(AMVP)候选执行:取整AMVP候选,将所述取整的AMVP候选与所述AMVP候选列表中的现有候选进行比较,以及在确定所述取整的AMVP候选与现有候选不同时将所述AMVP候选添加到所述AMVP候选列表。该方法还包括将所述AMVP候选列表与来自一个或多个运动候选表的一个或多个运动候选组合以获得组合列表,并且基于所述组合列表执行所述转换。
[0012] 在另一典型方面,公开的技术可以用于提供一种用于视频处理的方法。该方法包括以从多个可用运动矢量精度选择的M像素或子像素的运动矢量精度,保持用于视频的视频块和视频的比特流表示之间的转换的高级运动矢量预测(AMVP)候选列表,M是正整数。该方法还包括将与视频块关联的AMVP候选与所述AMVP候选列表中的现有AMVP候选进行比较,在确定所述AMVP候选与现有候选不同时将所述AMVP候选添加到所述AMVP候选列表,以及基于所述AMVP候选列表执行所述转换。
[0013] 在另一典型方面,公开的技术可以用于提供一种用于视频处理的方法。该方法包括使用Merge索引执行视频的视频数据块和视频的比特流表示之间的转换。所述比特流表示包括指示用于所述转换的Merge候选的Merge索引。所述Merge索引被划分为第一部分和第二部分。所述第一部分使用第一二值化方法编码,并且所述第二部分使用与所述第一二值化方法不同的第二二值化方法编码。
[0014] 在另一典型方面,公开的技术可以用于提供一种用于视频处理的方法。该方法包括基于视频的一个或多个先前视频块保持一个或多个内预测模式候选表,以及使用所述一个或多个帧内预测模式候选表执行视频的当前视频块和视频的比特流表示之间的转换。
[0015] 在另一典型方面,公开的技术可以用于提供一种用于视频处理的方法。该方法包括基于视频的视频块的非相邻块的帧内预测模式确定一组帧内预测模式预测器,以及使用所述一组帧内预测模式预测器执行视频块和视频的比特流表示之间的转换。
[0016] 在另一典型方面,公开的技术可以用于提供一种用于视频处理的方法。该方法包括基于视频的一个或多个先前视频块保持一个或多个照明补偿(IC)参数表,以及使用所述一个或多个IC参数表执行视频的当前视频块和视频的比特流表示之间的转换。
[0017] 在另一典型方面,公开的技术可以用于提供一种用于视频处理的方法。该方法包括基于当前视频块的非相邻块的照明补偿(IC)参数导出视频的当前视频块的IC参数,以及使用导出的IC参数执行当前视频块和视频的比特流表示之间的转换。
[0018] 在另一典型方面,公开的技术可以用于提供一种用于视频编码的方法。该方法包括接收视频数据的第一块的比特流表示,以及基于一组查找表(LUT)处理所述比特流表示以生成所述视频数据的第一块,其中所述一组LUT包括编码候选。
[0019] 在另一典型方面,公开的技术可以用于提供另一种用于视频编码的方法。该方法包括接收视频数据块的比特流表示,以及基于来自非相邻块的编码候选处理所述比特流表示,其中所述编码候选是非运动候选。
[0020] 在又一典型方面,公开的技术可以用于提供另一种用于视频编码的方法。该方法包括接收视频数据块的比特流表示,以及使用多个运动矢量(MV)精度并且基于高级运动矢量预测(AMVP)候选列表,处理所述比特流表示以生成视频数据块,其中所述视频数据块包括低MV精度,并且其中每个AMVP候选在插入所述AMVP候选列表之前被取整,并与可用的AMVP候选进行修剪(pruned)。
[0021] 在又一典型方面,公开的技术可以用于提供另一种用于视频编码的方法。该方法包括接收视频数据块的比特流表示,以及使用Merge索引编码处理所述比特流表示以生成视频数据块,其中所述比特流表示包括被划分为第一部分和第二部分的Merge索引,其中所述第一部分通过第一二值化方法处理,并且其中所述第二部分通过与所述第一二值化方法不同的第二二值化方法处理。
[0022] 在又一典型方面,上述方法以处理器可执行代码的形式体现并存储在计算机可读程序介质中。
[0023] 在又一典型方面,公开了一种配置或可操作以执行上述方法的设备。该设备可以包括被编程为实现该方法的处理器。
[0024] 在又一典型方面,视频解码器装置可以实施如本文中所述的方法。
[0025] 在附图说明书权利要求中更详细地描述了公开技术的上述和其他方面和特征。

附图说明

[0026] 图1示出了典型高效视频编码(HEVC)视频编码器和解码器的示例性框图
[0027] 图2示出了H.264/AVC中的宏块(MB)分割的示例。
[0028] 图3示出了将编码块(CB)划分为预测块(PB)的示例。
[0029] 图4A和4B分别示出了将编码树块(CTB)细分为CB和变换块(TB)以及对应四叉树的示例。
[0030] 图5A和5B示出了用于最大编码单元(LCU)的细分以及对应四叉树加二叉树(QTBT)的示例。
[0031] 图6A示出了四叉树(QT)分割的示例。
[0032] 图6B示出了垂直二叉树(BT)分割的示例。
[0033] 图6C示出了平二叉树(BT)分割的示例。
[0034] 图6D示出了垂直三叉树(TT)分割的示例。
[0035] 图6E示出了水平三叉树(TT)分割的示例。
[0036] 图7示出了基于QTBT的CB的示例性细分。
[0037] 图8A-8I示出了支持多叉树类型(MTT)的CB的分割的示例,其是QTBT的概括(generalization)。
[0038] 图9示出了构建Merge候选列表的示例。
[0039] 图10示出了空间候选的位置的示例。
[0040] 图11示出了经受空间Merge候选的冗余校验的候选对的示例。
[0041] 图12A和12B示出了基于当前块的尺寸和形状的第二预测单元(PU)的位置的示例。
[0042] 图13示出了用于时间Merge候选的运动矢量缩放的示例。
[0043] 图14示出了用于时间Merge候选的候选位置的示例。
[0044] 图15示出了生成组合双向预测Merge候选的示例。
[0045] 图16示出了用于运动矢量预测候选的推导过程的示例。
[0046] 图17示出了用于空间运动矢量候选的运动矢量缩放的示例。
[0047] 图18示出了使用用于编码单元(CU)的替代时间运动矢量预测(ATMVP)算法的运动预测的示例。
[0048] 图19示出了源块和源图片的识别的示例。
[0049] 图20示出了由空时运动矢量预测(STMVP)算法使用的具有子块的编码单元(CU)和相邻块的示例。
[0050] 图21示出了模式匹配运动矢量推导(PMMVD)模式中的双边匹配的示例,其是基于帧速率上转换(FRUC)算法的特殊Merge模式。
[0051] 图22示出了FRUC算法中的模板匹配的示例。
[0052] 图23示出了FRUC算法中的单向运动估计的示例。
[0053] 图24示出了基于双边模板匹配的解码器侧运动矢量细化(DMVR)算法的示例。
[0054] 图25示出了用于导出照明补偿(IC)参数的相邻样本的示例。
[0055] 图26示出了用于导出空间Merge候选的相邻块的示例。
[0056] 图27示出了提出的67个帧内预测模式的示例。
[0057] 图28示出了用于最可能模式推导的相邻块的示例。
[0058] 图29A和29B示出了具有QTBT结构的I条带中的对应亮度色度子块。
[0059] 图30示出了来自非相邻块和查找表(LUT)的候选的迭代插入的示例。
[0060] 图31示出了来自非相邻块和LUT的候选的基于优先级的插入的示例。
[0061] 图32示出了来自非相邻块和LUT的候选的基于优先级的插入的另一示例。
[0062] 图33示出了在一个块之后更新的基于LUT的MVP/帧内模式预测/IC参数的示例的编码流程。
[0063] 图34示出了在一个区域之后更新的基于LUT的MVP/帧内模式预测/IC参数的示例的编码流程。
[0064] 图35示出了根据本公开技术的用于视频编码的示例性方法的流程图
[0065] 图36是用于实现本文件中描述的视觉媒体解码或视觉媒体编码技术的硬件平台的示例的框图。
[0066] 图37示出了根据本公开技术的用于视频处理的示例性方法的流程图。
[0067] 图38示出了根据本公开技术的用于视频处理的示例性方法的另一流程图。
[0068] 图39示出了根据本公开技术的用于视频处理的示例性方法的另一流程图。
[0069] 图40示出了根据本公开技术的用于视频处理的示例性方法的另一流程图。
[0070] 图41示出了根据本公开技术的用于视频处理的示例性方法的另一流程图。
[0071] 图42示出了根据本公开技术的用于视频处理的示例性方法的另一流程图。
[0072] 图43示出了根据本公开技术的用于视频处理的示例性方法的另一流程图。
[0073] 图44示出了根据本公开技术的用于视频处理的示例性方法的另一流程图。
[0074] 图45示出了根据本公开技术的用于视频处理的示例性方法的另一流程图。
[0075] 图46示出了根据本公开技术的用于视频处理的示例性方法的另一流程图。
[0076] 图47示出了根据本公开技术的用于视频处理的示例性方法的另一流程图。
[0077] 图48示出了根据本公开技术的用于视频处理的示例性方法的又一流程图。

具体实施方式

[0078] 由于对更高分辨率视频的需求的增加,视频编码方法和技术在现代技术中普遍存在。视频编解码器通常包括压缩或解压缩数字视频的电子电路软件,并且不断改进以提供更高的编码效率。视频编解码器将未压缩视频转换成压缩格式,反之亦然。视频质量,用于表示视频的数据量(由比特率确定),编码和解码算法的复杂性,对数据丢失和错误的敏感性,编辑的简易性,随机存取和端到端延迟(延迟时间)之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如,高效视频编码(HEVC)标准(也称为H.265或MPEG-H第2部分),待最终确定的通用视频编码标准或其他当前和/或未来的视频编码标准。
[0079] 公开技术的实施例可以应用于现有视频编码标准(例如,HEVC,H.265)和未来标准以改进压缩性能。在本文件中使用章节标题来提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实现方式)仅限制到相应的章节。
[0080] 1.视频编码的示例性实施例
[0081] 图1示出了典型HEVC视频编码器和解码器的示例性框图。产生符合HEVC的比特流的编码算法通常如下进行。每个图片被划分为块状区域,精确的块划分被传送到解码器。视频序列的第一图片(以及进入视频序列的每个干净的随机访问点处的第一图片)仅使用图片内预测(其使用同一图片内区域到区域的空间数据预测,但不依赖其他图片)进行编码。对于序列的或随机访问点之间的所有剩余图片,图片间时间预测编码模式通常用于大多数块。用于图片间预测的编码处理包括选择包括所选参考图片的运动数据和要应用于预测每个块的样本的运动矢量(MV)。编码器和解码器通过使用MV和模式决策数据应用运动补偿(MC)来生成相同的图片间预测信号,其作为辅助信息被传输。
[0082] 通过线性空间变换来变换图片内或图片间预测的残差信号,其是原始块与其预测之间的差。然后对变换系数进行缩放,量化,熵编码,并与预测信息一起传输。
[0083] 编码器复制解码器处理循环(参见图1中的灰色阴影框),使得两者都将为后续数据生成相同的预测。因此,通过逆缩放来构造量化的变换系数,然后对其进行逆变换以复制残差信号的解码近似。然后将残差添加到预测,然后可以将该相加的结果馈送到一个或两个环路滤波器中以平滑由逐块处理和量化引起的伪像。最终图片表示(即解码器输出的副本)存储在解码图片缓冲器中以用于后续图片的预测。通常,图片的编码或解码处理的顺序通常不同于它们从源到达的顺序;需要区分解码器的解码顺序(即比特流顺序)和输出顺序(即显示顺序)。
[0084] 通常期望由HEVC编码的视频材料作为逐行扫描图像输入(由于源视频源自该格式或者由编码之前的去交错产生)。HEVC设计中不存在明确的编码特征以支持隔行扫描的使用,因为隔行扫描不再用于显示器,并且对于分发而言变得非常不常见。然而,在HEVC中已提供了元数据语法以允许编码器通过将隔行扫描视频的每个区(即,每个视频帧的偶数或奇数行)编码为单独的图片来指示已发送隔行扫描视频或通过将每个隔行扫描帧编码为HEVC编码图片指示它已被发送。这提供了一种对隔行扫描视频进行编码的有效方法,而不需要支持用于它的特殊解码处理。
[0085] 1.1.H.264/AVC中的分割树结构的示例
[0086] 先前标准中的编码层的核心是宏块,其包含亮度样本的16×16块,并且在4:2:0颜色采样的通常情况下,包含色度样本的两个对应的8×8块。
[0087] 帧内编码块使用空间预测来利用像素之间的空间相关性。定义了两个分割:16×16和4×4。
[0088] 帧间编码块通过估计图片之间的运动来使用时间预测而不是空间预测。可以针对16×16宏块或其任何子宏块分割独立地估计运动:16×8,8×16,8×8,8×4,4×8,4×4,如图2中所示。每个子宏块分割仅允许一个运动矢量(MV)。
[0089] 1.2HEVC中的分割树结构的示例
[0090] 在HEVC中,通过使用表示为编码树的四叉树结构将编码树单元(CTU)划分为编码单元(CU)以适应各种局部特性。使用图片间(时间)还是图片内(空间)预测来编码图片区域的决定是在CU级别进行的。可以根据PU划分类型将每个CU进一步划分为一个,两个或四个预测单元(PU)。在一个PU内部,应用相同的预测处理,并且基于PU将相关信息传输到解码器。在通过应用基于PU划分类型的预测处理来获得残差块之后,可以根据类似于CU的编码树的另一种四叉树结构将CU分割为变换单元(TU)。HEVC结构的关键特征之一是它具有多个分割概念,包括CU,PU和TU。
[0091] 使用HEVC的混合视频编码中涉及的某些特征包括:
[0092] (1)编码树单元(CTU)和编码树块(CTB)结构:HEVC中的类似结构是编码树单元(CTU),其具有由编码器选择的尺寸并且可以大于传统的宏块。CTU由亮度CTB和对应色度CTB和语法元素组成。亮度CTB的尺寸L×L可以选择为L=16、32或64个样本,较大的尺寸通常能够实现更好的压缩。然后HEVC支持使用树结构和类似四叉树的信令通知将CTB划分为更小的块。
[0093] (2)编码单元(CU)和编码块(CB):CTU的四叉树语法指定其亮度和色度CB的尺寸和位置。四叉树的根与CTU关联。因此,亮度CTB的尺寸是亮度CB的最大支持尺寸。将CTU划分成亮度和色度CB被联合信令通知。一个亮度CB和通常两个色度CB以及关联的语法形成编码单元(CU)。CTB可以仅包含一个CU或者可以被划分以形成多个CU,并且每个CU具有关联的分割为预测单元(PU)和变换单元(TU)的树。
[0094] (3)预测单元和预测块(PB):在CU级别做出是使用帧间图片还是帧内图片预测来编码图片区域的决定。PU分割结构的根在CU级别。取决于基本预测类型决定,然后亮度和色度CB可以进一步在尺寸上划分并从亮度和色度预测块(PB)进行预测。HEVC支持从64×64下至4×4样本的可变PB尺寸。图3示出了M×M CU的允许PB的示例。
[0095] (4)变换单元(Tu)和变换块:使用块变换对预测残差进行编码。TU树结构的根在CU级别。亮度CB残差可以与亮度变换块(TB)相同,或者可以进一步划分成较小的亮度TB。这同样适用于色度TB。类似于离散余弦变换(DCT)的整数基函数被定义为方形TB尺寸4×4,8×8,16×16和32×32。对于亮度帧内图片预测残差的4×4变换,交替地指定从离散正弦变换(DST)的形式导出的整数变换。
[0096] 1.2.1.树状结构分割为TB和TU的示例
[0097] 对于残差编码,可以将CB递归地划分为变换块(TB)。划分由残差四叉树信令通知。仅指定了方形CB和TB划分,其中块可以递归地划分成象限,如图4A和4B中所示。对于尺寸为M×M的给定亮度CB,标志信令通知指示它是否被划分为尺寸为M/2×M/2的四个块。如果可能进一步划分,如序列参数集(SPS)中指示的残差四叉树的最大深度信令通知的,则为每个象限分配一个标志,所述标志指示它是否被划分为四个象限。由残差四叉树产生的叶节点块是通过变换编码进一步处理的变换块。编码器指示它将使用的最大和最小亮度TB尺寸。
当CB尺寸大于最大TB尺寸时,划分是隐含的。当划分将导致亮度TB尺寸小于指示的最小值时,不划分是隐含的。在每个维度中色度TB尺寸是亮度TB尺寸的一半,除了当亮度TB尺寸为
4×4时,在该情况下单个4×4色度TB用于由四个4×4亮度TB覆盖的区域。在图片内预测的CU的情况下,最近相邻TB(在CB内或外)的解码样本用作用于帧内图片预测的参考数据。
[0098] 与先前的标准相反,HEVC设计允许TB跨越图片间预测CU的多个PB以最大化四叉树结构的TB划分的潜在编码效率益处。
[0099] 1.2.2.父节点子节点
[0100] 根据四叉树结构划分CTB,其节点是编码单元。四叉树结构中的多个节点包括叶节点和非叶节点。叶节点在树结构中没有子节点(即,叶节点不被进一步分割)。非叶节点包括树结构的根节点。根节点对应于视频数据的初始视频块(例如,CTB)。对于多个节点中的每个相应的非根节点,相应的非根节点对应于视频块,所述视频块是与相应的非根节点的树结构中的父节点对应的视频块的子块。多个非叶节点中的每个相应的非叶节点在树结构中具有一个或多个子节点。
[0101] 1.3.联合探索模型(JEM)中具有较大CTU的四叉树加二叉树块结构的示例[0102] 在一些实施例中,使用称为联合探索模型(JEM)的参考软件来探索未来的视频编码技术。除二叉树结构外,JEM还描述了四叉树加二叉树(QTBT)和三叉树(TT)结构。
[0103] 1.3.1.QTBT块分割结构的示例
[0104] 与HEVC相反,QTBT结构消除了多个分割类型的概念,即,它消除了CU,PU和TU概念的分离,并且支持CU分割形状的更多灵活性。在QTBT块结构中,CU可以具有方形或矩形形状。如图5A中所示,首先由四叉树结构分割编码树单元(CTU)。四叉树叶节点进一步由二叉树结构分割。在二叉树划分中有两种划分类型,对称水平划分和对称垂直划分。二叉树叶节点被称为编码单元(CU),并且该分割用于预测和变换处理而无需任何进一步划分。这意味着CU,PU和TU在QTBT编码块结构中具有相同的块尺寸。在JEM中,CU有时由不同颜色分量的编码块(CB)组成,例如,一个CU在4:2:0色度格式的P和B条带的情况下包含一个亮度CB和两个色度CB,并且有时由单个分量的CB组成,例如,一个CU在I条带的情况下包含仅一个亮度CB或仅两个色度CB。
[0105] 为QTBT划分方案定义以下参数:
[0106] --CTU尺寸:四叉树的根节点尺寸,与HEVC中相同的概念
[0107] --MinQTSize:最小允许的四叉树叶节点尺寸
[0108] --MaxBTSize:最大允许的二叉树根节点尺寸
[0109] --MaxBTDepth:最大允许的二叉树深度
[0110] --MinBTSize:最小允许的二叉树叶节点尺寸
[0111] 在QTBT分割结构的一个示例中,CTU尺寸被设置为具有两个对应的64×64色度样本块的128×128亮度样本,MinQTSize被设置为16×16,MaxBTSize被设置为64×64,MinBTSize(宽度和高度)被设置为4×4,并且MaxBTDepth被设置为4。四叉树划分首先应用于CTU以生成四叉树叶节点。四叉树叶节点可以具有从16×16(即,MinQTSize)到128×128(即,CTU尺寸)的尺寸。如果四叉树叶节点是128×128,则由于尺寸超过MaxBTSize(即64×64),它将不会由二叉树进一步划分。否则,四叉树叶节点可以由二叉树进一步划分。因此,四叉树叶节点也是二叉树的根节点,并且它具有为0的二叉树深度。当二叉树深度达到MaxBTDepth(即4)时,不考虑进一步的划分。当二叉树节点的宽度等于MinBTSize(即4)时,不考虑进一步的水平划分。类似地,当二叉树节点的高度等于MinBTSize时,不考虑进一步的垂直划分。通过预测和变换处理进一步处理二叉树的叶节点而无需任何进一步的划分。
在JEM中,最大CTU尺寸为256×256亮度样本。
[0112] 图5A示出了通过使用QTBT进行块划分的示例,并且图5B示出了对应的树表示。实线表示四叉树划分并且虚线表示二叉树划分。在二叉树的每个划分(即,非叶)节点中,一个标志被信令通知以指示使用哪种划分类型(即,水平或垂直),其中0表示水平划分并且1表示垂直划分。对于四叉树分割,不需要指示划分类型,原因是四叉树划分总是水平地和垂直地划分块以产生具有相同尺寸的4个子块。
[0113] 另外,QTBT方案支持亮度和色度具有单独的QTBT结构的能。目前,对于P和B条带,一个CTU中的亮度和色度CTB共用相同的QTBT结构。然而,对于I条带,亮度CTB通过QTBT结构分割为CU,并且色度CTB通过另一QTBT结构分割为色度CU。这意味着I条带中的CU由亮度分量的编码块或两个色度分量的编码块组成,并且P或B条带中的CU由所有三个颜色分量的编码块组成。
[0114] 在HEVC中,限制小块的帧间预测以减少运动补偿的存储器访问,使得4×8和8×4块不支持双向预测,并且4×4块不支持帧间预测。在JEM的QTBT中,这些限制被去除。
[0115] 1.4.用于通用视频编码(VVC)的三叉树(TT)
[0116] 图6A示出了四叉树(QT)划分的示例,并且图6B和6C分别示出了垂直和水平二叉树(BT)划分的示例。在一些实施例中,除了四叉树和二叉树之外,还支持三叉树(TT)分割,例如水平和垂直中心侧三叉树(如图6D和6E中所示)。
[0117] 在一些实现方式中,支持两级树:区域树(四叉树)和预测树(二叉树或三叉树)。首先通过区域树(RT)划分CTU。可以使用预测树(PT)进一步划分RT叶。还可以用PT进一步划分PT叶片直到达到最大PT深度。PT叶是基本编码单元。为方便起见,它仍被称为CU。CU无法进一步划分。预测和变换都以与JEM相同的方式应用于CU。整个分割结构称为“多类型树”。
[0118] 1.5.替代视频编码技术中的分割结构的示例
[0119] 在一些实施例中,支持称为多叉树类型(MTT)的树结构,其是QTBT的一般化。在QTBT中,如图7中所示,首先由四叉树结构分割编码树单元(CTU)。四叉树叶节点进一步由二叉树结构分割。
[0120] MTT的结构由两种类型的树节点构成:区域树(RT)和预测树(PT),支持九种类型的分割,如图8A-8I中所示。区域树可以递归地将CTU划分成方块,直到4×4尺寸的区域树叶节点。在区域树中的每个节点处,可以从三种树类型之一形成预测树:二叉树,三叉树和非对称二叉树。在PT划分中,禁止在预测树的分支中具有四叉树分割。与JEM中一样,亮度树和色度树在I条带中分离。
[0121] 2HEVC/H.265中的帧间预测的示例
[0122] 多年来,视频编码标准已得到显着改进,并且现在部分地提供高编码效率和对更高分辨率的支持。诸如HEVC和H.265的最新标准基于混合视频编码结构,其中利用时间预测加变换编码。
[0123] 2.1预测模式的示例
[0124] 每个帧间预测的预测单元(PU)具有用于一个或两个参考图片列表的运动参数。在一些实施例中,运动参数包括运动矢量和参考图片索引。在其他实施例中,还可以使用inter_pred_idc对两个参考图片列表中的一个的使用信令通知。在另外的其他实施例中,运动矢量可以被明确地编码为相对于预测器的增量。
[0125] 当用跳过模式(skip mode)对CU进行编码时,一个PU与CU关联,并且不存在显著的残差系数,没有编码的运动矢量变化量或参考图片索引。指定Merge模式,由此从包括空间和时间候选的相邻PU获得当前PU的运动参数。Merge模式可以应用于任何帧间预测的PU,不仅适用于跳过模式。Merge模式的替代方案是运动参数的显式传输,其中对于每个PU,明确地对运动矢量,每个参考图片列表的对应参考图片索引和参考图片列表使用信令通知。
[0126] 在H.264/MPEG-4AVC标准中,预测类型的粒度降低到“条带级别”。条带是帧的空间上不同的区域,其与同一帧中的任何其他区域分开编码。当信令指示要使用两个参考图片列表中的一个时,PU从一个运动矢量和参考索引产生。这被称为“单向预测”。对于P条带和B条带都可以进行单向预测。当信令指示要使用两个参考图片列表时,PU从两个运动矢量和参考索引产生。这被称为“双向预测”。双向预测仅适用于B条带。
[0127] 2.1.1构建Merge模式的候选的实施例
[0128] 当使用Merge模式预测PU时,指向Merge候选列表中的条目的索引从比特流解析并用于检索运动信息。可以根据以下步骤序列总结该列表的构建:
[0129] 步骤1:初始候选推导
[0130] 步骤1.1:空间候选推导
[0131] 步骤1.2:空间候选的冗余校验
[0132] 步骤1.3:时间候选推导
[0133] 步骤2:附加候选插入
[0134] 步骤2.1:双向预测候选的创建
[0135] 步骤2.2:零运动候选的插入
[0136] 图9示出了基于上面总结的步骤序列构建Merge候选列表的示例。对于空间Merge候选推导,在位于五个不同位置的候选中选择最多四个Merge候选。对于时间Merge候选推导,在两个候选中选择最多一个Merge候选。由于在解码器处假设每个PU的候选的恒定数量,因此当候选的数量未达到在条带报头中信令通知的Merge候选的最大数量(MaxNumMergeCand)时生成附加候选。由于候选的数量是恒定的,因此使用截断一元码二值化(TU)来编码最佳Merge候选的索引。如果CU的尺寸等于8,则当前CU的所有PU共用单个Merge候选列表,其与2N×2N预测单元的Merge候选列表相同。
[0137] 2.1.2构建空间Merge候选
[0138] 在空间Merge候选的推导中,在位于图10中描绘的位置的候选中选择最多四个Merge候选。推导的顺序是A1,B1,B0,A0和B2。仅当位置A1,B1,B0,A0的任何PU不可用(例如,因为它属于另一条带(slice)或片(tile))或帧内编码时才考虑位置B2。在添加位置A1处的候选之后,对剩余候选的添加进行冗余校验,其确保具有相同运动信息的候选从列表排除,使得提高编码效率。
[0139] 为了降低计算复杂度,在所述的冗余校验中并未考虑所有可能的候选对。而是仅考虑与图11中的箭头链接的对,并且如果用于冗余校验的对应候选不具有相同的运动信息,则仅将候选添加到列表。重复运动信息的另一来源是与不同于2N×2N的分割关联的“第二PU”。作为示例,图12A和12B分别描绘了针对N×2N和2N×N的情况的第二PU。当当前PU被分割为N×2N时,位置A1处的候选不被考虑用于列表构建。在一些实施例中,添加该候选可以导致具有相同运动信息的两个预测单元,这对于在编码单元中仅具有一个PU是冗余的。类似地,当当前PU被分割为2N×N时,不考虑位置B1。
[0140] 2.1.3构建时间Merge候选
[0141] 在该步骤中,仅将一个候选添加到列表。特别地,在该时间Merge候选的推导中,基于属于与给定参考图片列表内的当前图片具有最小图片顺序计数(POC)差的图片的共位PU来导出缩放运动矢量。在条带报头中明确地对要用于导出共位PU的参考图片列表信令通知。
[0142] 图13示出了用于时间Merge候选(作为虚线)的缩放运动矢量的推导的示例,其使用POC距离tb和td从共位PU的运动矢量缩放,其中tb被定义为当前图片的参考图片和当前图片之间的POC差,并且td被定义为共位图片的参考图片和共位图片之间的POC差。时间Merge候选的参考图片索引被设定为等于零。对于B条带,获得两个运动矢量,一个用于参考图片列表0,另一个用于参考图片列表1,并且组合以获得双向预测Merge候选。
[0143] 在属于参考帧的共位PU(Y)中,在候选C0和C1之间选择时间候选的位置,如图14中所示。如果位置C0处的PU不可用,帧内编码,或在当前CTU之外,则使用位置C1。否则,位置C0用于推导时间Merge候选。
[0144] 2.1.4构建附加类型的Merge候选
[0145] 除了空时Merge候选之外,存在两种附加类型的Merge候选:组合双向预测Merge候选和零Merge候选。通过利用空时Merge候选来生成组合双向预测Merge候选。组合双向预测Merge候选仅用于B条带。通过将初始候选的第一参考图片列表运动参数与另一个的第二参考图片列表运动参数组合来生成组合双向预测候选。如果这两个元组提供不同的运动假设,则它们将形成新的双向预测候选。
[0146] 图15示出了该处理的示例,其中具有mvL0和refIdxL0或mvL1和refIdxL1的原始列表(710,左侧)中的两个候选用于创建添加到最后列表(720,右侧)的组合双向预测Merge候选。
[0147] 插入零运动候选以填充Merge候选列表中的剩余条目,并因此达到MaxNumMergeCand容量。这些候选具有零空间位移和参考图片索引,其从零开始并且每当新的零运动候选被添加到列表时增加。这些候选使用的参考帧的数量对于单向和双向预测分别是一和二。在一些实施例中,不对这些候选执行冗余校验。
[0148] 2.1.5并行处理的运动估计区域的示例
[0149] 为了加速编码处理,可以并行执行运动估计,由此同时导出给定区域内的所有预测单元的运动矢量。从空间邻域导出Merge候选可能干扰并行处理,原因是一个预测单元不能从相邻PU导出运动参数,直到其关联的运动估计完成。为了减轻编码效率和处理等待时间之间的折衷,可以定义运动估计区域(MER)。可以使用“log2_parallel_merge_level_minus2”语法元素在图片参数集(PPS)中对MER的尺寸信令通知。当定义MER时,属于相同区域的Merge候选被标记为不可用,并且因此在列表构造中不予考虑。
[0150] 表1中示出了图片参数集(PPS)原始字节序列有效载荷(RBSP)语法,其中log2_parallel_merge_level_minus2加2指定变量Log2ParMrgLevel的值,所述变量在用于Merge模式的亮度运动矢量的导出过程以及用于空间Merge候选的推导过程中使用,如现有视频编码标准中规定的。log2_parallel_merge_level_minus2的值应当在0至CtbLog2SizeY-2的范围内,包括0和CtbLog2SizeY-2。
[0151] 变量Log2ParMrgLevel如下导出:
[0152] Log2ParMrgLevel=log2_parallel_merge_level_minus2+2
[0153] 应当注意,Log2ParMrgLevel的值指示Merge候选列表的并行推导的内置能力。例如,当Log2ParMrgLevel等于6时,可以并行地导出包含在64×64块中的所有预测单元(PU)和编码单元(CU)的Merge候选列表。
[0154] 表1:一般图片参数集RBSP语法
[0155]
[0156] 2.2AMVP模式下的运动矢量预测的实施例
[0157] 运动矢量预测利用运动矢量与相邻PU的空时相关性,其用于运动参数的显式传输。它通过首先检查左上方时间相邻的PU位置的可用性,去除冗余候选并添加零矢量以使候选列表为恒定长度来构建运动矢量候选列表。然后,编码器可以从候选列表选择最佳预测器,并且传送指示所选候选的对应索引。与Merge索引信令类似,使用截断一元码来编码最佳运动矢量候选的索引。
[0158] 2.2.1构造运动矢量预测候选的示例
[0159] 图16总结了用于运动矢量预测候选的推导过程,并且可以针对每个参考图片列表以refidx作为输入来实现。
[0160] 在运动矢量预测中,考虑两种类型的运动矢量候选:空间运动矢量候选和时间运动矢量候选。对于空间运动矢量候选推导,最终基于位于五个不同位置的每个PU的运动矢量导出两个运动矢量候选,如先前在图10中所示。
[0161] 对于时间运动矢量候选推导,从两个候选选择一个运动矢量候选,其基于两个不同的共位位置而导出。在制作空时候选的第一列表之后,去除列表中的重复运动矢量候选。如果潜在候选的数量大于二,则从列表去除其相关参考图片列表内的参考图片索引大于1的运动矢量候选。如果空时运动矢量候选的数量小于2,则将附加零运动矢量候选添加到列表。
[0162] 2.2.2构建空间运动矢量候选
[0163] 在空间运动矢量候选的推导中,在五个潜在候选中考虑最多两个候选,其从位于如先前图10中所示的位置的PU导出,那些位置与运动Merge的位置相同。当前PU的左侧的推导顺序被定义为A0,A1,缩放A0和缩放A1。当前PU的上侧的导出顺序被定义为B0,B1,B2,缩放B0,缩放B1,缩放B2。因此对于每一侧,存在可用作运动矢量候选的四种情况,其中两种情况不需要使用空间缩放,并且两种情况使用空间缩放。四种不同的情况总结如下:
[0164] --无空间缩放
[0165] (1)相同的参考图片列表,以及相同的参考图片索引(相同的POC)
[0166] (2)不同的参考图片列表,但是相同的参考图片(相同的POC)
[0167] --空间缩放
[0168] (3)相同的参考图片列表,但是不同的参考图片(不同的POC)
[0169] (4)不同的参考图片列表,以及不同的参考图片(不同的POC)
[0170] 首先检查无空间缩放情况,接着检查允许空间缩放的情况。当POC在相邻PU的参考图片和当前PU的参考图片之间不同时,考虑空间缩放而不管参考图片列表。如果左候选的所有PU都不可用或者是帧内编码的,则允许对上述运动矢量进行缩放以帮助左和上MV候选的并行推导。否则,不允许上述运动矢量的空间缩放。
[0171] 如图17中的示例中所示,对于空间缩放情况,以与时间缩放类似的方式缩放相邻PU的运动矢量。一个区别是参考图片列表和当前PU的索引被给出作为输入;实际缩放处理与时间缩放处理相同。
[0172] 2.2.3构建时间运动矢量候选
[0173] 除了参考图片索引推导之外,用于推导时间Merge候选的所有过程与用于推导空间运动矢量候选的所有过程相同(如图14中的示例中所示)。在一些实施例中,参考图片索引被信令通知到解码器。
[0174] 2.2.4Merge/AMVP信息的信令
[0175] 对于AMVP模式,可以在比特流对四个部分信令通知,例如,预测方向,参考索引,MVD和mv预测器候选索引,其在表2-4中所示的语法的上下文中描述。而对于Merge模式,可能只需要对Merge索引信令通知。
[0176] 表2:一般条带段报头语法
[0177]
[0178] 表3:预测单元语法
[0179]
[0180]
[0181] 表4:运动矢量差语法
[0182]
[0183] 对应的语义包括:
[0184] five_minus_max_num_merge_cand指定从5减去的条带中支持的MergeMVP候选的最大数量。Merge MVP候选的最大数量MaxNumMergeCand如下导出:
[0185] MaxNumMergeCand=5-five_minus_max_num_merge_cand
[0186] MaxNumMergeCand的值应当在1至5的范围内,包括1和5。
[0187] merge_flag[x0][y0]指定是否从相邻帧间预测分割推断当前预测单元的帧间预测参数。数组索引x0,y0指定所考虑的预测块的左上亮度样本相对于图片的左上亮度样本的位置(x0,y0)。
[0188] 当merge_flag[x0][y0]不存在时,推断如下:
[0189] --如果CuPredMode[x0][y0]等于MODE_SKIP,则推断merge_flag[x0][y0]等于1。
[0190] --否则,推断merge_flag[x0][y0]等于0。
[0191] merge_idx[x0][y0]指定Merge候选列表的Merge候选索引,其中x0,y0指定所考虑的预测块的左上亮度样本相对于图片的左上亮度样本的位置(x0,y0)。
[0192] 3.联合探索模型(JEM)中的帧间预测方法的示例
[0193] 在一些实施例中,使用称为联合探索模型(JEM)的参考软件来探索未来的视频编码技术。在JEM中,在若干编码工具中采用基于子块的预测,例如仿射预测,替代时间运动矢量预测(ATMVP),空时运动矢量预测(STMVP),双向光流(BIO),帧速率上转换(FRUC),局部自适应运动矢量分辨率(LAMVR),重叠块运动补偿(OBMC),局部照明补偿(LIC)和解码器侧运动矢量细化(DMVR)。
[0194] 3.1基于子CU的运动矢量预测的示例
[0195] 在具有四叉树加二叉树(QTBT)的JEM中,每个CU可以具有用于每个预测方向的至多一组运动参数。在一些实施例中,通过将大CU划分为子CU并且导出大CU的所有子CU的运动信息,在编码器中考虑两个子CU级运动矢量预测方法。替代时间运动矢量预测(ATMVP)方法允许每个CU从比共位(collocated)参考图片中的当前CU小的多个块提取多组运动信息。在空时运动矢量预测(STMVP)方法中,通过使用时间运动矢量预测器和空间相邻运动矢量来递归地导出子CU的运动矢量。在一些实施例中,并且为了保留用于子CU运动预测的更准确的运动场,可以禁用参考帧的运动压缩。
[0196] 3.1.1替代时间运动矢量预测(ATMVP)的示例
[0197] 在ATMVP方法中,通过从小于当前CU的块提取多组运动信息(包括运动矢量和参考索引)来修改时间运动矢量预测(TMVP)方法。
[0198] 图18示出了用于CU 1800的ATMVP运动预测处理的示例。ATMVP方法以两个步骤预测CU 1800内的子CU 1801的运动矢量。第一步骤是用时间矢量识别参考图片1850中的对应块1851。参考图片1850也称为运动源图片。第二步骤是将当前CU 1800划分成子CU 1801,并从对应于每个子CU的块获得每个子CU的运动矢量以及参考索引。
[0199] 在第一步骤中,参考图片1850和对应块由当前CU 1800的空间相邻块的运动信息确定。为了避免相邻块的重复扫描处理,使用当前CU 1800的Merge候选列表中的第一Merge候选。第一可用运动矢量及其相关参考索引被设定为时间矢量和运动源图片的索引。这样,与TMVP相比,可以更准确地识别对应块,其中对应块(有时称为共位块)总是相对于当前CU处于右下或中心位置。
[0200] 在一个示例中,如果第一Merge候选来自左相邻块(即,图19中的A1),则利用关联的MV和参考图片来识别源块和源图片。
[0201] 在第二步骤中,通过向当前CU的坐标添加时间矢量,由运动源图片1850中的时间矢量识别子CU 1851的对应块。对于每个子CU,其对应块的运动信息(例如,覆盖中心样本的最小运动网格)用于导出子CU的运动信息。在识别出对应的N×N块的运动信息之后,以与HEVC的TMVP相同的方式将其转换为当前子CU的运动矢量和参考索引,其中运动缩放和其他过程适用。例如,解码器检查是否满足低延迟条件(例如,当前图片的所有参考图片的POC小于当前图片的POC)并且可能使用运动矢量MVx(例如,对应于参考图片列表X的运动矢量)来预测每个子CU的运动矢量MVy(例如,其中X等于0或1并且Y等于1-X)。
[0202] 3.1.2空时运动矢量预测(STMVP)示例
[0203] 在STMVP方法中,按照光栅扫描顺序递归地导出子CU的运动矢量。图20示出了具有四个子块的一个CU和相邻块的示例。考虑包括四个4×4子CU A(2001),B(2002),C(2003)和D(2004)的8×8CU 2000。当前帧中的相邻4×4块标记为a(2011),b(2012),c(2013)和d(2014)。
[0204] 子CU A的运动推导通过识别其两个空间邻域开始。第一邻域是子CU A1101上方的N×N块(块c 2013)。如果该块c(2013)不可用或帧内编码,则检查子CU A(2001)上方的其他N×N块(从左到右,从块c 2013开始)。第二邻域是子CU A 2001左侧的块(块b 2012)。如果块b(2012)不可用或帧内编码,则检查子CU A 2001左侧的其他块(从上到下,从块b 2012开始)。从每个列表的相邻块获得的运动信息被缩放到给定列表的第一参考帧。接下来,通过遵循与HEVC中指定的TMVP推导相同的过程来导出子块A 2001的时间运动矢量预测器(TMVP)。块D 2004处的共位块的运动信息被提取并相应地缩放。最后,在检索和缩放运动信息之后,对每个参考列表分别平均所有可用的运动矢量。将平均运动矢量指定为当前子CU的运动矢量。
[0205] 3.1.3子CU运动预测模式信令的示例
[0206] 在一些实施例中,子CU模式被启用作为附加Merge候选,并且不需要附加的语法元素来对模式信令通知。添加两个附加Merge候选以合并每个CU的候选列表以表示ATMVP模式和STMVP模式。在其他实施例中,如果序列参数集指示启用了ATMVP和STMVP,则可以使用多达七个Merge候选。附加Merge候选的编码逻辑与HM中的Merge候选的编码逻辑相同,这意味着对于P或B条带中的每个CU,可能需要两个附加Merge候选再进行两次以上的RD检查。在一些实施例中,例如JEM,Merge索引的所有二进制位(bin)由CABAC(基于上下文的自适应二进制算术编码)进行上下文编码。在其他实施例中,例如,HEVC,仅对第一二进制位进行上下文编码,并且对剩余二进制位进行上下文旁路编码。
[0207] 3.2自适应运动矢量差分辨率的示例
[0208] 在一些实施例中,当条带报头中的use_integer_mv_flag等于0时,以四分之一亮度样本为单位对运动矢量差(MVD)(在PU的运动矢量和预测运动矢量之间)信令通知。在JEM中,引入了局部自适应运动矢量分辨率(LAMVR)。在JEM中,MVD可以以四分之一亮度样本,整数亮度样本或四亮度样本为单位进行编码。在编码单元(CU)级别控制MVD分辨率,并且对于具有至少一个非零MVD分量的每个CU有条件地对MVD分辨率标志信令通知。
[0209] 对于具有至少一个非零MVD分量的CU,对第一标志信令通知以指示是否在CU中使用四分之一亮度样本MV精度。当第一标志(等于1)指示未使用四分之一亮度样本MV精度时,对另一标志信令通知以指示是使用整数亮度样本MV精度还是四亮度样本MV精度。
[0210] 当CU的第一MVD分辨率标志为零或未针对CU编码(意味着CU中的所有MVD均为零)时,四分之一亮度样本MV分辨率用于CU。当CU使用整数亮度样本MV精度或四亮度样本MV精度时,CU的AMVP候选列表中的MVP被取整到对应精度。
[0211] 在编码器中,CU级RD检查用于确定将哪个MVD分辨率用于CU。也就是说,对于每个MVD分辨率,执行CU级RD检查三次。为了加快编码器速度,在JEM中应用以下编码方案:
[0212] --在具有正常四分之一亮度样本MVD分辨率的CU的RD检查期间,存储当前CU的运动信息(整数亮度样本精度)。存储的运动信息(在取整之后)用作在RD检查期间针对具有整数亮度样本和4亮度样本MVD分辨率的相同CU的进一步小范围运动矢量细化的起始点,使得耗时的运动估计处理不重复三次。
[0213] --有条件地调用具有4亮度样本MVD分辨率的CU的RD检查。对于CU,当RD成本整数亮度样本MVD分辨率远大于四分之一亮度样本MVD分辨率时,跳过针对CU的4亮度样本MVD分辨率的RD检查。
[0214] 3.2.1AMVP候选列表构建的示例
[0215] 在JEM中,该过程类似于HEVC设计。然而,当当前块选择较低的MV精度(例如,整数精度)时,可以应用取整操作。例如,可以通过将运动矢量右移或左移位到当前块的运动矢量精度来执行取整运动矢量。在当前实现方式中,在从空间位置选择2个候选之后,如果两者都可用,则将这两个候选取整,然后进行修剪。
[0216] 3.3模式匹配运动矢量推导(PMMVD)的示例
[0217] PMMVD模式是基于帧速率上转换(FRUC)方法的特殊Merge模式。利用该模式,块的运动信息不信令通知,而是在解码器端导出。
[0218] 对于CU,当其Merge标志为真时,可以对FRUC标志信令通知。当FRUC标志为假时,可以对Merge索引信令通知并且使用常规Merge模式。当FRUC标志为真时,可以对另一个FRUC模式标志信令通知来指示将使用哪种方法(例如,双边匹配或模板匹配)来导出该块的运动信息。
[0219] 在编码器端,基于对正常Merge候选所做的RD成本选择决定是否对CU使用FRUC Merge模式。例如,通过使用RD成本选择来检查CU的多个匹配模式(例如,双边匹配和模板匹配)。导致最低成本的模式进一步与其它CU模式相比较。如果FRUC匹配模式是最有效的模式,那么对于CU,FRUC标志设置为真,并且使用相关的匹配模式。
[0220] 通常,FRUC Merge模式中的运动推导处理有两个步骤:首先执行CU级运动搜索,然后执行子CU级运动细化。在CU级,基于双边匹配或模板匹配,导出整个CU的初始运动矢量。首先,生成MV候选列表,并且选择导致最低匹配成本的候选作为进一步CU级细化的起点。然后在起点附近执行基于双边匹配或模板匹配的局部搜索。将最小匹配成本的MV结果作为整个CU的MV值。随后,以导出的CU运动矢量为起点,进一步在子CU级细化运动信息。
[0221] 例如,对于W×H CU运动信息推导执行以下推导过程。在第一阶段,推导出整个W×H CU的MV。在第二阶段,该CU进一步被划分为M×M子CU。M的值按照等式(3)计算,D是预先定义的划分深度,在JEM中默认设置为3。然后导出每个子CU的MV。
[0222]
[0223] 图21示出了在帧速率上转换(FRUC)方法中使用的双边匹配的示例。通过在两个不同的参考图片(2110,2111)中沿当前CU(2100)的运动轨迹找到两个块之间最接近的匹配,使用双边匹配来获得当前CU的运动信息。在连续运动轨迹假设下,指向两个参考块的运动矢量MV0(2101)和MV1(2102)与当前图片和两个参考图片之间的时间距离(例如,TD0(2103)和TD1(2104))成正比。在一些实施例中,当当前图片2100暂时位于两个参考图片(2110,2111)之间并且当前图片到两个参考图片的时间距离相同时,双边匹配成为基于镜像的双向MV。
[0224] 图22示出了在帧速率上转换(FRUC)方法中使用的模板匹配的示例。模板匹配可以用于通过找到当前图片中的模板(例如,当前CU的顶部和/或左侧相邻块)与参考图片2210中的块(例如,与模板尺寸相同)之间的最接近匹配来获取当前CU 2200的运动信息。除了上述的FRUC Merge模式外,模板匹配也可以应用于AMVP模式。在JEM和HEVC中,AMVP都具有两个候选。通过模板匹配方法,可以导出新的候选。如果通过模板匹配新导出的候选与第一个现有的AMVP候选不同,则将其插入AMVP候选列表的最开始处,并且然后将列表尺寸设置为2(例如,通过删除第二个现有AMVP候选)。当应用于AMVP模式时,仅应用CU级搜索。
[0225] CU级设置的MV候选可以包括以下:(1)原始AMVP候选,如果当前CU处于AMVP模式,(2)所有MERGE候选,(3)插值MV场(field)(稍后描述)中的数个MV,以及顶部和左侧相邻运动矢量。
[0226] 当使用双边匹配时,Merge候选的每个有效MV可以用作输入,以生成假设为双边匹配的MV对。例如,Merge候选在参考列表A处的一个有效MV为(MVa,refa)。然后在另一个参考列表B中找到其配对的双向MV的参考图片refb,使得refa和refb在时间上位于当前图片的不同侧。如果参考列表B中的参考refb不可用,则将参考refb确定为与参考refa不同的参考,并且其到当前图片的时间距离是列表B中的最小距离。确定参考refb后,通过基于当前图片和参考refa、参考refb之间的时间距离缩放MVa导出MVb。
[0227] 在一些实现方式中,还可以将来自插值MV场中的四个MV添加到CU级候选列表中。更具体地,添加当前CU的位置(0,0),(W/2,0),(0,H/2)和(W/2,H/2)处插值的MV。当在AMVP模式下应用FRUC时,原始的AMVP候选也添加到CU级的MV候选集。在一些实现方式中,在CU级,可以将AMVP CU的15个MV和MergeCU的13个MV添加到候选列表中。
[0228] 在子CU级设置的MV候选包括从CU级搜索确定的MV,(2)顶部、左侧、左上方和右上方相邻的MV,(3)参考图片中共位的MV的缩放版本,(4)一个或多个ATMVP候选(例如,最多四个)和/或(5)一个或多个STMVP候选(例如,最多四个)。来自参考图片的缩放MV如下导出。两个列表中的参考图片都被遍历。参考图片中子CU的共位位置处的MV被缩放为起始CU级MV的参考。ATMVP和STMVP候选可以是前四个。在子CU级,一个或多个MV(例如,最多17个)被添加到候选列表中。
[0229] 插值MV场的生成。在对帧进行编码之前,基于单向ME为整个图片生成插值运动场。然后,运动场可以稍后用作CU级或子CU级MV候选。
[0230] 在一些实施例中,两个参考列表中每个参考图片的运动场在4×4的块级别上被遍历。图23示出了在FRUC方法中的单向运动估计(ME)900的示例。对于每个4×4块,如果与块关联的运动通过当前图片中的4×4块,并且该块没有被分配任何内插运动,则根据时间距离TD0和TD1将参考块的运动缩放到当前图片(与HEVC中TMVP的MV缩放相同方式),并且在当前帧中将该缩放运动指定给该块。如果没有缩放的MV指定给4×4块,则在插值运动场中将块的运动标记为不可用。
[0231] 插值和匹配成本。当运动矢量指向分数采样位置时,需要运动补偿插值。为了降低复杂度,对双边匹配和模板匹配都使用双线性插值而不是常规的8抽头HEVC插值。
[0232] 匹配成本的计算在不同的步骤处有点不同。当从CU级的候选集中选择候选时,匹配成本可以是双边匹配或模板匹配的绝对和差(SAD)。在确定起始MV后,双边匹配在子CU级搜索的匹配成本C如下计算:
[0233]
[0234] 这里,w是权重系数。在一些实施例中,w可以被经验地设置为4。MV和MVs分别指示当前MV和起始MV。仍然可以将SAD用作模式匹配在子CU级搜索的匹配成本。
[0235] 在FRUC模式下,MV通过仅使用亮度样本导出。导出的运动将用于亮度和色度,用于MC帧间预测。确定MV后,对亮度使用8抽头(8-taps)插值滤波器并且对色度使用4抽头(4-taps)插值滤波器执行最终MC。
[0236] MV细化是基于模式的MV搜索,以双边匹配成本或模板匹配成本为标准。在JEM中,支持两种搜索模式—无限制中心偏置菱形搜索(UCBDS)和自适应交叉搜索,分别在CU级别和子CU级别进行MV细化。对于CU级和子CU级的MV细化,都在四分之一亮度样本MV精度下直接搜索MV,接着是八分之一亮度样本MV细化。将CU和子CU步骤的MV细化的搜索范围设置为8个亮度样本。
[0237] 在双边匹配Merge模式下,应用双向预测,因为CU的运动信息是基于在两个不同的参考图片中沿着当前CU运动轨迹的两个块之间的最近匹配得出的。在模板匹配MERGE模式下,编码器可以从列表0的单向预测、列表1的单向预测或者双向预测中为CU做出选择。该选择可以基于如下的模板匹配成本:
[0238] 如果costBi<=factor*min(cost0,cost1)
[0239] 则使用双向预测;
[0240] 否则,如果cost0<=cost1
[0241] 则使用列表0中的单向预测;
[0242] 否则,
[0243] 使用列表1中的单向预测;
[0244] 这里,cost0是列表0模板匹配的SAD,cost1是列表1模板匹配的SAD,并且costBi是双边模板匹配的SAD。例如,当因数的值等于1.25时,意味着选择处理朝双向预测偏移。帧间预测方向选择可应用于CU级模板匹配处理。
[0245] 3.4解码器侧运动矢量细化(DMVR)的示例
[0246] 在双向预测操作中,为了预测一个块区域,将使用列表0的运动矢量(MV)和列表1的MV分别形成的两个预测块组合以形成单个预测信号。在解码器侧运动矢量细化(DMVR)方法中,通过双边模板匹配处理进一步细化双向预测的两个运动矢量。双边模板匹配在解码器中应用以在双向模板和参考图片中的重建样本之间执行基于失真的搜索,以便获得细化的MV而不传输附加的运动信息。
[0247] 在DMVR中,分别从列表0的初始MV0和列表1的MV1生成双向模板作为两个预测块的加权组合(即,平均),如图24中所示。模板匹配操作包括计算生成的模板和参考图片中的样本区域(初始预测块周围)之间的成本度量。对于两个参考图片中的每一个,产生最小模板成本的MV被视为该列表的更新MV以替换原始MV。在JEM中,对于每个列表搜索九个MV候选。九个MV候选包括原始MV和8个周围MV,其中一个亮度样本在水平或垂直方向或两个方向上偏移到原始MV。最后,两个新的MV,即如图24中所示的MV0′和MV1′,用于生成最终的双向预测结果。绝对差和(SAD)用作成本度量。
[0248] DMVR应用于双向预测的Merge模式,其中一个MV来自过去的参考图片并且另一个MV来自未来的参考图片,而不传输附加的语法元素。在JEM中,当针对CU启用LIC,仿射运动,FRUC或子CU Merge候选时,不应用DMVR。
[0249] 3.5局部照明补偿
[0250] 局部照明补偿(IC)基于用于照明变化的线性模型,使用缩放因数a和偏移b。并且针对每个帧间模式编码的编码单元(CU)自适应地启用或禁用它。
[0251] 当IC应用于CU时,采用最小平方误差方法以通过使用当前CU的相邻样本及其对应的参考样本来导出参数a和b。更具体地,如图25中所示,使用CU的子采样(2:1子采样)相邻采样和参考图片中的对应采样(由当前CU或子CU的运动信息识别)。导出IC参数并分别应用于每个预测方向。
[0252] 当以Merge模式对CU进行编码时,以与Merge模式中的运动信息复制类似的方式从相邻块复制IC标志;否则,对于CU对IC标志信令通知指示LIC是否应用。
[0253] 当对于图片启用IC时,需要附加CU级RD检查以确定是否对CU应用LIC。当为CU启用IC时,分别对于整数像素运动搜索和分数像素运动搜索,使用均值移除绝对差和(MR-SAD)和均值移除绝对哈达玛变换差和(MR-SATD)代替SAD和SATD。
[0254] 为了降低编码复杂度,在JEM中应用以下编码方案。当当前图片与其参考图片之间没有明显的照明变化时,对整个图片禁用IC。为了识别该情况,在编码器处计算当前图片和当前图片的每个参考图片的直方图。如果当前图片和当前图片的每个参考图片之间的直方图差异小于给定阈值,则对于当前图片禁用IC;否则,对于当前图片将启用IC。
[0255] 3.6具有双边匹配细化的Merge/跳过模式的示例
[0256] 首先通过将空间相邻和时间相邻块的运动矢量和参考索引插入具有冗余校验的候选列表中来构建Merge候选列表直到可用候选的数量达到最大候选尺寸19。通过根据预定插入顺序插入空间候选,时间候选,仿射候选,高级时间MVP(ATMVP)候选,空间时间MVP(STMVP)候选和HEVC中使用的附加候选(组合候选和零候选)来构建Merge/跳过模式的Merge候选列表,并且在图25中所示的编号块的上下文中:
[0257] (1)用于块1-4的空间候选
[0258] (2)用于块1-4的外推仿射候选
[0259] (3)ATMVP
[0260] (4)STMVP
[0261] (5)虚拟仿射候选
[0262] (6)空间候选(块5)(仅在可用候选的数量小于6时使用)
[0263] (7)外推仿射候选(块5)
[0264] (8)时间候选(如在HEVC中导出的)
[0265] (9)非相邻空间候选,后面是外推仿射候选(块6至49)
[0266] (10)组合候选
[0267] (11)零候选
[0268] 可以注意到,除了STMVP和仿射之外,IC标志也从Merge候选继承。而且,对于前四个空间候选,在具有单向预测的候选之前插入双向预测候选。
[0269] 4.二值化方法和Merge索引编码的示例
[0270] 在一些实施例中,可以选择几种二值化方法。对于一个语法元素,应首先基于分布将相关值二值化为二进制位串。对于每个二进制位,可以使用上下文或旁路编码方法对其进行编码。
[0271] 4.1示例性一元码和截断一元码(TU)二值化处理
[0272] 对于每个无符号整数值符号x≥0,CABAC中的一元码字由x“1”位加终止“0”位组成。截断一元码(TU)代码仅针对x定义,其中0≤x≤S,其中对于x
[0273] 表5:一元码二值化的二进制位串
[0274]
[0275] 表6:截断一元码二值化的二进制位串
[0276]
[0277] 4.2示例性K阶Exp-Golomb(EGk)二值化处理
[0278] 对于EGk二值化,具有相同代码长度k+2·1(x)+1的符号的数量在几何上增长。通过反转理想代码长度和符号概率之间的香农关系,我们可以例如容易推断出EG0是pdf p(x)=1/2·(x+1)-2的最佳代码,其中x≥0。这意味着对于适当选择的参数k,EGk代码表示通常观察到的pdf的尾部的理想无前缀代码的相当好的一阶近似。
[0279] 表7:EG0二值化的二进制位串
[0280]
[0281] 4.3示例性截断Rice(TR)二值化处理
[0282] 该处理的输入是对TR二值化,cMax和cRiceParam的请求
[0283] 该处理的输出是将每个值symbolVal与对应的二进制位串关联的TR二值化。
[0284] TR二进制位串是前缀二进制位串和(当存在时)后缀二进制位串的连接。
[0285] 为了推导前缀二进制位串,以下适用:
[0286] --symbolVal的前缀值prefixVal如下导出:
[0287] prefixVal=symbolVal>>cRiceParam
[0288] --TR二进制位串的前缀如下指定:
[0289] 如果prefixVal小于cMax>>cRiceParam,则前缀二进制位串是由binIdx索引的长度为prefixVal+1的位串。binIdx小于prefixVal的二进制位等于1。binIdx等于prefixVal的二进制位等于0。
[0290] 当cMax大于symbolVal且cRiceParam大于0时,存在TR二进制位串的后缀,并且它如下导出:
[0291] --后缀值suffixVal如下导出:
[0292] suffixVal=symbolVal-((prefixVal)<
[0293] --通过调用具有等于(1<
[0294] 应当注意,对于输入参数cRiceParam=0,TR二值化恰好是截断一元码二值化,并且总是使用等于被解码的语法元素的最大可能值的cMax值来调用它。
[0295] 4.4示例性固定长度(FL)二值化处理
[0296] 该处理的输入是对FL二值化和cMax的请求。
[0297] 该处理的输出是将每个值symbolVal与对应的二进制位串关联的FL二值化。
[0298] 通过使用符号值symbolVal的fixedLength位无符号整数二进制位串来构建FL二值化,其中fixedLength=Ceil(Log2(cMax+1))。FL二值化的二进制位的索引使得binIdx=0与最高有效位相关,其中binIdx的值朝向最低有效位增加。
[0299] 表8:FL二值化的二进制位串(cMax=7)
[0300]
[0301] 4.5merge_idx的示例性编码
[0302] 如HEVC规范中所指定的,如果允许的Merge候选的总数大于1,则首先将Merge索引二值化为二进制位串。
[0303] 表9:merge_idx的二值化和编码二进制位的方式
[0304]
[0305] 使用cRiceParam等于0的TR,即TU。merge_idx的第一二进制位用一个上下文编码,剩余的二进制位(如果存在)用旁路编码。
[0306] 5JEM中的帧内预测的示例性实施例
[0307] 5.1具有67个帧内预测模式的帧内模式编码的示例
[0308] 为了捕获在自然视频中呈现的任意边缘方向,定向帧内模式的数量从HEVC中使用的33扩展到65。附加定向模式在图27中被描绘为浅灰色虚线箭头,并且平面和DC模式保持不变。这些更密集的定向帧内预测模式适用于所有块尺寸以及亮度和色度帧内预测两者。
[0309] 5.2亮度帧内模式编码的示例
[0310] 在JEM中,帧内预测模式的总数已从HEVC中的35增加到67。图27描绘了67个帧内预测模式的示例。
[0311] 为了适应增加数量的定向帧内模式,使用具有6个最可能模式(MPM)的帧内模式编码方法。涉及两个主要技术方面:1)6个MPM的推导,以及2)6个MPM和非MPM模式的熵编码。
[0312] 在JEM中,MPM列表中包括的模式被分为三组:
[0313] --相邻帧内模式
[0314] --导出帧内模式
[0315] --默认帧内模式
[0316] 使用五个相邻帧内预测模式来形成MPM列表。5个相邻块的那些位置与Merge模式中使用的那些位置相同,即左(L),上(A),左下(BL),右上(AR)和左上(AL),如图28中所示。通过将5个相邻帧内模式以及平面和DC模式插入MPM列表来形成初始MPM列表。修剪处理用于去除重复模式,使得只有唯一模式可以包括在MPM列表中。包括初始模式的顺序是:左,上,平面,DC,左下,右上,然后左上。例如,修剪可以包括以下操作:(a)与现有条目进行比较以获得唯一性,然后(b)如果唯一,则添加到列表,以及(c)如果不唯一,则(c1)不添加或(c2)添加和删除匹配的现有条目,使得添加后,条目数不会增加。
[0317] 如果MPM列表未满(即,列表中有少于6个MPM候选),则添加导出模式;通过将-1或+1加到已经包括在MPM列表中的度模式来获得这些帧内模式。这样的附加导出模式不从非角度模式(DC或平面)生成。
[0318] 最后,如果MPM列表仍未完成,则按以下顺序添加默认模式:垂直,水平,模式2和对角模式。作为该处理的结果,生成6个MPM模式的唯一列表。
[0319] 对于使用6个MPM对所选模式进行熵编码,使用截断一元码二值化。前三个二进制位用上下文编码,所述上下文取决于与当前信令通知的二进制位相关的MPM模式。MPM模式分为三类:(a)主要为水平的模式(即,MPM模式数小于或等于对角方向的模式数),(b)主要为垂直的模式(即,MPM模式大于对角方向的模式数,以及(c)非角度(DC和平面)类。因此,基于该分类,使用三个上下文对MPM索引信令通知。
[0320] 用于选择剩余的61个非MPM的编码如下完成。61个非MPM首先分为两组:选择模式组和非选择模式组。选择模式组包含16个模式,并且剩余模式(45个模式)分配给非选择模式组。当前模式所属的模式组在比特流中用标志指示。如果要指示的模式在选择模式组内,则使用4位固定长度代码对选择模式信令通知,如果要指示的模式来自非选择组,则使用截断二进制代码对选择模式信令通知。通过对61个非MPM模式进行子采样生成选择模式组,如下:
[0321] --选择模式组={0,4,8,12,16,20...60}
[0322] --非选择模式组={1,2,3,5,6,7,9,10...59}
[0323] 在编码器侧,使用HM的类似两阶段帧内模式决策处理。在第一阶段中,即帧内模式预选阶段,使用较低复杂度的绝对变换差和(SATD)成本从所有可用帧内模式预选N个帧内预测模式。在第二阶段中,进一步应用更高复杂度的R-D成本选择以从N个候选选择一个帧内预测模式。然而,当应用67个帧内预测模式时,由于可用模式的总数大致加倍,如果直接使用HM的相同编码器模式决策处理,则帧内模式预选阶段的复杂度也将增加。为了最小化编码器复杂度增加,执行两步帧内模式预选处理。在第一步中,基于绝对变换差和(SATD)度量从原始的35个帧内预测模式(图27中的黑色实线箭头所示)选择N(N取决于帧内预测块尺寸)个模式;在第二步中,通过SATD进一步检查所选N个模式的直接邻域(如图27中的浅灰色虚线箭头指示的附加帧内预测方向),并且更新所选N个模式的列表。最后,如果尚未包括,则将前M个MPM添加到N个模式,并且为第二阶段R-D成本检查生成候选帧内预测模式的最终列表,其以与HM相同的方式完成。基于HM中的原始设置,M的值增加1,并且N稍微减小,如下表10中所示。
[0324] 表10:帧内模式预选步骤的模式候选的数量
[0325]
[0326] 5.3色度帧内模式编码的示例
[0327] 在JEM中,允许总共11个帧内模式用于色度CB编码。那些模式包括5个传统的帧内模式和6个跨分量线性模型模式。色度模式候选列表包括以下三个部分:
[0328] ●CCLM模式
[0329] ●DM模式,从覆盖当前色度块的共位的五个位置的亮度CB导出的帧内预测模式[0330] ○按顺序检查的五个位置是:I条带的当前色度块的相应亮度块内的中心(CR),左上(TL),右上(TR),左下(BL)和右下(BR)4×4块。对于P和B条带,仅检查这五个子块中的一个,因为它们具有相同的模式索引。图29A和29B中示出了五个共位的亮度位置的示例。
[0331] ●来自空间相邻块的色度预测模式:
[0332] ○5个色度预测模式:从左,上,左下,右上和左上空间相邻块
[0333] ○平面和DC模式
[0334] ○添加导出模式,通过将-1或+1添加到已经包括在列表中的角度模式来获得这些帧内模式。
[0335] ○垂直,水平,模式2
[0336] 每当将新的色度帧内模式添加到候选列表时应用修剪处理。然后将非CCLM色度帧内模式候选列表尺寸修整为5。对于模式信令,首先对标志信令通知以指示是使用CCLM模式之一还是使用传统色度帧内预测模式之一。然后可以遵循几个标志以指定用于当前色度CB的精确色度预测模式。
[0337] 6.现有实现方式的示例
[0338] 当前HEVC设计可以采用当前块与其相邻块(紧邻当前块)的相关性来更好地编码运动信息。然而,相邻块可能对应于具有不同运动轨迹的不同对象。在该情况下,来自其相邻块的预测效率不高。
[0339] 来自非相邻块的运动信息的预测可以带来额外的编码增益,具有将所有运动信息(通常在4×4级别上)存储到高速缓存中的成本,这显着增加了硬件实现方式的复杂性。
[0340] 一元码二值化方法适用于较少数量的允许Merge候选。然而,当允许候选的总数变大时,一元码二值化可能是次优的。
[0341] AMVP候选列表构建处理的HEVC设计仅调用两个空间AMVP候选中的修剪。不使用完全修剪(每个可用候选与所有其他候选相比),因为由于有限的修剪而导致编码损失可忽略不计。然而,如果有更多的AMVP候选可用,则修剪变得很重要。此外,当启用LAMVR时,应当研究如何构建AMVP候选列表。
[0342] 7.用于基于LUT的运动矢量预测的示例性方法
[0343] 为了克服现有实现方式的缺点,可以在各种实施例中实现使用存储有至少一个运动候选以预测块的运动信息的一个或多个查找表的基于LUT的运动矢量预测技术,以提供具有更高编码效率的视频编码。每个LUT可以包括一个或多个运动候选,每个运动候选与对应的运动信息关联。运动候选的运动信息可以包括部分或全部预测方向,参考索引/图片,运动矢量,LIC标志,仿射标志,运动矢量推导(MVD)精度和/或MVD值。运动信息还可以包括块位置信息以指示运动信息来自何处。
[0344] 可以增强现有和未来的视频编码标准的基于公开技术的基于LUT的运动矢量预测在针对各种实现方式描述的以下示例中阐明。由于LUT允许基于历史数据(例如,已经处理的块)执行编码/解码处理,因此基于LUT的运动矢量预测也可以称为基于历史的运动矢量预测(HMVP)方法。在基于LUT的运动矢量预测方法中,在编码/解码处理期间保持具有来自先前编码的块的运动信息的一个或多个表。在一个块的编码/解码期间,取决于块的编码特性,可以使用LUT中的关联运动信息(例如,通过添加到运动候选列表)。在对块进行编码/解码之后,可以基于块的编码特性来更新LUT。也就是说,LUT的更新基于编码/解码顺序。以下提供的公开技术的示例解释了一般概念,并不意味着被解释为限制。在示例中,除非明确地相反指示,否则可以组合这些示例中描述的各种特征。
[0345] 关于术语,以下示例LUT的条目是运动候选。术语运动候选用于指示存储在查找表中的一组运动信息。对于传统的AMVP或Merge模式,AMVP或Merge候选用于存储运动信息。例如,在一些实施例中,可以通过将运动矢量差添加到AMVP候选来导出运动信息。如下面将描述的,并且在非限制性示例中,具有用于运动矢量预测的运动候选的LUT的概念被扩展到具有用于帧内模式编码的帧内预测模式的LUT,或者扩展到具有用于IC参数编码的照明补偿参数的LUT,或者扩展到具有滤波器参数LUT。用于运动候选的基于LUT的方法可以扩展到其他类型的编码信息,如本专利文献,现有和未来视频编码标准中所述。
[0346] 示例1和2有利地限定了如公开技术中使用的LUT。
[0347] 示例1.在一个示例中,表尺寸(例如,运动候选的最大允许条目的数量)和/或表的数量可以取决于序列分辨率,最大编码单元尺寸,Merge候选列表的尺寸。
[0348] (a)在一个示例中,没有表尺寸的附加信令。
[0349] (b)推断表尺寸与信令通知的最大Merge候选相同。
[0350] (c)替代地,推断表尺寸与信令通知的最大Merge候选减去特定值相同。特定值可以被定义为在Merge候选列表构建处理中可以访问多少空间/时间相邻块,例如,在HEVC中为5。
[0351] 示例2.可以构建具有不同作用的多个LUT。
[0352] (a)在一个示例中,一个LUT(第一LUT)可以包括具有来自AMVP编码块的纯运动信息的运动候选;并且另一个LUT(第二LUT)可以包括来自AMVP和Merge编码块的运动信息。
[0353] (b)在一个示例中,一个LUT(第一LUT)可以包括具有纯单向预测的运动候选;并且另一个LUT(第二LUT)可以包括具有双向预测的运动候选。
[0354] (c)当对块进行编码时,可以定义LUT的检查顺序。对于每个LUT,可以在访问第二LUT之前首先检查多个运动候选。在一个示例中,对于上述情况,当对块进行编码时,首先检查来自第二LUT的运动候选,然后检查来自第一LUT的运动候选,反之亦然。
[0355] 示例3-5有利地描述了在公开技术的实施例中使用的更新程序。
[0356] 示例3.可以基于块的编码特性用与块关联的运动信息来更新LUT。例如,可以用Merge或AMVP模式对块进行编码。
[0357] (a)在一个示例中,在用帧内模式对块进行编码/解码之后不更新LUT。在另一示例中,在用帧内块复制模式对块进行编码/解码之后不更新LUT。也就是说,在一些实施例中,可以仅在对帧间编码块进行编码/解码之后更新LUT。
[0358] (b)在又一示例中,在用仿射模式(例如,仿射Merge或仿射AMVP模式)对块进行编码/解码之后不更新LUT。也就是说,可以在对非仿射编码块进行编码/解码之后更新LUT。
[0359] 示例4.在通过添加从编码块获得的运动候选来更新LUT之前,可以应用修剪。
[0360] (a)在一个示例中,要添加的新运动候选需与选择表中的所有现有运动候选进行修剪。也就是说,将新运动候选与选择表中的所有现有运动候选进行比较以确保不存在重复候选。
[0361] (b)替代地,可以仅将新运动候选与特定数量的现有运动候选进行修剪。例如,在选择性地将其添加为LUT的最后条目之前,可以将其与LUT中的最后m个运动候选(m是整数)进行比较。
[0362] (c)在一些实施例中,选择表是用于为从其获得运动候选的编码块构建运动候选列表的表。在一些实施例中,运动候选可以用于更新部分或全部可用LUT。
[0363] 示例5.可以周期性地更新LUT。
[0364] (a)可以在对给定区域尺寸进行编码/解码之后更新LUT。这意味着区域内的所有块都将使用相同的LUT。
[0365] (b)在一个示例中,在对每N个LCU进行编码/解码之后更新LUT,N是诸如1或2的整数。
[0366] (c)在一个示例中,在对每N个CU进行编码/解码之后更新LUT,N是诸如4或8的整数。替代地,在对每N个帧间编码的CU进行编码/解码之后更新LUT,N是诸如4或8的整数。
[0367] (d)当存在具有可以用于更新LUT的运动信息的多个块时,可以仅使用编码/解码顺序中的最后块来更新LUT。
[0368] (i)替代地,可以仅利用用运动信息编码并且允许更新LUT的编码/解码顺序中的最后块来更新LUT。
[0369] (ii)替代地,可以利用用运动信息编码并且允许更新LUT的所有块来更新LUT。
[0370] 示例6-11有利地描述了在公开技术的实施例中使用LUT。
[0371] 示例6.当用Merge或AMVP模式对块进行编码时可以使用LUT。
[0372] (a)在一个示例中,当用帧内模式对块进行编码时可以不使用LUT。
[0373] (b)在一个示例中,当用帧内块复制模式对块进行编码时可以不使用LUT。
[0374] (c)在一个示例中,当用仿射Merge或仿射AMVP模式对块进行编码时可以不使用LUT。
[0375] (d)要针对AMVP编码块和Merge编码块检查的LUT中的运动候选的数量可以不同。
[0376] (i)在一个示例中,两个数量设置为相同(例如,16、44)。
[0377] (ii)替代地,两个数量可以不同。
[0378] (iii)替代地,要针对AMVP编码块检查的运动候选的数量应当小于针对Merge编码块检查的运动候选的数量(例如,对于AMVP和Merge编码块分别为4和16)。
[0379] (iv)在一个示例中,两个数量可以取决于LUT尺寸和最大允许的AMVP和/或Merge候选数量。
[0380] 示例7.当不允许具有特定信息(例如,块模式)的块使用来自LUT的信息(如子块编码块)时,不允许与块关联的编码运动信息更新LUT。也就是说,在对这样的块进行编码或解码之后,跳过更新LUT的处理。
[0381] (a)替代地,满足某些条件(例如块模式等于例如仿射,或块尺寸等于例如4×4,或其他条件)的块不允许使用来自LUT的信息,但是允许编码运动信息更新LUT。(仅写入模式,仅允许写入LUT)
[0382] (b)替代地,如果满足具有某些条件(例如,块是编码的三角预测模式)的块的编码运动信息不允许更新LUT,但是编码/解码处理仍然可以使用来自LUT的运动候选。(仅读取模式,仅允许从LUT读取)。
[0383] (c)在一个示例中,不允许仿射编码块使用来自LUT的运动候选。同时,不允许仿射运动更新LUT,即,运动候选不能是仿射运动。
[0384] (i)替代地,允许一些子块(在当前块内)的导出运动(通过仿射模型)更新LUT。也就是说,运动候选包括从当前块的运动信息导出的运动信息。
[0385] (ii)替代地,允许LUT用于导出仿射模型参数。在该情况下,块的位置也存储在LUT中。
[0386] 示例8.当存在多个查找表时,可以应用多个表中的运动候选的不同检查顺序。
[0387] (a)对于某些块,使用来自第一LUT的前m个运动候选,并且然后检查来自第二LUT的最后n个运动候选(最近添加的)。m和n都是正整数(>0)。
[0388] (b)对于新LCU行中的第一LCU,它使用来自第一LUT的最后m个运动候选,并且然后检查来自第二LUT的前n个运动候选(最近)。m和n都是正整数(>0)。
[0389] (c)某些块可以被定义为新LCU行中的第一LCU或新LCU行中的第一编码块,或者用于编码覆盖条带的第一列中的样本的块。
[0390] 示例9.基于LUT的运动矢量编码方法可以与非相邻候选(例如,Merge候选或AMVP候选)组合。
[0391] (a)在一个示例中,可以添加m个非相邻候选和来自LUT的n个运动候选。m和n都是正整数(>0)。
[0392] (b)在一个示例中,可以检查m个非相邻块,并且可以检查来自LUT的n个运动候选。应当注意,当检查块或检查运动候选时,可能不会将任何一个添加到(例如,Merge)候选列表。
[0393] (c)在一个示例中,可以以交织方式添加非相邻候选和来自LUT的运动候选。
[0394] (i)检查非相邻块的顺序保持不变。来自一个非相邻块的一个候选之后是来自LUT的运动候选。
[0395] (ii)检查非相邻块的顺序保持不变。然而,如果一个非相邻块位于某个范围之外(例如,在当前LCU行之外),则它将由LUT中的运动候选替换。
[0396] (iii)在一个示例中,检查非相邻块的顺序保持不变。然而,如果一个非相邻块用帧内模式或帧内块复制模式编码,则它将由LUT中的运动候选替换。
[0397] (iv)在图30中给出了Merge候选列表重建的检查顺序的示例。
[0398] (d)在一个示例中,与来自LUT的运动候选相比,非相邻候选具有更高的优先级。
[0399] (i)在该情况下,首先检查所有非相邻块。如果候选的总数仍然小于最大允许数量,则通过检查来自LUT的运动候选进一步应用基于LUT的方法。
[0400] (ii)替代地,与非相邻候选相比,来自LUT的运动候选具有更高的优先级。首先通过检查来自LUT的运动候选应用基于LUT的方法。如果候选的总数仍然小于最大允许数量,则检查非相邻块以将非相邻候选添加到Merge候选列表。
[0401] (iii)类似地,当在AMVP编码处理中允许非相邻方法和基于LUT的方法时,可以以与上述示例中描述的类似方式处理优先级。
[0402] (iv)在图31中示出了示例。
[0403] (e)在一个示例中,可以不是一个接一个地调用两种方法(例如,非相邻方法和基于LUT的方法)。而是,可以应用一种方法,然后添加一些其他类型的候选,并且然后可以应用第二种方法。在图32中示出了示例,其中在TMVP处理之前检查非相邻候选,并且然后检查来自LUT的运动候选。
[0404] (f)可以执行用于插入非相邻候选和来自LUT的运动候选的自适应顺序。
[0405] (i)在一个示例中,首先检查来自非相邻候选的所有双向预测Merge候选,接着检查来自LUT的运动候选,并且然后检查单向预测的非相邻候选。
[0406] (ii)在一个示例中,对于一个块,可以在来自LUT的运动候选之前检查非相邻候选,而对于另一个块,可以在非相邻候选之前检查来自LUT的运动候选。
[0407] 示例10.默认运动候选可以包括在LUT中。
[0408] (a)在一个示例中,零运动矢量候选(具有一个或多个参考图片)被视为默认运动候选。
[0409] (b)在一个示例中,默认运动候选可以从当前条带/片中的先前编码运动信息或从来自不同图片的先前编码运动导出。
[0410] (c)可以在比特流中,例如在序列参数集(SPS),图片参数集(PPS),条带报头等中对默认运动候选信令通知。
[0411] 示例11.可以应用LUT中的运动候选的重新排序。
[0412] (a)在一个示例中,在对一个块进行编码之后,可以从该块获得新运动候选。可以首先将其添加到LUT并且然后可以应用重新排序。在该情况下,对于子序列块,它将使用重新排序的LUT。例如,在完成对某个单元(例如,一个LCU,一个LCU行,多个LCU等)的编码之后发生重新排序。
[0413] (b)在一个示例中,不重新排序LUT中的运动候选。然而,当对块进行编码时,可以首先应用运动候选的重新排序,接着检查并插入到Merge/AMVP/或其他种类的运动信息候选列表。
[0414] 示例12有利地描述了局部自适应运动矢量分辨率(LAMVR)改善。
[0415] 示例12.当启用多个运动矢量精度时(例如,当使用整数运动矢量(IMV)精确工具来支持1像素,2像素,4像素或子像素MV精度时),并且对于具有较低MV精度(例如,整数精度或更低)的块,以下可以应用:
[0416] (a)将取整应用于来自LUT的运动候选。在一些实施例中,针对其他AMVP候选进一步应用运动候选的修剪。
[0417] (b)替代地,对于要添加到AMVP候选列表的每个AMVP候选(例如,从空间和/或时间相邻块导出),首先对其进行取整并且然后与其他可用的AMVP候选进行修剪。
[0418] (c)替代地,将所有AMVP候选(例如,从空间和/或时间相邻块导出)插入到AMVP候选列表而不进行取整和修剪。之后,候选可以进行取整。在一个示例中,在取整之后,进一步在取整的AMVP候选中应用修剪。如果可用AMVP候选的总数小于最大允许数量,则可以进一步应用基于LUT的方法来添加更多AMVP候选。
[0419] 示例13有利地提供Merge索引编码实施例。
[0420] 示例13.代替使用cRiceParam等于0的TR(或TU),Merge索引可以被划分为两个部分,并且每个部分可以调用不同的二值化方法。
[0421] (a)第一部分用一元码二值化方法编码。
[0422] (b)在一个示例中,第二部分可以使用FL二值化方法。
[0423] (c)替代地,第二部分可以使用EGk二值化方法(其中k等于0、1...)。
[0424] (d)这两个部分可以被定义为(Merge候选的总数减去N,N),其中N是给定值。表11示出了一些示例。在表11示出的示例中,Merge候选的总数是14,并且N=7。当Merge索引的值在[0,Merge候选的总数-(N+1)=6]的范围内时,应用第一部分的一元码二值化方法。当Merge索引的值在[Merge候选总数-N=7,Merge候选总数-1=13]的范围内时,应用第一部分的一元码二值化方法和第二部分的FL二值化方法。
[0425] (e)仅当Merge索引大于预定或信令阈值时,才可以调用所提出的方法。
[0426] 表11:Merge索引的二进制位串(Merge总数为15,N=8)
[0427]
[0428] 示例14-16有利地提供了具有帧内预测模式的LUT和从非相邻块进行帧内模式预测的实施例。
[0429] 示例14.类似于具有运动候选的LUT用于运动矢量预测,提出可以构建和/或更新一个或多个LUT以存储来自先前编码的块的帧内预测模式,并且LUT可以用于编码/解码帧内编码块。
[0430] (a)当应用基于LUT的方法时,每个LUT的条目数相同,例如,等于允许的帧内预测的总数。
[0431] (b)当应用基于LUT的方法时,可以为每个帧内预测模式进一步分配变量(即,cnt)以记录在先前编码的块中已经使用帧内预测模式的次数。
[0432] (c)当用选择帧内预测模式更新LUT时,将修改关联的cnt,例如增加1。
[0433] 示例15.非相邻块的帧内预测模式可以用作用于编码帧内编码块的帧内预测模式预测器。
[0434] 示例16.替代地,可以联合使用LUT和基于非相邻的方法。
[0435] (a)在一个示例中,LUT或非相邻块中的帧内预测模式可以在MPM列表构建处理中使用。
[0436] (b)替代地,LUT或非相邻块中的帧内预测模式可以用于重新排序非MPM帧内预测模式。
[0437] 示例17-19有利地提供了具有IC参数的LUT和从非相邻块进行IC参数推导的实施例。
[0438] 示例17.类似于具有运动候选的LUT用于运动矢量预测,提出可以构建和/或更新一个或多个LUT以存储来自先前编码的块的照明参数,并且LUT可以用于编码/解码IC编码块。
[0439] (a)在对块/区域进行编码之后,如果用IC模式对一个或多个块进行编码,则可以使用对应的IC参数来更新LUT。
[0440] (b)在编码新图片/条带/LCU行之前,可以用信令通知的IC参数(例如,基于整个图片/条带/LCU行导出)来初始化LUT。
[0441] 示例18.可以应用基于非相邻的方法,其中当导出当前块的IC参数时,代替使用空间邻域作为模板,如图25中所示,可以利用非相邻块的空间邻域来避免降低编解码器的并行性。
[0442] (c)在一个示例中,为每个IC编码块存储IC参数。
[0443] 示例19.可以联合使用LUT和基于非相邻的方法。
[0444] (d)在一个示例中,可以类似于Merge/AMVP候选列表构建IC参数的参数列表。可以对IC参数的索引信令通知。
[0445] (e)添加来自非相邻块和LUT的IC参数的规则可以类似于在AMVP或Merge模式中的运动矢量编码的规则。
[0446] 8.用于基于LUT的运动矢量预测的附加实施例
[0447] 在图33中描绘了用于基于LUT的预测方法的编码流程的示例。在示例5的上下文中,在解码区域之后完成更新处理。在图34中描绘了示例以避免频繁更新LUT。
[0448] 以上描述的示例可以包含在下面描述的方法(例如方法3500)的上下文中,所述方法可以在视频解码器和/或视频编码器处实现。
[0449] 图35示出了用于视频编码的示例性方法的流程图,其可以在视频编码器中实现。在步骤3510,方法3500包括接收视频数据的第一块的比特流表示。
[0450] 在步骤3520,方法3500包括基于包括编码候选的一组查找表(LUT)处理比特流表示以生成视频数据的第一块。
[0451] 在一些实施例中,编码候选包括运动候选。在其他实施例中,LUT组中的LUT的数量或LUT组中的LUT的尺寸基于序列分辨率、最大编码单元(LCU)尺寸、或Merge或高级运动矢量预测(AMVP)候选列表的尺寸。在示例中,未对LUT的尺寸信令通知。在另一示例中,LUT的尺寸等于Merge候选的最大数量。在又一示例中,LUT的尺寸比Merge候选的最大数量小固定值,其中固定值基于可以在Merge或AMVP候选列表中访问的时间或空间相邻块的数量。
[0452] 在一些实施例中,该组LUT的第一LUT包括具有仅来自高级运动矢量预测(AMVP)编码块的运动信息的运动候选,并且该组LUT中的第二LUT包括具有来自AMVP和Merge编码块的运动信息的运动候选。在其他实施例中,该组LUT的第一LUT包括仅具有单向预测的运动候选,并且该组LUT的第二LUT包括仅具有双向预测的运动候选。在示例中,在检查第一LUT中的运动候选之前检查第二LUT中的运动候选。在另一示例中,在检查第一LUT中的运动候选之后检查第二LUT中的运动候选。
[0453] 在一些实施例中,方法3500还包括基于视频数据的第一块的编码特性更新该组LUT的子组,其中该子组排除该组LUT中的至少一个LUT。
[0454] 在一些实施例中,方法3500还包括基于视频数据的第一块的编码特性阻止使用该组LUT中的至少一个LUT。
[0455] 以上示例可以应用于用于其他编码信息的基于LUT的方法,例如在达到区域尺寸之后更新LUT。
[0456] 在示例中,编码特性指示视频数据的第一块被帧内编码。在另一示例中,编码特性指示视频数据的第一块被帧内块复制(IBC)编码。在又一示例中,编码特性指示视频数据的第一块被仿射Merge编码或仿射高级运动矢量预测(AMVP)编码。
[0457] 在一些实施例中,方法3500还包括从编码块获得新运动候选,并且在将新运动候选添加到该组LUT之前修剪该组LUT。可以实现修剪的各种示例。在示例中,将新运动候选与该组LUT的子组中的每个运动候选进行修剪。在另一示例中,将新运动候选与单个LUT中的每个运动候选进行修剪。在又一示例中,将新运动候选与该组LUT中的运动候选的子组进行修剪。
[0458] 在一些实施例中,方法3500还包括周期性地更新该组LUT中的至少一个LUT。
[0459] 在一些实施例中,方法3500还包括接收视频数据的第二块的比特流表示,并且基于视频数据的第二块的编码特性阻止使用或更新该组LUT。在示例中,编码特性指示视频数据的第二块具有预定尺寸或被仿射编码。
[0460] 在一些实施例中,编码候选包括帧内预测模式候选。在其他实施例中,编码候选包括候选照明补偿(IC)参数。在另外的其他实施例中,编码候选包括候选滤波参数。
[0461] 在一些实施例中,公开技术可以用于提供另一种用于视频编码的方法。该方法包括接收视频数据块的比特流表示,以及基于来自非相邻块的编码候选处理比特流表示,其中编码候选是非运动候选。
[0462] 在一些实施例中,公开技术可以用于提供另一种用于视频编码的方法。该方法包括接收视频数据块的比特流表示,以及使用多个运动矢量(MV)精度并且基于高级运动矢量预测(AMVP)候选列表处理比特流表示以生成视频数据块,其中视频数据块包括低MV精度,并且其中每个AMVP候选在插入AMVP候选列表中之前被取整,并与可用AMVP候选进行修剪。
[0463] 在一些实施例中,公开技术可以用于提供另一种用于视频编码的方法。该方法包括接收视频数据块的比特流表示,以及使用Merge索引编码处理比特流表示以生成视频数据块,其中比特流表示包括被划分为第一部分和第二部分的Merge索引,其中第一部分通过第一二值化方法处理,并且其中第二部分通过与第一二值化方法不同的第二二值化方法处理。
[0464] 例如,第一二值化方法是一元码二值化方法。例如,第二二值化方法是固定长度(FL)二值化方法。例如,第二二值化方法是k阶Exp-Golomb(EGk)二值化方法。
[0465] 9.公开技术的示例性实现方式
[0466] 图36是视频处理装置3600的框图。装置3600可以用于实现本文描述的一个或多个方法。装置3600可以体现在智能手机,平板电脑,计算机,物联网(IoT)接收器等中。装置3600可以包括一个或多个处理器3602,一个或多个存储器3604和视频处理硬件3606。处理器3602可以配置成实现本专利中描述的一个或多个方法(包括但不限于方法3500)。存储器(多个存储器)3604可以用于存储用于实现本文描述的方法和技术的数据和代码。视频处理硬件3606可以用于在硬件电路中实现本文件中描述的一些技术。
[0467] 在一些实施例中,视频编码方法可以使用在如关于图36所述的硬件平台上实现的装置来实现。
[0468] 图37是根据本公开技术的用于视频处理的示例性方法3700的流程图。方法3700包括执行视频的视频数据的第一块和包括第一块的视频的比特流表示之间的转换(3702),并且基于视频数据的第一块的编码特性,使用与第一块关联的运动信息更新运动候选表(3704)。
[0469] 在一些实施例中,编码特性指示使用Merge模式对视频数据的第一块进行编码。在一些实施例中,编码特性指示使用高级运动矢量预测(AMVP)模式对视频数据的第一块进行编码。在一些实施例中,编码特性指示视频数据的第一块未被帧内编码。在一些实施例中,编码特性指示视频数据的第一块未被帧内块复制(IBC)编码。在一些实施例中,编码特性指示视频数据的第一块被帧间编码。在一些实施例中,编码特性指示视频数据的第一块未被仿射编码。
[0470] 在一些实施例中,该方法包括基于运动候选表执行视频的视频数据的第二块和视频的比特流表示之间的第二转换。在一些实施例中,该方法还包括基于视频数据的第二块的第二编码特性,使用与第二块关联的运动信息阻止更新运动候选表。
[0471] 在一些实施例中,第二编码特性指示视频数据的第二块被仿射AMVP编码。在一些实施例中,第二编码特性指示视频数据的第二块被仿射Merge编码。在一些实施例中,第二编码特性指示视频数据的第二块被帧内编码。
[0472] 在一些实施例中,该方法包括执行视频的视频数据的第三块和视频的比特流表示之间的第三转换而不使用运动候选表。在一些实施例中,该方法包括基于视频数据的第三块的第三编码特性,使用与第三块关联的运动信息更新运动候选表。第三编码特性可以指示使用Merge模式或高级运动矢量预测(AMVP)模式对视频数据的第三块进行编码。
[0473] 在一些实施例中,更新包括周期性地更新运动候选表。在一些实施例中,更新包括每次在处理视频帧的给定区域之后更新运动候选表。在一些实施例中,给定区域包括条带。在一些实施例中,给定区域包括N个最大编码单元(LCU),N是整数。N可以是1或2。在一些实施例中,给定区域包括N个编码单元(CU)或N个帧间编码的编码单元(CU),N是整数。N可以是
4或8。
[0474] 在一些实施例中,第一块是与用于更新表的运动信息关联的给定区域中的多个块中的最后块。该方法还包括使用多个块中的其他块的运动信息阻止更新表。在一些实施例中,该方法包括使用与给定区域中的多个块关联的运动信息更新运动候选表。
[0475] 在一些实施例中,与块关联的运动信息包括用于帧内模式编码的一个或多个帧内预测模式。在一些实施例中,与块关联的运动信息包括用于IC参数编码的一个或多个照明补偿(IC)参数。在一些实施例中,与块关联的运动信息包括一个或多个滤波器参数。
[0476] 图38是根据当前公开技术的用于视频处理的示例性方法3800的流程图。在操作3802,方法3800包括在当前视频块和视频的比特流表示之间的转换期间保持一个或多个运动候选表。在操作3804,方法3800包括将与当前视频块关联的运动候选与一个或多个表中的多个条目进行比较。在操作3806,方法3800包括基于比较更新一个或多个表。
[0477] 在一些实施例中,多个条目对应于一个或多个表中的所有条目。在一些实施例中,条目的数量是m,m是整数。在一些实施例中,m个条目是一个或多个表中的一个中的最后m个条目。
[0478] 在一些实施例中,更新包括将运动候选添加到一个或多个表中的一个。在一些实施例中,更新包括将运动候选添加作为一个或多个表中的一个的最后条目。
[0479] 在一些实施例中,一个或多个表不包括重复条目。在一些实施例中,该方法还包括使用更新的一个或多个表执行当前视频块之后的第二视频块和视频的比特流表示的转换。
[0480] 图39是根据当前公开技术的用于视频处理的示例性方法3900的流程图。在操作3902,方法3900包括执行视频的视频块和视频的比特流表示之间的转换,同时在转换中保持一个或多个运动候选表。在操作3904,方法3900包括基于视频块中的当前视频块的编码特性,确定使用一个或多个运动候选表来执行当前视频块和视频的比特流表示之间的转换的适合性。在操作3906,方法3900包括根据适合性执行当前视频块和视频的比特流表示之间的转换。在操作3908,该方法还包括使用与当前视频块关联的运动候选来选择性地更新一个或多个运动候选表。
[0481] 在一些实施例中,适合性指示一个或多个运动候选表不适合用于执行当前视频块和视频的比特流表示之间的转换。编码特性可以指示当前视频块被子块编码,仿射编码,或具有预定块尺寸。在一些实施例中,根据编码特性跳过更新。在一些实施例中,根据编码特性执行更新。例如,更新可以包括使用当前视频块内的一组子块的运动信息来更新一个或多个运动候选表。
[0482] 在一些实施例中,适合性指示一个或多个运动候选表适合用于执行当前视频块和视频的比特流表示之间的转换。在一些实施例中,根据编码特性跳过更新。例如,编码特性可以指示当前视频块被三角预测模式编码。在一些实施例中,根据编码特性执行更新。例如,编码特性可以指示当前视频块被仿射编码。更新可以包括将当前视频块的位置存储在一个或多个表中以用于导出仿射参数。
[0483] 在一些实施例中,运动候选包括当前视频块的运动信息。在一些实施例中,运动候选包括从当前视频块的运动信息导出的信息。在一些实施例中,运动候选与运动信息关联,所述运动信息包括以下的至少一种:预测方向,参考图片索引,运动矢量值,强度补偿标志,仿射标志,运动矢量差精度或运动矢量差值。在一些实施例中,运动候选包括用于Merge编码块的多个Merge候选。在一些实施例中,运动候选包括用于帧内编码块的帧内预测模式。在一些实施例中,运动候选包括用于IC编码块的多个照明补偿(IC)参数。在一些实施例中,运动候选包括在滤波处理中使用的滤波器参数。
[0484] 图40是根据当前公开技术的用于视频处理的示例性方法4000的流程图。在操作4002,方法4000包括在当前视频块和包括当前视频块的视频的比特流表示之间的转换期间保持一个或多个运动候选表。在操作4004,方法4000包括确定使用Merge模式或高级运动矢量预测(AMVP)模式对当前视频块进行编码。在操作4006,方法4000包括基于确定,使用一个或多个运动候选表执行当前视频块和视频的比特流表示之间的转换。
[0485] 在一些实施例中,该方法包括在确定当前视频块被帧内编码时阻止使用一个或多个运动候选表。在一些实施例中,该方法包括在确定当前视频块被帧内块复制(IBC)编码时阻止使用一个或多个运动候选表。在一些实施例中,该方法包括在确定当前视频块被仿射Merge编码或仿射高级运动矢量预测(AMVP)编码时阻止使用一个或多个运动候选表。
[0486] 在一些实施例中,使用一个或多个运动候选表包括按顺序检查一个或多个表中的运动候选。在一些实施例中,检查包括检查一个或多个表的第一表中的一组前m个运动候选,并且检查一个或多个表的第二表中的一组最后n个运动候选。m和n都是正整数。在一些实施例中,一组最后n个运动候选是最近添加到第二表的一组运动候选。在一些实施例中,检查包括检查一个或多个表的第一表中的一组最后m个运动候选,并且检查一个或多个表的第二表中的一组前n个运动候选。m和n都是正整数。在一些实施例中,一组前n个运动候选是最近添加到第二表的一组运动候选。
[0487] 在一些实施例中,一个或多个运动候选表包括一个或多个默认运动候选。在一些实施例中,一个或多个默认运动候选包括对应于一个或多个参考图片的一个或多个零运动矢量候选。在一些实施例中,一个或多个默认运动候选从先前编码的运动信息导出。在一些实施例中,在比特流表示中的序列参数集(SPS),图片参数集(PPS)或条带报头中对一个或多个默认运动候选信令通知。在一些实施例中,运动候选与运动信息关联,所述运动信息包括以下的至少一种:预测方向,参考图片索引,运动矢量值,强度补偿标志,仿射标志,运动矢量差精度或运动矢量差值。在一些实施例中,运动候选包括用于Merge编码块的多个Merge候选。在一些实施例中,运动候选包括用于帧内编码块的帧内预测模式。在一些实施例中,运动候选包括用于IC编码块的多个照明补偿(IC)参数。在一些实施例中,运动候选包括在滤波处理中使用的滤波器参数。
[0488] 在一些实施例中,该方法包括在执行转换之后基于当前视频块的运动信息更新一个或多个表。在一些实施例中,该方法还包括基于更新表执行视频的后续视频块和视频的比特流表示之间的转换。
[0489] 图41是根据当前公开技术的用于视频处理的示例性方法4100的流程图。在操作4102,方法4100包括通过组合一个或多个运动候选表和来自一个或多个非相邻块的非相邻候选集确定视频的视频数据块的运动候选列表。在操作4104,方法4100包括使用运动候选列表执行视频数据块和视频的比特流表示之间的转换。
[0490] 在一些实施例中,组合包括检查来自非相邻候选集的m个候选并且检查来自一个或多个运动候选表的n个运动候选。在一些实施例中,组合包括将来自非相邻候选集的m个候选中的至少一个添加到运动候选列表。在一些实施例中,组合包括将来自一个或多个运动候选表的n个运动候选中的至少一个添加到运动候选列表。
[0491] 在一些实施例中,组合包括以交织方式检查来自非相邻候选集和一个或多个运动候选表的候选。在一些实施例中,检查包括在检查来自一个或多个表的运动候选之前检查来自非相邻候选集的非相邻候选。在一些实施例中,检查包括检查来自非相邻候选集的双向预测运动候选,检查来自一个或多个运动候选表的运动候选,并且检查来自非相邻候选集的单向预测运动候选。
[0492] 在一些实施例中,检查包括检查来自非相邻候选集的非相邻候选,并且基于与非相邻候选关联的非相邻块的编码特性,用来自一个或多个运动候选表的运动候选替换非相邻候选。在一些实施例中,非相邻块的编码特性指示非相邻块位于预定范围之外。预定范围可以包括最大编码单元的当前行。在一些实施例中,非相邻块的编码特性指示非相邻块被帧内编码或帧内块复制编码。
[0493] 在一些实施例中,非相邻候选集具有比一个或多个运动候选表更高的优先级。组合可以包括在检查该组运动候选表之前检查来自非相邻候选集的所有候选。在一些实施例中,一个或多个运动候选表具有比该非相邻候选集更高的优先级。组合可以包括在检查非相邻候选集之前检查来自该组运动候选表的所有候选。
[0494] 在一些实施例中,通过进一步组合从指定运动预测方法生成的候选来获得运动候选列表。指定运动预测方法可以包括时间运动矢量预测器(TMVP)方法。
[0495] 在一些实施例中,运动候选与运动信息关联,所述运动信息包括以下的至少一种:预测方向,参考图片索引,运动矢量值,强度补偿标志,仿射标志,运动矢量差精度或运动矢量差值。在一些实施例中,运动候选列表包括用于Merge编码块的多个Merge候选。在一些实施例中,运动候选列表包括用于帧内编码块的帧内预测模式。在一些实施例中,运动候选列表包括用于IC编码块的多个照明补偿(IC)参数。在一些实施例中,运动候选列表包括在滤波处理中使用的滤波器参数。
[0496] 在一些实施例中,使用Merge模式对视频数据块进行编码,并且非相邻候选集包括多个Merge候选。在一些实施例中,使用高级运动矢量预测(AMVP)模式对视频数据块进行编码,并且非相邻候选集包括多个AMVP候选。
[0497] 图42是根据当前公开技术的用于视频处理的示例性方法4200的流程图。在操作4202,方法4200包括以从多个可用运动矢量精度选择的M像素或子像素的运动矢量精度,保持用于视频的视频块和视频的比特流表示之间的转换的高级运动矢量预测(AMVP)候选列表。M是正整数。在操作4204,方法4200包括对于与视频块关联的每个可用高级运动矢量预测(AMVP)候选执行:取整AMVP候选,将取整的AMVP候选与AMVP候选列表中的现有候选进行比较,并且在确定取整的AMVP候选与现有候选不同时,将AMVP候选添加到AMVP候选列表。在操作4206,方法4200包括将AMVP候选列表与来自一个或多个运动候选表的一个或多个运动候选组合以获得组合列表。在操作4208,方法4200还包括基于组合列表执行转换。
[0498] 在一些实施例中,从视频块的空间或时间相邻块导出每个可用AMVP候选。在一些实施例中,在AMVP候选列表中的候选的数量小于预定阈值的情况下执行组合。
[0499] 在一些实施例中,该方法包括在组合之前取整一个或多个运动候选的每一个。在一些实施例中,对于一个或多个运动候选的每一个,组合包括将运动候选与AMVP候选列表中的现有AMVP候选进行比较,并且在确定运动候选与现有AMVP候选不同时将运动候选添加到组合列表。
[0500] 在一些实施例中,运动候选与运动信息关联,所述运动信息包括以下的至少一种:预测方向,参考图片索引,运动矢量值,强度补偿标志,仿射标志,运动矢量差精度或运动矢量差值。在一些实施例中,运动候选包括用于Merge编码块的多个Merge候选。在一些实施例中,运动候选包括用于帧内编码块的帧内预测模式。在一些实施例中,运动候选包括用于IC编码块的多个照明补偿(IC)参数。在一些实施例中,运动候选包括在滤波处理中使用的滤波器参数。在一些实施例中,该方法包括在执行转换之后基于视频块的运动信息更新一个或多个表。在一些实施例中,该方法还包括基于更新表执行视频的后续视频块和视频的比特流表示之间的转换。
[0501] 图43是根据当前公开技术的用于视频处理的示例性方法4300的流程图。在操作4302,方法4300包括以从多个可用运动矢量精度选择的M像素或子像素的运动矢量精度保持用于视频的视频块和视频的比特流表示之间的转换的高级运动矢量预测(AMVP)候选列表。M是正整数。在操作4304,方法4300包括将与视频块关联的AMVP候选与AMVP候选列表中的现有AMVP候选进行比较。在操作4306,方法4300包括在确定AMVP候选与现有候选不同时,将AMVP候选添加到AMVP候选列表。在操作4308,方法4300还包括基于AMVP候选列表执行转换。
[0502] 在一些实施例中,该方法包括在将AMVP候选与现有AMVP候选进行比较之前对AMVP候选进行取整。在一些实施例中,该方法包括在将AMVP候选添加到列表之后取整AMVP候选列表中的所有候选。在一些实施例中,该方法包括修剪AMVP候选列表中的所有候选以去除任何重复条目。
[0503] 图44是根据当前公开技术的用于视频处理的示例性方法4400的流程图。在操作4402,方法4400包括使用Merge索引执行视频的视频数据块和视频的比特流表示之间的转换。比特流表示包括指示用于转换的Merge候选的Merge索引。Merge索引被划分为第一部分和第二部分。第一部分使用第一二值化方法编码,并且第二部分使用与第一二值化方法不同的第二二值化方法编码。
[0504] 在一些实施例中,第一二值化方法是一元码二值化方法。在一些实施例中,第二二值化方法是固定长度(FL)二值化方法。替代地,第二二值化方法可以是k阶Exp-Golomb(EGk)二值化方法。在一些实施例中,由于Merge索引大于预定或信令阈值,Merge索引被划分为第一部分和第二部分。
[0505] 图45是根据当前公开技术的用于视频处理的示例性方法4500的流程图。在操作4502,方法4500包括基于视频的一个或多个先前视频块保持一个或多个帧内预测模式候选表。在操作4504,方法4500包括使用一个或多个帧内预测模式候选表执行视频的当前视频块和视频的比特流表示之间的转换。
[0506] 在一些实施例中,一个或多个帧内预测模式候选表中的每个表的尺寸是相同的。在一些实施例中,每个表的尺寸等于帧内预测模式候选的支持类型的总数。
[0507] 在一些实施例中,该方法包括将计数器分配给每种类型的帧内预测模式候选。计数器指示在先前编码块中使用对应类型的次数。在一些实施例中,该方法包括在用对应类型的帧内预测模式候选更新一个或多个表中的一个的情况下修改计数器。
[0508] 在一些实施例中,该方法包括基于当前视频块更新一个或多个帧内预测模式候选表。在一些实施例中,该方法还包括使用更新的一个或多个帧内预测模式候选表来执行视频的后续视频块和视频的比特流表示之间的第二转换。
[0509] 图46是根据当前公开技术的用于视频处理的示例性方法4600的流程图。在操作4602,方法4600包括基于视频的视频块的非相邻块的帧内预测模式确定一组帧内预测模式预测器。在操作4604,方法4600包括使用一组帧内预测模式预测器执行视频块和视频的比特流表示之间的转换。
[0510] 在一些实施例中,上述方法4500和4600包括基于以下的至少一种构建最可能模式(MPM)列表:一个或多个预测模式候选表或非相邻块的帧内预测模式。在一些实施例中,该方法包括基于以下的至少一种重新排序非最可能模式(MPM)帧内预测模式:一个或多个预测模式候选表或非相邻块的帧内预测模式。
[0511] 图47是根据当前公开技术的用于视频处理的示例性方法4700的流程图。在操作4702,方法4700包括基于视频的一个或多个先前视频块保持一个或多个照明补偿(IC)参数表。在操作4702,方法4700包括使用一个或多个IC参数表执行视频的当前视频块和视频的比特流表示之间的转换。
[0512] 在一些实施例中,当前视频块被IC编码。在一些实施例中,该方法包括在执行视频数据的编码区域的转换之前初始化一个或多个IC参数表。编码区域可以包括图片,条带或最大编码单元行。
[0513] 在一些实施例中,该方法包括基于当前视频块的IC参数更新一个或多个IC参数表。在一些实施例中,该方法包括使用更新的一个或多个IC参数表执行视频的后续视频块和视频的比特流表示之间的第二转换。后续视频数据块可以被照明补偿IC编码。
[0514] 图48是根据当前公开技术的用于视频处理的示例性方法4800的流程图。在操作4802,方法4800包括基于当前视频块的非相邻块的IC参数导出视频的当前视频块的照明补偿(IC)参数。在操作4804,方法4800包括使用导出的IC参数执行当前视频块和视频的比特流表示之间的转换。
[0515] 在一些实施例中,上述方法4700和4800包括构建IC候选列表,其中每个IC候选与对应的IC参数关联。可以为IC候选分配索引。可以针对比特流表示中的视频块对IC候选的索引信令通知。
[0516] 从前述内容将理解,为了便于说明,本公开技术的具体实施例已经在本文中进行了描述,但是可以在不偏离本发明范围的情况下进行各种修改。因此,除了所附权利要求之外,本公开的技术不受限制。
[0517] 本专利文件中描述的主题和功能操作的实现方式可以在各种系统、数字电子电路、或计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等效体,或其中一个或多个的组合。本说明书中描述的主题的实现方式可以实现为一个或多个计算机程序产品,即编码在有形和非暂时计算机可读介质上的计算机程序指令的一个或多个模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除硬件外,该装置还可以包括为所述计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或其中一个或多个的组合的代码。
[0518] 计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或适合在计算环境中使用的其他单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中、专用于所述程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署成在一台或多台计算机上执行,所述计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
[0519] 本说明书描述的处理和逻辑流可以通过一个或多个可编程处理器执行,所述处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,FPGA(现场可编程阵列)或ASIC(专用集成电路)。
[0520] 例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁光盘或光盘,或可操作联接到一个或多个大容量存储设备以从其接收数据或向其传输数据,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备。处理器和存储器可以由专用逻辑电路来补充,或Merge到专用逻辑电路中。
[0521] 本说明书和附图仅意在被视为示例性的,其中示例性是指示例。如本文所用,除非上下文另有明确说明,否则单数形式“a”、“an”和“the”也应包括复数形式。此外,“或”的使用旨在包括“和/或”,除非上下文另有明确说明。
[0522] 虽然本专利文件包含许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实现,或在任何合适的子组合中实现。而且,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中删除权利要求组合中的一个或多个特征,并且权利要求的组合可以涉及子组合或子组合的变型。
[0523] 类似地,尽管图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或按照先后顺序执行这样的操作,或执行所有示出的操作。而且,本专利文件所述实施例中各种系统部件的分离不应理解为在所有实施例中都需要这样的分离。
[0524] 仅描述了一些实现方式和示例,其他实现方式、增强和变型可以基于本专利文件中描述和示出的内容做出。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈