一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种使用自适应运动矢量分辨率处理视频信号的方法和装置与流程

2022-02-20 01:29:09 来源:中国专利 TAG:


1.本公开涉及一种用于处理视频信号的方法和装置,并且更具体地,涉及一种用于对视频信号进行编码和解码的视频信号处理方法和装置。


背景技术:

2.压缩编译指代用于通过通信线路发送数字化信息或以适合于存储介质的形式存储信息的一系列信号处理技术。压缩编码的对象包括诸如语音、视频和文本的对象,并且特别地,用于对图像执行压缩编码的技术被称为视频压缩。考虑到空间相关性、时间相关性和随机相关性,通过去除过多的信息来执行对视频信号的压缩编译。然而,随着各种媒体和数据传输媒体的最新发展,需要更有效的视频信号处理方法和装置。


技术实现要素:

3.技术问题
4.本公开的目的是要增加视频信号的编译效率。
5.技术方案
6.根据本公开的实施例的用于处理视频信号的方法包括下述步骤:从比特流中解析指示是否使用自适应运动矢量差分分辨率的自适应运动矢量分辨率(amvr)启用标志sps_amvr_enabled_flag;从比特流中解析指示仿射运动补偿是否可用的仿射启用标志sps_affine_enabled_flag;基于仿射启用标志sps_affine_enabled_flag,确定仿射运动补偿是否可用;当仿射运动补偿可用时,基于amvr启用标志sps_amvr_enabled_flag确定是否使用自适应运动矢量差分分辨率;以及当使用自适应运动矢量差分分辨率时,从比特流中解析指示是否自适应运动矢量差分分辨率可用于仿射运动补偿的仿射amvr启用标志sps_affine_amvr_enabled_flag。
7.在根据本公开的实施例的用于处理视频信号的方法中,amvr启用标志sps_amvr_enabled_flag、仿射启用标志sps_affine_enabled_flag或仿射amvr启用标志sps_affine_amvr_enabled_flag之一作为编译树单元、切片、图块、图块组、图片或序列单元之一被用信号发送。
8.在根据本公开的实施例的处理视频信号的方法中,当仿射运动补偿可用并且不使用自适应运动矢量差分分辨率时,仿射amvr启用标志sps_affine_amvr_enabled_flag推断自适应运动矢量差分分辨率不可用于仿射运动补偿。
9.在根据本公开的实施例的处理视频信号的方法中,当仿射运动补偿不可用时,仿射amvr启用标志sps_affine_amvr_enabled_flag推断自适应运动矢量差分分辨率不可用于仿射运动补偿。
10.根据本公开的实施例的视频信号处理方法进一步包括,当amvr启用标志sps_amvr_enabled_flag指示自适应运动矢量差分分辨率的使用,从比特流中获取的帧间仿射标志inter_affine_flag指示仿射运动补偿不被用于当前块,并且用于当前块的多个运动
矢量差中的至少一个是非零时,从比特流中解析关于运动矢量差的分辨率的信息,以及基于关于运动矢量差的分辨率的信息修改用于当前块的多个运动矢量差。
11.根据本公开的实施例的处理视频信号的方法进一步包括,当仿射amvr启用标志指示自适应运动矢量差分分辨率可用于仿射运动补偿,从比特流中获得的帧间仿射标志inter_affine_flag指示对当前块使用仿射运动补偿,并且用于当前块的多个控制点运动矢量差中的至少一个是非零时,从比特流解析关于运动矢量差的分辨率的信息,以及基于关于运动矢量差的分辨率的信息修改用于当前块的多个控制点运动矢量差。
12.根据本公开的实施例的视频信号处理方法进一步包括,获取用于当前块的关于参考图片列表的信息inter_pred_idc,当关于参考图片列表的信息inter_pred_idc指示不是仅使用第零参考图片列表时,从比特流中解析第一参考图片列表的运动矢量预测子索引mvp_l1_flag,生成运动矢量预测子候选,基于运动矢量预测子索引从运动矢量预测子候选中获得运动矢量预测子,以及基于运动矢量预测子预测当前块。
13.根据本公开的实施例的用于处理视频信号的方法进一步包括,从比特流中获得指示针对第一参考图片列表是否将运动矢量差和多个控制点运动矢量差设置为零的运动矢量差零标志mvd_l1_zero_flag,其中解析运动矢量预测子索引mvp_l1_flag的步骤包括:运动矢量差零标志mvd_l1_zero_flag为1,并且无论关于参考图片列表的信息inter_pred_idc是否指示使用第零参考图片列表和第一参考图片列表两者,解析运动矢量预测子索引mvp_l1_flag。
14.根据本公开的实施例的用于处理视频信号的方法包括下述步骤:从比特流中以序列为单位解析与用于合并运动矢量预测的候选的最大数量相关的第一信息six_minus_max_num_merge_cand,基于第一信息获得合并候选的最大数量,从比特流中解析指示块是否被分区以用于帧间预测的第二信息,以及当第二信息指示1并且合并候选的最大数量大于2时,从比特流中解析与用于分区的块的合并模式候选的最大数量相关的第三信息。
15.根据本发明的实施例的用于处理视频信号的方法进一步包括:当第二信息指示1并且合并候选的最大数量大于或等于3时,通过从合并候选的最大数量中减去第三信息来获得用于分区的块的合并模式候选的最大数量,当第二信息指示1并且合并候选的最大数量为2时,将用于分区的块的合并模式候选的最大数量设置为2,并且,当第二信息为0或合并候选的最大数量为1时,将用于分区的块的合并模式候选的最大数量设置为0。
16.一种根据本发明的实施例的用于处理视频信号的装置,包括处理器和存储器,其中基于存储器中存储的指令,处理器从比特流中解析指示是否使用自适应运动矢量差分分辨率的自适应运动矢量分辨率(amvr)启用标志sps_amvr_enabled_flag,从比特流解析指示仿射运动补偿是否可用的仿射启用标志sps_affine_enabled_flag,基于仿射启用标志sps_affine_enabled_flag确定仿射运动补偿是否可用,当仿射运动补偿可用时,基于amvr启用标志sps_amvr_enabled_flag确定是否使用自适应运动矢量差分分辨率,并且当使用自适应运动矢量差分分辨率时,从比特流中解析指示是否自适应运动矢量差分分辨率可用于仿射运动补偿的仿射amvr启用标志sps_a ffine_amvr_enabled_flag。
17.在根据本公开的实施例的用于处理视频信号的装置中,amvr启用标志sps_amvr_enabled_flag、仿射启用标志sps_affine_enabled_flag或仿射amvr启用标志sps_affine_amvr_enabled_flag之一作为编译树单元、切片、图块、图块组、图片或序列单元之一被用信
号发送。
18.在根据本公开的实施例的用于处理视频信号的装置中,当仿射运动补偿可用并且不使用自适应运动矢量差分分辨率时,仿射amvr启用标志sps_affine_amvr_enabled_flag推断自适应运动矢量差分分辨率不可用于仿射运动补偿。
19.在根据本公开的实施例的用于处理视频信号的装置中,当仿射运动补偿不可用时,仿射amvr启用标志sps_affine_amvr_enabled_flag推断自适应运动矢量差分分辨率不可用于仿射运动补偿。
20.在根据本公开的实施例的用于处理视频信号的装置中,基于存储器中存储的指令,当amvr启用标志sps_amvr_enabled_flag指示自适应运动矢量差分分辨率的使用,从比特流中获得的帧间仿射标志inter_affine_flag指示仿射运动补偿不被用于当前块,并且用于当前块的多个运动矢量差中的至少一个是非零时,处理器从比特流中解析关于运动矢量差的分辨率的信息,并且基于关于运动矢量差的分辨率的信息修改用于当前块的多个运动矢量差。
21.在根据本公开的实施例的用于处理视频信号的装置中,基于存储器中存储的指令,当仿射amvr启用标志指示自适应运动矢量差分分辨率可用于仿射运动补偿,从比特流中获得的帧间仿射标志inter_affine_flag指示对当前块使用仿射运动补偿,并且用于当前块的多个控制点运动矢量差中的至少一个是非零时,处理器从比特流中解析关于运动矢量差的分辨率的信息,并且基于关于运动矢量差的分辨率的信息修改用于当前块的多个控制点运动矢量差。
22.在根据本公开的实施例的用于处理视频信号的装置中,基于存储在存储器中的指令,处理器获得用于当前块的关于参考图片列表的信息inter_pred_idc,当关于参考图片列表的信息inter_pred_idc指示不是仅使用第零参考图片列表列表0时,从比特流中解析第一参考图片列表列表1的运动矢量预测子索引mvp_l1_flag,生成运动矢量预测子候选,基于运动矢量预测子索引从运动矢量预测子候选中获得运动矢量预测子,并基于运动矢量预测子预测当前块。
23.在根据本发明的实施例的用于处理视频信号的装置中,基于存储器中存储的指令,处理器从比特流中获得指示针对第一参考图片列表是否将运动矢量差和多个控制点运动矢量差设置为零的运动矢量差零标志mvd_l1_zero_flag,并且运动矢量差零标志mvd_l1_zero_flag为1,并且无论关于参考图片列表的信息inter_pred_idc是否指示使用第零参考图片列表和第一参考图片列表两者,解析运动矢量预测子索引mvp_l1_flag。
24.本公开的实施例的一种用于处理视频信号的装置,包括处理器和存储器,其中,基于存储在存储器中的指令,处理器从比特流中以序列为单位解析与用于合并运动矢量预测的候选的最大数量相关的第一信息six_minus_max_num_merge_cand,基于第一信息获得合并候选的最大数量,从比特流中解析块是否被分区以用于帧间预测的第二信息,并且当第二信息指示1并且合并候选的最大数量大于2时,从比特流中解析与用于分区的块的合并模式候选的最大数量相关的第三信息。
25.在根据本公开的实施例的用于处理视频信号的装置中,基于存储器中存储的指令,当第二信息指示1并且合并候选的最大数量大于或等于3时,处理器通过从合并候选的最大数量中减去第三信息来获得用于分区的块的合并模式候选的最大数量,当第二信息指
示1并且合并候选的最大数量为2时,将用于分区的块的合并模式候选的最大数量设置为2,并且当第二信息为0或合并候选的最大数量为1时,将分区的块的合并模式候选的最大数量设置为0。
26.根据本公开的实施例的用于处理视频信号的方法包括下述步骤:生成指示是否使用自适应运动矢量差分分辨率的自适应运动矢量分辨率(amvr)启用标志sps_amvr_enabled_flag,生成指示仿射运动补偿是否可用的仿射启用标志sps_affine_enabled_flag;基于仿射启用标志sps_affine_enabled_flag,确定仿射运动补偿是否可用,当仿射运动补偿可用时,基于amvr启用标志sps_amvr_enabled_flag确定是否使用自适应运动矢量差分分辨率,当使用自适应运动矢量差分分辨率时,生成指示是否自适应运动矢量差分分辨率可用于仿射运动补偿的仿射amvr启用标志sps_affine_amvr_enabled_flag,以及通过对amvr启用标志sps_amvr_enabled_flag、仿射启用标志sps_affine_enabled_flag和amvr启用标志sps_amvr_enabled_flag执行熵编译生成比特流。
27.根据本公开的实施例的用于处理视频信号的方法进一步包括:基于合并候选的最大数量生成与用于合并运动矢量预测的候选的最大数量相关的第一信息six_minus_max_num_merge_cand,生成指示块是否能够被分区以用于帧间预测的第二信息,当第二信息指示1并且合并候选的最大数量大于2时,生成与用于分区的块的合并模式候选的最大数量相关的第三信息,以及对第一信息six_minus_max_num_merge_cand、第二信息和第三信息执行熵编译以以序列为单位生成比特流。
28.有益效果
29.根据本公开的实施例,可以增加视频信号的编译效率。
附图说明
30.图1是根据本公开的实施例的视频信号编码器装置的示意性框图。
31.图2是根据本公开的实施例的视频信号解码器装置的示意性框图。
32.图3是图示用于分割编译单元的本公开的实施例的图。
33.图4是图示用于分层地表示图3的分割结构的方法的实施例的图。
34.图5是图示用于分割编译单元的本公开的又一实施例的图。
35.图6是图示获得用于帧内预测的参考像素的方法的图。
36.图7是图示用于帧内预测的预测模式的实施例的图。
37.图8是图示根据本公开的实施例的帧间预测的图。
38.图9是图示根据本公开的实施例的用信号发送运动矢量的方法的图。
39.图10是图示根据本公开的实施例的运动矢量差语法的图。
40.图11是图示根据本公开的实施例的自适应运动矢量分辨率的信令的图。
41.图12是图示根据本公开的实施例的自适应运动矢量分辨率的信令的图。
42.图13是图示根据本公开的实施例的自适应运动矢量分辨率的信令的图。
43.图14是图示根据本公开的实施例的自适应运动矢量分辨率的信令的图。
44.图15是图示根据本公开的实施例的自适应运动矢量分辨率的信令的图。
45.图16是图示根据本公开的实施例的自适应运动矢量分辨率的信令的图。
46.图17是图示根据本公开的实施例的仿射运动预测的图。
47.图18是图示根据本公开的实施例的仿射运动预测的图。
48.图19是图示根据本公开的实施例的运动矢量场的表达式。
49.图20是图示根据本公开的实施例的仿射运动预测的图。
50.图21是图示根据本公开的实施例的运动矢量场的表达式。
51.图22是图示根据本公开的实施例的仿射运动预测的图。
52.图23是图示根据本公开的实施例的仿射运动预测的一种模式的图。
53.图24是图示根据本公开的实施例的仿射运动预测的一种模式的图。
54.图25是图示根据本公开的实施例的仿射运动预测子导出的图。
55.图26是图示根据本公开的实施例的仿射运动预测子导出的图。
56.图27是图示根据本公开的实施例的仿射运动预测子导出的图。
57.图28是图示根据本公开的实施例的仿射运动预测子导出的图。
58.图29是图示根据本公开的实施例的生成控制点运动矢量的方法的图。
59.图30是图示通过参考图29描述的方法确定运动矢量差的方法的图。
60.图31是图示根据本公开的实施例的生成控制点运动矢量的方法的图。
61.图32是图示通过参考图31描述的方法确定运动矢量差的方法的图。
62.图33是图示根据本公开的实施例的运动矢量差语法的图。
63.图34是图示根据本公开的实施例的较高级别信令结构的图。
64.图35是图示根据本公开的实施例的编译单元语法结构的图。
65.图36是图示根据本公开的实施例的较高级别信令结构的图。
66.图37是图示根据本公开的实施例的较高级别信令结构的图。
67.图38是图示根据本公开的实施例的编译单元语法结构的图。
68.图39是图示根据本公开的实施例的mvd默认值设置的图。
69.图40是图示根据本公开的实施例的mvd默认值设置的图。
70.图41是图示根据本公开的实施例的amvr相关语法结构的图。
71.图42是图示根据本公开的实施例的帧间预测相关语法结构的图。
72.图43是图示根据本公开的实施例的帧间预测相关语法结构的图。
73.图44是图示根据本公开的实施例的帧间预测相关语法结构的图。
74.图45是图示根据本发明的实施例的帧间预测相关语法的图。
75.图46是图示根据本发明的实施例的三角分区模式的图。
76.图47是图示根据本发明的实施例的合并数据语法的图。
77.图48是图示根据本发明的实施例的较高级别信令的图。
78.图49是图示根据本发明的实施例的在tpm中使用的候选的最大数量的图。
79.图50是图示根据本发明的实施例的与tpm相关的较高级别信令的图。
80.图51是图示根据本发明的实施例的在tpm中使用的候选的最大数量的图。
81.图52是根据本发明的实施例的tpm相关语法元素的图。
82.图53是图示根据本发明的实施例的tpm候选索引的信令的图。
83.图54是图示根据本发明的实施例的tpm候选索引的信令的图。
84.图55是图示根据本发明的实施例的tpm候选索引的信令的图。
具体实施方式
85.考虑到本发明中的功能,本说明书中使用的术语可以是当前广泛使用的通用术语,但是可以根据本领域技术人员的意图、习惯或新技术的出现而变化。另外,在某些情况下,可能存在申请人任意选择的术语,并且在这种情况下,其含义在本发明的相应描述部分中进行描述。因此,本说明书中使用的术语应基于整个说明书中术语和内容的实质含义来解释。
86.在本公开中,可以基于以下准则来解释以下术语,并且甚至可以根据以下目的来解释未描述的术语。编译在一些情况下可以被解释为编码或解码,信息是包括所有值、参数、系数、元素等的术语并且在一些情况下其含义可以被不同地解释,并且因此,本公开不限于此。“单元”用于指代图像(图片)处理的基本单位或图片的特定位置,并且在一些情况下可以与诸如“块”、“分区(partition)”或“区域”的术语互换使用。此外,在本说明书中,单元可以用作包括编译单元、预测单元和变换单元的全部的概念。
87.图1是根据本公开的实施例的视频信号编码装置的示意性框图。参考图1,本公开的编码装置100主要包括变换单元110、量化单元115、逆量化单元120、逆变换单元125、滤波单元130和预测单元150、以及熵编译单元160。
88.变换单元110通过变换接收到的视频信号的像素值来获得变换系数值。例如,可以使用离散余弦变换(dct)或小波变换。特别地,在离散余弦变换中,通过将输入图片信号划分为预定大小的块来执行变换。在变换中,编译效率可以根据变换区域中值的分布和特性而变化。
89.量化单元115对从变换单元110输出的变换系数值进行量化。逆量化单元120对变换系数值进行解量化,并且逆变换单元125使用解量化后的变换系数值重构原始像素值。
90.滤波单元130执行滤波计算以改进重构图片的质量。例如,可以包括去块滤波器和自适应环路滤波器。经滤波的图片被输出或存储在解码图片缓冲器156中以用作参考图片。
91.为了改进编译效率,不按原样编译图片信号,而是使用以下方法:通过使用已经编译的区域经由预测单元150预测图片,并将原始图片和预测图片之间的残差值添加到预测图片,从而获得重构图片。帧内预测单元152在当前图片内执行帧内预测,并且帧间预测单元154通过使用存储在解码图片缓冲器156中的参考图片来预测当前图片。帧内预测单元152从当前图片中的重构区域执行帧内预测,并将帧内编译信息传输到熵编译单元160。帧间预测单元154可以包括运动估计单元154a和运动补偿单元154b。运动估计单元154a通过参考特定重构区域来获得当前区域的运动矢量值。运动估计单元154a将参考区域的位置信息(参考帧、运动矢量等)传输到熵编译单元160,使得使位置信息能够被包括在比特流中。运动补偿单元154b通过使用从运动估计单元154a传输的运动矢量值来执行帧间运动补偿。
92.熵编译单元160对从帧间预测单元154输入的量化变换系数、帧间编译信息、帧内编译信息和参考区域信息执行熵编译以生成视频信号比特流。这里,在熵编译单元160中,可以使用可变长度编译(vlc)方案、算术编译等。可变长度编译(vlc)方案将输入符号变换为连续的码字,并且码字的长度可以是可变的。例如,频繁出现的符号表达为短码字,并且不频繁出现的符号表达为长码字。作为可变长度编译方案,可以使用基于上下文的自适应可变长度编译(cavlc)方案。算术编译将连续的数据符号变换成一个小数,并且在算术编译中可以获得表示每个符号所需的最优小数比特。基于上下文的自适应二进制算术编译
(cabac)可以用作算术编译。
93.使用网络抽象层(nal)单元作为基本单元封装生成的比特流。nal单元包括已编译的切片段,并且切片段由整数个编译树单元组成。为了在视频解码器中对比特流进行解码,比特流应首先被分离成nal单元,并且然后应该解码每个分离的nal单元。
94.图2是根据本公开的实施例的视频信号解码装置200的示意性框图。参考图2,本公开的解码装置200包括熵解码单元210、逆量化单元220、逆变换单元225、滤波单元230和预测单元250。
95.熵解码单元210对视频信号比特流执行熵解码以提取每个区域的变换系数和运动信息。逆量化单元220对熵解码的变换系数进行解量化,并且逆变换单元225通过使用解量化的变换系数来重构原始像素值。
96.同时,滤波单元230通过对图片执行滤波来改进图片质量。在该滤波单元中,可以包括用于减少块失真的去块滤波器和/或用于从整个图片去除失真的自适应环路滤波器。经滤波的图片被输出或存储在解码图片缓冲器256中以用作下一帧的参考图片。
97.此外,本公开的预测单元250包括帧内预测单元252和帧间预测单元254,并且使用通过在上面描述的熵解码单元210解码的编码类型、每个区域的变换系数、运动信息等来重构预测图片。
98.在这点上,帧内预测单元252根据当前图片中的解码样本执行帧内预测。帧间预测单元254通过使用存储在解码图片缓冲器256中的参考图片和运动信息来生成预测图片。帧间预测单元254可以被配置成再次包括运动估计单元254a和运动补偿单元254b。运动估计单元254a获得指示当前块和用于编译的参考图片的参考块之间的位置关系的运动矢量,并将获得的运动矢量传送到运动补偿单元254b。
99.将从帧内预测单元252或帧间预测单元254输出的预测子与从逆变换单元225输出的像素值相加以生成重构视频帧。
100.在下文中,在编码装置100和解码装置200的操作中,将描述参考图3至图5来分割编译单元和预测单元的方法。
101.编译单元意指用于在上述处理视频信号的过程中,例如,在帧内/帧间预测、变换、量化和/或熵编译的过程中,处理图片的基本单元。用于对一个图片进行编译的编译单元的大小可能不是恒定的。编译单元可以是矩形,并且一个编译单元可以分割成几个编译单元。
102.图3图示用于分割编译单元的本公开的实施例。例如,可以将具有2n
×
2n的大小的一个编译单元再次分割成具有n
×
n的大小的四个编译单元。这种编译单元的分割可以递归进行,并不是所有的编译单元都需要以相同的形式分割。然而,为了编译和处理过程的方便,最大编译单元的大小和/或最小编译单元的大小可能存在限制。
103.对于一个编译单元,可以存储指示对应的编译单元是否被分割的信息。图4图示使用标志值分层地表示图3中图示的编译单元的分割结构的方法的实施例。当单元被分割时,可以为信息分配值“1”,并且当单元不分割时,可以为其分配值“0”。如图4中所图示,如果指示是否分割的标志值为1,则将与对应节点对应的编译单元再次划分为4个编译单元。如果标志值为0,则不再划分编译单元,并且可以执行用于编译单元的处理过程。
104.可以使用递归树结构来表示上述编译单元的结构。即,以一个图片或最大大小编译单元为根分割成其他编译单元的编译单元具有与分割编译单元的数目一样多的子节点。
因此,不再分割的编译单元成为叶节点。假设一个编译单元只能进行正方形分割,因为一个编译单元最多可以分割成四个其他编译单元,所以表示编译单元的树可以是四叉树的形式。
105.在编码器中,根据视频图片的特性(例如,分辨率)或考虑编译效率来选择编译单元的最佳大小,并且可以在比特流中包括关于编译单元的最佳大小的信息或通过其可以导出编译单元的最佳大小的信息。例如,可以定义最大编译单元的大小和树的最大深度。在执行正方形分割的情况下,因为编译单元的高度和宽度是父节点编译单元的高度和宽度的一半,所以使用上述信息可以获得最小编译单元大小。或者,可替选地,可以预先定义并使用树的最小编译单元大小和最大深度,并且通过最小编译单元大小和树的最大深度可以导出和使用最大编译单元的大小。因为在正方形分割中单元的大小以2的倍数改变,所以编译单元的实际大小被表达为以2为底的对数值,以增加传输效率。
106.解码器可以获得指示当前编译单元是否被分割的信息。如果仅在特定条件下获得(传送)此类信息,则可以增加效率。例如,因为当前编译单元可以被分割的条件是在当前位置处通过当前编译单元大小的相加而获得的单元的大小小于图片的大小并且当前单元大小大于预设最小编译单元大小的情况,只有在这种情况下才能获得指示当前编译单元是否被分割的信息。
107.如果上述信息指示编译单元被分割,则将被分割的编译单元的大小变为当前编译单元的一半,并基于当前处理位置分割成四个正方形的编译单元。可以对每个划分的编译单元重复上述处理。
108.图5图示用于分割编译单元的本公开的又一实施例。根据本公开的又一实施例,上述四叉树状编译单元可以进一步分割为水平分割或垂直分割的二叉树结构。即,可以先对根编译单元应用正方形四叉树分割,并且另外在四叉树的叶节点应用矩形二叉树分割。根据实施例,二叉树分割可以是对称的水平分割或对称的垂直分割,但是本公开不限于此。
109.在二叉树的每个分割节点中,可以附加地用信号发送指示分割类型(即,水平分割或垂直分割)的标志。根据实施例,当标志的值为“0”时,可以指示水平分割,并且当标志的值为“1”时,可以指示垂直分割。
110.然而,本公开的实施例中的编译单元的分割方法不限于上述方法,并且可以对其应用非对称水平/垂直分割、三叉树分割成三个矩形编译单元等。
111.对不再划分的编译单元(即,编译单元树的叶节点)执行用于编译的图片预测(运动补偿)。用于执行这种预测的基本单元在下文中被称为预测单元或预测块。
112.在下文中,在本说明书中使用的术语“单元”可以用作替换预测单元的术语,该预测单元是用于执行预测的基本单元。然而,本公开不限于此,并且更广泛地,该术语可以被理解为包括编译单元的概念。
113.为了重构对其执行解码的当前单元,可以使用包括当前单元的当前图片或其他图片的解码部分。仅使用当前图片进行重构的图片(切片),即,仅执行帧内预测的图片(切片),称为帧内图片或i图片(切片),并且对于帧内预测和帧间预测两者可以被执行以进行重构的图片(切片)被称为帧间图片(切片)。帧间图片(切片)当中的最多使用一个运动矢量和参考索引来预测每个单元的图片(切片)称为预测图片或p图片(切片),并且帧间图片(切片)当中的使用最多两个运动矢量和参考索引以预测每个单元的图片(切片)被称为双向预
测图片或b图片(切片)。
114.帧内预测单元执行用于根据当前图片中的重构区域预测目标单元的像素值的帧内预测。例如,可以从位于以当前单元为中心的左侧和/或上部的单元的重构像素预测当前单元的像素值。在这种情况下,位于当前单元的左侧的单元可以包括与当前单元相邻的左单元、左上单元和左下单元。此外,位于当前单元上部的单元可以包括与当前单元相邻的上单元、左上单元和右上单元。
115.同时,帧间预测单元通过使用关于除当前图片之外的其他重构图片的信息来执行用于预测目标单元的像素值的帧间预测。在这种情况下,用于预测的图片被称为参考图片。可以使用指示包括相应的参考区域的参考图片的索引、运动矢量信息等来指示在帧间预测过程中将使用哪个参考区域来预测当前单元。
116.帧间预测可以包括l0预测、l1预测和双向预测。l0预测意指使用l0(第零参考图片列表)中包括的一个参考图片的预测,并且l1预测意指使用l1(第一参考图片列表)中包括的一个参考图片的预测。为此,可能需要一组运动信息(例如,运动矢量和参考图片索引)。在双向预测方法中,最多可以使用两个参考区域,并且这两个参考区域可以分别存在于同一个参考图片中,也可以存在于不同的图片中。也就是说,在双向预测方法中,最多可以使用两组运动信息(例如,运动矢量和参考图片索引),并且这两个运动矢量可以对应于相同的参考图片索引或不同的参考图片索引。在这种情况下,可以在时间方面在当前图片之前和之后显示(或输出)参考图片。
117.可以使用运动矢量和参考图片索引来获得当前单元的参考单元。参考单元存在于具有参考图片索引的参考图片中。此外,由运动矢量指定的单元的像素值或内插值可以用作当前单元的预测子。对于以子像元(sub-pel)为单位的像素精度的运动预测,例如,8抽头内插滤波器可以被用于亮度信号,并且4抽头内插滤波器可以被用于色度信号。然而,用于以子像元为单位的运动预测的内插滤波器不限于此。如上所述,使用运动信息执行用于从先前解码的图片预测当前单元的纹理的运动补偿。
118.在下文中,将参考图6和图7更详细地描述根据本公开的实施例的帧内预测方法。如上所述,帧内预测单元通过使用位于当前单元左侧和/或上部的相邻像素作为参考像素来预测当前单元的像素值。
119.如图6中所图示,当当前单元的大小为n
×
n时,可以使用位于当前单元左侧和/或上部的最多(4n 1)个相邻像素来设置参考像素。当要用作参考像素的至少一些相邻像素尚未重构时,帧内预测单元可以根据预设规则执行参考样本填充过程获得参考像素。此外,帧内预测单元可以执行参考样本滤波过程以减少帧内预测中的误差。即,可以通过对相邻像素和/或由参考样本填充过程获得的像素执行滤波来获得参考像素。帧内预测单元使用以此方式获得的参考像素来预测当前单元的像素。
120.图7图示用于帧内预测的预测模式的实施例。对于帧内预测,可以用信号发送指示帧内预测方向的帧内预测模式信息。当当前单元为帧内预测单元时,视频信号解码装置从比特流中提取当前单元的帧内预测模式信息。视频信号解码装置的帧内预测单元基于提取的帧内预测模式信息为当前单元执行帧内预测。
121.根据本公开的实施例,帧内预测模式可以包括总共67种模式。可以通过预设索引(即,帧内模式索引)来指示每个帧内预测模式。例如,如图7中所图示,帧内模式索引0可以
指示平面模式,帧内模式索引1可以指示dc模式,并且帧内模式索引2至66可以分别指示不同的方向模式(即,角度模式)。帧内预测单元基于当前单元的帧内预测模式信息确定要用于当前单元的帧内预测的参考像素和/或内插的参考像素。当帧内模式索引指示特定方向模式时,从当前单元的当前像素与特定方向相对应的参考像素或内插的参考像素被用于当前像素的预测。因此,可以根据帧内预测模式将不同的参考像素和/或内插的参考像素集用于帧内预测。
122.在使用参考像素和帧内预测模式信息执行当前单元的帧内预测之后,视频信号解码装置通过将从逆变换单元获得的当前单元的残差信号和当前单元的帧内预测子相加来重构当前单元的像素值。
123.图8是图示根据本公开的实施例的帧间预测的图。
124.如上所述,当对当前图片或块进行编码或解码时,可以从另一图片或块对其进行预测。即,可以基于与其他图片或块的相似性对当前图片或块进行编码和解码。当前图片或块可以利用从当前图片或块中省略与另一图片或块相似的部分的信令进行编码和解码,这将在下面进一步描述。可以以块为单位进行预测。
125.参考图8,左侧存在参考图片并且右侧存在当前图片,并且可以使用与参考图片或参考图片的一部分的相似性来预测当前图片或当前图片的一部分。当在图8的当前图片中由实线指示的矩形是当前待编码和解码的块时,可以根据参考图片中虚线所指示的矩形来预测当前块。在这种情况下,可能存在指示当前块要参考的块(参考块)的信息,其可以直接用信号发送,或者可以由任何约定来构建以减少信令开销。指示当前块要参考的块的信息可以包括运动矢量。该运动矢量可以是指示在图片中当前块和参考块之间的相对位置的矢量。参考图8,存在参考图片的由虚线指示的部分,并且指示如何将当前块移动到参考图片中要参考的块的矢量可以是运动矢量。即,当当前块根据运动矢量移动时出现的块可以是图8的当前图片中由虚线指示的部分,并且由虚线所指示的部分可以在当前图片中具有与参考图片的参考块的位置相同的位置。
126.此外,指示当前块要参考的块的信息可以包括指示参考图片的信息。指示参考图片的信息可以包括参考图片列表和参考图片索引。参考图片列表是包括参考图片的列表,并且能够使用包括在参考图片列表中的参考图片中的参考块。即,能够根据参考图片列表中包括的参考图片来预测当前块。此外,参考图片索引可以是用于指示要使用的参考图片的索引。
127.图9是图示根据本公开的实施例的用信号发送运动矢量的方法的图。
128.根据本公开的实施例,可以基于运动矢量预测子mvp生成运动矢量mv。例如,运动矢量预测子可以是如下所图示的运动矢量。
129.mv=mvp
130.作为另一示例,运动矢量可以如下基于运动矢量差(mvd)。可以将运动矢量差mvd添加到运动矢量预测子以便于表示准确的运动矢量。
131.mv=mvp mvd
132.此外,在视频编译中,编码器可以将确定的运动矢量信息传送到解码器,并且解码器可以根据接收到的运动矢量信息生成运动矢量并确定预测块。例如,运动矢量信息可以包括关于运动矢量预测子和运动矢量差的信息。在这种情况下,运动矢量信息的分量可以
根据模式而变化。例如,在合并模式下,运动矢量信息可以包括关于运动矢量预测子的信息,但可以不包括运动矢量差。作为另一示例,在高级运动矢量预测(amvp)模式中,运动矢量信息可以包括关于运动矢量预测子的信息并且可以包括运动矢量差。
133.为了确定、传送和接收关于运动矢量预测子的信息,编码器和解码器可以以相同的方式生成运动矢量预测子mvp候选(运动矢量预测子候选)。例如,编码器和解码器可以以相同的顺序生成相同的mvp候选(运动矢量预测子候选)。并且,编码器可以将指示从生成的mvp候选(运动矢量预测子候选)确定的mvp(运动矢量预测子)的索引mvp_lx_flag传送到解码器,并且解码器可以找出基于此索引mvp_lx_flag而确定的mvp(运动矢量预测子)和mv。索引mvp_lx_flag可以包括第零参考图片列表列表0的运动矢量预测子索引mvp_l0_flag和第一参考图片列表列表1的运动矢量预测子索引mvp_l1_flag。将参考图56至59描述接收索引mvp_lx_flag的方法。
134.mvp候选和mvp候选生成方法可以包括空间候选、时间候选等。空间候选可以是位于距当前块的预定位置处的块的运动矢量。例如,空间候选可以是对应于与当前块相邻或不相邻的块或位置的运动矢量。时间候选可以是对应于与当前图片不同的图片中的块的运动矢量。可替选地,mvp候选可以包括仿射运动矢量、atmvp、stmvp、上述运动矢量的组合、上述运动矢量的平均矢量、零运动矢量等。
135.此外,还可以从编码器向解码器传送指示上述参考图片的信息。此外,当对应于mvp候选的参考图片不对应于指示参考图片的信息时,可以执行运动矢量缩放。运动矢量缩放可以是基于当前图片的图片顺序计数(poc)、当前块的参考图片的poc、mvp候选的参考图片的poc以及mvp候选的计算。
136.图10是图示根据本公开的实施例的运动矢量差语法的图。
137.可以通过划分运动矢量差的符号(sign)和绝对值来对运动矢量差进行编译。也就是说,运动矢量差的符号和绝对值可以是不同的语法。此外,可以直接对运动矢量差的绝对值进行编译,但是可以如图10中所图示在包括指示该绝对值是否大于n的标志的情况下被编译。如果绝对值大于n,(绝对值-n)的值可以一起用信号发送。在图10的示例,abs_mvd_greater0_flag可以被传送,并且这个标志可以是指示绝对值是否大于0的标志。如果abs_mvd_greater0_flag指示绝对值不大于0,则可以确定绝对值为0。另外,如果abs_mvd_greater0_flag指示绝对值大于0,则可能存在附加语法。例如可能存在abs_mvd_greater1_flag,并且此标志可以是指示绝对值是否大于1的标志。如果abs_mvd_greater1_flag指示绝对值不大于1,则可以确定绝对值为1。如果abs_mvd_greater1_flag指示绝对值大于1,则可能存在附加语法。例如,可能存在abs_mvd_minus2,其值可能是(绝对值-2)。其指示(绝对值-2),因为通过上述abs_mvd_greater0_flag和abs_mvd_greater1_flag确定了绝对值大于1(2以上)。当abs_mvd_minus2被二值化为可变长度时,其用于以较少比特用信号发送。例如,存在诸如exp-golomb、截断一元化、以及截断莱斯等的可变长度二值化方法。此外,mvd_sign_flag可以是指示运动矢量差的符号的标志。
138.虽然在本实施例中已经通过运动矢量差描述了编译方法,但是除了运动矢量差之外的信息也可以关于符号和绝对值被划分并且绝对值可以用指示是否绝对值大于某个值和通过从绝对值减去某个值而获得的值的标志来进行编译。此外,图10中的[0]和[1]可以表示分量索引。例如,[0]和[1]可以表示x分量和y分量。
[0139]
图11是图示根据本公开的实施例的自适应运动矢量分辨率的信令的图。
[0140]
根据本公开的实施例,指示运动矢量或运动矢量差的分辨率可以变化。换句话说,对运动矢量或运动矢量差进行编译的分辨率可能变化。例如,分辨率可以用像素(像元)来表达。例如,可以以1/4(四分之一)像素、1/2(半)像素、1(整数)像素、2个像素、4个像素等为单位用信号发送运动矢量或运动矢量差。当期望表示16时,可以编译为64(1/4*64=16)以便以1/4为单位执行信令,可以编译为16(1*16=16)以便以1为单位执行信令,并且可以编译为4(4*4=16)以便以4为单位执行信令。即,可以如下确定该值。
[0141]
valuedetermined=分辨率*valueperresolution
[0142]
这里,valuedetermined为要传送的值,并且在本实施例中可以是运动矢量(motion vector)或运动矢量差。此外,valueperresolution可以是通过以[/resolution]为单位表达valuedetermined而获得的值。
[0143]
在这种情况下,如果作为运动矢量或运动矢量差用信号发送的值不能被分辨率整除,则可能通过舍入等来发送不准确的值而非具有最佳预测性能的运动矢量或运动矢量差。当使用高分辨率时,可以减少不准确度,但是因为编译的值大,可能使用很多比特,并且当使用低分辨率时,可能增加不准确度,但是因为编译值小,可以使用更少的比特。
[0144]
还能够以块、cu、切片等为单位不同地设置分辨率。因此,能够自适应地应用分辨率以适合该单位。
[0145]
分辨率可以从编码器用信号发送给解码器。在这种情况下,用于分辨率的信令可以是用上述可变长度二值化的信令。在这种情况下,当以对应于最小值(最前面的值)的索引执行信令时,减少信令开销。
[0146]
在一个实施例中,信令索引可以按照从高分辨率(详细信令)到低分辨率的顺序进行匹配。
[0147]
图11图示用于三种类型的分辨率的信令。在这种情况下,三个信令可以是0、10和11,并且三个信令中的每一个可以对应于分辨率1、分辨率2和分辨率3。当用信号发送分辨率1时信令开销低,因为需要1比特来用信号发送分辨率1,并且需要2个比特来用信号发送其余分辨率。在图11的示例中,分辨率1、分辨率2、分辨率3分别为1/4像元、1像元、4像元。
[0148]
在以下公开中,运动矢量分辨率可以意指运动矢量差的分辨率。
[0149]
图12是图示根据本公开的实施例的自适应运动矢量分辨率的信令的图。
[0150]
如参考图11所描述的,因为用信号发送分辨率所需的比特数可能根据分辨率而变化,所以能够根据情况改变信令方法。例如,取决于情况,用于用信号发送某个分辨率的信令值可能不同。例如,可以取决于情况以不同的顺序匹配信令索引和分辨率。例如,与信令0、10、110、...相对应的分辨率在某种情况下可以分别是分辨率1、分辨率2、分辨率3、...,并且可以在另一种情况下分别是与分辨率1、分辨率2、分辨率3、...不同的顺序。也能够定义两个或更多种情况。
[0151]
参考图12,与0、10和11相对应的分辨率在情况1中可以分别是分辨率1、分辨率2和分辨率3,并且在情况2中可以分别是分辨率2、分辨率1和分辨率3。在这种情况下,可能存在两个或更多种情况。
[0152]
图13是图示根据本公开的实施例的自适应运动矢量分辨率的信令的图。
[0153]
如参考图12所描述的,可以取决于情况不同地用信号发送运动矢量分辨率。例如,
假设存在1/4、1和4像元的分辨率,在一些情况下,参考图11描述的信令可以被使用,并且在一些情况下,可以使用图13(a)或图13(b)中所图示的信令。能够仅存在图11、图13(a)以及图13(b)中的两种情况或所有三种情况。因此,在一些情况下,能够用较少的比特来用信号发送不是最高分辨率的分辨率。
[0154]
图14是图示根据本公开的实施例的自适应运动矢量分辨率的信令的图。
[0155]
根据本公开的实施例,可能的分辨率可以取决于参考图11描述的自适应运动矢量分辨率中的情况而改变。例如,分辨率值可能取决于情况而改变。在一个实施例中,能够在某种情况下使用分辨率1、分辨率2、分辨率3、分辨率4、...当中的分辨率值,并在另一种情况下使用分辨率a、分辨率b、分辨率c、分辨率d、...当中的分辨率值。此外,{分辨率1、分辨率2、分辨率3、分辨率4、...}和{分辨率b、分辨率c、分辨率d、...}之间可能存在非空交集。即,某个分辨率值可以在两种或多种情况下使用,并且在两种或多种情况下,可用分辨率值的集合可能不同。此外,对于每种情况下可用分辨率值的数量可能不同。
[0156]
参考图14,分辨率1、分辨率2和分辨率3能够在情况1中使用,并且分辨率a、分辨率b和分辨率c可以在情况2中使用。例如,分辨率1、分辨率2和分辨率3可以是1/4、1和4像元。此外,例如,分辨率a、分辨率b和分辨率c可以是1/4、1/2和1像元。
[0157]
图15是图示根据本公开的实施例的自适应运动矢量分辨率的信令的图。
[0158]
参考图15,可以根据运动矢量候选或运动矢量预测子候选而使分辨率信令不同。例如,其可能与选择在图12至图14中描述的哪个情况有关,或者与用信号发送的运动矢量或运动矢量预测子是哪个候选有关。使信令不同的方法可以遵循图12至14的方法。
[0159]
例如,可以取决于其位于候选当中的位置而不同地定义情况。可替选地,可以取决于如何构造候选来不同地定义情况。
[0160]
编码器或解码器可以生成包括至少一个mv候选(运动矢量候选)或至少一个mvp候选(运动矢量预测子候选)的候选列表。可能存在mv候选(运动矢量候选)或mvp候选(运动矢量预测子候选)的候选列表中前面的mvp(运动矢量预测子)具有高准确度而在候选列表中在后面的mvp候选(运动矢量预测子候选)具有低准确度的趋势。这可以被设计为使得候选列表中位于前面的候选用更少的比特用信号发送,并且候选列表中在前面的mvp(运动矢量预测子)具有较高的准确度。在本公开的实施例中,如果mvp(运动矢量预测子)的准确度高,表示具有良好的预测性能的运动矢量的运动矢量差(mvd)值可能小,并且如果mvp(运动矢量预测子)的准确度低,则表示具有良好预测性能的运动矢量的mvd(运动矢量差)值可能大。因此,当mvp的准确度低时,能够通过以低分辨率用信号发送来减少表示运动矢量差所需的比特(例如,表示基于分辨率的差值的值)。
[0161]
通过此原理,因为当mvp(运动矢量预测子)准确度低时可以使用低分辨率,根据本公开的实施例,可以承诺根据mvp候选(运动矢量预测子候选)以最少的比特用信号发送不是最高分辨率的分辨率。例如,当1/4、1或4像元的分辨率是可能的时,1或4可以用最少的比特(1比特)用信号发送。参考图15,对于候选1和候选2,高分辨率的1/4像元用最少的比特用信号发送,并且对于在候选1和候选2后面的候选n,用最少的比特用信号发送不是1/4像元的分辨率。
[0162]
图16是图示根据本公开的实施例的自适应运动矢量分辨率的信令的图。
[0163]
如参考图15所描述的,可以取决于所确定的运动矢量或运动矢量预测子是哪个候
选来使运动矢量分辨率信令不同。使信令不同的方法可以遵循图12至图14的方法。
[0164]
参考图16,对于一些候选用最少的比特用信号发送高分辨率,而对于一些候选用最少的比特用信号发送不是高分辨率的分辨率。例如,用最少的比特用信号发送不是高分辨率的分辨率的候选可能是不正确的候选。例如,以最少比特用信号发送不是高分辨率的分辨率的候选可以是时间候选、零运动矢量、非相邻空间候选、根据是否存在细化处理的候选等。
[0165]
时间候选可以是来自另一图片的运动矢量。零运动矢量可以是所有矢量分量都为0的运动矢量。非相邻空间候选可以是从与当前块不相邻的位置参考的运动矢量。细化过程可以是对运动矢量预测子进行细化的过程,例如,可以通过模板匹配、双边匹配等进行细化。
[0166]
根据本公开的实施例,可以在细化运动矢量预测子之后添加运动矢量差。这可以通过使运动矢量预测子准确来减小运动矢量差。在这种情况下,可以针对没有细化过程的候选使运动矢量分辨率信令不同。例如,可以用最少的比特用信号发送不是最高分辨率的分辨率。
[0167]
根据另一个实施例,在将运动矢量差添加到运动矢量预测子之后,可以执行细化过程。在这种情况下,对于具有细化过程的候选,可以使运动矢量分辨率信令不同。例如,可以用最少的比特用信号发送不是最高分辨率的分辨率。这可能是因为,由于将在添加运动矢量差之后执行细化过程,所以即使没有尽可能准确地用信号发送mv差(运动矢量差),也能够通过细化过程来减少预测误差(使得预测误差小)。
[0168]
作为另一示例,当所选择的候选与另一候选相差了特定值或更多时,可以改变运动矢量分辨率信令。
[0169]
在另一个实施例中,取决于所确定的运动矢量或运动矢量预测子是哪个候选,可以使随后的运动矢量细化过程不同。运动矢量细化过程可以是用于找到更准确的运动矢量的过程。例如,运动矢量细化过程可以是从参考点根据设定的约定寻找与当前块匹配的块的过程(例如,模板匹配或双边匹配)。参考点可以是与确定的运动矢量或运动矢量预测子相对应的位置。在这种情况下,从参考点移动的程度可以根据设定的约定而变化,并且使运动矢量细化过程不同可以使从参考点移动的程度不同。例如,对于准确的候选,运动矢量细化过程可以从详细细化过程开始,并且对于不准确的候选,从不太详细的细化过程开始。准确候选和不准确候选可以根据候选列表中的位置或者候选是如何生成的来确定。如何生成候选可能与带来空间候选的位置有关。另外,对此可以参考图16的描述。此外,详细的细化或不太详细的细化可以是从参考点移动一点还是从参考点移动很多时找到匹配块。另外,在大量移动中找到匹配块的情况下,能够从大量移动的同时找到的最匹配块开始移动一点来添加寻找的过程。
[0170]
在另一个实施例中,可以基于当前图片的poc和运动矢量或运动矢量预测子候选的参考图片的poc来改变运动矢量分辨率信令。使信令不同的方法可以遵循图12至14的方法。
[0171]
例如,当当前图片的图片顺序计数(poc)与运动矢量或运动矢量预测子候选的参考图片的poc之间的差较大时,运动矢量或运动矢量预测子可能不准确,并且可以用最少的比特来用信号发送不是高分辨率的分辨率。
[0172]
作为另一示例,可以基于是否需要执行运动矢量缩放来改变运动矢量分辨率信令。例如,当所选择的运动矢量或运动矢量预测子是对其执行运动矢量缩放的候选时,可以用最少的比特用信号发送不是高分辨率的分辨率。执行运动矢量缩放的情况可以是当前块的参考图片和参考候选的参考图片不同的情况。
[0173]
图17是图示根据本公开的实施例的仿射运动预测的图。
[0174]
在如参考图8所描述的常规预测方法中,可以从移动位置开始的块中预测当前块,而无需旋转或缩放。能够从与当前块大小、形状和角度相同的参考块中进行预测。图8只是平移运动模型。然而,实际图像中包含的内容可以具有更复杂的运动,并且如果从各种形状进行预测,可以进一步改进预测性能。
[0175]
参考图17,当前预测的块由当前图片中的实线指示。可以通过参考与当前预测块具有不同形状、大小和角度的块来预测当前块,并且参考块在参考图片中由虚线指示。与参考块的图片中的位置相同的位置由当前图片中的虚线指示。在这种情况下,参考块可以是通过当前块中的仿射变换表示的块。通过这种方式,能够表示拉伸(缩放)、旋转、切变、反射、正交投影等。
[0176]
表示仿射运动和仿射变换的参数的数量可以变化。如果使用更多的参数,则可以比使用更少的参数时表示更多的各种运动,但是存在在信令或计算等中可能会出现开销的可能性。
[0177]
例如,仿射变换可以由6个参数表示。可替选地,仿射变换可以由三个控制点运动矢量表示。
[0178]
图18是图示根据本公开的实施例的仿射运动预测的图。
[0179]
能够使用如图17中的仿射变换来表示复杂的运动,但是为了为此减少信令开销和计算,可以使用更简单的仿射运动预测或仿射变换。通过限制运动,可以进行更简单的仿射运动预测。限制移动可以限制当前块被变换成参考块的形状。
[0180]
参考图18,可以使用v0和v1的控制点运动矢量来执行仿射运动预测。使用两个矢量v0和v1可能相当于使用四个参数。通过两个矢量v0和v1或四个参数,能够指示从其预测当前块的参考块的形状。通过使用这种简单的仿射变换,能够表示块的旋转和缩放(放大/缩小)的运动。参考图18,可以从图18中的虚线指示的位置预测由实线指示的当前块。当前块的每个点(像素)可以通过仿射变换映射到另一个点。
[0181]
图19是图示根据本公开的实施例的运动矢量场的表达式。图18中的控制点运动矢量v0可以是(v_0x,v_0y)并且可以是左上角控制点的运动矢量。此外,控制点运动矢量v1可以是(v_1x,v_1y)并且可以是右上角控制点的运动矢量。在这种情况下,(x,y)位置处的运动矢量(v_x,v_y)可以如图19中所图示。因此,可以根据图19的表达式估计每个像素位置或某个位置的运动矢量,其是基于v0和v1。
[0182]
此外,图19的表达式中的(x,y)可以是块内的相对坐标。例如,(x,y)可以是块的左上位置为(0,0)时的位置。
[0183]
如果v0是图片上位置(x0,y0)的控制点运动矢量并且v1是图片上位置(x1,y1)的控制点运动矢量,如果其旨在使用与v0,v1的位置相同的坐标表示块内的位置(x,y),可以通过分别将图19的表达式中的x和y改为(x-x0)和(y-y0)来表示。此外,w(块的宽度)可以是(x1-x0)。
[0184]
图20是图示根据本公开的实施例的仿射运动预测的图。
[0185]
根据本公开的实施例,可以使用多个控制点运动矢量或多个参数来表示仿射运动。
[0186]
参考图20,可以使用v0、v1和v2的控制点运动矢量来执行仿射运动预测。使用三个矢量v0、v1、v2可能相当于使用六个参数。三个矢量v0、v1和v2或六个参数可以指示从其预测当前块的参考块的形状。参考图20,可以从参考图片中的图20中的虚线指示的位置预测由实线指示的当前块。当前块的每个点(像素)可以通过仿射变换映射到另一个点。
[0187]
图21是图示根据本公开的实施例的运动矢量场的表达式。在图20中,控制点运动矢量v0可以是(mv_0^x,mv_0^y)并且可以是左上角控制点的运动矢量,控制点运动矢量v1可以是(mv_1^x,mv_1^y)并且可以是右上角控制点的运动矢量,并且控制点运动矢量v2可以是(mv_2^x,mv_2^y)并且可以是左下角控制点的运动矢量。在该情况下,(x,y)位置的运动矢量(mv^x,mv^y)可以如图21中所图示。因此,可以根据图21的表达式估计每个像素位置或某个位置的运动矢量,其基于v0、v1和v2。
[0188]
此外,图21的表达式中的(x,y)可以是块内的相对坐标。例如,(x,y)可以是块的左上位置为(0,0)时的位置。因此,如果假设v0是位置(x0,y0)的控制点运动矢量,v1是位置(x1,y1)的控制点运动矢量,并且v2是位置(x2,y2)的控制点运动矢量并且旨在使用与v0、v1和v2的位置相同的坐标来表示(x,y),可以通过分别将图21的表达式中的x和y改为(x-x0)和(y-y0)来表示,此外,w(块的宽度)可以是(x1-x0),并且h(块的高度)可以是(y2-y0)。
[0189]
图22是图示根据本公开的实施例的仿射运动预测的图。
[0190]
如上所述,存在运动矢量场,并且可以为每个像素计算运动矢量,但是为了简单起见,可以在图22中所图示的子块基础上执行仿射变换。例如,图22(a)中的一个小矩形是子块,可以构造子块的代表运动矢量,并且代表运动矢量可以用于子块的像素。此外,如在图17、18、20等中表示的复杂的运动,子块可以通过表示这样的运动来对应于参考块,或者可以通过仅对子块应用平移运动来使其更简单。在图22(a)中,v0、v1和v2可以是控制点运动矢量。
[0191]
在这种情况下,子块的大小可以是m*n,并且m和n可以与图22(b)中所图示的相同。并且,mvpre可以是运动矢量分数准确度。此外,(v_0x,v_0y)、(v_1x,v_1y)和(v_2x,v_2y)可以分别是左上、右上和左下控制点的运动矢量。(v_2x,v_2y)可以是当前块的左下控制点的运动矢量,例如,在4-参数的情况下,可以是通过图19的表达式而计算的左下控制点的mv(运动矢量)。
[0192]
此外,当构造子块的代表运动矢量时,能够使用子块的中心样本位置来计算代表运动矢量。此外,当构造子块的运动矢量时,可以使用准确度高于正常运动矢量的运动矢量,并且为此,可以应用运动补偿内插滤波器。
[0193]
在另一个实施例中,子块的大小是不可变的并且可以固定为特定大小。例如,子块大小可以固定为4*4大小。
[0194]
图23是图示根据本公开的实施例的仿射运动预测的一种模式的图。
[0195]
根据本公开的实施例,可以存在作为仿射运动预测的示例的仿射帧间模式。可能存在指示其是仿射帧间模式的标志。参考图23,在靠近v0和v1的位置a、b、c、d和e处可能存在块,并且分别对应于这些块的运动矢量可以称为va、vb、vc、vd、ve。使用其,能够为以下运
动矢量或运动矢量预测子构造候选列表。
[0196]
{(v0,v1)|v0={va,vb,vc},v1={vd,ve}}
[0197]
即,(v0,vl)对可以用选自va、vb和vc的v0和选自vd和ve的vl构造。在这种情况下,可以根据邻近块的参考的图片顺序计数(poc)、当前cu(当前编译单元;当前块)的参考的poc以及当前cu的poc来缩放运动矢量。当候选列表由与上述相同的运动矢量对构造时,能够用信号发送候选列表的哪个候选被选择以及它是否被选择。此外,如果候选列表没有被充分填充,则能够用其他帧间预测候选填充候选列表。例如,可以使用高级运动矢量预测(amvp)候选来填充。此外,能够用信号发送用于校正的差异,而不是直接使用从候选列表中选择的v0和v1作为仿射运动预测的控制点运动矢量,从而能够构造更好的控制点运动矢量。也就是说,在解码器中,能够使用通过将差添加到从候选列表中选择的v0和v1构造的v0’和v1’作为用于仿射运动预测的控制点运动矢量。
[0198]
在一个实施例中,对于特定大小或更大的编译单元(cu),也能够使用仿射帧间模式。
[0199]
图24是图示根据本公开的实施例的仿射运动预测的一种模式的图。
[0200]
根据本公开的实施例,可以存在仿射合并模式作为仿射运动预测的示例。可能存在指示它是仿射合并模式的标志。在仿射合并模式下,当在当前块周围使用仿射运动预测时,可以从该块或该块周围的运动矢量计算当前块的控制点运动矢量。例如,当检查邻近块是否使用仿射运动预测时,成为候选的邻近块可以如图24(a)中所图示。另外,能够按照a、b、c、d、以及e的顺序检查是否使用仿射运动预测,并且当找到使用仿射运动预测的块时,能够使用块或块周围的运动矢量计算当前块的控制点运动矢量。a、b、c、d和e可以分别是左、上、右上、左下、左上,如图24(a)中所图示。
[0201]
在实施例中,当位置a处的块使用如图24(b)中所图示的仿射运动预测时,可以使用块或块周围的运动矢量计算v0和v1。块周围的运动矢量可以是v2、v3和v4。
[0202]
在前面的实施例中,确定要参考的邻近块的顺序。然而,从特定位置导出的控制点运动矢量的性能并不总是更好。因此,在另一个实施例中,可以用信号发送通过参考位于哪个位置的块来导出控制点运动矢量。例如,按照图24(a)的a、b、c、d、e的顺序确定控制点运动矢量导出的候选位置,并且能够用信号发送要参考的候选位置。
[0203]
在另一个实施例中,当导出控制点运动矢量时,可以通过从每个控制点运动矢量的附近块中获取来增加准确度。例如,参考图24,在导出v0时可以参考左块,并且在导出v1时可以参考上块。可替选地,在导出v0时可以参考a、d或e,并且在导出v1时可以参考b或c。
[0204]
图25是图示根据本公开的实施例的仿射运动预测子导出的图。
[0205]
仿射运动预测可能需要控制点运动矢量,并且可以基于控制点运动矢量计算运动矢量场,即,子块或某一位置的运动矢量。控制点运动矢量可以称为种子矢量。
[0206]
在这种情况下,控制点mv(控制点运动矢量)可以基于预测子。例如,预测子可以是控制点mv(控制点运动矢量)。作为另一示例,可以基于预测子和差来计算控制点mv。具体地,控制点mv(控制点运动矢量)可以通过将差与预测子相加或相减来计算。
[0207]
在这种情况下,在构造控制点mv的预测子的过程中,能够从对其执行仿射运动预测(仿射运动补偿(mc))的邻近块的控制点mv(控制点运动矢量)或mv(运动矢量)来导出。例如,如果与预设位置相对应的块经历仿射运动预测,则可以从该块的控制点mv或mv中导出
用于当前块的仿射运动补偿的预测子。参考图25,预设位置可以是a0、a1、b0、b1和b2。可替选地,预设位置可以包括与当前块相邻的位置和与当前块不相邻的位置。此外,能够参考控制点mv(控制点运动矢量)或预设位置(空间)处的mv(运动矢量),并且能够参考时间控制点mv或预设位置处的mv。
[0208]
仿射运动补偿(mc)的候选可以以与图25的实施例相同的方式构造,并且此候选也可以被称为继承候选。可替选地,这样的候选可以被称为合并候选。另外,当参考图25的方法中的预设位置时,可以按照预设的顺序进行参考。
[0209]
图26是图示根据本公开的实施例的仿射运动预测子导出的图。
[0210]
仿射运动预测可能需要控制点运动矢量,并且运动矢量场,即,子块或某一位置的运动矢量,可以基于控制点运动矢量来计算。控制点运动矢量也可以称为种子矢量。
[0211]
在这种情况下,控制点mv(控制点运动矢量)可以基于预测子。例如,预测子可以是控制点mv(控制点运动矢量)。作为另一示例,可以基于预测子和差来计算控制点mv(控制点运动矢量)。具体地,控制点mv(控制点运动矢量)可以通过将差与预测子相加或相减来计算。
[0212]
在这种情况下,能够在构造控制点mv的预测子的过程中从邻近的mv中导出。在这种情况下,邻近的mv可以包括没有经历仿射运动补偿(mc)的mv(运动矢量)。例如,当导出当前块的每个控制点mv(控制点运动矢量)时,可以将每个控制点mv的预设位置处的mv用作控制点mv的预测子。例如,预设位置可以是包括在与预设位置的部分相邻的块中的部分。
[0213]
参考图26,可以确定控制点mv(控制点运动矢量)mv0、mv1和mv2。在这种情况下,根据本公开的实施例,与预设位置a、b和c相对应的mv(运动矢量)可以用作用于mv0的预测子。此外,与预设位置d和e相对应的mv(运动矢量)可以用作用于mv1的预测子。与预设位置f和g相对应的mv(运动矢量)可以用作用于mv2的预测子。
[0214]
此外,当根据图26的实施例确定控制点mv(控制点运动矢量)mv0、mv1和mv2的每个预测子时,可以确定参考每个控制点位置的预设位置的顺序。此外,对于每个控制点,可以存在多个被参考为控制点mv的预测子的预设位置,并且可以确定预设位置的可能组合。
[0215]
仿射mc(仿射运动补偿)的候选可以以与图26的实施例中相同的方式构造,并且此候选也可以称为构造的候选。可替选地,此候选可以被称为帧间候选或虚拟候选。另外,当参考图41的方法中的预设位置时,可以按照预设的顺序进行参考。
[0216]
根据本公开的实施例,使用参考图23至图26描述的实施例或其组合,可以生成仿射mc(仿射运动补偿)的候选列表或仿射mc(仿射运动补偿)的控制点mv候选列表。
[0217]
图27是图示根据本公开的实施例的仿射运动预测子导出的图。
[0218]
如参考图24至图25所描述的,用于当前块的仿射运动预测的控制点mv(控制点运动矢量)可以从经历仿射运动预测的邻近块导出。在这种情况下,可以使用与图27相同的方法。在图27的表达式中,经历仿射运动预测的邻近块的左上、右上和左下的mv或控制点mv(运动矢量)分别为(v_e0x,v_e0y)、(v_e1x,v_e1y)、和(v_e2x,v_e2y)。此外,经历仿射运动预测的邻近块的左上、右上和左下的坐标可以分别是(x_e0,y_e0)、(x_e1,y_e1)和(x_e2,y_e2)。在这种情况下,可以根据27来计算作为当前块的控制点mv(控制点运动矢量)的预测子或控制点mv(控制点运动矢量)的(v_0x,v_0y)和(v_1x,v_1y)。
[0219]
图28是图示根据本公开的实施例的仿射运动预测子导出的图。
[0220]
如上所述,仿射运动补偿可能需要多个控制运动mv(控制点运动矢量)或多个控制点mv预测子(控制点运动矢量预测子)。在这种情况下,可以从某个控制运动mv(控制点运动矢量)或控制点mv预测子(控制点运动矢量预测子)导出另一个控制运动mv(控制点运动矢量)或控制点mv预测子(控制点运动矢量预测子)。
[0221]
例如,当通过前面附图中描述的方法构造两个控制点mv(控制点运动矢量)或两个控制点mv预测子(控制点运动矢量预测子)时,可以基于此生成另一个控制点mv(控制点运动矢量)或另一个控制点mv预测子(控制点运动矢量预测子)。
[0222]
参考图28,图示了生成作为左上、右上和左下的控制点mv预测子(控制点运动矢量预测子)或控制点mv(控制点运动矢量)的mv0、mv1和mv2的方法。在附图中,x和y分别代表x分量和y分量,并且当前块大小可以是w*h。
[0223]
图29是图示根据本公开的实施例的生成控制点运动矢量的方法的图。
[0224]
根据本公开的实施例,能够通过构造控制点mv(控制点运动矢量)的预测子以便于对当前块执行仿射mc(仿射运动补偿)并对其添加差来确定控制点mv(控制点运动矢量)。根据实施例,能够通过参考图23至图26描述的方法来构造控制点mv的预测子。差可以从编码器用信号发送到解码器。
[0225]
参考图29,可能存在控制点mv(控制点运动矢量)的差。此外,可以分别用信号发送控制点mv(控制点运动矢量)的差。图29(a)图示确定作为4参数模型的控制点mv的mv0和mv1的方法,并且图29(b)图示确定作为6参数模型的控制点mv的mv0、mv1和mv2的方法。通过将作为控制点mv(控制点运动矢量)的差的mvd0、mvd1和mvd2添加到预测子来确定控制点mv(控制点运动矢量)。
[0226]
通过图29中的上横线指示的术语可以是控制点mv(控制点运动矢量)的预测子。
[0227]
图30是图示通过参考图29描述的方法确定运动矢量差的方法的图。
[0228]
作为实施例,可以通过参考图10描述的方法用信号发送运动矢量差。并且,由用信号发送的方法确定的运动矢量差可以是图30的lmvd。而且,诸如在图29中用信号发送的运动矢量差mvd的值,即,诸如mvd0、mvd1、mvd2的值可以是图30中的lmvd。如参考图29所述,可以将用信号发送的mvd(运动矢量差)确定为与控制点mv(控制点运动矢量)的预测子的差,并且确定的差可以是图30的mvdl0和mvdl1。l0可以指示参考列表0(第零参考图片列表),并且l1可以指示参考列表1(第一参考图片列表)。compidx是分量索引,并且可以指示x、y分量等。
[0229]
图31是图示根据本公开的实施例的生成控制点运动矢量的方法的图。
[0230]
根据本公开的实施例,能够通过构造控制点mv的预测子以便于对当前块执行仿射mc(仿射运动补偿)并对其添加差来确定控制点mv(控制点运动矢量)。根据实施例,能够通过参考图23至26描述的方法来构造控制点mv(控制点运动矢量)的预测子。差可以从编码器用信号发送到解码器。
[0231]
参考图31,可以存在针对每个控制点mv(控制点运动矢量)的差的预测子。例如,可以基于某个控制点mv(控制点运动矢量)的差来确定另一个控制点mv(控制点运动矢量)的差。这可以基于控制点mv(控制点运动矢量)的差之间的相似性。因为差相似,因此如果确定了预测子,则能够与预测子产生微小的差。在这种情况下,可以用信号发送控制点mv(控制点运动矢量)的差预测子,并且可以用信号发送与控制点mv(控制点运动矢量)的差预测子
的差。
[0232]
图31(a)图示确定作为4参数模型的控制点mv(控制点运动矢量)的mv0和mv1的方法,并且图31(a)图示确定作为6参数模型的控制点mv(控制点运动矢量)的mv0、mv1和mv2的方法。
[0233]
参考图31,对于每个控制点mv的差,基于作为控制点mv 0的mv0的差mvd0来确定控制点mv的差和控制点mv。图31中图示的mvd0、mvd1和mvd2可以从编码器用信号发送给解码器。与参考图29描述的方法相比,在图31的方法中,即使与图29中的那些相同的mv0、mv1和mv2和相同的预测子被使用,用信号发送的mvd1和mvd2的值也可能不同。如果与控制点mvmv0、mv1和mv2的预测子的差相似,则当使用图31的方法时,存在mvd1和mvd2的绝对值小于图29的方法时的可能性,并且因此可以减少mvd1和mvd2的信令开销。参考图31,与mv1的预测子的差可以确定为(mvd1 mvd0),并且与mv2的预测子的差可以确定为(mvd2 mvd0)。
[0234]
通过图31中的上横线指示的术语可以是控制点mv的预测子。
[0235]
图32是图示通过参考图31描述的方法确定运动矢量差的方法的图。
[0236]
作为实施例,可以通过参考图10或者图33描述的方法用信号发送运动矢量差。此外,基于用信号发送的参数确定的运动矢量差可以是图32的lmvd。此外,在图31中用信号发送的mvd,即,诸如mvd0、mvd1、mvd2的值可以是图32中的lmvd。
[0237]
图32的mvdlx可以是每个控制点mv(控制点运动矢量)和预测子之间的差。也就是说,其可以是(mv-mvp)。在这种情况下,如参考图31所描述的,对于控制点mv 0mv_0,用信号发送的运动矢量差可以直接用于控制点mv的差mvdlx,并且对于其他控制点mv(mv_1,mv_2),可以基于用信号发送的运动矢量差(图31中的mvd1和mvd2)和对于控制点mv 0mv_0用信号发送的运动矢量差(图31中的mvd0)来确定和使用作为控制点mv的差的mvdlx。
[0238]
图32中的lx可以指示参考列表x(参考图片列表x)。compidx是分量索引,并且可以指示x、y分量等。cpidx可以指示控制点索引。cpidx可以意指图31中所图示的0、1或0、1、2。
[0239]
可以考虑在图10、图12、图13等等中所图示的值中的运动矢量差的分辨率。例如,当分辨率为r时,lmvd*r的值可以用于附图中的lmvd。
[0240]
图33是图示根据本公开的实施例的运动矢量差语法的图。
[0241]
参考图33,可以以与参考图10描述的方式类似的方式对运动矢量差进行编译。在这种情况下,可以根据控制点索引cpidx单独进行编译。
[0242]
图34是图示根据本公开的实施例的较高级别信令结构的图。
[0243]
根据本公开的实施例,可以存在一个或多个较高级别信令。较高级别信令可能意指较高级别处的信令。较高级别可以是包括任何单元的单元。例如,当前块或当前编译单元的较高级别可以包括ctu、切片、图块、图块组、图片、序列等。较高级别信令可以影响相应较高级别的较低级别。例如,如果较高级别是序列,则可能会影响作为序列的较低级别的ctu、切片、图块、图块组和图片单元。这里,影响是较高级别信令影响较低级别的编码或解码。
[0244]
此外,较高级别信令可以包括指示可以使用哪种模式的信令。参考图34,较高级别信令可以包括sps_modex_enabled_flag。根据实施例,可以基于sps_modex_enabled_flag来确定是否可以使用模式modex。例如,当sps_modex_enabled_flag为某个值时,可能不使用模式modex。此外,当sps_modex_enabled_flag是任何其他值时,也能够使用模式modex。此外,当sps_modex_enabled_flag为任何其他值时,可以基于附加信令判断是否使用模式
modex。例如,某个值可以是0,并且其他值可以是1。然而,本公开不限于此,并且某个值可以是1,并且其他值可以是0。
[0245]
根据本公开的实施例,可以存在指示是否可以使用仿射运动补偿的信令。例如,此信令可以是较高级别信令。参考图34,此信令可以是sps_affine_enabled_flag(仿射启用标志)。参考图2和图7,信令可以意指通过比特流从编码器传送到解码器的信号。解码器可以从比特流中解析仿射启用标志。
[0246]
例如,如果sps_affine_enabled_flag(仿射启用标志)为0,则可以限制语法使得不使用仿射运动补偿。此外,当sps_affine_enabled_flag(仿射启用标志)为0时,inter_affine_flag(帧间仿射标志)和cu_affine_type_flag(编译单元仿射类型标志)可能不存在。
[0247]
例如,inter_affine_flag(帧间仿射标志)可以是指示在块中是否使用仿射mc(仿射运动补偿)的信令。参考图2和图7,信令可以意指通过比特流从编码器传送到解码器的信号。解码器可以从比特流中解析inter_affine_flag(帧间仿射标志)。
[0248]
此外,cu_affine_type_flag(编译单元仿射类型标志)可以是指示在块中使用哪种类型的仿射mc(仿射运动补偿)的信令。此外,在这里,类型可以指示其是4参数仿射模型还是6参数仿射模型。此外,当sps_affine_enabled_flag(仿射启用标志)为1时,能够使用仿射运动补偿。
[0249]
仿射运动补偿可以意指基于仿射模型的运动补偿或用于帧间预测的基于仿射模型的运动补偿。
[0250]
此外,根据本公开的实施例,可以存在指示可以使用哪种模式的特定类型的信令。例如,可以存在指示是否可以使用特定类型的仿射运动补偿的信令。例如,此信令可以是较高级别信令。参考图34,此信令可以是sps_affine_type_flag。此外,特定类型可能意指6参数仿射模型。例如,如果sps_affine_type_flag为0,则可以限制语法,使得不使用6参数仿射模型。此外,当sps_affine_type_flag为0时,cu_affine_type_flag可能不存在。此外,如果sps_affine_type_flag为1,则可以使用6参数仿射模型。如果sps_affine_type_flag不存在,则可以推断其值等于0。
[0251]
此外,根据本公开的实施例,当存在指示可以使用某种模式的信令时,可以存在指示可以使用某种模式的特定类型的信令。例如,当指示是否可以使用某种模式的信令值为1时,能够解析指示是否可以使用某种模式的特定类型的信令。例如,当指示是否可以使用某种模式的信令值为0时,能够不解析指示是否可以使用某种模式的特定类型的信令。例如,指示是否可以使用某种模式的信令可以包括sps_affine_enabled_flag(仿射启用标志)。此外,指示可以使用某种模式的特定类型的信令可以包括sps_affine_type_flag(仿射启用标志)。参考图34,当sps_affine_enabled_flag(仿射启用标志)为1时,能够解析sps_affine_type_flag。另外,当sps_affine_enabled_flag(仿射启用标志)为0时,可以不解析sps_affine_type_flag,并且能够推断其值为0。
[0252]
此外,能够使用如上所述的自适应运动矢量分辨率(amvr)。能够取决于情况不同地使用amvr的分辨率集。例如,能够根据预测模式不同地使用amvr的分辨率集。例如,当使用诸如amvp的常规帧间预测时并且当使用仿射mc(仿射运动补偿)时,amvr分辨率集可能不同。此外,应用于诸如amvp的常规帧间预测的amvr可以应用于运动矢量差。可替选地,应用
于诸如高级运动矢量预测(amvp)的常规帧间预测的amvr可应用于运动矢量预测子。此外,应用于仿射mc(仿射运动补偿)的amvr可以应用于控制点运动矢量或控制点运动矢量差。
[0253]
此外,根据本公开的实施例,可以存在指示是否可以使用amvr的信令。此信令可以是较高级别信令。参考图34,sps_amvr_enabled_flag(amvr启用标志)可能存在。参考图2和图7,信令可以意指通过比特流从编码器传送到解码器的信号。解码器可以从比特流中解析amvr启用标志。
[0254]
根据本公开的实施例的sps_amvr_enabled_flag(amvr启用标志)可以指示是否使用自适应运动矢量差分分辨率。此外,根据本公开的实施例的sps_amvr_enabled_flag(amvr启用标志)可以指示是否可以使用自适应运动矢量差分分辨率。例如,根据本公开的实施例,当sps_amvr_enabled_flag(amvr启用标志)为1时,amvr可用于运动矢量编译。此外,根据本公开的实施例,当sps_amvr_enabled_flag(amvr启用标志)为1时,amvr可以被用于运动矢量编译。此外,当sps_amvr_enabled_flag(amvr启用标志)为1时,可能存在用于指示使用哪种分辨率的附加信令。此外,当sps_amvr_enabled_flag(amvr启用标志)为0时,amvr可能不用于运动矢量编译。此外,当sps_amvr_enabled_flag(amvr启用标志)为0时,amvr可能无法用于运动矢量编译。根据本公开的实施例,与sps_amvr_enabled_flag(amvr启用标志)相对应的amvr可以意指其用于常规帧间预测。例如,与sps_amvr_enabled_flag(amvr启用标志)相对应的amvr可能并不意指其被用于仿射mc。此外,可以通过inter_affine_flag(帧间仿射标志)指示是否使用仿射mc(仿射运动补偿)。即,与sps_amvr_enabled_flag(amvr启用标志)相对应的amvr意指当inter_affine_flag(帧间仿射标志)为0时使用,或者可能不意指当inter_affine_flag(帧间仿射标志)为1时使用。
[0255]
此外,根据本公开的实施例,可以存在指示amvr是否可以用于仿射mc(仿射运动补偿)的信令。此信令可以是较高级别信令。参考图34,可以存在指示amvr是否可以用于仿射mc(仿射运动补偿)的信令sps_affine_amvr_enabled_flag(仿射amvr启用标志)。参考图2和图7,信令可以意指通过比特流从编码器传送到解码器的信号。解码器可以从比特流中解析仿射amvr启用标志。
[0256]
sps_affine_amvr_enabled_flag(仿射amvr启用标志)可以指示自适应运动矢量差分分辨率是否用于仿射运动补偿。此外,sps_affine_amvr_enabled_flag(仿射amvr启用标志)可以指示自适应运动矢量差分分辨率是否可用于仿射运动补偿。根据实施例,当sps_affine_amvr_enabled_flag(仿射amvr启用标志)为1时,对于amvr来说能够被用于仿射帧间模式运动矢量编译。此外,当sps_affine_amvr_enabled_flag(仿射amvr启用标志)为1时,amvr可用于仿射帧间模式运动矢量编译。此外,当sps_affine_amvr_enabled_flag(仿射amvr启用标志)为0时,对于amvr来说无法被用于仿射帧间模式运动矢量编译。当sps_affine_amvr_enabled_flag(仿射amvr启用标志)为0时,amvr可能不用于仿射帧间模式运动矢量编译。
[0257]
例如,当sps_affine_amvr_enabled_flag(仿射amvr启用标志)为1时,能够使用对应于inter_affine_flag(帧间仿射标志)为1情况的amvr。此外,当sps_affine_amvr_enabled_flag(仿射amvr启用标志)为1时,可能存在用于指示使用哪种分辨率的附加信令。此外,当sps_affine_amvr_enabled_flag(仿射amvr启用标志)为0时,对应于inter_affine_flag(帧间仿射标志)为1的情况的amvr可能无法用于仿射帧间模式运动矢量编译。
[0258]
图35是图示根据本公开的实施例的编译单元语法结构的图。
[0259]
如参考图34所描述的,可以存在用于基于使用amvr的较高级别信令来指示分辨率的附加信令。参考图34,用于指示分辨率的附加信令可以包括amvr_flag或amvr_precision_flag。amvr_flag或amvr_precision_flag可以是关于运动矢量差的分辨率的信息。
[0260]
根据实施例,可以存在当amvr_flag为0时指示的信令。此外,当amvr_flag为1时,可能存在amvr_precision_flag。此外,当amvr_flag为1时,也可以基于amvr_precision_flag确定分辨率。例如,如果amvr_flag为0,则可能是1/4分辨率。此外,如果amvr_flag不存在,则可以基于cupredmode推断amvr_flag值。例如,当cupredmode为mode_ibc时,可以推断amvr_flag值等于1,而当cupredmode不是mode_ibc或者cupredmode(编译单元预测模式)为mode_inter时,可以推断amvr_flag值等于0。
[0261]
此外,当inter_affine_flag为0并且amvr_precision_flag为0时,可以使用1像元分辨率。此外,当inter_affine_flag为1且amvr_precision_flag为0时,可以使用1/16像元分辨率。此外,当inter_affine_flag为0且amvr_precision_flag为1时,可以使用4像元分辨率。此外,当inter_affine_flag为1且amvr_precision_flag为1时,可以使用1像元分辨率。
[0262]
如果amvr_precision_flag为0,则可以推断其值等于0。
[0263]
根据实施例,分辨率可以通过mvshift值来应用。此外,mvshift可以由amvr_flag和amvr_precision_flag确定,它们是关于运动矢量差的分辨率的信息。例如,当inter_affine_flag为0时,可以如下确定mvshift值。
[0264]
mvshift=(amvr_flag amvr_precision_flag)《《1
[0265]
此外,可以基于mvshift值来移位运动矢量差mvd值。例如,mvd(运动矢量差)可以如下移位,并且因此,可以应用amvr的分辨率。
[0266]
mvdlx=mvdlx《《(mvshift 2)
[0267]
作为另一示例,当inter_affine_flag(帧间仿射标志)为1时,mvshift值可以如下确定。
[0268]
mvshift=amvr_precision_flag?(amvr_precision_flag《《1):(-(amvr_flag《《1))
[0269]
此外,控制点运动矢量差mvdcp值可以基于mvshift值进行移位。mvdcp可以是控制点运动矢量差或控制点运动矢量。例如,mvdcp(控制点运动矢量差)如下移位,并且因此,可以应用amvr的分辨率。
[0270]
mvdcplx=mvdcplx《《(mvshift 2)
[0271]
此外,mvd或mvdcp可以是由mvd_coding用信号发送的值。
[0272]
参考图35,当cupredmode是mode_ibc时,作为关于运动矢量差的分辨率的信息的amvr_flag可能不存在。此外,当cupredmode为mode_inter时,可能存在作为关于运动矢量差的分辨率的信息的amvr_flag,并且在这种情况下,如果满足某种条件则能够解析amvr_flag。
[0273]
根据本公开的实施例,可以基于指示是否可以使用amvr的较高级别信令值来确定是否解析amvr相关语法元素。例如,当指示是否可以使用amvr的较高级别信令值为1时,能
够解析amvr相关语法元素。此外,当指示是否可以使用amvr的较高级别信令值为0时,可以不解析amvr相关语法元素。参考图35,当cupredmode为mode_ibc且sps_amvr_enabled_flag(amvr启用标志)为0时,作为关于运动矢量差的分辨率的信息的amvr_precision_flag可能不被解析。另外,当cupredmode为mode_ibc且sps_amvr_enabled_flag(amvr启用标志)为1时,可以解析作为关于运动矢量差的分辨率的信息的amvr_precision_flag。在这种情况下,可以考虑附加的解析条件。
[0274]
例如,当mvdlx(多个运动矢量差)值当中存在至少一个非零值时,可以解析amvr_precision_flag。mvdlx可以是参考列表lx的mvd值。此外,可以通过mvd_coding用信号发送mvd(运动矢量差)。lx可以包括l0(第零参考图片列表)和l1(第一参考图片列表)。此外,在mvdlx中,可以存在对应于x轴和y轴中的每一个的分量。例如,x轴可以对应于图片的横轴,并且y轴可以对应于图片的纵轴。参考图35,可以指示mvdlx[x0][y0][0]和mvdlx[x0][y0]中的[0]和[1]分别用于x轴和y轴分量。此外,当cupredmode为mode_ibc时,能够仅使用l0。参考图35,当1)sps_amvr_enabled_flag为1和2)mvdl0[x0][y0][0]或mvdl0[x0][y0][1]不为0时,可以解析amvr_precision_flag。此外,当1)sps_amvr_enabled_flag为0或2)mvdl0[x0][y0][0]和mvdl0[x0][y0][1]均为0时,可能不解析amvr_precision_flag。
[0275]
此外,可能存在cupredmode不是mode_ibc的情况。在这种情况下,参考图35,当sps_amvr_enabled_flag为1,inter_affine_flag(帧间仿射标志)为0,并且mvdlx(多个运动矢量差)值当中至少存在一个非零值时,可以解析amvr_flag。这里,amvr_flag可以是关于运动矢量差的分辨率的信息。此外,如已经描述的,sps_amvr_enabled_flag(amvr启用标志)为1可以指示自适应运动矢量差分分辨率的使用。此外,inter_affine_flag(帧间仿射标志)为0可以指示仿射运动补偿不被用于当前块。此外,如参考图34所描述的,可以基于关于诸如amvr_flag的运动矢量差的分辨率的信息来校正当前块的多个运动矢量差。此条件可以被称为条件a。
[0276]
此外,当sps_affine_amvr_enabled_flag(仿射amvr启用标志)为1,inter_affine_flag(帧间仿射标志)为1,并且在mvdcplx(多个控制运动矢量差)值中存在至少一个非零值时,可以解析amvr_flag。这里,amvr_flag可以是关于运动矢量差的分辨率的信息。此外,如已经描述的,sps_affine_amvr_enabled_flag(仿射amvr启用标志)为1可以指示自适应运动矢量差分分辨率可以用于仿射运动补偿。此外,inter_affine_flag(帧间仿射标志)为1可以指示对当前块使用仿射运动补偿。此外,如参考图34所描述的,可以基于关于诸如amvr_flag的运动矢量差的分辨率的信息来校正当前块的多个控制点运动矢量差。这个条件可以称为条件b。
[0277]
此外,如果满足条件a或条件b,则可以解析amvr_flag。此外,如果不满足条件a和条件b,则可能不解析作为关于运动矢量差的分辨率的信息的amvr_flag。即,当1)sps_amvr_enabled_flag(amvr启用标志)为0,inter_affine_flag(帧间仿射标志)为1,或mvdlx(多个运动矢量差)全为0,并且2)sps_affine_amvr_enabled_flag为0时,inter_affine_flag(帧间仿射标志)为0,或者mvdcplx(多个控制点运动矢量差)值都为0,amvr_flag可能不被解析。
[0278]
也能够基于amvr_flag值来确定是否解析amvr_precision_flag。例如,当amvr_flag值为1时,可以解析amvr_precision_flag。此外,当amvr_flag值为0时,可能不会解析
amvr_precision_flag。
[0279]
此外,mvdcplx(多个控制运动矢量差)可以意指用于控制点运动矢量的差。此外,mvdcplx(多个控制运动矢量差)可以通过mvd_coding用信号发送。lx可以包括l0(第零参考图片列表)和l1(第一参考图片列表)。此外,在mvdcplx中,可能存在对应于控制点运动矢量0、1、2等的分量。例如,控制点运动矢量0、1、2等可以是基于当前块的对应于预设位置的控制点运动矢量。
[0280]
参考图35,可以指示mvdcplx[x0][y0][0][]、mvdcplx[x0][y0][1][]、以及mvdcplx[x0][y0][2][]中的[0]、[1]、[2]分别对应控制点运动矢量0、1、2。此外,对应于控制点运动矢量0的mvdcplx(多个控制点运动矢量差)值可以用于其他控制点运动矢量。例如,可以使用控制点运动矢量0,如图47中使用的那样。此外,在mvdcplx(多个控制点运动矢量差)中,可能存在分别对应于x轴和y轴的分量。例如,x轴可以对应于图片的横轴,并且y轴可以对应于图片的纵轴。参考图35,可能指示在mvdcplx[x0][y0][][0]和mvdcplx[x0][y0][][1]中的[0]和[1]分别为x轴和y轴分量。
[0281]
图36是图示根据本公开的实施例的较高级别信令结构的图。
[0282]
如参考图34至图35所描述的较高级别信令可以存在。例如,可能存在sps_affine_enabled_flag(仿射启用标志)、sps_affine_amvr_enabled_flag、sps_amvr_enabled_flag(amvr启用标志)、sps_affine_type_flag等。
[0283]
根据本公开的实施例,上述较高级别信令可以具有解析依赖性。例如,可以基于哪个较高级别信令值来确定是否解析其他较高级别信令。
[0284]
根据本公开的实施例,可以基于是否可以使用仿射mc(仿射运动补偿)来确定是否可以使用仿射amvr。例如,可以基于指示是否可以使用仿射mc的较高级别信令来确定是否可以使用仿射amvr。更具体地,可以基于指示是否可以使用仿射mc的较高级别信令来确定是否解析指示是否可以使用仿射amvr的较高级别信令。
[0285]
在一个实施例中,当可以使用仿射mc时,可以使用仿射amvr。此外,当无法使用仿射mc时,仿射amvr可能不可使用。
[0286]
更具体地,如果指示是否可以使用仿射mc的较高级别信令是1,则仿射amvr可能是可用的。在这种情况下,可能存在附加信令。此外,当指示是否可以使用仿射mc的高级信令为0时,仿射amvr可能不可用。例如,当指示是否可以使用仿射mc的较高级别信令为1时,可以解析指示是否可以使用仿射amvr的高级信令。此外,当指示是否可以使用仿射mc的高级信令为0时,可以不解析指示是否可以使用仿射amvr的较高级别信令。此外,当指示是否可以使用仿射amvr的较高级别信令不存在时,可以推断其值。例如,可以推断该值等于0。作为另一示例,可以基于指示是否可以使用仿射mc的较高级别信令来推断。作为另一示例,可以基于指示是否可以使用amvr的较高级别信令来推断。
[0287]
根据实施例,仿射amvr可以是用于参考图34至35描述的仿射mc的amvr。例如,指示是否可以使用仿射mc的高级信令可以是sps_affine_enabled_flag(仿射启用标志)。此外,指示是否可以使用仿射amvr的较高级别信令可以是sps_affine_amvr_enabled_flag。
[0288]
参考图36,当sps_affine_enabled_flag(仿射启用标志)为1时,可以解析sps_affine_amvr_enabled_flag。此外,当sps_affine_enabled_flag(仿射启用标志)为0时,可能不会解析sps_affine_amvr_enabled_flag。此外,当sps_affine_amvr_enabled_flag不
存在时,可以推断其值等于0。
[0289]
这可能是因为,在本公开的实施例中,当使用仿射mc时仿射amvr可能是有意义的。
[0290]
图37是图示根据本公开的实施例的较高级别信令结构的图。
[0291]
如参考图34至图35所描述的较高级别信令可能存在。例如,sps_affine_enabled_flag(仿射启用标志)、sps_affine_amvr_enabled_flag(仿射amvr启用标志)、sps_amvr_enabled_flag(amvr启用标志)、sps_affine_type_flag等可能存在。
[0292]
根据本公开的实施例,较高级别信令可以具有解析依赖性。例如,可以基于某个较高级别信令值来确定是否解析其他较高级别信令。
[0293]
根据本公开的实施例,能够基于是否可以使用amvr来确定是否可以使用仿射amvr。例如,可以基于指示是否可以使用amvr的较高级别信令来确定是否可以使用仿射amvr。更具体地,能够基于指示是否可以使用amvr的较高级别信令来确定是否解析指示是否可以使用仿射amvr的较高级别信令。
[0294]
在一个实施例中,当可以使用amvr时,能够使用仿射amvr。此外,当无法使用amvr时,可能无法使用仿射amvr。
[0295]
更具体地,当指示是否可以使用amvr的较高级别信令是1时,可以使用仿射amvr。在这种情况下,可能存在附加信令。此外,当指示是否可以使用amvr的较高级别信令为0时,仿射amvr可能不可用。例如,当指示是否可以使用amvr的较高级别信令为1时,可以解析指示是否可以使用仿射amvr的高级别信令。此外,当指示是否可以使用amvr的高级别信令为0时,可以不解析指示是否可以使用仿射amvr的较高级别信令。此外,如果不存在指示是否可以使用仿射amvr的较高级别信令,则可以推断其值。例如,可以推断该值等于0。作为另一示例,可以基于指示是否可以使用仿射mc的较高级别信令来推断。作为另一个示例,可以基于指示是否可以使用amvr的较高级别信令来推断。
[0296]
根据实施例,仿射amvr可以是用于参考图34至35描述的仿射mc(仿射运动补偿)的amvr。例如,指示是否可以使用amvr的高级别信令可以是sps_amvr_enabled_flag(amvr启用标志)。此外,指示是否可以使用仿射amvr的较高级别信令可以是sps_affine_amvr_enabled_flag(仿射amvr启用标志)。
[0297]
参考图37(a),当sps_amvr_enabled_flag(amvr启用标志)为1时,可以解析sps_affine_amvr_enabled_flag(仿射amvr启用标志)。另外,当sps_amvr_enabled_flag(amvr启用标志)为0时,sps_affine_amvr_enabled_flag(仿射amvr启用标志)可能不被解析。此外,当sps_affine_amvr_enabled_flag(仿射amvr启用标志)不存在时,可以推断其值等于0。
[0298]
这可能是因为,在本公开的实施例中,自适应分辨率是否有效可以根据序列而变化。
[0299]
此外,可以通过考虑是否可以使用仿射mc和是否可以使用amvr两者来确定是否可以使用仿射amvr。例如,能够基于指示是否可以使用仿射mc的较高级别信令和指示是否可以使用amvr的较高级别信令来确定是否解析指示是否可以使用仿射amvr的较高级别信令。根据实施例,当指示是否可以使用仿射mc的较高级别信令和指示是否可以使用amvr的较高级别信令都为1时,可以解析指示是否可以使用仿射amvr的较高级别信令。此外,当指示是否可以使用仿射mc的较高级别信令或指示是否可以使用amvr的较高级别信令为0时,可以
不解析指示是否可以使用仿射amvr的较高级别信令。此外,如果不存在指示是否可以使用仿射amvr的较高级别信令,则可以推断其值。
[0300]
参考图37(b),当sps_affine_enabled_flag(仿射启用标志)和sps_amvr_enabled_flag(amvr启用标志)都为1时,sps_affine_amvr_enabled_flag(仿射amvr启用标志)可以被解析。此外,当sps_affine_enabled_flag(仿射启用标志)和sps_amvr_enabled_flag(amvr启用标志)中的至少一个为0时,sps_affine_amvr_enabled_flag(仿射amvr启用标志)可能不被解析。此外,当sps_affine_amvr_enabled_flag(仿射amvr启用标志)不存在时,可以推断该值等于0。
[0301]
更具体地,参考图37(b),可以在行3701处基于sps_affine_enabled_flag(仿射启用标志)确定是否可以使用仿射运动补偿。如参考图34至35所已经描述的,当sps_affine_enabled_flag(仿射启用标志)为1时,可能意指可以使用仿射运动补偿。此外,当sps_affine_enabled_flag(仿射启用标志)为0时,可能意指无法使用仿射运动补偿。
[0302]
当在图37(b)的行3701处确定使用仿射运动补偿时,可以在行3702处基于sps_amvr_enabled_flag(amvr启用标志)确定是否使用自适应运动矢量差分分辨率。如参考图34至35已经所描述的,当sps_amvr_enabled_flag(amvr启用标志)为1时,可能意指使用自适应运动矢量差分分辨率。当sps_amvr_enabled_flag(amvr启用标志)为0时,可能意指不使用自适应运动矢量差分分辨率。
[0303]
当在行3701处确定不使用仿射运动补偿时,可以不基于sps_amvr_enabled_flag(amvr启用标志)来确定是否使用自适应运动矢量差分分辨率。即,图37(b)的行3702可能不被执行。具体地,当不使用仿射运动补偿时,sps_affine_amvr_enabled_flag(仿射amvr启用标志)可以不从编码器传送到解码器。即,解码器可能不会接收到sps_affine_amvr_enabled_flag(仿射amvr启用标志),并且sps_affine_amvr_enabled_flag(仿射amvr启用标志)可能不被解码器解析。在这种情况下,因为sps_affine_amvr_enabled_flag(仿射amvr启用标志)不存在,可以推断为等于0。如已经描述的,当sps_affine_amvr_enabled_flag(仿射amvr启用标志)为0时,可能指示自适应运动矢量差分分辨率不能用于仿射运动补偿。
[0304]
当在图37(b)的行3702处确定使用自适应运动矢量差分分辨率时,可以在行3703处从比特流中解析指示自适应运动矢量差分分辨率是否可以用于仿射运动补偿的sps_affine_amvr_enabled_flag。
[0305]
当在行3702处确定不使用自适应运动矢量差分分辨率时,可以不从比特流中解析sps_affine_amvr_enabled_flag(仿射amvr启用标志)。即,图37(b)的行3703可以不被执行。更具体地,当使用仿射运动补偿并且不使用自适应运动矢量差分分辨率时,sps_affine_amvr_enabled_flag(仿射amvr启用标志)可以不从编码器传送到解码器。也就是说,解码器可能不会接收sps_affine_amvr_enabled_flag(仿射amvr启用标志)。解码器可能不从比特流中解析sps_affine_amvr_enabled_flag(仿射amvr启用标志)。在这种情况下,因为sps_affine_amvr_enabled_flag(仿射amvr启用标志)不存在,可以推断其等于0。如已经描述的,当sps_affine_amvr_enabled_flag(仿射amvr启用标志)为0时,可能指示自适应运动矢量差分分辨率不能用于仿射运动补偿。
[0306]
通过首先检查sps_affine_enabled_flag(仿射启用标志)并且接下来检查sps_
amvr_enabled_flag(amvr启用标志),如图37(b)中所图示,可以减少不必要的过程并增加效率。例如,当首先检查sps_amvr_enabled_flag(amvr启用标志)并且接下来检查sps_affine_enabled_flag(仿射启用标志)时,可能需要再次检查sps_affine_enabled_flag(仿射启用标志)以便在第7行导出sps_affine_type_flag。然而,通过首先检查sps_affine_enabled_flag(仿射启用标志)并且接下来检查sps_amvr_enabled_flag(amvr启用标志),可以减少这个不必要的过程。
[0307]
图38是图示根据本公开的实施例的编译单元语法结构的图。
[0308]
如参考图35所描述的,能够基于在mvdlx或mvdcplx当中是否存在至少一个非零值来确定是否解析amvr相关语法。然而,取决于使用哪个参考列表(参考图片列表)、仿射模型使用多少个参数等,mvdlx(运动矢量差)或mvdcplx(控制点运动矢量差)可能不同。如果mvdlx或mvdcplx的初始值不为0,因为当前块中未使用的mvdlx或mvdcplx不为0,所以用信号发送不必要的amvr相关语法元素,并且能够产生编码器和解码器之间的失配。图38到39可以描述在编码器和解码器之间不产生失配的方法。
[0309]
根据实施例,inter_pred_idc(关于参考图片列表的信息)可以指示使用哪个参考列表或者预测方向是什么。例如,inter_pred_idc(关于参考图片列表的信息)可以是pred_l0、pred_l1或pred_bi的值。如果inter_pred_idc(关于参考图片列表的信息)是pred_l0,则可以仅使用参考列表0(第零参考图片列表)。此外,当inter_pred_idc(关于参考图片列表的信息)是pred_l1时,可以仅使用参考列表1(第一参考图片列表)。此外,当inter_pred_idc(关于参考图片列表的信息)是pred_bi时,可以使用参考列表0(第零参考图片列表)和参考列表1(第一参考图片列表)两者。当inter_pred_idc(关于参考图片列表的信息)为pred_l0或pred_l1时,可以是单向预测。此外,当inter_pred_idc(关于参考图片列表的信息)是pred_bi时,可以是双向预测。
[0310]
还能够基于motionmodelidc值来确定要使用的仿射模型。也能够基于motionmodelidc的值来确定是否使用仿射mc。例如,motionmodelidc可以指示平移运动、4参数仿射运动或6参数仿射运动。例如,当motionmodelidc值为0、1和2时,可以分别指示平移运动、4参数仿射运动和6参数仿射运动。此外,根据实施例,motionmodelidc可以基于inter_affine_flag(帧间仿射标志)和cu_affine_type_flag来确定。例如,当merge_flag为0(非合并模式)时,可以基于inter_affine_flag(帧间仿射标志)和cu_affine_type_flag来确定motionmodelidc。例如,motionmodelidx可以是(inter_affine_flag cu_affine_type_flag)。根据另一个实施例,motionmodelidc可以由merge_subblock_flag确定。例如,当merge_flag为1(合并模式)时,motionmodelidc可以通过merge_subblock_flag来确定。例如,motionmodelidc值可以设置为merge_subblock_flag值。
[0311]
例如,当inter_pred_idc(关于参考图片列表的信息)是pred_l0或pred_bi时,能够使用mvdlx(运动矢量差)或mvdcplx(控制点运动矢量差)中的与l0相对应的值。因此,当解析amvr相关语法时,仅当inter_pred_idc(关于参考图片列表的信息)为pred_l0或pred_bi时,才可以考虑mvdl0或mvdcpl0。即,当inter_pred_idc(关于参考图片列表的信息)是pred_l1时,能够不考虑mvdl0(第零参考图片列表的运动矢量差)或mvdcpl0(第零参考图片列表的控制点运动矢量差)。
[0312]
此外,当inter_pred_idc(关于参考图片列表的信息)是pred_l1或pred_bi时,能
够使用mvdlx或mvdcplx中的与l1相对应的值。因此,在解析amvr相关语法时,仅当inter_pred_idc(参考图片列表的信息)是pred_l1或pred_bi才能够考虑mvdl1(第一参考图片列表的运动矢量差)或mvdcpl1(第一参考图片列表的控制点运动矢量差)。即,当inter_pred_idc(关于参考图片列表的信息)是pred_l0时,能够不考虑mvdl1或mvdcpl1。
[0313]
参考图38,对于mvdl0和mvdcpl0来说,仅当inter_pred_idc不是pred_l1时,才能够根据它们的值是否不为0来确定是否解析amvr相关语法。即,当inter_pred_idc为pred_l1时,即使mvdl0中存在非零值或mvdcpl0中存在非零值,也可能不解析amvr相关语法。
[0314]
此外,当motionmodelidc为1时,能够仅考虑mvdcplx[x0][y0][0][]、和mvdcplx[x0][y0][1][]、mvdcplx[x0][y0][2][]当中的mvdcplx[x0][y0][0][]、mvdcplx[x0][y0][1][]。即,当motionmodelidc为1时,能够不考虑mvdcplx[x0][y0][2][]。例如,当motionmodelidc为1时,mvdcplx[x0][y0][2][]中是否存在非零值可能不会影响是否解析amvr相关语法。
[0315]
此外,当motionmodelidc为2时,能够考虑所有的mvdcplx[x0][y0][0][]、mvdcplx[x0][y0][1][]和mvdcplx[x0][y0][2][]。即,当motionmodelidc为2时,能够考虑mvdcplx[x0][y0][2][]。
[0316]
此外,在上述实施例中,表达为motionmodelidc 1或2的可以表示为cu_affine_type_flag是0或1。这可能是因为它可以确定是否使用仿射mc。例如,可以通过inter_affine_flag(帧间仿射标志)来确定是否使用仿射mc。
[0317]
参考图38,仅当motionmodelidc为2时才可以考虑mvdcplx[x0][y0][2][]中是否存在非零值。当mvdcplx[x0][y0][0][]和mvdcplx[x0][y0][1][]全为0且mvdcplx[x0][y0][2][]中存在非零值(根据前面的实施例,这里通过划分l0和l1,可以仅考虑l0和l1中之一),如果motionmodelidc不是2,则可以不解析amvr相关语法。
[0318]
图39是图示根据本公开的实施例的mvd默认值设置的图。
[0319]
如上所述,可以通过mvd_coding用信号发送mvdlx(运动矢量差)或mvdcplx(控制点运动矢量差)。此外,lmvd值可以通过mvd_coding用信号发送,并且mvdlx或mvdcplx可以设置为lmvd值。参考图39,当motionmodelidc为0时,可以通过lmvd值设置mvdlx。此外,当motionmodelidc不为0时,可以通过lmvd值设置mvdcplx。此外,取决于reflist值,能够确定与要执行的lx中的任何一个相对应的操作。
[0320]
此外,可能存在如参考图10或者图33、图34以及图35所描述的mvd_coding。此外,mvd_coding可以包括解析或确定abs_mvd_greater0_flag、abs_mvd_greater1_flag、abs_mvd_minus2、mvd_sign_flag等的步骤。此外,lmvd可以通过abs_mvd_greater0_flag、abs_mvd_greater1_flag、abs_mvd_minus2、mvd_sign_flag等等来确定。
[0321]
参考图39,可以如下设置lmvd。
[0322]
lmvd=abs_mvd_greater0_flag*(abs_mvd_minus2 2)*(1-2*mvd_sign_flag)
[0323]
能够将mvdlx(运动矢量差)或mvdcplx(控制点运动矢量差)的默认值设置为预设值。根据本公开的实施例,能够将mvdlx或mvdcplx的默认值设置为0。可替选地,能够将lmvd的默认值设置为预设值。可替选地,能够设置相关语法元素的默认值,使得lmvd、mvdlx或mvdcplx的值变成预设值。语法元素的默认值可以意指当语法元素不存在时要推断的值。预设值可以为0。
[0324]
根据本公开的实施例,abs_mvd_greater0_flag可以指示mvd的绝对值是否大于0。此外,根据本公开的实施例,当abs_mvd_greater0_flag不存在时,可以推断其值等于0。在这种情况下,lmvd值可以设置为0。此外,在这种情况下,mvdlx或mvdcplx值可以设置为0。
[0325]
可替选地,根据本公开的实施例,当未设置lmvd、mvdlx或mvdcplx值时,其值可以设置为预设值。例如,该值可以设置为0。
[0326]
此外,根据本公开的实施例,当abs_mvd_greater0_flag不存在时,对应的lmvd、mvdlx或mvdcplx值可以设置为0。
[0327]
此外,abs_mvd_greater1_flag可以指示mvd的绝对值是否大于1。此外,当abs_mvd_greater1_flag不存在时,可以推断其值等于0。
[0328]
此外,(abs_mvd_minus2 2)可以指示mvd的绝对值。另外,当abs_mvd_minus2的值不存在时,可以推断为等于-1。
[0329]
此外,mvd_sign_flag可以指示mvd的符号。当mvd_sign_flag为0和1时,可能指示对应的mvd分别具有正值和负值。如果mvd_sign_flag不存在,则可以推断该值等于0。
[0330]
图40是图示根据本公开的实施例的mvd默认值设置的图。
[0331]
通过将mvdlx或mvdcplx的初始值设置为0,mvdlx(多个运动矢量差)或mvdcplx(多个控制点运动矢量差)值可以被初始化,如参考图39所述,以便于不产生编码器和解码器之间的失配。而且,在这种情况下,初始化值可以是0。图40的实施例更详细地描述这一点。
[0332]
根据本公开的实施例,mvdlx(多个运动矢量差)或mvdcplx(多个控制点运动矢量差)值可以被初始化为预设值。此外,初始化位置可以在解析amvr相关语法元素的位置之前。amvr相关语法元素可以包括图40的amvr_flag、amvr_precision_flag等。amvr_flag或amvr_precision_flag可以是关于运动矢量差的分辨率的信息。
[0333]
此外,mvd(运动矢量差)或mv(运动矢量)的分辨率或mvd或mv的用信号发送的分辨率可以由amvr相关语法元素确定。另外,本公开的实施例中用于初始化的预设值可以为0。
[0334]
因为通过执行初始化在解析amvr相关语法元素时编码器和解码器之间的mvdlx和mvdcplx值可以相同,所以可能不会产生编码器和解码器之间的失配。此外,通过执行设置为值0的初始化,amvr相关语法元素可能不会不必要地包括在比特流中。
[0335]
根据本公开的实施例,可以针对参考列表(l0、l1等)、x-或y-分量等定义mvdlx。此外,可以针对参考列表(l0、l1等)、x或y分量、控制点0、1或2等定义mvdcplx。
[0336]
根据本公开的实施例,能够初始化mvdlx或mvdcplx值两者。此外,初始化位置可以在执行对应的mvdlx或mvdcplx的mvd_coding的位置之前。例如,即使在仅使用l0的预测块中,也能够初始化与l0相对应的mvdlx或mvdcplx。可能需要条件检查以便于仅对初始化是必要的那些进行初始化,但是通过以这种方式不区分地执行初始化,可以减轻条件检查的负担。
[0337]
根据本公开的另一实施例,能够初始化对应于mvdlx或mvdcplx值中不被使用的值。这里,不被使用的值可能意指该值在当前块中不被使用。例如,可以初始化mvdlx或mvdcplx当中与当前未使用的参考列表相对应的值。例如,当不使用l0时,可以初始化对应于mvdl0或mvdcpl0的值。当inter_pred_idc为pred_l1时,可能不使用l0。此外,当不使用l1时,可以初始化对应于mvdl1或mvdcpl1的值。当inter_pred_idc为pred_l0时,可能不使用l1。当inter_pred_idc为pred_l0或pred_bi时可以使用l0,并且当inter_pred_idc为pred_
l1或pred_bi时可以使用l1。参考图40,当inter_pred_idc为pred_l1时,mvdl0[x0][y0][0]、mvdl0[x0][y0][1]、mvdcpl0[x0][y0][0][0]、mvdcpl0[x0][y0][0][1]、mvdcpl0[x0][y0][1][0]、mvdcpl0[x0][y0][1][1]、mvdcpl0[x0][y0][2][0]、以及mvdcpl0[x0][y0][2][1]可以被初始化。此外,初始化值可以是0。此外,当inter_pred_idc是pred_l0时,mvdl1[x0][y0][0]、mvdl1[x0][y0][1]、mvdcpl1[x0][y0][0][0]、mvdcpl1[x0][y0][0][1]、mvdcpl1[x0][y0][1][0]、mvdcpl1[x0][y0][1][1]、mvdcpl1[x0][y0][2][0]和mvdcpl1[x0][y0][2][1]可以被初始化。此外,初始化值可能为0。
[0338]
mvdlx[x][y][compidx]可以是参考列表lx和分量索引compidx的(x,y)位置的运动矢量差。mvdcplx[x][y][cpidx][compidx]可以是参考列表lx的运动矢量差。此外,mvdcplx[x][y][cpidx][compidx]可以是位置(x,y)、控制点运动矢量索引cpidx和分量索引compidx的运动矢量差。这里,分量可以指示x或y分量。
[0339]
此外,根据本公开的实施例,mvdlx(运动矢量差)或mvdcplx(控制点运动矢量差)其中哪个不被使用,可以取决于是否使用仿射运动补偿。例如,当使用仿射运动补偿时,可以初始化mvdlx。此外,当不使用仿射运动补偿时,可以初始化mvdcplx。例如,可以存在指示是否使用仿射运动补偿的信令。参考图40,inter_affine_flag(帧间仿射标志)可以是指示是否使用仿射运动补偿的信令。例如,当inter_affine_flag(帧间仿射标志)为1时,可以使用仿射运动补偿。可替选地,motionmodelidc可以是指示是否使用仿射运动补偿的信令。例如,当motionmodelidc不为0时,可以使用仿射运动补偿。
[0340]
此外,根据本公开的实施例,mvdlx或mvdcplx中哪个没有被使用,可以与使用哪个仿射运动模型有关。例如,取决于使用的是4参数仿射模型还是6参数仿射模型,不使用的mvdlx或mvdcplx可能不同。例如,取决于使用哪一个仿射运动模型,不用于mvdcplx[x][y][cpidx][compidx]的cpidx的mvdcplx可以不同。例如,当使用4参数仿射模型时,只能使用mvdcplx[x][y][cpidx][compidx]的一部分。可替选地,当不使用6参数仿射模型时,只能使用mvdcplx[x][y][cpidx][compidx]的一部分。因此,可以将不使用的mvdcplx初始化为预设值。在这种情况下,不使用的mvdcplx可能对应于6参数仿射模型中使用并且在4参数仿射模型中不被使用的cpidx。例如,当使用4参数仿射模型时,可以不使用其中mvdcplx[x][y][cpidx][compidx]的cpidx为2的值,并且可以将其初始化为预设值。此外,如上所述,可以存在指示使用4参数仿射模型还是6参数仿射模型的信令或参数。例如,通过motionmodelidc或cu_affine_type_flag可以知道是使用4参数仿射模型还是使用6参数仿射模型。motionmodelidc值为1和2可以分别指示使用4参数仿射模型和6参数仿射模型。参考图40,当motionmodelidc为1时,能够将mvdcpl0[x0][y0][2][0]、mvdcpl0[x0][y0][2][1]、mvdcpl1[x0][y0][2][0]以及mvdcpl1[x0][y0][2][1]初始化为预设值。另外,在这种情况下,能够使用当motionmodelidc不是2替代当motionmodelidc为1的条件。预设值可以是0。
[0341]
此外,根据本公开的实施例,mvdlx或mvdcplx中哪个不被使用,可以基于mvd_l1_zero_flag(第一参考图片列表的运动矢量差零标志)的值。例如,当mvd_l1_zero_flag为1时,能够将mvdl1和mvdcpl1初始化为预设值。此外,在这种情况下,可以考虑附加条件。例如,可以基于mvd_l1_zero_flag和inter_pred_idc(关于参考图片列表的信息)来确定mvdlx或mvdcplx中哪个没有被使用。例如,当mvd_l1_zero_flag为1且inter_pred_idc为
pred_bi时,能够将mvdl1和mvdcpl1初始化为预设值。例如,mvd_l1_zero_flag(第一参考图片列表的运动矢量差零标志)可以是较高级别信令,其可以指示参考列表l1的mvd值(例如,mvdlx或mvdcplx)是0。信令可以意指从编码器通过比特流传送到解码器的信号。解码器可以从比特流中解析mvd_l1_zero_flag(第一参考图片列表的运动矢量差零标志)。
[0342]
根据本公开的另一实施例,能够在对某个块执行mvd_coding之前将所有mvd和mvdcp初始化为预设值。在这种情况下,mvd_coding可能意指某个cu的所有mvd_coding。因此,可以防止产生解析mvd_coding语法并初始化所确定的mvd或mvdcp值,并且可以通过初始化所有mvd和mvdcp值来解决上述问题。
[0343]
图41是图示根据本公开的实施例的amvr相关语法结构的图。
[0344]
图41的实施例可以基于图38的实施例。
[0345]
如参考图38所描述的,可以检查在mvdlx(运动矢量差)和mvdcplx(控制点运动矢量差)中是否存在至少一个非零值。在这种情况下,可以基于mvd_l1_zero_flag(用于第一参考图片列表的运动矢量差零标志)来确定要检查的mvdlx或mvdcplx。因此,能够基于mvd_l1_zero_flag确定是否解析amvr相关语法。如上所述,当mvd_l1_zero_flag为1时,可以指示参考列表l1的mvd(运动矢量差)为0,并且因此,在这种情况下,mvdl1(第一参考图片列表的运动矢量差)或mvdcpl1(第一参考图片列表的控制点运动矢量差)可以不被考虑。例如,当mvd_l1_zero_flag为1时,无论mvdl1或mvdcpl1是否为0,都可以基于mvdl0(第零参考图片列表的运动矢量差)或mvdcpl0(第零参考图片列表的控制点运动矢量差)中是否存在至少一个等于0的值来解析amvr相关语法列表。根据附加实施例,指示用于参考列表l1的mvd为0的mvd_l1_zero_flag可以仅用于是双向预测的块。因此,可以基于mvd_l1_zero_flag和inter_pred_idc(关于参考图片列表的信息)解析amvr相关语法。例如,可以确定用于基于mvd_l1_zero_flag和inter_pred_idc(关于参考图片列表的信息)判断是否存在至少一个非零值的mvdlx或mvdcplx。例如,基于mvd_l1_zero_flag和inter_pred_idc可以不考虑mvdl1或mvdcpl1。例如,当mvd_l1_zero_flag为1且inter_pred_idc为pred_bi时,可以不考虑mvdl1或mvdcpl1。例如,当mvd_l1_zero_flag为1且inter_pred_idc为pred_bi时,无论mvdl1或mvdcpl1是否为0,都可以基于mvdl0或mvdcpl0中是否存在至少一个0值来解析amvr相关语法。
[0346]
参考图41,当mvd_l1_zero_flag为1且inter_pred_idc[x0][y0]=pred_bi时,无论mvdl1[x0][y0][0]、mvdl1[x0][y0][1]、mvdcpl1[x0][y0][0][0]、mvdcpl1[x0][y0][0][1]、mvdcpl1[x0][y0][1][0]、mvdcpl1[x0][y0][1][1]、mvdcpl1[x0][y0][2][0]以及mvdcpl1[x0][y0][2][1]当中是否存在非零值的操作可以被执行。例如,当mvd_l1_zero_flag为1且inter_pred_idc[x0][y0]=pred_bi时,如果mvdl0或mvdcpl0当中不存在非零值,即使在mvdl1[x0][y0][0]、mvdl1[x0][y0][1]、mvdcpl1[x0][y0][0][0]、mvdcpl1[x0][y0][0][1]、mvdcpl1[x0][y0][1][0]、mvdcpl1[x0][y0][1][1]、mvdcpl1[x0][y0][2][0]以及mvdcpl1[x0][y0][2][1]当中存在非零值,也可能不解析amvr相关语法。
[0347]
另外,当mvd_l1_zero_flag为0或inter_pred_idc[x0][y0]!=pred_bi时,在mvdl1[x0][y0][0]、mvdl1[x0][y0][1]、mvdcpl1[x0][y0][0][0]、mvdcpl1[x0][y0][0][1]、mvdcpl1[x0][y0][1][0]、mvdcpl1[x0][y0][1][1]、mvdcpl1[x0][y0][2][0]和mvdcpl1[x0][y0][2][1]当中是否存在非零值可以被考虑。例如,当mvd_l1_zero_flag为0
或inter_pred_idc[x0][y0]!=pred_bi时,如果在mvdl1[x0][y0][0]、mvdl1[x0][y0][1]、mvdcpl1[x0][y0][0][0]、mvdcpl1[x0][y0][0][1]、mvdcpl1[x0][y0][1][0]、mvdcpl1[x0][y0][1][1]、mvdcpl1[x0][y0][2][0]、mvdcpl1[x0][y0][2][1]当中存在非零值,则可以解析amvr相关语法。例如,当mvd_l1_zero_flag为0或inter_pred_idc[x0][y0]!=pred_bi时,如果在mvdl1[x0][y0][0]、mvdl1[x0][y0][1]、mvdcpl1[x0][y0][0][0]、mvdcpl1[x0][y0][0][1]、mvdcpl1[x0][y0][1][0]、mvdcpl1[x0][y0][1][1]、mvdcpl1[x0][y0][2][0]和mvdcpl1[x0][y0][2][1]当中存在非零值,即使mvdl0和mvdcpl0都是0,也可以解析amvr相关语法。
[0348]
图42是图示根据本公开的实施例的帧间预测相关语法结构的图。
[0349]
根据本公开的实施例,mvd_l1_zero_flag(第一参考图片列表的运动矢量差零标志)可以是指示参考列表l1(第一参考图片列表)的mvd(运动矢量差)值为0的信令。此外,可以在比当前块更高的级别上用信号发送此信令。因此,基于mvd_l1_zero_flag值,多个块中的参考列表l1的mvd值可以是0。例如,当mvd_l1_zero_flag值为1时,参考列表l1的mvd值可以是0。可替选地,基于mvd_l1_zero_flag和inter_pred_idc(关于参考图片列表的信息),参考列表l1的mvd值可以是0。例如,当mvd_l1_zero_flag为1并且inter_pred_idc为pred_bi时,参考列表l1的mvd值可以是0。在这种情况下,mvd值可以是mvdl1[x][y][compidx]。此外,在这种情况下,mvd值可能并不意指控制点运动矢量差异。也就是说,在这种情况下,mvd值可能并不意指mvdcp值。
[0350]
根据本公开的另一实施例,mvd_l1_zero_flag可以是指示参考列表l1的mvd和mvdcp值为0的信令。此外,可以在比当前块更高的级别上用信号发送此信令。因此,多个块中的参考列表l1的mvd和mvdcp值可以是0。例如,当mvd_l1_zero_flag值为1时,基于mvd_l1_zero_flag值,参考列表l1的mvd和mvdcp值可以是0。可替选地,基于mvd_l1_zero_flag和inter_pred_idc,参考列表l1的mvd和mvdcp值可以是0。例如,当mvd_l1_zero_flag为1并且inter_pred_idc为pred_bi时,参考列表l1的mvd和mvdcp值可以是0。在这种情况下,mvd值可以是mvdl1[x][y][compidx]。此外,mvdcp值可以是mvdcpl1[x][y][cpidx][compidx]。
[0351]
可替选地,mvd或mvdcp值为0可以意指对应的mvd_coding语法结构不被解析。即,例如,当mvd_l1_zero_flag的值为1时,可以不解析与mvdl1或mvdcpl1相对应的mvd_coding语法结构。另外,当mvd_l1_zero_flag值为0时,可以解析与mvdl1或mvdcpl1相对应的mvd_coding语法结构。
[0352]
根据本公开的实施例,当基于mvd_l1_zero_flag的mvd或mvdcp值为0时,可以不解析指示mvp的信令。指示mvp的信令可以包括mvp_l1_flag。此外,根据上述mvd_l1_zero_flag的描述,mvd_l1_zero_flag的信令可能意指指示其对于mvd和mvdcp两者都是0。例如,当满足指示参考列表l1的mvd或mvdcp值为0的条件时,可以不解析指示mvp的信令。在这种情况下,可以将指示mvp的信令推断为预设值。例如,当指示mvp的信令不存在时,可以推断其值等于0。另外,当基于mvd_l1_zero_flag指示mvd或mvdcp值为0的条件不满足时,指示mvp的信令可以被解析。然而,在本实施例中,当mvd或mvdcp值为0时,可能会失去选择mvp的自由度,并且从而减少编译效率。
[0353]
更具体地,当满足指示参考列表l1的mvd或mvdcp值为0的条件并且使用仿射mc时,可以不解析指示mvp的信令。在这种情况下,可以将指示mvp的信令推断为预设值。
[0354]
参考图42,当mvd_l1_zero_flag为1且inter_pred_idc值为pred_bi时,mvp_l1_flag可以不被解析。此外,在这种情况下,mvp_l1_flag的值可以推断为等于0。可替选地,当mvd_l1_zero_flag为0或inter_pred_idc值不是pred_bi时,可以解析mvp_l1_flag。
[0355]
在本实施例中,可以在满足特定条件时确定是否基于mvd_l1_zero_flag来解析指示mvp的信令。例如,特定条件可以包括其中general_merge_flag为0的条件。例如,general_merge_flag可以具有与上述merge_flag相同的含义。此外,特定条件可以包括基于cupredmode的条件。更具体地,特定条件可以包括其中cupredmode不是mode_ibc的条件。可替选地,特定条件可以包括其中cupredmode为mode_inter的条件。当cupredmode为mode_ibc时,能够使用将当前图片作为参考的预测。此外,当cupredmode为mode_ibc时,可能存在与块相对应的块矢量或运动矢量。当cupredmode为mode_inter时,能够使用将当前图片以外的图片作为参考的预测。当cupredmode为mode_inter时,可能存在与块相对应的运动矢量。
[0356]
因此,根据本公开的实施例,当general_merge_flag为0、cupredmode不是mode_ibc、mvd_l1_zero_flag为1并且inter_pred_idc为pred_bi时,mvp_l1_flag可以不被解析。此外,当mvp_l1_flag不存在时,可以推断其值等于0。
[0357]
更具体地,当general_merge_flag为0、cupredmode不是mode_ibc、mvd_l1_zero_flag为1、inter_pred_idc为pred_bi并且使用仿射mc时,可以不解析mvp_l1_flag。此外,当mvp_l1_flag不存在时,可以推断其值等于0。
[0358]
参考图42,sym_mvd_flag可以是指示对称mvd的信令。在对称mvd的情况下,可以基于某个mvd确定另一个mvd。在对称mvd的情况下,可以基于显式地用信号发送的mvd来确定另一个mvd。例如,在对称mvd的情况下,可以基于一个参考列表的mvd来确定另一参考列表的mvd。例如,在对称mvd的情况下,可以基于参考列表l0的mvd来确定参考列表l1的mvd。当基于某个mvd确定另一个mvd时,能够确定通过反转某个mvd的符号作为另一个mvd而获得的值。
[0359]
图43是根据本公开的实施例的帧间预测相关语法结构的图。
[0360]
图43的实施例可以是用于解决参考图42描述的问题的实施例。
[0361]
根据本公开的实施例,当基于mvd_l1_zero_flag(用于第一参考图片列表的运动矢量差零标志)的mvd(运动矢量差)或mvdcp(控制点运动矢量差)值为0时,能够解析指示mvp(运动矢量预测子)的信令。指示mvp的信令可以包括mvp_l1_flag(用于第一参考图片列表的运动矢量预测子索引)。此外,根据上述mvd_l1_zero_flag的描述,mvd_l1_zero_flag信令可以意指指示对于mvd和mvdcp两者都是0。例如,当满足指示参考列表l1(第一参考图片列表)的mvd或mvdcp值为0的条件时,可以解析指示mvp的信令。因此,可能不去推断指示mvp的信令。因此,即使当基于mvd_l1_zero_flag的mvd或mvdcp值为0,也能够具有选择mvp的自由度。因此,可以改进编译效率。此外,即使当基于mvd_l1_zero_flag不满足指示mvd或mvdcp值为0的条件时,也能够解析指示mvp的信令。
[0362]
更具体地,当满足指示参考列表l1的mvd或mvdcp值为0的条件并且使用仿射mc时,能够解析指示mvp的信令。
[0363]
参考图43的行4301,可以获得关于当前块的参考图片列表的信息inter_pred_idc。参考行4302,当关于参考图片列表的信息inter_pred_idc指示不是仅使用第零参考图
片列表列表0时,能够在行4303处从比特流中解析第一参考图片列表列表1的运动矢量预测子索引mvp_l1_flag。
[0364]
可以从比特流中获得mvd_l1_zero_flag(运动矢量差零标志)。mvd_l1_zero_flag(运动矢量差零标志)可以指示对于第一参考图片列表是否将mvdlx(运动矢量差)和mvdcplx(多个控制点运动矢量差)设置为0。信令可以意指通过比特流从编码器传送到解码器的信号。解码器可以从比特流中解析mvd_l1_zero_flag(运动矢量差零标志)。
[0365]
当mvd_l1_zero_flag(运动矢量差零标志)是1并且inter_pred_idc(关于参考图片列表的信息)是pred_bi时,mvp_l1_flag(运动矢量预测子索引)可以被解析。这里,pred_bi可以指示使用列表0(第零参考图片列表)和列表1(第一参考图片列表)两者。可替选地,当mvd_l1_zero_flag(运动矢量差零标志)为0或inter_pred_idc(关于参考图片列表的信息)不是pred_bi时,可以解析mvp_l1_flag(运动矢量预测子索引)。即,当mvd_l1_zero_flag(运动矢量差零标志)为1时,无论inter_pred_idc(关于参考图片列表的信息)是否指示第零参考图片列表和第一参考图片列表两者都被使用,mvp_l1_flag(运动矢量预测子索引)可以被解析。
[0366]
在本实施例中,当满足特定条件时,可以发生基于mvd_l1_zero_flag(第一参考图片列表的运动矢量差零标志)来确定mvd和mvdcp以及解析指示mvp的信令。例如,特定条件可以包括其中general_merge_flag为0的条件。例如,general_merge_flag可以具有与上述merge_flag相同的含义。此外,特定条件可以包括基于cupredmode的条件。更具体地,特定条件可以包括cupredmode不是mode_ibc的条件。可替选地,特定条件可以包括其中cupredmode为mode_inter的条件。当cupredmode为mode_ibc时,能够使用将当前图片作为参考的预测。此外,当cupredmode为mode_ibc时,可能存在与块相对应的块矢量或运动矢量。如果cupredmode为mode_inter,则可以使用将当前图片以外的图片作为参考的预测。当cupredmode为mode_inter时,可能存在与块相对应的运动矢量。
[0367]
因此,根据本公开的实施例,当general_merge_flag为0、cupredmode不是mode_ibc、mvd_l1_zero_flag为1并且inter_pred_idc为pred_bi时,可以解析mvp_l1_flag。因此,mvp_l1_flag(第一参考图片列表的运动矢量预测子索引)存在,并且可能不推断其值。
[0368]
更具体地,当general_merge_flag为0、cupredmode不是mode_ibc、mvd_l1_zero_flag(第一参考图片列表的运动矢量差零标志)为1、inter_pred_idc(关于参考图片列表的信息)为pred_bi并且使用仿射mc时,mvp_l1_flag可以被解析。此外,mvp_l1_flag(第一参考图片列表的运动矢量预测子索引)存在,并且可能不推断其值。
[0369]
还能够一起实现图43和图40的实施例。例如,可以在初始化mvd或mvdcp后解析mvp_l1_flag。在这种情况下,mvd或mvdcp的初始化可以是参考图40描述的初始化。此外,mvp_l1_flag解析可以遵循图43的描述。例如,当基于mvd_l1_zero_flag的参考列表l1的mvd和mvdcp值不为0时,如果motionmodelidc值为1,则可以初始化控制点索引2的mvdcpl1值并且可以解析mvp_l1_flag。
[0370]
图44是图示根据本公开的实施例的帧间预测相关语法结构的图。
[0371]
图44的实施例可以是通过不移除在选择mvp中的自由度来增加编译效率的实施例。此外,图44的实施例可以是通过以不同的方式描述参考图43描述的实施例而获得的实施例。因此,与图43的实施例冗余的描述可以被省略。
[0372]
在图44的实施例中,当基于mvd_l1_zero_flag指示mvd或mvdcp值为0时,可以解析指示mvp的信令。指示mvp的信令可以包括mvp_l1_flag。
[0373]
图45是图示根据本公开的实施例的帧间预测相关语法的图。
[0374]
根据本公开的实施例,帧间预测方法可以包括跳过模式、合并模式、帧间模式等。根据实施例,在跳过模式下可以不传送残差信号。此外,可以在跳过模式中使用诸如合并模式的mv确定方法。是否使用跳过模式可以根据跳过标志来确定。参考图33,可以根据cu_skip_flag的值来确定是否使用跳过模式。
[0375]
根据实施例,在合并模式中可以不使用运动矢量差。可以基于运动候选索引来确定运动矢量。是否使用合并模式可以根据合并标志来确定。参考图33,可以根据merge_flag值来确定是否使用合并模式。此外,在不使用跳过模式时能够使用合并模式。
[0376]
在跳过模式或合并模式中,能够选择性地使用一种或多种候选列表类型。例如,能够使用合并候选或子块合并候选。此外,合并候选可以包括空间邻近候选、时间候选等。此外,合并候选可包括使用用于整个当前块(cu;编译单元)的运动矢量的候选。即,属于当前块的每个子块的运动矢量可以包括相同的候选。此外,子块合并候选可以包括基于子块的时间mv、仿射合并候选等。此外,子块合并候选可以包括针对当前块(cu)的每个子块可以使用不同运动矢量的候选。仿射合并候选可以是通过在确定控制点运动矢量时确定仿射运动预测的控制点运动矢量而不使用运动矢量差的方法构造的方法。此外,子块合并候选可以包括用于以当前块中的子块为单位确定运动矢量的方法。例如,除了上述基于子块的时间mv和仿射合并候选之外,子块合并候选可以包括平面mv、基于回归的mv、stmvp等。
[0377]
根据实施例,可以在帧间模式中使用运动矢量差。可以基于运动候选索引确定运动矢量预测子,并且可以基于运动矢量预测子和运动矢量差之间的差确定运动矢量。是否使用帧间模式可以根据是否使用其他模式来确定。在另一个实施例中,是否使用帧间模式可以由标志来确定。图45图示当不使用作为其他模式的跳过模式和合并模式时使用帧间模式的示例。
[0378]
帧间模式可以包括amvp模式、仿射帧间模式等。帧间模式可以是用于基于运动矢量预测子和运动矢量差来确定运动矢量的模式。仿射帧间模式可以是在确定仿射运动预测的控制点运动矢量时使用运动矢量差的方法。
[0379]
参考图45,能够在确定跳过模式或合并模式之后确定是使用子块合并候选还是合并候选。例如,当满足特定条件时,可以解析指示是否使用子块合并候选的merge_subblock_flag。此外,特定条件可以是与块大小相关的条件。例如,其可以是与宽度、高度、面积等相关的条件,并且可以使用这些的组合。参考图45,例如,可以是在当前块(cu)的宽度和高度大于或等于特定值时的条件。在解析merge_subblock_flag时,可以推断其值等于0。如果merge_subblock_flag为1,则可以使用子块合并候选,并且如果merge_subblock_flag为0,则可以使用合并候选。当使用子块合并候选时,可以解析作为候选索引的merge_subblock_idx,并且当使用合并候选时,可以解析作为候选索引的merge_idx。在这种情况下,当候选列表的最大数量为1时,可以不执行解析。当merge_subblock_idx或merge_idx没有被解析时,可以推断其等于0。
[0380]
图45图示coding_unit函数,其中可以省略帧内预测相关内容,并且图45图示确定帧间预测的情况。
[0381]
图46是图示根据本公开的实施例的三角分区模式(triangle partitioning mode)的图。
[0382]
本公开中所提及的三角分区模式(tpm)可以被称为各种名称,诸如三角分区模式(triangle partition mode)、三角预测、基于三角的预测、三角运动补偿、三角形预测、三角帧间预测、三角形合并模式和三角合并模式。此外,tpm可以被包括在几何分区模式(gpm)中。
[0383]
如图46中所图示,tpm可以是将矩形块划分为两个三角形的方法。但是,gpm可以以各种方式将块分割为两个块。例如,gpm可以将一个矩形块分割成两个三角形块,如图46中所图示。此外,gpm可以将一个矩形块分割为一个五边形块和一个三角形块。此外,gpm可以将一个矩形块分割为两个四边形块。这里,矩形可以包括正方形。下文中,为了描述方便,基于tpm进行描述,该tpm是gpm的简单版本,但应理解为包括gpm。
[0384]
根据本公开的实施例,可以存在单向预测作为预测方法。单向预测可以是使用一个参考列表的预测方法。可以存在多个参考列表,并且根据实施例,可以存在l0和l1的两个参考列表。当使用单向预测时,能够在一个块中使用一个参考列表。此外,当使用单向预测时,能够使用一个运动信息来预测一个像素。在本公开中,块可以意指编译单元(cu)或预测单元(pu)。此外,在本公开中,块可以意指变换单元(tu)。
[0385]
根据本公开的另一实施例,可以存在双向预测作为用于预测的方法。双向预测可以是使用多个参考列表的预测方法。在实施例中,双向预测可以是使用两个参考列表的预测方法。例如,双向预测可以使用l0和l1参考列表。当使用双向预测时,能够在一个块中使用多个参考列表。例如,当使用双向预测时,能够在一个块中使用两个参考列表。此外,当使用双向预测时,能够使用多个运动信息来预测一个像素。
[0386]
运动信息可以包括运动矢量、参考索引和预测列表使用标志。
[0387]
参考列表可以是参考图片列表。
[0388]
在本公开中,对应于单向预测或双向预测的运动信息可以被定义为一个运动信息集。
[0389]
根据本公开的实施例,当使用tpm时能够使用多个运动信息集。例如,当使用tpm时,能够使用两个运动信息集。例如,当使用tpm时,能够最多使用两个运动信息集。此外,其中在使用tpm的块内应用两个运动信息集的方法可以基于位置。例如,在使用tpm的块内,能够使用用于预设位置的一个运动信息集并且使用用于另一个预设位置的另一个运动信息集。另外,对于另一个预设位置,能够一起使用两个运动信息集。例如,对于另一预设位置,以基于一个运动信息集的预测1和基于另一个运动信息集的预测2为基础的预测3可以被用于预测。例如,预测3可能是预测1和预测2的加权和。
[0390]
参考图46,分区1和分区2可以示意性地表示预设位置和其他预设位置。当使用tpm时,可以使用两种分割方法之一,如图46中所图示。两种分割方法可以包括对角分割和反对角分割。块也可以通过分割被划分为两个三角形状的分区。如前所述,tpm可以被包括在gpm中。因为已经描述了gpm,所以将省略冗余的描述。
[0391]
根据本公开的实施例,当使用tpm时,能够对每个分区仅使用单向预测。即,能够针对每个分区使用一个运动信息。这可能是为了减少存储器访问和复杂性,诸如计算复杂性。因此,对于每个cu能够仅使用两个运动信息。
[0392]
还能够从候选列表中确定每个运动信息。根据实施例,用于tpm的候选列表可以基于合并候选列表。在另一个实施例中,用于tpm的候选列表可以基于amvp候选列表。因此,能够用信号发送候选索引以便于使用tpm。此外,对于使用tpm的块,能够编码、解码和解析与tpm中的分区的数量或最多分区的数量一样多的候选索引。
[0393]
此外,即使通过tpm基于多个运动信息来预测块,也能够对整个块执行变换和量化。
[0394]
图47是图示根据本公开的实施例的合并数据语法的图。
[0395]
根据本公开的实施例,合并数据语法可以包括与各种模式相关的信令。各种模式可以包括常规合并模式、带有mvd的合并(mmvd)、子块合并模式、组合帧内和帧间预测(ciip)、tpm等。常规合并模式可以是与hevc中的合并模式相同的模式。此外,可以存在指示在块中是否使用各种模式的信令。此外,这些信令可以被解析为语法元素或者可以被隐式地用信号发送。参考图47,指示是否使用常规合并模式、mmvd、子块合并模式、ciip和tpm的信令可以分别是regular_merge_flag、mmvd_merge_flag(或mmvd_flag)、merge_subblock_flag、ciip_flag(或mh_intra_flag)、mergetriangleflag(或merge_triangle_flag)。
[0396]
根据本公开的实施例,当使用合并模式时,如果用信号发送各种模式中的除了某种模式之外的所有模式都不被使用,则可以确定使用某种模式。此外,当使用合并模式时,如果用信号发送使用各种模式当中的除了某种模式之外的模式中的至少一个模式,则可以确定不使用某种模式。此外,可以存在指示是否可以使用模式的较高级别信令。较高级别可以是包括块的单元。较高级别可以是序列、图片、切片、图块组、图块、ctu等。如果指示是否可以使用模式的较高级别信令指示可以使用,则可以存在指示是否使用模式的附加信令,并且可以使用或者可以不使用该模式。如果指示是否能够使用模式的较高层信令指示不能使用,则可以不使用该模式。例如,在使用合并模式时,如果用信号发送常规合并模式、mmvd、子块合并模式和ciip都没有被使用,则可以确定使用tpm。此外,当使用合并模式时,如果用信号发送使用常规合并模式、mmvd、子块合并模式和ciip中的至少一种,则可以确定不使用tpm。此外,可以存在指示是否使用合并模式的信令。例如,指示是否使用合并模式的信令可以是general_merge_flag或merge_flag。如果使用合并模式,则如图47中所图示的合并数据语法可以被解析。
[0397]
此外,可用于tpm的块大小可能被限制。例如,当宽度和高度都为8或更多时,能够使用tpm。
[0398]
如果使用tpm,则可以解析与tpm相关的语法元素。tpm相关的语法元素可以包括指示分割方法的信令和指示候选索引的信令。分割方法可能意指分割方向。对于使用tpm的块,可以存在指示候选索引的多个信令(例如,两个信令)。参考图47,指示分割方法的信令可以是merge_triangle_split_dir。此外,指示候选索引的信令可以是merge_triangle_idx0和merge_triangle_idx1。
[0399]
在本公开中,用于tpm的候选索引可以是m和n。例如,图46的分区1和分区2的候选索引可以分别是m和n。根据实施例,m和n可以基于指示参考图47描述的候选索引的信令来确定。根据本公开的实施例,可以基于merge_triangle_idx0和merge_triangle_idx1之一确定m和n中的一个,并且可以基于merge_triangle_idx0和merge_triangle_idx1两者确定m和n中的另一个。
[0400]
可替选地,m和n中的一个可以基于merge_triangle_idx0和merge_triangle_idx1中的一个来确定,并且m和n中的另一个可以基于merge_triangle_idx0和merge_triangle_idx1中的另一个来确定。
[0401]
更具体地,能够基于merge_triangle_idx0确定m并且基于merge_triangle_idx0(或m)和merge_triangle_idx1确定n。例如,m和n可以如下确定。
[0402]
m=merge_triangle_idx0
[0403]
n=merge_triangle_idx1 (merge_triangle_idx1》=m)?1:0
[0404]
根据本公开的实施例,m和n可以不同。这是因为,在tpm中,当两个候选索引相同时,即,两个运动信息相同时,可能无法获得分区的效果。因此,上述信令方法可以用于在用信号发送n时在n》m的情况下减少信令比特数。因为m在所有候选当中不会是n,所以可以从信令中排除。
[0405]
如果在tpm中使用的候选列表是mergecandlist,则mergecandlist[m]和mergecandlist[n]可以用作tpm中的运动信息。
[0406]
图48是图示根据本公开的实施例的较高级别信令的图。
[0407]
根据本公开的实施例,可以存在多个较高级别信令。较高级别信令可以是在较高级别的单元中传送的信令。较高级别的单元可以包括一个或多个较低级别的单元。较高级别信令可以是应用于一个或多个较低级别的单元的信令。例如,切片或序列可以是cu、pu、tu等的较高级别的单元。相反,cu、pu或tu可以是切片或序列的低级别的单元。
[0408]
根据本公开的实施例,较高级别信令可以包括指示候选的最大数量的信令。例如,较高级别信令可以包括指示合并候选的最大数量的信令。例如,较高级别信令可以包括指示在tpm中使用的候选的最大数量的信令。当允许帧间预测时,可以用信号发送和解析指示合并候选的最大数量的信令或指示在tpm中使用的候选的最大数量的信令。是否允许帧间预测可以通过切片类型来确定。作为切片类型,可以存在i、p、b等。例如,当切片类型为i时,可能不允许帧间预测。例如,当切片类型为i时,只能使用帧内预测或帧内块复制ibc。此外,当切片类型是p或b时,可以允许帧间预测。此外,当切片类型是p或b时,可以允许帧内预测、ibc等。此外,当切片类型为p时,能够使用最多一个参考列表来预测像素。此外,当切片类型为b时,能够使用多个参考列表来预测像素。例如,如果切片类型为b,则能够使用两个参考列表来预测像素。
[0409]
根据本公开的实施例,当用信号发送最大数量时,能够基于参考值用信号发送。例如,能够用信号发送(参考值-最大数量)。因此,能够基于由解码器解析而获得的值和参考值导出最大数量。例如,(参考值-解析而获得的值)可以被确定为最大数量。
[0410]
根据实施例,指示合并候选的最大数量的信令中的参考值可以是6。
[0411]
根据实施例,指示在tpm中使用的候选的最大数量的信令中的参考值可以是合并候选的最大数量。
[0412]
参考图48,指示合并候选的最大数量的信令可以是six_minus_max_num_merge_cand。这里,合并候选可以意指用于合并运动矢量预测的候选。在下文中,为了描述方便,也将six_minus_max_num_merge_cand称为第一信息。参考图2和图7,信令可以意指通过比特流从编码器传送到解码器的信号。可以以序列为单位用信号发送six_minus_max_num_merge_cand(第一信息)。解码器可以从比特流中解析six_minus_max_num_merge_cand(第
一信息)。
[0413]
此外,指示在tpm中使用的候选的最大数量的信令可以是max_num_merge_cand_minus_max_num_triangle_cand。参考图2和图7,信令可以意指通过比特流从编码器传送到解码器的信号。解码器可以从比特流中解析max_num_merge_cand_minus_max_num_triangle_cand(第三信息)。max_num_merge_cand_minus_max_num_triangle_cand(第三信息)可以是与分区的块的合并模式候选的最大数量有关的信息。
[0414]
此外,合并候选的最大数量可以是maxnummergecand(合并候选的最大数量),并且该值可以基于six_minus_max_num_merge_cand(第一信息)。此外,tpm中使用的候选的最大数量可以是maxnumtrianglemergecand,并且该值可以基于max_num_merge_cand_minus_max_num_triangle_cand。maxnummergecand(合并候选的最大数量)可以被用于合并模式,并且是在对块进行分区或未分区以进行运动补偿时能够使用的信息。在上面,已经基于tpm进行描述,但是gpm也可以以相同的方式进行描述。
[0415]
根据本公开的实施例,可以存在指示是否可以使用tpm模式的较高级别信令。参考图48,指示是否可以使用tpm模式的较高级别信令可以是sps_triangle_enabled_flag(第二信息)。指示是否可以使用tpm模式的信息可以与指示块是否可以如图46中所图示进行分区以进行帧间预测的信息相同。因为gpm包括tpm,所以指示是否可以对块进行分区的信息可以与指示是否使用gpm模式的信息相同。执行帧间预测可以指示执行运动补偿。即,sps_triangle_enabled_flag(第二信息)可以是指示是否可以分区块以进行帧间预测的信息。当指示块是否可以被分区的第二信息为1时,可以指示可以使用tpm或gpm。另外,当第二信息为0时,可以指示不能使用tpm或gpm。然而,本公开不限于此,并且当第二信息为0时,可以指示可以使用tpm或gpm。另外,当第二信息为1时,可以指示不能使用tpm或gpm。
[0416]
参考图2和图7,信令可以意指通过比特流从编码器传送到解码器的信号。解码器可以从比特流中解析sps_triangle_enabled_flag(第二信息)。
[0417]
根据本公开的实施例,仅当可以存在大于或等于tpm的分区的数量的在tpm中使用的候选时,才能够使用tpm。例如,当tpm被分区为两个分区时,只有当可以存在两个或多个tpm中使用的候选时,才能够使用tpm。根据实施例,在tpm中使用的候选可以基于合并候选。因此,根据本公开的实施例,当合并候选的最大数量为2或更多时,能够使用tpm。因此,当合并候选的最大数量为2或更多时,能够解析与tpm相关的信令。与tpm相关的信令可以是指示在tpm中使用的候选的最大数量的信令。
[0418]
参考图48,当sps_triangle_enabled_flag为1且maxnummergecand为2或者更大时,能够解析max_num_merge_cand_minus_max_num_triangle_cand。此外,当sps_triangle_enabled_flag为0或maxnummergecand小于2时,能够不解析max_num_merge_cand_minus_max_num_triangle_cand。
[0419]
图49是图示根据本公开的实施例的在tpm中使用的候选的最大数量的图。
[0420]
参考图49,tpm中使用的候选的最大数量可以是maxnumtrianglemergecand。此外,指示在tpm中使用的候选的最大数量的信令可以是max_num_merge_cand_minus_max_num_triangle_cand。此外,参考图48描述的内容可以被省略。
[0421]
根据本公开的实施例,在tpm中使用的候选的最大数量可以存在于从“tpm的分区的数量”到“指示在tpm中使用的候选的最大数量的信令中的参考值”的范围内,包括其在
内。因此,当tpm的分区的数量为2且参考值为合并候选的最大数量时,maxnumtrianglemergecand可以存在于从2到maxnummergecand的范围内(包括2和maxnummergecand),如图49中所图示。
[0422]
根据本公开的实施例,当指示在tpm中使用的候选的最大数量的信令不存在时,能够推断指示在tpm中使用的候选的最大数量的信令或推断出在tpm中使用的候选的最大数量。例如,当指示tpm中使用的候选的最大数量的信令不存在时,可以推断tpm中使用的候选的最大数量等于0。可替选地,当指示tpm中使用的候选的最大数量的信令不存在时,指示tpm中使用的候选的最大数量的信令可以被推断为参考值。
[0423]
此外,当指示在tpm中使用的候选的最大数量的信令不存在时,能够不使用tpm。可替选地,当tpm中使用的候选的最大数量小于tpm中的分区的数量时,能够不使用tpm。可替选地,当tpm中使用的候选的最大数量为0时,能够不使用tpm。
[0424]
然而,根据图48至图49的实施例,当tpm的分区的数量和“指示tpm中使用的候选的最大数量的信令中的参考值”相同时,可能只有一个可能的值作为tpm中使用的候选的最大数量。然而,根据图48至49的实施例,即使在这种情况下,也可以解析指示在tpm中使用的候选的最大数量的信令,这可能是不必要的。当maxnummergecand为2时,参考图49,作为maxnumtrianglemergecand的可能值可以仅为2。然而,参考图48,即使在这种情况下,也可以解析max_num_merge_cand_minus_max_num_triangle_cand。
[0425]
参考图49,maxnumtrianglemergecand可以被确定为(maxnummergecand-max_num_merge_cand_minus_max_num_triangle_cand)。
[0426]
图50是图示根据本公开的实施例的与tpm相关的较高级别信令的图。
[0427]
根据本公开的实施例,当tpm的分区的数量和“指示tpm中使用的候选的最大数量的信令中的参考值”相同时,指示在tpm中使用的候选的最大数量的信令可以不被解析。此外,根据上述实施例,tpm的分区的数量可以是2。此外,“指示在tpm中使用的候选的最大数量的信令中的参考值”可以是合并候选的最大数量。因此,当合并候选的最大数量为2时,可以不解析指示在tpm中使用的候选的最大数量的信令。
[0428]
可替选地,当“指示tpm中使用的候选的最大数量的信令中的参考值”小于或等于tpm中的分区的数量时,指示tpm中使用的候选的最大数量的信令可以不被解析。因此,当合并候选的最大数量为2或更少时,指示在tpm中使用的候选的最大数量的信令可以不被解析。
[0429]
参考图50的行5001,当maxnummergecand(合并候选的最大数量)为2或maxnummergecand(合并候选的最大数量)为2或更少时,max_num_merge_cand_minus_max_num_triangle_cand(第三信息)可能不被解析。此外,当sps_triangle_enabled_flag(第二信息)为1且maxnummergecand(合并候选的最大数量)大于2时,可以解析max_num_merge_cand_minus_max_num_triangle_cand(第三信息)。此外,当sps_triangle_enabled_flag(第二信息)为0时,max_num_merge_cand_minus_max_num_triangle_cand(第三信息)可能不被解析。因此,当sps_triangle_enabled_flag(第二信息)为0或maxnummergecand(合并候选的最大数量)为2或更少时,max_num_merge_cand_minus_max_num_triangle_cand(第三信息)可能不被解析。
[0430]
图51是图示根据本公开的实施例的在tpm中使用的候选的最大数量的图。
[0431]
图51的实施例可以与图50的实施例的情况一起实施。此外,在此图中可以省略上述那些的描述。
[0432]
根据本公开的实施例,当“指示tpm中使用的候选的最大数量的信令中的参考值”是tpm中的分区的数量时,tpm中使用的候选的最大数量可以被推断并设置为tpm的分区的数量。此外,可以在指示在tpm中使用的候选的最大数量的信令不存在的情况下执行推断和设置。根据图50的实施例,当“指示tpm中使用的候选的最大数量的信令中的参考值”是tpm中的分区的数量时,可以不解析指示tpm中使用的候选的最大数量的信令,并且当指示tpm中使用的候选的最大数量的信令不存在时,tpm中使用的候选的最大数量的值可以被推断为tpm中的分区的数量。还能够在满足附加条件时执行推断和设置。附加条件可以是其中指示是否可以使用tpm模式的较高级别信令为1的条件。
[0433]
另外,在此实施例中,虽然已经描述了推断和设置在tpm中使用的候选的最大数量,但是也能够推断和设置指示在tpm中使用的候选的最大数量的信令,使得导出在所描述的tpm中使用的候选的最大数量值,而不是推断和设置在tpm中使用的候选的最大数量。
[0434]
参考图50,当sps_triangle_enabled_flag(第二信息)指示1并且maxnummergecand(合并候选的最大数量)大于2时,可以接收到max_num_merge_cand_minus_max_num_triangle_cand(第三信息)。在这种情况下,参考图51的行5101,可以使用清楚地用信号发送的max_num_merge_cand_minus_max_num_triangle_cand(第三信息)获得maxnumtrianglemergecand(分区的块的合并模式候选的最大数量)。总之,当sps_triangle_enabled_flag(第二信息)为1且maxnummergecand(合并候选的最大数量)大于或等于3时,通过从maxnummergecand(合并候选的最大数量)减去第三信息(max_num_merge_cand_minus_max_num_triangle_cand)可以获得maxnumtrianglemergecand(分区的块的合并模式候选的最大数量)。
[0435]
参考图51的行5102,当sps_triangle_enabled_flag(第二信息)为1并且maxnummergecand(合并候选的最大数量)为2时,能够将maxnumtrianglemergecand(分区的块的合并模式候选的最大数量)设置为2。更具体地,如已经描述的,当sps_triangle_enabled_flag(第二信息)指示1且maxnummergecand(合并候选的最大数量)大于2时,能够接收到max_num_merge_cand_minus_max_num_triangle_cand(第三信息),并且因此,如在行5102处,当sps_triangle_enabled_flag(第二信息)为1并且maxnummergecand(合并候选的最大数量)为2时,可能无法接收到max_num_merge_cand_minus_max_num_triangle_cand(第三信息)。在这种情况下,可以在没有max_num_merge_cand_minus_max_num_triangle_cand(第三信息)的情况下确定umtrianglemergecand(分区的块的合并模式候选的最大数量)。
[0436]
另外,参考图51的行5103,当sps_triangle_enabled_flag(第二信息)为0或maxnummergecand(合并候选的最大数量)不是2时,可以推断并将maxnumtrianglemergecand(分区的块的合并模式候选的最大数量)设置为0。在这种情况下,如参考行5101已经描述的,当sps_triangle_enabled_flag(第二信息)指示1并且maxnummergecand(合并候选的最大数量)大于或等于3时,可以用信号发送max_num_merge_cand_minus_max_num_triangle_cand(第三信息),并且因此maxnummergecand被推断并设置为0的情况可以是其中第二信息为0或合并候选的最大数量为1的情况。总之,当sps_
triangle_enabled_flag(第二信息)为0或maxnummergecand(合并候选的最大数量)为1时,maxnumtrianglemergecand(分区的块的合并模式候选的最大数量)可以设置为0。
[0437]
maxnummergecand(合并候选的最大数量)和maxnumtrianglemergecand(分区的块的合并模式候选的最大数量)可以用于不同的目的。例如,maxnummergecand(合并候选的最大数量)可以在块被分区或不被分区以用于运动补偿时使用。但是,maxnumtrianglemergecand(分区的块的合并模式候选的最大数量)是可以在块被分区时使用的信息。处于合并模式的分区的块的候选的数量不能超过maxnumtrianglemergecand(分区的块的合并模式候选的最大数量)。
[0438]
还能够使用另一个实施例。在图51的实施例中,maxnummergecand不为2的情况包括maxnummergecand大于2的情况,并且在这种情况下,推断并且将maxnumtrianglemergecand设置为0的意义可能不清楚,但在这种情况下,因为指示在tpm中使用的候选的最大数量的信令存在,不执行推断,并且因此,操作上没有问题。然而,在本实施例中,可以利用含义执行推断。
[0439]
如果sps_triangle_enabled_flag(第二信息)为1并且maxnummergecand(合并候选的最大数量)为2或更多,则能够推断并将maxnumtrianglemergecand设置为2(或maxnummergecand)。否则(即,当sps_triangle_enabled_flag为0或maxnummergecand小于2时),能够推断并将maxnumtrianglemergecand设置为0。
[0440]
可替选地,如果sps_triangle_enabled_flag为1且maxnummergecand为2,则可以推断并将maxnumtrianglemergecand设置为2。否则,如果sps_triangle_enabled_flag为0,则可以推断并将maxnumtrianglemergecand设置为0。
[0441]
因此,根据在上述实施例中的图50的实施例,当maxnummergecand为0或1或2时,可能不存在指示tpm中使用的候选的最大数量的信令,而当maxnummergecand为0或1时,可以推断tpm中使用的候选的最大数量并将其设置为0。当maxnummergecand为2时,可以推断在tpm中使用的候选的最大数量并将其设置为2。
[0442]
图52是图示根据本公开的实施例的与tpm相关的语法元素的图。
[0443]
如上所述,在tpm中使用的候选的最大数量可以存在,并且tpm的分区的数量可以被预设。此外,tpm中使用的候选索引可能不同。
[0444]
根据本公开的实施例,当tpm中使用的候选的最大数量与tpm中的分区的数量相同时,可以执行不同于它们不相同的情况的信令。例如,当tpm中使用的候选的最大数量与tpm中的分区的数量相同时,可以执行不同于它们不相同的情况的信令。因此,能够用更少的比特用信号发送。可替选地,当tpm中使用的候选的最大数量小于或等于tpm的分区的数量时,可以执行与候选的最大数量大于分区的数量的情况不同的信令(这些当中,当分区的数量小于tpm的分区的数量时,可能是无法使用tpm的情况)。
[0445]
当tpm存在两个分区时,可以用信号发送两个候选索引。如果tpm中使用的候选的最大数量为2,则可能只有两种可能的候选索引组合。这两种组合可以是m和n分别为0和1的组合,以及其中m和n分别为1和0的组合。因此,两个候选索引可以仅通过1比特的信令来用信号发送。
[0446]
参考图52,当maxnumtrianglemergecand为2时,可以执行不同于其不是的情况(否则,当使用tpm时,maxnumtrianglemergecand大于2的情况)的候选索引信令。可替选地,当
maxnumtrianglemergecand为2或者更少时,可以执行不同于其不是的情况(否则,在使用tpm时,maxnumtrianglemergecand大于2的情况)的候选索引信令。当参考图52时,不同的候选索引信令可以是merge_triangle_idx_indicator解析。不同的候选索引信令可以是不解析merge_triangle_idx0或merge_triangle_idx1的信令方法。这将参考图53进一步描述。
[0447]
图53是图示根据本公开的实施例的tpm候选索引的信令的图。
[0448]
根据本公开的实施例,当使用不同于参考图52所描述的索引信令时,可以基于merge_triangle_idx_indicator来确定候选索引。此外,当使用不同的索引信令时,merge_triangle_idx0或merge_triangle_idx1可能不存在。
[0449]
根据本公开的实施例,当在tpm中使用的候选的最大数量与tpm中的分区的数量相同时,可以基于merge_triangle_idx_indicator来确定tpm候选索引。此外,这可能是使用tpm的块的情况。
[0450]
更具体地,当maxnumtrianglemergecand为2时(或当maxnumtrianglemergecand为2并且mergetriangleflag为1时),可以基于merge_triangle_idx_indicator来确定tpm候选索引。在这种情况下,如果merge_triangle_idx_indicator为0,则作为tpm候选索引的m和n可以分别设置为0和1,并且如果merge_triangle_idx_indicator为1,则作为tpm候选索引的m和n可以分别设置为1和0。可替选地,作为可以被解析使得m和n与描述的那些相同的值(语法元素)的merge_triangle_idx0或merge_triangle_idx1可以被推断和设置。
[0451]
参考图47中描述的基于merge_triangle_idx0和merge_triangle_idx1设置m和n的方法并且参考图53,当merge_triangle_idx0不存在时,如果maxnumtrianglemergecand为2且merge_triangle_idx_indicator为1(或如果maxnumtrianglemergecand为2且mergetriangleflag为1),则merge_triangle_idx0的值可以推断为等于1。另外,否则,merge_triangle_idx0的值可能被推断为等于0。另外,当merge_triangle_idx1不存在时,可以推断merge_triangle_idx1等于0。因此,如果maxnumtrianglemergecand为2,当merge_triangle_idx_indicator为0时,merge_triangle_idx0和merge_triangle_idx1分别为0和0,并且相应地m和n可以分别为0和1。另外,如果maxnumtrianglemergecand为2,当merge_triangle_idx_indicator为1时,merge_triangle_idx0和merge_triangle_idx1分别为1和0,并且相应地,m和n可以分别为1和0。
[0452]
图54是图示根据本公开的实施例的tpm候选索引的信令的图。
[0453]
已经参考图47描述了确定tpm候选索引的方法,但是在图54的实施例中描述了另一种确定方法和信令方法。可以省略与上述描述冗余的描述。此外,m和n可以表示如参考图47所描述的候选索引。
[0454]
根据本公开的实施例,可以将m和n当中的较小值用信号发送给merge_triangle_idx0和merge_triangle_idx1当中的预设语法元素。此外,基于m和n之间的差的值可以用信号发送给merge_triangle_idx0和merge_triangle_idx1中的另一个。此外,能够用信号发送指示m和n的大小关系的值。
[0455]
例如,merge_triangle_idx0可以是m和n的较小值。此外,merge_triangle_idx1可以是基于|m-n|的值。merge_triangle_idx1可以是(|m-n|-1)。这是因为m和n可能不同。此外,表示m和n之间的大小关系的值可以是图54的merge_triangle_bigger。
[0456]
使用此关系,可以基于merge_triangle_idx0、merge_triangle_idx1和merge_
triangle_bigger来确定m和n。参考图54,可以基于merge_triangle_bigger值执行另一操作。例如,当merge_triangle_bigger为0时,n可能大于m。在这种情况下,m可以是merge_triangle_idx0。此外,n可以是(merge_triangle_idx1 m 1)。此外,当merge_triangle_bigger为1时,m可能大于n。在这种情况下,n可以是merge_triangle_idx0。此外,m可以是(merge_triangle_idx1 n 1)。
[0457]
与图47中的方法相比,图54中的方法的优点在于,当m和n中的较小值不为0(或更大)时,可以减少信令开销。例如,当m和n分别为3和4时,在图47的方法中,merge_triangle_idx0和merge_triangle_idx1可能需要分别作为3和3来用信号发送。然而,在图54的方法中,当m和n分别为3和4时,merge_triangle_idx0和merge_triangle_idx1可能需要分别作为3和0用信号发送(除此之外,可能需要指示大小关系的信令)。因此,当使用可变长度信令时,能够使用更少的比特,因为编码和解码值的大小被减少。
[0458]
图55是图示根据本公开的实施例的tpm候选索引的信令的图。
[0459]
已经参考图47描述了确定tpm候选索引的方法,但在图55的实施例中将描述另一种确定方法和信令方法。可以省略与上述描述冗余的描述。此外,m和n可以表示如参考图47所描述的候选索引。
[0460]
根据本公开的实施例,基于m和n当中的较大值的值可以被用信号发送给merge_triangle_idx0和merge_triangle_idx1中的预设语法元素。此外,基于m和n当中较小值的值可以用信号发送给merge_triangle_idx0和merge_triangle_idx1中的另一个。此外,能够用信号发送指示m和n的大小关系的值。
[0461]
例如,merge_triangle_idx0可以基于m和n中较大的值。根据实施例,因为m和n不相等,所以m和n中较大的值将大于或等于1。因此,考虑到m和n中较大的值排除了0,能够用较少的比特用信号发送。例如,merge_triangle_idx0可以是((m和n中较大的值)-1)。在这种情况下,merge_triangle_idx0的最大值可以是(maxnumtrianglemergecand-1-1)(-1,因为它是从0开始的值,并且-1,因为可以排除较大值为0)。最大值可以用于二值化,并且当最大值减小时,可能会出现使用较少比特的情况。此外,merge_triangle_idx1可以是m和n当中的较小的值。此外,merge_triangle_idx1的最大值可以是merge_triangle_idx0。因此,可能存在使用比将最大值设置为maxnumtrianglemergecand更少的比特的情况。另外,当merge_triangle_idx0为0时,即,当m和n当中较大的值为1时,m和n中较小的值为0,并且因此可能不存在附加信令。例如,当merge_triangle_idx0为0时,即,当m和n中较大的值为1时,可以确定m和n中较小的值为0。可替选地,当merge_triangle_idx0为0时,即,当m和n中较大的值为1时,merge_triangle_idx1可以被推断为等于并确定为0。参考图22,能够基于merge_triangle_idx0确定是否解析merge_triangle_idx1。例如,当merge_triangle_idx0大于0时,可以解析merge_triangle_idx1,并且当merge_triangle_idx0为0时,可以不解析merge_triangle_idx1。
[0462]
此外,表示m和n的大小关系的值可以是图55的merge_triangle_bigger。
[0463]
使用此关系,可以基于merge_triangle_idx0、merge_triangle_idx1和merge_triangle_bigger确定m和n。参考图55,可以基于merge_triangle_bigger的值执行另一操作。例如,当merge_triangle_bigger为0时,m可能大于n。在这种情况下,m可以是(merge_triangle_idx0 1)。此外,n可以是merge_triangle_idx1。此外,当merge_triangle_bigger
为1时,n可能大于m。在这种情况下,n可以是(merge_triangle_idx0 1)。此外,m可以是merge_triangle_idx1。此外,当merge_triangle_idx1不存在时,可以推断其值等于0。
[0464]
与图47中的方法相比,图55中的方法的优点在于可以根据m和n值减少信令开销。例如,当m和n分别为1和0时,在图47的方法中,merge_triangle_idx0和merge_triangle_idx1可能需要分别作为1和0用信号发送。然而,在图55的方法中,当m和n分别为1和0时,merge_triangle_idx0和merge_triangle_idx1可能需要分别作为0和0用信号发送,但是可以在没有编码或解析的情况下推断merge_triangle_idx1(除此之外,可能需要指示大小关系的信令)。因此,当使用可变长度信令时,能够使用更少的比特,因为编码和解码值的大小被减少。可替选地,当m和n分别为2和1时,在图47的方法中,可能需要分别用信号发送作为2和1的merge_triangle_idx0和merge_triangle_idx1,并且在图55的方法中,分别用信号发送作为1和1的merge_triangle_idx0和merge_triangle_idx1。然而,在这种情况下,在图55的方法中,因为merge_triangle_idx1的最大值是(3
–1–
1)=1,与最大值较大时相比,可以用更少的比特用信号发送1。例如,图55的方法可能是一种在m和n之间的差较小时,例如,当差为1时,具有优势的方法。
[0465]
也已经描述了参考merge_triangle_idx0以便于确定是否解析图55的语法结构中的merge_triangle_idx1,但也能够基于m和n当中的较大的值来确定是否解析merge_triangle_idx1。即,其能够被分类成在m和n中较大的值为1或者更大的情况和不为1的情况。但是,在这种情况下,merge_triangle_bigger解析可能需要发生在确定是否解析merge_triangle_idx1之前。
[0466]
在以上描述中,已经通过具体实施例描述了配置,但是本领域的技术人员可以在不脱离本公开的精神和范围的情况下进行修改和变化。因此,本公开所属的本技术领域的人员从本公开的详细描述和实施例中能够容易地推断出的内容被解释为落入本公开的权利范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献