本发明涉及一种对数据进行有损或无损压缩的编码及解码系统,特别是图像和视频数据的编码及解码的方法和装置。
背景技术:
随着人类社会进入大数据、云计算、移动计算、云-移动计算、超高清(4k)和特超高清(8k)视频图像分辨率、4g/5g通讯、虚拟现实的时代,对各种数据,包括大数据、图像数据、视频数据,进行超高压缩比和极高质量的数据压缩成为必不可少的技术。
数据集是由数据的样值(例如:字节、比特、像素、像素分量、空间采样点、变换域系数)组成的排列成一定空间(一维、二维、或多维)形状的有限数据的集合(例如:一个一维数据队列、一个二维数据文件、一帧图像、一个视频序列、一个变换域、一个变换块、多个变换块、一个三维场景、一个持续变化的三维场景的序列)。对数据集,特别是二维或以上数据集进行数据压缩的编码(以及相应的解码)时,通常把此数据集划分成若干具有预定形状的子集,称为编码块(从解码的角度也就是解码块,统称为编解码块),以编解码块为单位,按照预定的时间顺序,一块一块进行编码或解码。在任一时刻,正在编码中的编码块称为当前编码块。在任一时刻,正在解码中的解码块称为当前解码块。当前编码块或当前解码块统称为当前编解码块或简称为当前块。正在编码或解码中的样值称为当前编码样值或当前解码样值,简称为当前样值。
对于具有一定形状(不一定限于正方形或矩形,可以是任何合理的其他形状)的一个编解码块,在很多场合需要将其划分成更精细的基元(基本单元),按照预定的时间顺序,一个基元一个基元进行编码或解码。对一个基元内的所有样值,通常施行同一类型的编码或解码操作。在任一时刻,正在编码或解码中的基元称为当前基元。对一个基元进行编码的结果是一个或多个编码参数,最后产生含这些编码参数的压缩数据码流。对一个基元进行解码就是解析所述压缩数据码流获得一个或多个编码参数,从所述一个或多个编码参数复原出重构的数据的样值。
基元的例包括编解码块(整个编解码块作为一个基元)、正方形或矩形或三角形或梯形等各种形状的子块、微块、串、像素串、样值串、索引串、线条。
本发明中涉及的数据与数据集包括采集或生成的原始状态数据与数据集,也包括经过若干处理的中间状态数据与数据集,还包括在编解码过程中产生的编码参数数据与数据集,如各种编码模式,多维或三维或二维运动矢量,匹配长度等。
数据压缩的一个手段是挖掘各层次各方面的数据单元之间的相关性,用通常称为参考数据单元(也常称为预测数据单元、补偿数据单元、匹配数据单元、被匹配数据单元、预测值、补偿值、参考值等)的数据单元来匹配(也常称为预测、表示、代表、补偿、近似、逼近等)当前数据单元,达到数据的无损或有损压缩的效果。
可用来作为预测数据单元(也常称为参考数据单元、补偿数据单元、匹配数据单元、被匹配数据单元、预测值、补偿值、参考值等)的已完成至少部分编解码操作的一个或多个数据单元组成一个预测候选集(也称为预测值候选集或称为参考候选集等)简称候选集。当一个候选集有多个数据单元时,用候选集之中的一个数据单元来预测(也常称为匹配、表示、代表、补偿、近似、逼近等)一个当前数据单元就需要用一个索引(也常称为地址、指数等)来指定预测数据单元到底是所述候选集中的哪个数据单元。
在现有技术中,为了增加预测数据单元的数目以利于提高找到好的预测数据单元的可能性,从而提升压缩效果,常常采用多个候选集。但另一方面,候选集越多,就需要消耗更多的比特数来表示选择哪一个候选集和哪一个索引值作为当前数据单元的预测数据单元,因而影响压缩效果,降低编码效率。
技术实现要素:
为了解决数据压缩中的这一问题,本发明提供了一种使用多个以特定编码参数互相关联的候选集的数据压缩方法和装置,这些候选集以一个预定的,在编解码过程中既有的,与一个当前数据单元相对应的特定编码参数互相关联,在对当前数据单元进行编解码时,根据与所述当前数据单元相对应的特定编码参数的值,选择多个候选集之一作为所述当前数据单元的当前候选集。这样,就不需要消耗任何比特数来表示选择哪一个候选集,从而提高编码效率。
本发明的首要技术特征是具有多个以特定编码参数互相关联的候选集,而每个当前数据单元又与一个特定编码参数的值相对应,根据这个特定编码参数的值选择择多个候选集之一作为所述当前数据单元的当前候选集。
本发明的编码方法或装置的最基本的特有技术特征是在对当前数据单元进行编码时,根据与所述当前数据单元相对应的特定编码参数的值,选择多个候选集之一作为所述当前数据单元的当前候选集,在至少所述当前候选集之中,根据预定方案,如消耗的比特数的多少和/或编码误差的大小,导出或选取一个最优的数据单元作为所述当前数据单元的预测数据单元,产生至少含表示当前数据单元的预测数据单元的信息的压缩数据码流。图1是本发明的编码方法或装置的一个示意图。
本发明的解码方法或装置的最基本的特有技术特征是解析压缩数据码流,获取至少表示当前数据单元的预测数据单元的信息,根据与所述当前数据单元相对应的特定编码参数的值,选择多个候选集之一作为所述当前数据单元的当前候选集,在至少所述当前候选集之中,根据所述当前数据单元的预测数据单元的信息,解码获得所述当前数据单元的预测数据单元。图2是本发明的解码方法或装置的一个示意图。
根据本发明的一个方面,提供了一种数据压缩的编码方法或装置,至少包括完成下列功能和操作的步骤或模块:
在对一个编码块中的一个当前数据单元进行编码时,至少根据与所述当前数据单元相对应的特定编码参数的值,选择多个候选集之一作为所述当前数据单元的当前候选集,从至少所述当前候选集,至少根据预定方案,导出或选取一个称为选定数据单元的数据单元作为所述当前数据单元的预测数据单元(预测数据单元是与所述当前数据单元接近或完全相同的选定数据单元),预测数据单元的一种特例是等同数据单元(等同数据单元是与所述当前数据单元完全相同的选定数据单元),产生至少含表示当前数据单元的预测数据单元的部分或全部信息的压缩数据码流。
根据本发明的另一个方面,还提供了一种数据压缩的解码方法或装置,至少包括完成下列功能和操作的步骤或模块:
在对一个解码块中的一个当前数据单元进行解码时,解析压缩数据码流,获取至少表示当前数据单元的预测数据单元的部分或全部信息,至少根据与所述当前数据单元相对应的特定编码参数的值,选择多个候选集之一作为所述当前数据单元的当前候选集,从至少所述当前候选集,至少根据预定方案,导出或选取一个称为选定数据单元的数据单元作为所述当前数据单元的预测数据单元(预测数据单元是与所述当前数据单元接近或完全相同的选定数据单元),预测数据单元的一种特例是等同数据单元(等同数据单元是与所述当前数据单元完全相同的选定数据单元)。
从第一个角度,本发明提供了一种对数据集及其数据进行压缩的编码方法,其特征在于至少包括下列步骤:
1)在对一个编码块中的一个当前数据单元进行编码时,至少根据与所述当前数据单元相对应的特定编码参数的值,选择多个候选集之一作为所述当前数据单元的当前候选集;
2)从至少所述当前候选集,至少根据预定方案,导出或选取一个称为选定数据单元的数据单元作为所述当前数据单元的预测数据单元(预测数据单元是与所述当前数据单元接近或完全相同的选定数据单元),预测数据单元的一种特例是等同数据单元(等同数据单元是与所述当前数据单元完全相同的选定数据单元);
3)产生至少含表示当前数据单元的预测数据单元的部分或全部信息的压缩数据码流。
从第二个角度,本发明提供了一种对数据集及其数据进行压缩的解码方法,其特征在于至少包括下列步骤:
1)在对一个解码块中的一个当前数据单元进行解码时,解析压缩数据码流,获取至少表示当前数据单元的预测数据单元的部分或全部信息;
2)至少根据与所述当前数据单元相对应的特定编码参数的值,选择多个候选集之一作为所述当前数据单元的当前候选集;
3)从至少所述当前候选集,至少根据预定方案,导出或选取一个称为选定数据单元的数据单元作为所述当前数据单元的预测数据单元(预测数据单元是与所述当前数据单元接近或完全相同的选定数据单元),预测数据单元的一种特例是等同数据单元(等同数据单元是与所述当前数据单元完全相同的选定数据单元)。
从第三个角度,本发明提供了一种对数据集及其数据进行压缩的编码装置,其特征在于至少包括下列模块:
1)当前候选集选择模块,在对一个编码块中的一个当前数据单元进行编码时,至少根据与所述当前数据单元相对应的特定编码参数的值,选择多个候选集之一作为所述当前数据单元的当前候选集;
2)预测数据单元选择模块,从至少所述当前候选集,至少根据预定方案,导出或选取一个称为选定数据单元的数据单元作为所述当前数据单元的预测数据单元(预测数据单元是与所述当前数据单元接近或完全相同的选定数据单元),预测数据单元的一种特例是等同数据单元(等同数据单元是与所述当前数据单元完全相同的选定数据单元);
3)压缩数据码流生成模块,产生至少含表示当前数据单元的预测数据单元的部分或全部信息的压缩数据码流。
从第四个角度,本发明提供了一种对数据集及其数据进行压缩的解码装置,其特征在于至少包括下列模块:
1)压缩数据码流解析模块,在对一个解码块中的一个当前数据单元进行解码时,解析压缩数据码流,获取至少表示当前数据单元的预测数据单元的部分或全部信息;
2)当前候选集选择模块,至少根据与所述当前数据单元相对应的特定编码参数的值,选择多个候选集之一作为所述当前数据单元的当前候选集;
4)预测数据单元解码模块,从至少所述当前候选集,至少根据预定方案,导出或选取一个称为选定数据单元的数据单元作为所述当前数据单元的预测数据单元(预测数据单元是与所述当前数据单元接近或完全相同的选定数据单元),预测数据单元的一种特例是等同数据单元(等同数据单元是与所述当前数据单元完全相同的选定数据单元)。
本发明适用于有损数据压缩的编码和解码,本发明也同样适用于无损数据压缩的编码和解码。本发明适用于图像数据的编码和解码,本发明也同样适用于任何一维、二维或多维数据的编码和解码。
本发明中,数据压缩所涉及的数据包括下列类型的数据之一或其组合
1)一维数据;
2)二维数据;
3)多维数据;
4)图像;
5)图像的序列;
6)视频;
7)三维场景;
8)持续变化的三维场景的序列;
9)虚拟现实的场景;
10)持续变化的虚拟现实的场景的序列
11)像素形式的图像;
12)图像的变换域数据;
13)二维或二维以上字节的集合;
14)二维或二维以上比特的集合;
15)像素的集合;
16)像素分量的集合。
本发明中,在数据是从图像、图像的序列、视频等产生的情形,编码块或解码块是图像的一个编码区域或一个解码区域,包括以下至少一种:整幅图像、图像的子图像、条带slice、片块tile、宏块、最大编码单元lcu、编码树单元ctu、编码单元cu、cu的子区域、子编码单元subcu、预测单元pu、pu的子区域、子预测单元subpu、预测块、预测子块、子预测块、变换单元tu、tu的子区域、子变换单元subtu、变换块、变换子块、子变换块。
本发明中,所述基元包括下列情形之一或其组合:编解码块、编解码块的子区域、正方形或矩形或三角形或梯形等各种形状的子块、微块、串、像素串、样值串、索引串、线条。
以上通过若干特定的具体实例说明本发明的技术特征。本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在不背离本发明的精神下进行各种修饰或改变。
附图说明
图1是本发明的编码方法或装置的一个示意图。
图2是本发明的解码方法或装置的一个示意图。
具体实施方式
以下是本发明的更多的实施细节或变体。
实施或变体例1
所述编码方法或装置或者解码方法或装置中,
在视频编解码的帧间编码(包括允许使用当前图像作为参考图像的情形)中,所述数据单元是编解码块或子块的运动矢量,至少包括一个表示当前块或子块在其所在的图像即当前图像中的二维坐标与对应的参考块或子块在其所在的图像即参考图像中的二维坐标这两者(坐标)之间的差即偏移量的二维矢量(mv[0],mv[1]);
所述特定编码参数是帧间编码的编解码块或子块的参考图像索引ref_idx,表示参考块或子块所在的图像即参考图像在参考图像队列中的索引,即表示参考块或子块在参考图像队列中的哪一帧图像中;
所述候选集是历史最近运动矢量预测值候选集,由在编解码历史过程中按照编解码顺序出现的最近若干个采用帧间编码模式的编解码块或子块的运动矢量组成;
具有同样的一组(即一个或几个)参考图像索引值的历史最近运动矢量组成一个历史最近运动矢量预测值候选集;
所述多个候选集是分别与多组,其中每组有一个或几个,参考图像索引值相对应的多个历史最近运动矢量预测值候选集。
实施或变体例2
所述编码方法或装置或者解码方法或装置中,
在视频编解码的帧间编码(包括允许使用当前图像作为参考图像的情形)中,所述数据单元是编解码块或子块的运动矢量,至少包括一个表示当前块或子块在其所在的图像即当前图像中的二维坐标与对应的参考块或子块在其所在的图像即参考图像中的二维坐标这两者(坐标)之间的差即偏移量的二维矢量(mv[0],mv[1]);
帧间编码的编解码块或子块的运动矢量的运动矢量预测值来自至少合并候选列表mergecandlist;
所述合并候选列表至少包括下列运动矢量作为当前块的运动矢量的运动矢量预测值:
同帧相邻也称空间相邻(spatialneighboring)编解码块或其子块的运动矢量,称为同帧相邻运动矢量
和/或
前帧相邻也称时间相邻(temporalneighboring)编解码块或其子块的运动矢量,称为前帧相邻运动矢量
和/或
属于与选中的一组(即一个或几个)特定参考图像索引值相对应的一个历史最近运动矢量预测值候选集的部分或全部运动矢量,称为历史最近运动矢量;
所述合并候选列表有maxnummergecand个候选运动矢量预测值,分别用序号i从0至maxnummergecand-1来表示;
如果序号为0的运动矢量预测值不是历史最近运动矢量,则所述选中的一组特定参考图像索引值至少包括所述序号为0的运动矢量预测值的参考图像索引,否则,所述选中的一组特定参考图像索引值至少包括0。
实施或变体例3
实施与变体例2所述编码方法或装置或者解码方法或装置中,
所述合并候选列表的构建过程至少包括下列操作:
首先将不重复的同帧相邻运动矢量放入所述合并候选列表,
其次将不重复的前帧相邻运动矢量放入所述合并候选列表,
然后将不重复的具有同一参考图像索引值的历史最近运动矢量放入所述合并候选列表。
实施或变体例4
实施与变体例2所述编码方法或装置或者解码方法或装置中,
所述合并候选列表的构建过程至少包括下列操作:
初始化序号i为0,
如果同帧相邻左方的块或子块可用并且有效,则将所述左方的块或子块的运动矢量赋值予序号为i的候选运动矢量预测值并且序号i加一,
如果同帧相邻上方的块或子块可用并且有效,则将所述上方的块或子块的运动矢量赋值予序号为i的候选运动矢量预测值并且序号i加一,
如果同帧相邻右上方的块或子块可用并且有效,则将所述右上方的块或子块的运动矢量赋值予序号为i的候选运动矢量预测值并且序号i加一,
如果同帧相邻左下方的块或子块可用并且有效,则将所述左下方的块或子块的运动矢量赋值予序号为i的候选运动矢量预测值并且序号i加一,
如果前帧自适应位置的块或子块可用并且有效,则将所述前帧自适应位置的块或子块的运动矢量赋值予序号为i的候选运动矢量预测值并且序号i加一(仅适应于amvpcandlist),
如果同帧相邻左上方的块或子块可用并且有效,则将所述左上方的块或子块的运动矢量赋值予序号为i的运动矢量预测值并且序号i加一,
如果前帧同位置的块可用并且有效,则将所述前帧同位置的块的运动矢量赋值予序号为i的候选运动矢量预测值并且序号i加一,
反复将至少具有与序号为预定常数(如0)的运动矢量预测值的参考图像索引值相等的参考图像索引值的历史最近运动矢量预测值候选集之中的运动矢量,只要其运动矢量值和/或参考图像索引值不等于在所述合并候选列表的构建过程中已经放入所述合并候选列表的运动矢量的运动矢量值和/或参考图像索引值即不与所述合并候选列表内序号更小的运动矢量的运动矢量值和/或参考图像索引值重复,按顺序依次赋值予序号为i的候选运动矢量预测值并且序号i加一,只到序号i等于maxnummergecand为止。
实施或变体例5
实施或变体例4所述编码方法或装置或者解码方法或装置中,“有用”的定义是所述块或子块存在,已完成至少部分编解码操作并且在同帧相邻的场合与当前块在同一条带内,而“有效”的定义是下列情形之一或其组合:
1)具有运动矢量,
2)具有运动矢量并且其运动矢量值和/或参考图像索引值不等于在所述合并候选列表的构建过程中已经放入所述合并候选列表的运动矢量的运动矢量值和/或参考图像索引值即不与所述合并候选列表内序号更小的运动矢量的运动矢量值和/或参考图像索引值重复,
3)采用具有至少一个运动矢量的编码模式,包括:帧间预测模式,允许使用当前图像作为参考图像的帧间预测模式,帧内块匹配模式,帧内块预测模式,串匹配模式,串预测模式,微块匹配模式,微块预测模式,线条匹配模式,线条预测模式,
3)具有预定特征,
4)满足预定条件,
5)具有预定类型的运动矢量,
6)具有其取值落在一个预定取值范围内的运动矢量,
7)具有其取值落在一个预定取值范围外的运动矢量。
实施或变体例6
所述编码方法或装置或者解码方法或装置中,当一个候选集有多于一个元素(即数据单元)时,使用索引idx来表示所述候选集的元素,因此,所述选定数据单元由一个选定索引来表示。
实施或变体例7
所述编码方法或装置或者解码方法或装置中,
所述数据单元是视频编解码中编解码块或子块的运动矢量,至少包括一个表示当前块或子块在其所在的图像即当前图像中的二维坐标与对应的参考块或子块在其所在的图像即参考图像中的二维坐标这两者(坐标)之间的差即偏移量的二维矢量(mv[0],mv[1]);
所述预测数据单元是所述当前运动矢量的运动矢量预测值;
所述表示当前数据单元的预测数据单元的部分或全部信息是表示当前运动矢量的运动矢量预测值的部分或全部信息;
所述特定编码参数是编解码块或子块的编码模式,其取值至少包括帧内块复制预测即intrablockcopy预测简称ibc预测模式和帧间预测即interprediction模式;
所述候选集是历史最近运动矢量预测候选集,由在编解码历史过程中按照编解码顺序出现的最近若干个采用帧间预测模式和/或ibc预测模式的编解码块或子块的运动矢量组成,采用ibc预测模式的编解码块或子块的运动矢量也称为块矢量即blockvector简写为bv;
具有ibc预测模式的历史最近运动矢量组成ibc历史最近运动矢量预测候选集hmvpibccandlist={hmvpibccandlist[i],0≤i≤i1-1},其元素即所存储的块矢量是已完成至少部分编解码操作并且至少符合第一类预定规则的编解码块或子块的块矢量中又进一步满足第一类选择条件的块矢量,其中i1是hmvpibccandlist中存储的块矢量的数目,i1小于或等于一个预定的第一最大值;
具有帧间预测模式的历史最近运动矢量组成帧间历史最近运动矢量预测候选集hmvpcandlist={hmvpcandlist[i],0≤i≤i2-1},其元素即所存储的运动矢量是已完成至少部分编解码操作并且至少符合第二类预定规则的编解码块或子块的运动矢量中又进一步满足第二类选择条件的运动矢量,其中i2是hmvpcandlist中存储的运动矢量的数目,i2小于或等于一个预定的第二最大值;
所述多个候选集是hmvpibccandlist和hmvpcandlist。
实施或变体例8(预定规则和选择条件的例)
实施或变体例7所述编码方法或装置或者解码方法或装置中,
所述第一类预定规则至少包括所述已完成至少部分编解码操作的编解码块或子块的编码模式是帧内块复制预测模式,所述第一类选择条件至少包括所涉及的运动矢量所表示的参考块或子块在预定的参考范围内;
所述第二类预定规则至少包括所述已完成至少部分编解码操作的编解码块或子块的编码模式是帧间预测模式,所述第二类选择条件至少包括所涉及的运动矢量所表示的参考块或子块在预定的参考范围内。
实施或变体例9(预定的最大值的例)
实施或变体例7所述编码方法或装置或者解码方法或装置中,
所述第一最大值是一个介于4与12之间的整数;
所述第二最大值是一个介于4与12之间的整数。
实施或变体例10(用于运动矢量预测的候选列表的例)
实施或变体例7所述编码方法或装置或者解码方法或装置中,
当所述编码模式是ibc预测模式时,至少从所述hmvpibccandlist中遵循预定方式选取预定数目k1个hmvpibccandlist[i]放入一个用于块矢量预测的块矢量候选列表bvcandlist={bvcandlist[j],0≤j≤j1-1},再从所述bvcandlist中选取一个块矢量bvcandlist[mvidx]作为所述当前块矢量的块矢量预测值,其中j1是bvcandlist中存储的运动矢量的数目,j1小于或等于一个预定的最大值(通常是一个介于4与16之间的整数),mvidx满足0≤mvidx≤j1-1;
当所述编码模式是帧间预测模式时,至少从所述hmvpcandlist中遵循预定方式选取预定数目k2个hmvpcandlist[i]放入一个用于运动矢量预测的合并候选列表mergecandlist={mergecandlist[j],0≤j≤j2-1},再从所述mergecandlist中选取一个运动矢量mergecandlist[merge_idx]作为所述当前运动矢量的运动矢量预测值,其中j2是mergecandlist中存储的运动矢量的数目,j2小于或等于一个预定的最大值(通常是一个介于4与16之间的整数),merge_idx满足0≤merge_idx≤j2-1。
实施或变体例11(用于运动矢量预测的候选列表的例)
实施或变体例10所述编码方法或装置或者解码方法或装置中,
所述mvidx存在于所述表示当前运动矢量的运动矢量预测值的部分或全部信息中或者导出自至少所述表示当前运动矢量的运动矢量预测值的部分或全部信息;
所述merge_idx存在于所述表示当前运动矢量的运动矢量预测值的部分或全部信息中或者导出自至少所述表示当前运动矢量的运动矢量预测值的部分或全部信息。
实施或变体例12(历史最近运动矢量预测候选集的元素的组成成分的例)
实施或变体例7所述编码方法或装置或者解码方法或装置中,
所述hmvpibccandlist的元素的组成成分至少包括块矢量的水平分量和垂直分量;
所述hmvpcandlist的元素的组成成分至少包括一个或两个运动矢量的水平分量、垂直分量、表示参考图像是参考图像队列中哪帧图像的参考索引,另外包括至多一个双向预测cu层次权重。
实施或变体例13(构建和更新历史最近运动矢量预测候选集的例)
实施或变体例7所述编码方法或装置或者解码方法或装置中,
所述hmvpibccandlist和/或hmvpcandlist在开始一帧图像的编解码的时刻被重置为空集。
实施或变体例14(构建和更新历史最近运动矢量预测候选集的例)
实施或变体例7所述编码方法或装置或者解码方法或装置中,
所述hmvpibccandlist和/或hmvpcandlist在开始一个条带的编解码的时刻被重置为空集。
实施或变体例15(构建和更新历史最近运动矢量预测候选集的例)
实施或变体例7所述编码方法或装置或者解码方法或装置中,
当在编解码中得到一个参考图像为当前图像的新运动矢量时,按照第一预定方案更新hmvpibccandlist;
当在编解码中得到一个参考图像为非当前图像的新运动矢量时,按照第二预定方案更新hmvpcandlist。
实施或变体例16(构建和更新历史最近运动矢量预测候选集的例)
实施或变体例15所述编码方法或装置或者解码方法或装置中,
所述第一预定方案至少包括1)所述hmvpibccandlist是一个先入先出缓冲区即fifobuffer,2)删除所述hmvpibccandlist内与所述新运动矢量等同的运动矢量并将紧随其后的运动矢量都前移一个位置,3)当所述hmvpibccandlist内的空间占满时,按照先入先出的规则移出最先放入的运动矢量,将其余运动矢量都前移一个位置并移入所述新运动矢量;
所述第二预定方案至少包括1)所述hmvpcandlist是一个先入先出缓冲区即fifobuffer,2)删除所述hmvpcandlist内与所述新运动矢量等同的运动矢量并将紧随其后的运动矢量都前移一个位置,3)当所述hmvpcandlist内的空间占满时,按照先入先出的规则移出最先放入的运动矢量,将其余运动矢量都前移一个位置并移入所述新运动矢量。
实施或变体例17
所述编码方法或装置或者解码方法或装置中,所述多个候选集是一个其元素数目大于1的总候选集的互不相同的多个真子集。
实施或变体例18
所述编码方法或装置或者解码方法或装置中,
视频编解码中,编码时,对编码块或子块的预测残差进行主变换获得主变换系数后,常常对主变换系数的低频部分进行可选的低频次变换获得最后的变换系数。为了提高编码效率,低频次变换通常从很多个预定的次变换正矩阵中选取一个最合适的次变换正矩阵来进行低频次变换,或者选择不进行低频次变换(这时,变换系数等于主变换系数)。对非低频系数,不进行次变换,也就是变换系数等于主变换系数。相应地,解码时,对解码块或子块的重建(也称重构)变换系数中的低频部分进行可选的逆低频次变换获得重建主变换系数。相应地,逆低频次变换通常从很多个预定的次变换逆矩阵中选取一个对应的次变换逆矩阵来进行逆低频次变换,或者选择不进行逆低频次变换(这时,重建主变换系数等于重建变换系数)。对非低频系数,不进行次变换,也就是重建主变换系数等于重建变换系数。
对一个尺寸为m×n,其中m=m×l和n=n×l都是l(l通常是4)的整数倍数,的编解码块或子块进行变换(正变换或逆变换)时,一般将该编解码块或子块的m×n个变换系数分为m×n个系数组,每个系数组由l×l个变换系数组成。最左上角l×l个变换系数组成的系数组是变换系数的最低频部分,该最左上角系数组的组编号设为0。
所述数据单元是视频编解码中对编解码块或子块进行可选的低频次变换和逆低频次变换时所使用的变换矩阵(含变换正矩阵和变换逆矩阵);
所述特定编码参数至少包括编解码块或子块在预测阶段所使用的帧内预测模式,其取值至少包括从-14至83的整数;
所述多个候选集是k(k通常小于16)个候选集:候选集k,0≤k≤k-1;
所述预测数据单元是等同数据单元,即当前变换矩阵与从候选集选取的选定变换矩阵完全相同;
所述表示当前数据单元的预测数据单元的部分或全部信息包括记为低频次变换索引lowfreqsectransidx的参数;lowfreqsectransidx为0表示不进行低频次变换;lowfreqsectransidx为非0表示进行低频次变换并且lowfreqsectransidx的值表示选定变换矩阵是当前候选集内的哪个矩阵;
当作为变换块或变换子块的一个编解码块或子块有非零的非最左上角系数组时,即不是仅最左上角系数组具有非零变换系数时,lowfreqsectransidx不存在于压缩数据码流中;
当lowfreqsectransidx不存在于压缩数据码流中时,lowfreqsectransidx被默认为取缺省值0,即不进行低频次变换。
实施或变体例19
实施或变体例18所述编码方法或装置或者解码方法或装置中,当主变换不使用dct-2(也称dct-ii)而使用其他类型的变换时,lowfreqsectransidx不存在于压缩数据码流中。
实施或变体例20
实施或变体例18所述编码方法或装置或者解码方法或装置中,当主变换使用隐含的多变换选择时,lowfreqsectransidx不存在于压缩数据码流中。
实施或变体例21
实施或变体例18所述编码方法或装置或者解码方法或装置中,
帧内预测模式的取值范围被分为k个互不相交的子取值范围:子取值范围k,0≤k≤k-1;
当帧内预测模式的取值属于子取值范围k时,选择候选集k作为当前候选集;
实施或变体例22
实施或变体例18所述编码方法或装置或者解码方法或装置中,
所述k=4;
帧内预测模式的取值范围被分为4个互不相交的子取值范围:
子取值范围0由下列整数组成:0,1,81,82,83,
子取值范围1由下列整数组成:小于0,大于等于2并且小于等于12,大于等于56并且小于等于80,
子取值范围2由下列整数组成:大于等于13并且小于等于23,大于等于45并且小于等于55,
子取值范围3由下列整数组成:大于等于24并且小于等于44;
当帧内预测模式的取值属于子取值范围k时,选择候选集k作为当前候选集。
实施或变体例23
实施或变体例18所述编码方法或装置或者解码方法或装置中,
所述k=3;
帧内预测模式的取值范围被分为3个互不相交的子取值范围:
子取值范围0由下列整数组成:0,1,81,82,83,
子取值范围1由下列整数组成:小于0,大于等于2并且小于等于18,大于等于50并且小于等于80,
子取值范围2由下列整数组成:大于等于19并且小于等于49;
当帧内预测模式的取值属于子取值范围k时,选择候选集k作为当前候选集。
实施或变体例24
实施或变体例18所述编码方法或装置或者解码方法或装置中,
所述k=2;
帧内预测模式的取值范围被分为2个互不相交的子取值范围:
子取值范围0由下列整数组成:大于等于-14并且小于等于34的偶数,大于等于35并且小于等于83的奇数,
子取值范围1由下列整数组成:大于等于-14并且小于等于34的奇数,大于等于35并且小于等于83的偶数;
当帧内预测模式的取值属于子取值范围k时,选择候选集k作为当前候选集。
实施或变体例25
实施或变体例19或20或21或22或23或24所述编码方法或装置或者解码方法或装置中,
每个候选集k都由两个互不相交的子集,子集k1和子集k2组成;
所述特定编码参数还至少包括编解码块或子块的尺寸;
将编解码块或子块的尺寸的取值范围分为两个互不相交的子取值范围:子取值范围1和子取值范围2;
当编解码块或子块的尺寸的取值属于所述子取值范围1时,选定变换矩阵选取自所述子集k1,否则,选定变换矩阵选取自所述子集k2。
实施或变体例26
所述编码方法或装置或者解码方法或装置中,
所述数据单元是视频编解码中采用帧间预测模式并且参考图像不是当前图像的编解码块或子块的运动矢量,至少包括一个表示当前块或子块在其所在的图像即当前图像中的二维坐标与对应的参考块或子块在其所在的图像即参考图像中的二维坐标这两者(坐标)之间的差即偏移量的二维矢量(mv[0],mv[1]);
所述预测数据单元是所述当前运动矢量的运动矢量预测值;
所述表示当前数据单元的预测数据单元的部分或全部信息是表示当前运动矢量的运动矢量预测值的部分或全部信息;
所述特定编码参数至少包括编解码块或子块的帧间仿射标志、合并三角划分标志、合并子块划分标志;
所述多个候选集至少包括三个候选集:一般合并候选列表、子块合并候选列表、三角合并候选集;
如果所述帧间仿射标志、所述合并三角划分标志、所述合并子块划分标志这三个标志都为0,允许选择所述一般合并候选列表作为当前候选集;否则,如果所述合并三角划分标志为1而所述帧间仿射标志和所述合并子块划分标志都为0,允许选择所述三角合并候选集作为当前候选集;否则,允许选择所述子块合并候选列表作为当前候选集。
实施或变体例27
实施或变体例26所述编码方法或装置或者解码方法或装置中,
一帧图像中一般合并候选列表的元素数目的最大值由存在于压缩数据码流的图像参数集或图像头之中的一般合并候选列表元素数目最大值语法元素规定;
当所述一般合并候选列表元素数目最大值语法元素的值为0时,所述图像的每个条带头都在压缩数据码流中存在一个语法元素规定该条带中一般合并候选列表的元素数目的最大值;
一帧图像中子块合并候选列表的元素数目的最大值由存在于压缩数据码流的图像参数集或图像头之中的子块合并候选列表元素数目最大值语法元素规定;
当所述子块合并候选列表元素数目最大值语法元素的值为0并且序列中允许使用至少帧间仿射时,所述图像的每个条带头都在压缩数据码流中存在一个语法元素规定该条带中子块合并候选列表的元素数目的最大值;
一帧图像中三角合并候选集的元素数目的最大值由存在于压缩数据码流的图像参数集或图像头之中的三角合并候选集元素数目最大值语法元素规定;
当所述三角合并候选集元素数目最大值语法元素的值为0并且序列中允许使用三角预测并且所述一般合并候选列表的元素数目的最大值大于或等于2时,所述图像的每个条带头都在压缩数据码流中存在一个语法元素规定该条带中三角合并候选集的元素数目的最大值。
实施或变体例28
实施或变体例26所述编码方法或装置或者解码方法或装置中,
一帧图像中一般合并候选列表的元素数目的最大值由存在于压缩数据码流的图像参数集或图像头之中的下列语法元素规定:
pps_six_minus_max_num_merge_cand_plus1
当pps_six_minus_max_num_merge_cand_plus1的值为0时,所述图像的每个条带头都在压缩数据码流中存在下列语法元素规定该条带中一般合并候选列表的元素数目的最大值:
six_minus_max_num_merge_cand
一帧图像中子块合并候选列表的元素数目的最大值由存在于压缩数据码流的图像参数集或图像头之中的下列语法元素规定:
pps_five_minus_max_num_subblock_merge_cand_plus1
当pps_five_minus_max_num_subblock_merge_cand_plus1的值为0并且序列中允许使用帧间仿射时,所述图像的每个条带头都在压缩数据码流中存在下列语法元素规定该条带中子块合并候选列表的元素数目的最大值:
five_minus_max_num_subblock_merge_cand
一帧图像中三角合并候选集的元素数目的最大值由存在于压缩数据码流的图像参数集或图像头之中的下列语法元素规定:
pps_max_num_merge_cand_minus_max_num_triangle_cand_minus1
当pps_max_num_merge_cand_minus_max_num_triangle_cand_minus1的值为0并且序列中允许使用三角预测并且所述一般合并候选列表的元素数目的最大值大于或等于2时,所述图像的每个条带头都在压缩数据码流中存在下列语法元素规定该条带中三角合并候选集的元素数目的最大值:
max_num_merge_cand_minus_max_num_triangle_cand。
实施或变体例29
实施或变体例26所述编码方法或装置或者解码方法或装置中,
三角合并候选集记为trianglemergecand={trianglemergecand[i],0≤i≤i-1},其中每个元素trianglemergecand[i]至少包括单向运动矢量trianglemergemv0[i];
一般合并候选列表记为mergecandlist={mergecandlist[j],0≤j≤j-1},其中每个元素mergecandlist[j]至少包括双向运动矢量mergemv0[j]和/或mergemv1[j];
使用预定映射j(i)从i计算j=j(i);预定映射的一个特例是j=i;预定映射的另一个特例是j=i+1;预定映射也可用一个预定映射表定义;
trianglemergemv0[i]从mergemv0[j]和/或mergemv1[j],其中j=j(i),根据预定规则导出。
实施或变体例30
实施或变体例29所述编码方法或装置或者解码方法或装置中,
从mergemv0[j]和/或mergemv1[j]导出trianglemergemv0[i]的预定规则至少包括根据j的奇偶性以及mergemv0[j]和/或mergemv1[j]是否存在来决定如何导出trianglemergemv0[i]。
实施或变体例31
实施或变体例29所述编码方法或装置或者解码方法或装置中,
从mergemv0[j]和/或mergemv1[j]导出trianglemergemv0[i]的预定规则至少包括下列操作:
如果j是偶数,当mergemv0[j]存在时,trianglemergemv0[i]从mergemv0[j]导出或等于mergemv0[j],否则,trianglemergemv0[i]从mergemv1[j]导出或等于mergemv1[j]:
如果j是奇数,当mergemv1[j]存在时,trianglemergemv0[i]从mergemv1[j]导出或等于mergemv1[j],否则,trianglemergemv0[i]从mergemv0[j]导出或等于mergemv0[j]。
实施或变体例32
实施或变体例29或30或31所述编码方法或装置或者解码方法或装置中,
所述编解码块或子块被划分为两个三角形,因此,从三角合并候选集trianglemergecand中导出或选取两个选定单向运动矢量,分别记为第一单向运动矢量trianglemergemv0[i1]和第二单向运动矢量trianglemergemv0[i2];
所述第一单向运动矢量trianglemergemv0[i1]从mergemv0[j]和/或mergemv1[j]导出,其中j=j1(i1);
所述第二单向运动矢量trianglemergemv0[i2]也从mergemv0[j]和/或mergemv1[j]导出,其中j=j2(i2)。
实施或变体例33
实施或变体例32所述编码方法或装置或者解码方法或装置中,
映射j1和j2定义如下:
如果i2<i1,则j1(i1)=i1,j2(i2)=i2;否则,j1(i1)=i1,j2(i2)=i2+1。