一种编码、解码方法、装置及其设备转让专利

申请号 : CN202011455990.X

文献号 : CN114630119B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 曹小强陈方栋王莉

申请人 : 杭州海康威视数字技术股份有限公司

摘要 :

本申请提供一种编码、解码方法、装置及其设备,该解码方法包括:获取当前块的编码比特流,并从编码比特流中解析变换系数标志位;若当前块满足第一预设条件,则从编码比特流中解析块级别色度分量的二次变换标志位,二次变换标志位用于指示对所述色度分量进行二次反变换,或对所述色度分量不进行二次反变换;若所述色度分量对应的最终变换系数矩阵中含有非零变换系数,则从所述编码比特流中解析所述色度分量对应的最终变换系数矩阵,并对所述色度分量对应的最终变换系数矩阵进行反量化,得到所述色度分量对应的目标变换系数矩阵;根据所述二次变换标志位确定是否对所述色度分量对应的目标变换系数矩阵进行二次反变换。通过本申请提高编码性能。

权利要求 :

1.一种解码方法,其特征在于,应用于解码端,所述方法包括:

获取当前块的编码比特流,并从所述编码比特流中解析变换系数标志位,所述变换系数标志位用于指示所述当前块的色度分量对应的最终变换系数矩阵中是否含有非零变换系数;其中,所述变换系数标志位包括色度U分量变换系数标志位和色度V分量变换系数标志位;所述色度U分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度U分量对应的最终变换系数矩阵中含有非零变换系数;所述色度U分量变换系数标志位的取值为第二取值时,用于指示所述色度U分量对应的最终变换系数矩阵中不含有非零变换系数;所述色度V分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度V分量对应的最终变换系数矩阵中含有非零变换系数;所述色度V分量变换系数标志位的取值为第二取值时,用于指示所述色度V分量对应的最终变换系数矩阵中不含有非零变换系数;

其中,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数,包括:所述色度U分量变换系数标志位的取值为第一取值,和/或,所述色度V分量变换系数标志位的取值为第一取值;

若当前块满足第一预设条件,则从所述编码比特流中解析块级别色度分量的二次变换标志位,所述二次变换标志位用于指示对所述色度分量进行二次反变换,或对所述色度分量不进行二次反变换;其中,第一预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数;

若所述色度分量对应的最终变换系数矩阵中含有非零变换系数,则从所述编码比特流中解析所述色度分量对应的最终变换系数矩阵,并对所述色度分量对应的最终变换系数矩阵进行反量化,得到所述色度分量对应的目标变换系数矩阵;

根据所述二次变换标志位确定是否对所述色度分量对应的目标变换系数矩阵进行二次反变换。

2.根据权利要求1所述的方法,其特征在于,所述第一预设条件还包括以下至少一种:

所述当前块不使用帧内预测滤波模式;

所述当前块不使用改进帧内预测模式;

所述当前块的色度帧内预测模式满足预设模式条件;

控制信息允许色度分量使用二次反变换。

3.根据权利要求2所述的方法,其特征在于,

所述当前块的色度帧内预测模式满足预设模式条件包括:

所述当前块的色度帧内预测模式不为Intra_Chroma_PCM模式。

4.根据权利要求1‑3任一项所述的方法,其特征在于,所述色度分量为色度U分量和色度V分量,所述二次变换标志位为UV分量共用二次变换标志位;

所述UV分量共用二次变换标志位的取值为第一取值时,用于指示对所述色度U分量和所述色度V分量同时进行二次反变换,或者,所述UV分量共用二次变换标志位的取值为第二取值时,用于指示对所述色度U分量和所述色度V分量都不进行二次反变换。

5.根据权利要求1‑3任一项所述的方法,其特征在于,

所述从所述编码比特流中解析二次变换标志位,包括:

采用基于上下文的二进制算术解码方式从所述编码比特流中解析二次变换标志位。

6.根据权利要求5所述的方法,其特征在于,所述采用基于上下文的二进制算术解码方式从所述编码比特流中解析二次变换标志位,包括:基于预先配置的一个单独的上下文模型,从所述编码比特流中解析二次变换标志位。

7.一种编码方法,其特征在于,应用于编码端,所述方法包括:

获取当前块的色度分量对应的残差系数矩阵;

对所述残差系数矩阵进行初始变换,得到所述色度分量对应的初始变换系数矩阵;

若所述当前块满足第二预设条件,则确定是否对所述色度分量对应的初始变换系数矩阵进行二次变换,得到所述色度分量对应的目标变换系数矩阵;

对所述色度分量对应的目标变换系数矩阵进行量化,得到所述色度分量对应的最终变换系数矩阵,并在所述当前块的编码比特流中编码变换系数标志位,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中是否含有非零变换系数;其中,所述变换系数标志位包括色度U分量变换系数标志位和色度V分量变换系数标志位;所述色度U分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度U分量对应的最终变换系数矩阵中含有非零变换系数;所述色度U分量变换系数标志位的取值为第二取值时,用于指示所述色度U分量对应的最终变换系数矩阵中不含有非零变换系数;所述色度V分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度V分量对应的最终变换系数矩阵中含有非零变换系数;所述色度V分量变换系数标志位的取值为第二取值时,用于指示所述色度V分量对应的最终变换系数矩阵中不含有非零变换系数;其中,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数,包括:所述色度U分量变换系数标志位的取值为第一取值,和/或,所述色度V分量变换系数标志位的取值为第一取值;

在所述当前块的编码比特流中编码块级别色度分量的二次变换标志位;其中,所述二次变换标志位用于指示对所述色度分量进行二次变换,或者对所述色度分量不进行二次变换;

其中,所述第二预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述色度分量对应的初始变换系数矩阵中含有非零变换系数。

8.根据权利要求7所述的方法,其特征在于,所述第二预设条件包括以下至少一种:

所述当前块不使用帧内预测滤波模式;

所述当前块不使用改进帧内预测模式;

所述当前块的色度帧内预测模式满足预设模式条件;

控制信息允许色度分量使用二次变换。

9.根据权利要求8所述的方法,其特征在于,

所述当前块的色度帧内预测模式满足预设模式条件包括:

所述当前块的色度帧内预测模式不为Intra_Chroma_PCM模式。

10.根据权利要求7‑9任一项所述的方法,其特征在于,所述色度分量为色度U分量和色度V分量,所述二次变换标志位为UV分量共用二次变换标志位;

所述UV分量共用二次变换标志位的取值为第一取值时,用于指示对所述色度U分量和所述色度V分量同时进行二次变换,或者,所述UV分量共用二次变换标志位的取值为第二取值时,用于指示对所述色度U分量和所述色度V分量都不进行二次变换。

11.根据权利要求7‑9任一项所述的方法,其特征在于,

所述在所述当前块的编码比特流中编码块级别色度分量的二次变换标志位,包括:

若所述色度分量对应的最终变换系数矩阵中含有非零变换系数,则在所述当前块的编码比特流中编码所述二次变换标志位。

12.根据权利要求7‑9任一项所述的方法,其特征在于,

所述在所述当前块的编码比特流中编码块级别色度分量的二次变换标志位,包括:

采用基于上下文的二进制算术编码方式对所述二次变换标志位进行编码。

13.根据权利要求12所述的方法,其特征在于,

所述采用基于上下文的二进制算术编码方式对所述二次变换标志位进行编码,包括:

基于预先配置的一个单独的上下文模型,对所述二次变换标志位进行编码。

14.一种解码装置,其特征在于,应用于解码端,所述装置包括:

获取模块,用于获取当前块的编码比特流;

解码模块,用于从所述编码比特流中解析变换系数标志位,所述变换系数标志位用于指示所述当前块的色度分量对应的最终变换系数矩阵中是否含有非零变换系数;其中,所述变换系数标志位包括色度U分量变换系数标志位和色度V分量变换系数标志位;所述色度U分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度U分量对应的最终变换系数矩阵中含有非零变换系数;所述色度U分量变换系数标志位的取值为第二取值时,用于指示所述色度U分量对应的最终变换系数矩阵中不含有非零变换系数;所述色度V分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度V分量对应的最终变换系数矩阵中含有非零变换系数;所述色度V分量变换系数标志位的取值为第二取值时,用于指示所述色度V分量对应的最终变换系数矩阵中不含有非零变换系数;其中,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数,包括:所述色度U分量变换系数标志位的取值为第一取值,和/或,所述色度V分量变换系数标志位的取值为第一取值;

若当前块满足第一预设条件,则从所述编码比特流中解析块级别色度分量的二次变换标志位,所述二次变换标志位用于指示对所述色度分量进行二次反变换,或对所述色度分量不进行二次反变换;其中,第一预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数;

若所述色度分量对应的最终变换系数矩阵中含有非零变换系数,则从所述编码比特流中解析所述色度分量对应的最终变换系数矩阵;

处理模块,用于对所述色度分量对应的最终变换系数矩阵进行反量化,得到所述色度分量对应的目标变换系数矩阵;

确定模块,用于根据所述二次变换标志位确定是否对所述色度分量对应的目标变换系数矩阵进行二次反变换。

15.一种编码装置,其特征在于,应用于编码端,所述装置包括:

获取模块,用于获取当前块的色度分量对应的残差系数矩阵;对所述残差系数矩阵进行初始变换,得到所述色度分量对应的初始变换系数矩阵;

确定模块,用于若所述当前块满足第二预设条件,则确定是否对所述色度分量对应的初始变换系数矩阵进行二次变换,得到所述色度分量对应的目标变换系数矩阵;

处理模块,用于对所述色度分量对应的目标变换系数矩阵进行量化,得到所述色度分量对应的最终变换系数矩阵;

编码模块,用于在所述当前块的编码比特流中编码变换系数标志位,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中是否含有非零变换系数;其中,所述变换系数标志位包括色度U分量变换系数标志位和色度V分量变换系数标志位;所述色度U分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度U分量对应的最终变换系数矩阵中含有非零变换系数;所述色度U分量变换系数标志位的取值为第二取值时,用于指示所述色度U分量对应的最终变换系数矩阵中不含有非零变换系数;所述色度V分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度V分量对应的最终变换系数矩阵中含有非零变换系数;所述色度V分量变换系数标志位的取值为第二取值时,用于指示所述色度V分量对应的最终变换系数矩阵中不含有非零变换系数;其中,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数,包括:所述色度U分量变换系数标志位的取值为第一取值,和/或,所述色度V分量变换系数标志位的取值为第一取值;

在所述当前块的编码比特流中编码块级别色度分量的二次变换标志位;其中,所述二次变换标志位用于指示对所述色度分量进行二次变换,或者对所述色度分量不进行二次变换;

其中,所述第二预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述色度分量对应的初始变换系数矩阵中含有非零变换系数。

16.一种解码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;

所述处理器用于执行机器可执行指令,以实现如下步骤:

获取当前块的编码比特流,并从所述编码比特流中解析变换系数标志位,所述变换系数标志位用于指示所述当前块的色度分量对应的最终变换系数矩阵中是否含有非零变换系数;其中,所述变换系数标志位包括色度U分量变换系数标志位和色度V分量变换系数标志位;所述色度U分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度U分量对应的最终变换系数矩阵中含有非零变换系数;所述色度U分量变换系数标志位的取值为第二取值时,用于指示所述色度U分量对应的最终变换系数矩阵中不含有非零变换系数;所述色度V分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度V分量对应的最终变换系数矩阵中含有非零变换系数;所述色度V分量变换系数标志位的取值为第二取值时,用于指示所述色度V分量对应的最终变换系数矩阵中不含有非零变换系数;

其中,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数,包括:所述色度U分量变换系数标志位的取值为第一取值,和/或,所述色度V分量变换系数标志位的取值为第一取值;

若当前块满足第一预设条件,则从所述编码比特流中解析块级别色度分量的二次变换标志位,所述二次变换标志位用于指示对所述色度分量进行二次反变换,或对所述色度分量不进行二次反变换;其中,第一预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数;

若所述色度分量对应的最终变换系数矩阵中含有非零变换系数,则从所述编码比特流中解析所述色度分量对应的最终变换系数矩阵,并对所述色度分量对应的最终变换系数矩阵进行反量化,得到所述色度分量对应的目标变换系数矩阵;

根据所述二次变换标志位确定是否对所述色度分量对应的目标变换系数矩阵进行二次反变换。

17.一种编码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;

所述处理器用于执行机器可执行指令,以实现如下步骤:

获取当前块的色度分量对应的残差系数矩阵;

对所述残差系数矩阵进行初始变换,得到所述色度分量对应的初始变换系数矩阵;

若所述当前块满足第二预设条件,则确定是否对所述色度分量对应的初始变换系数矩阵进行二次变换,得到所述色度分量对应的目标变换系数矩阵;

对所述色度分量对应的目标变换系数矩阵进行量化,得到所述色度分量对应的最终变换系数矩阵,并在所述当前块的编码比特流中编码变换系数标志位,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中是否含有非零变换系数;其中,所述变换系数标志位包括色度U分量变换系数标志位和色度V分量变换系数标志位;所述色度U分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度U分量对应的最终变换系数矩阵中含有非零变换系数;所述色度U分量变换系数标志位的取值为第二取值时,用于指示所述色度U分量对应的最终变换系数矩阵中不含有非零变换系数;所述色度V分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度V分量对应的最终变换系数矩阵中含有非零变换系数;所述色度V分量变换系数标志位的取值为第二取值时,用于指示所述色度V分量对应的最终变换系数矩阵中不含有非零变换系数;其中,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数,包括:所述色度U分量变换系数标志位的取值为第一取值,和/或,所述色度V分量变换系数标志位的取值为第一取值;

在所述当前块的编码比特流中编码块级别色度分量的二次变换标志位;其中,所述二次变换标志位用于指示对所述色度分量进行二次变换,或者对所述色度分量不进行二次变换;

其中,所述第二预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述色度分量对应的初始变换系数矩阵中含有非零变换系数。

说明书 :

一种编码、解码方法、装置及其设备

技术领域

[0001] 本申请涉及编解码技术领域,尤其是涉及一种编码、解码方法、装置及其设备。

背景技术

[0002] 为了达到节约空间的目的,视频图像是经过编码后才传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。预测编码可以包括帧内编码和帧间编码。帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前图像的像素,达到去除视频时域冗余的目的。帧内编码是考虑到相邻块之间存在很强的空域相关性,利用周围已经重建的像素作为参考像素,对当前未编码块进行预测,只需要对残差值进行后续编码处理,而不是对原始值进行编码,有效去除空域上的冗余,大大提高了压缩效率。
[0003] 在视频编码过程中,变换是指将以空间域中像素形式描述的图像转换至变换域的图像,并以变换系数的形式来表示。由于绝大多数图像都含有较多平坦区域和缓慢变化的区域,因此,适当的变换过程,可以使图像能量在空间域的分散分布,转换为在变换域的相对集中分布,从而能够去除信号之间的频域相关性,配合量化过程,可以有效压缩码流。
[0004] 针对变换过程,相关技术中提出了二次变换技术。二次变换技术是指:首先进行初始变换,得到初始变换后的变换系数。然后,对初始变换后的变换系数进行二次变换,得到新的变换系数。然后,对新的变换系数进行量化和熵编码等过程。但是,如何对当前块的亮度分量和色度分量进行二次变换,目前并没有有效的实现方式,存在编码性能比较差等问题。

发明内容

[0005] 本申请提供一种解码方法,应用于解码端,所述方法包括:
[0006] 获取当前块的编码比特流,并从所述编码比特流中解析变换系数标志位,所述变换系数标志位用于指示所述当前块的色度分量对应的最终变换系数矩阵中是否含有非零变换系数;
[0007] 若当前块满足第一预设条件,则从所述编码比特流中解析块级别色度分量的二次变换标志位,所述二次变换标志位用于指示对所述色度分量进行二次反变换,或对所述色度分量不进行二次反变换;其中,第一预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数;
[0008] 若所述色度分量对应的最终变换系数矩阵中含有非零变换系数,则从所述编码比特流中解析所述色度分量对应的最终变换系数矩阵,并对所述色度分量对应的最终变换系数矩阵进行反量化,得到所述色度分量对应的目标变换系数矩阵;根据所述二次变换标志位确定是否对所述色度分量对应的目标变换系数矩阵进行二次反变换。
[0009] 本申请提供一种编码方法,应用于编码端,所述方法包括:获取当前块的色度分量对应的残差系数矩阵;对所述残差系数矩阵进行初始变换,得到所述色度分量对应的初始变换系数矩阵;若所述当前块满足第二预设条件,则确定是否对所述色度分量对应的初始变换系数矩阵进行二次变换,得到所述色度分量对应的目标变换系数矩阵;对所述色度分量对应的目标变换系数矩阵进行量化,得到所述色度分量对应的最终变换系数矩阵,并在所述当前块的编码比特流中编码变换系数标志位,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中是否含有非零变换系数;在所述当前块的编码比特流中编码块级别色度分量的二次变换标志位;其中,所述二次变换标志位用于指示对所述色度分量进行二次变换,或者对所述色度分量不进行二次变换;其中,所述第二预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述色度分量对应的初始变换系数矩阵中含有非零变换系数。
[0010] 本申请提供一种解码装置,应用于解码端,所述装置包括:获取模块,用于获取当前块的编码比特流;解码模块,用于从所述编码比特流中解析变换系数标志位,所述变换系数标志位用于指示所述当前块的色度分量对应的最终变换系数矩阵中是否含有非零变换系数;若当前块满足第一预设条件,则从所述编码比特流中解析块级别色度分量的二次变换标志位,所述二次变换标志位用于指示对所述色度分量进行二次反变换,或对所述色度分量不进行二次反变换;其中,第一预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数;若所述色度分量对应的最终变换系数矩阵中含有非零变换系数,则从所述编码比特流中解析所述色度分量对应的最终变换系数矩阵;处理模块,用于对所述色度分量对应的最终变换系数矩阵进行反量化,得到所述色度分量对应的目标变换系数矩阵;确定模块,用于根据所述二次变换标志位确定是否对所述色度分量对应的目标变换系数矩阵进行二次反变换。
[0011] 本申请提供一种编码装置,应用于编码端,所述装置包括:获取模块,用于获取当前块的色度分量对应的残差系数矩阵;对所述残差系数矩阵进行初始变换,得到所述色度分量对应的初始变换系数矩阵;确定模块,用于若所述当前块满足第二预设条件,则确定是否对所述色度分量对应的初始变换系数矩阵进行二次变换,得到所述色度分量对应的目标变换系数矩阵;处理模块,用于对所述色度分量对应的目标变换系数矩阵进行量化,得到所述色度分量对应的最终变换系数矩阵;编码模块,用于在所述当前块的编码比特流中编码变换系数标志位,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中是否含有非零变换系数;在所述当前块的编码比特流中编码块级别色度分量的二次变换标志位;其中,所述二次变换标志位用于指示对所述色度分量进行二次变换,或者对所述色度分量不进行二次变换;其中,所述第二预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述色度分量对应的初始变换系数矩阵中含有非零变换系数。
[0012] 本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
[0013] 所述处理器用于执行机器可执行指令,以实现如下步骤:
[0014] 获取当前块的编码比特流,并从所述编码比特流中解析变换系数标志位,所述变换系数标志位用于指示所述当前块的色度分量对应的最终变换系数矩阵中是否含有非零变换系数;
[0015] 若当前块满足第一预设条件,则从所述编码比特流中解析块级别色度分量的二次变换标志位,所述二次变换标志位用于指示对所述色度分量进行二次反变换,或对所述色度分量不进行二次反变换;其中,第一预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数;
[0016] 若所述色度分量对应的最终变换系数矩阵中含有非零变换系数,则从所述编码比特流中解析所述色度分量对应的最终变换系数矩阵,并对所述色度分量对应的最终变换系数矩阵进行反量化,得到所述色度分量对应的目标变换系数矩阵;根据所述二次变换标志位确定是否对所述色度分量对应的目标变换系数矩阵进行二次反变换。
[0017] 本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
[0018] 所述处理器用于执行机器可执行指令,以实现如下步骤:
[0019] 获取当前块的色度分量对应的残差系数矩阵;
[0020] 对所述残差系数矩阵进行初始变换,得到所述色度分量对应的初始变换系数矩阵;
[0021] 若所述当前块满足第二预设条件,则确定是否对所述色度分量对应的初始变换系数矩阵进行二次变换,得到所述色度分量对应的目标变换系数矩阵;
[0022] 对所述色度分量对应的目标变换系数矩阵进行量化,得到所述色度分量对应的最终变换系数矩阵,并在所述当前块的编码比特流中编码变换系数标志位,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中是否含有非零变换系数;
[0023] 在所述当前块的编码比特流中编码块级别色度分量的二次变换标志位;其中,所述二次变换标志位用于指示对所述色度分量进行二次变换,或者对所述色度分量不进行二次变换;
[0024] 其中,所述第二预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述色度分量对应的初始变换系数矩阵中含有非零变换系数。
[0025] 由以上技术方案可见,本申请实施例中,在对当前块的色度分量进行初始变换后,可以确定是否对当前块的色度分量进行二次变换,若是,则可以对当前块的色度分量进行二次变换,即,二次变换技术也可以应用于当前块的色度分量,当色度分量经过初始变换后存在能量不够集中的问题时,可以对色度分量也进行二次变换,从而提高编码性能和编码效率。

附图说明

[0026] 图1A‑图1C是本申请一种实施方式中的DT划分模式的示意图;
[0027] 图1D是本申请一种实施方式中的亮度帧内预测模式的示意图;
[0028] 图1E‑图1L是本申请一种实施方式中的帧内预测滤波的应用示意图;
[0029] 图2是本申请一种实施方式中的视频编码框架的示意图;
[0030] 图3A和图3B是本申请一种实施方式中的解码方法的流程图;
[0031] 图4A和图4B是本申请一种实施方式中的编码方法的流程图;
[0032] 图5A是本申请一种实施方式中的解码方法的流程图;
[0033] 图5B是本申请一种实施方式中的编码方法的流程图;
[0034] 图6A是本申请一种实施方式中的解码装置的结构图;
[0035] 图6B是本申请一种实施方式中的编码装置的结构图;
[0036] 图7A是本申请一种实施方式中的解码端设备的硬件结构图;
[0037] 图7B是本申请一种实施方式中的编码端设备的硬件结构图。

具体实施方式

[0038] 在本申请实施例中所使用的术语仅仅是出于描述特定实施例的目的,而非用于限制本申请。本申请实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息,可以取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”,或“当……时”,或“响应于确定”。
[0039] 为了使本领域技术人员更好地理解本申请技术方案,下面对技术术语进行简单说明。
[0040] 预测像素(Prediction Signal):是指从已经编解码的像素中导出的像素值,通过原始像素与预测像素之差获得残差,进而进行残差变换,量化以及系数编码等过程。
[0041] 帧内预测(Intra Prediction):是指通过周边已解码区域的重建像素值来预测当前块的预测值的预测模式。常见的方式包括按照角度方向进行像素拷贝,以及按照一定的渐变原则进行预测值导出的方式。示例性的,帧内预测去除的是视频/图像的空域相关性。
[0042] 变换核(transform kernel):在视频编码中,变换是实现数据压缩必不可少的阶段,变换能够使信号的能量更加集中,而基于离散余弦变换(DCT,Discrete Cosine Transform)/离散正弦变换(DST,Discrete Sine Transform)的变换技术一直是视频编码主流的变换技术。DCT和DST根据基函数的不同又具体分为多种变换核,参见表1所示,示出了三种变换核。
[0043] 表1
[0044]
[0045] 正变换(forward transform)和逆变换(inverse transform):在视频编码过程中,包含了正变换和逆变换过程,正变换又称为前向变换,逆变换又称为反向变换。示例性的,正变换是将一个二维残差系数(也可以称为残差信号)转换成能量更加集中的二维变换系数(也可以称为频谱信号),该变换系数再经过量化等过程,就可以有效去除高频成分,保留中低频成分,起到了压缩的作用。例如,可以通过公式(1)的矩阵形式表示正变换过程。
[0046] F=B·f·AT    公式(1)
[0047] 在公式(1)中,M表示残差块(即残差系数组成的块)的宽度,N表示残差块的高度,f表示N*M维的原始残差信号,F表示N*M维的频域信号(即转换后频域信号),A和B表示M*M和N*N维的变换矩阵,A和B均满足正交性,如表1所示的变换核。
[0048] 逆变换(又称反变换)是正变换的逆过程,即通过正交变换矩阵A和正交变换矩阵B,将频域信号F转换成时域残差信号f。例如,可以通过公式(2)的矩阵形式表示逆变换过程。
[0049] f=BT·F·A    公式(2)
[0050] 水平变换(Horizental transform)和垂直变换(Vertical transform):在编码变T T换阶段,输入的是二维残差信号,设X=A·f ,则F=B·X ,例如,通过公式(3)的矩阵形式进行表示。
[0051] F=B·f·AT=B·(A·fT)T    公式(3)
[0052] 综上可以看出,二维信号的正变换可以通过两次一维的正变换方式实现,第一次正变换后得到一个M*N的信号X,去除二维残差信号的水平方向像素之间的相关性,因此,第一次正变换称为水平变换,称A为水平变换矩阵。第二次正变换后得到信号F,去除二维残差信号的垂直方向像素之间的相关性,因此,第二次正变换称为垂直变换,称B为垂直变换矩阵。
[0053] 变换对(Transform pair):也称为变换核对,为了支持矩阵块,M不一定等于N,A和B的维度不一定相等,还可以支持A和B不是同一种变换核生产的变换矩阵,因此,在变换中存在A和B对应的变换核组成的变换对{H,V},H称为水平变换核,V称为垂直变换核。
[0054] 率失真原则(RDO,Rate‑Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比)。比特流越小,则压缩率越大;PSNR越大,则重建图像质量越好。在模式选择时,判别公式实质上也就是对二者的综合评价。
[0055] 模式对应的代价值:J(mode)=D+λ*R。示例性的,D表示Distortion,通常使用SSE指标来衡量,SSE是指重建块与源图像的差值均方和;λ是拉格朗日乘子;R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。在模式选择时,若使用RDO原则去对编码模式做比较决策,通常可以保证编码性能最佳。
[0056] 衍生树(Derive Tree,简称DT)划分模式:DT划分模式是一种新的划分模式,产生新的划分形状,能够进一步获得性能增益。参见图1A所示,为QTBT+EQT+DT的示意图,当衍生模式标志为0时表示不划分,当衍生模式标志为1时表示使用衍生模式,衍生模式具体又分为水平衍生模式(2N×hN、2N×nU、2N×nD)和竖直衍生模式(hN×2N、nL×2N、nR×2N)。对不使用DT的CU,其PU模式为2N×2N,这里的2个‘2N’表示的宽高不一定相等,第一个‘2N’表示PU与CU的宽相等,第二个‘2N’表示PU与CU的高相等。对于2N×hN,‘2N’表示PU的宽与CU相等,‘hN’表示PU的高等于CU高的1/4。
[0057] 衍生模式可以生长在四叉树或者二叉树的叶子节点上,参见图1B所示,衍生模式可以通过对编码单元不断地合并划分边界,得到衍生模式的不同种PU划分(2N×hN、2N×nU、2N×nD、hN×2N、nL×2N、nR×2N),用于帧内预测产生的预测和变换块。
[0058] 衍生模式可以配合QTBT和EQT产生更丰富的块划分,获得更多的性能。
[0059] 参见图1C所示,对于Intra模式(即帧内预测模式)来说,使用衍生模式进行预测的编码单元,可以使用4个非方块进行变换量化,并不需要引入新的变换核。
[0060] AVS3的亮度帧内预测模式:AVS2共有33种亮度帧内预测模式,包括30个角度模式和3个特殊模式(DC、Plane和Bilinear)。为支持更精细的角度预测,AVS3提出将角度模式扩展为62个,加上3个特殊模式,一共65种模式。参见图1D所示,为亮度帧内预测模式的示意图,原有的角度模式的模式号不变,新增的角度模式的模式号从34往后增加至65。
[0061] AVS3的色度帧内预测模式:在AVS3中,色度帧内预测模式一共有18种,18种色度帧内预测模式包括5种传统色度帧内预测模式(DM、DC、HOR、VER、BI)、12种特殊色度帧内预测模式和Intra_Chroma_PCM模式。示例性的,12种特殊色度帧内预测模式分别包括TSCPM模式(如TSCPM、TSCPM_L、TSCPM_T等模式)和PMC模式(如PMC、PMC_L、PMC_T、EPMC、EPMC_L、EPMC_T、EPMC2、EPMC2_L、EPMC2_T等模式)。
[0062] 需要注意的是,色度的PCM模式是由帧内亮度模式和帧内色度模式导出的,若当前块的亮度帧内预测模式为亮度PCM模式(或者命名为亮度IPD_IPCM或者Intra_Luma_PCM),并且当前块的色度预测模式为DM模式,则当前块的色度预测模式为色度PCM模式(或者命名为色度IPD_IPCM或者Intra_Chroma_PCM)。
[0063] TSCPM模式是一种分量间预测技术,通过探索不同分量之间的线性关系去除分量间冗余,TSCPM模式可以分为两个步骤,首先,使用Co‑located luma块通过参数α和参数β生成尺寸相同的临时预测块,然后,再对临时预测块进行下采样,得到色度分量的预测值。
[0064] 示例性的,可以根据相邻块像素的可用性分为3种情况来得到4个可用的像素点对,通过4个可用的像素点对来计算参数α和参数β,当得到参数α和参数β后,根据亮度和色度之间的线性关系,通过亮度重构像素得到色度预测值。在选取4对可用像素点时,可以考虑上侧像素和左侧像素的可用性,分为以下3种情况:1、如果当前块的正上侧和正左侧像素均“可用”,则2个像素点对从上侧选择,2个像素点对从左侧选择。2、如果当前块只有上侧可用,则4个像素点对均从正上侧选择,选择的位置宽度为:0/4,1/4,2/4,3/4。3、如果当前块只有左侧像素可用,则4个像素点对均从正左侧选择,选择的位置高度为:0/4,1/4,2/4,3/4。对于情况1,增强TSCPM提出了两种增强模式,分别为TSCPM_T和TSCPM_L:即,4个像素点对只来自正上侧(TSCPM_T),以及,4个像素点对只来自正左侧(TSCPM_L)。
[0065] 除了通过亮度分量预测色度分量外,AVS3还支持通过Y分量和Cb分量来预测Cr分量,即PMC模式,PMC模式的预测过程可以通过以下两个式子来表示:IPred=A·RecY+B,FPredCr=IPred′‑RecCb×k。在上述式子中,RecY为Y分量重建值,RecCb为Cb分量重建值,IPred为生成的中间变量,IPred’为IPred下采样后的值,FPredCr为最后得到的Cr分量预测值。该式子中的参数A和B设置为(α0×k+α1,β0×k+β1),(α0,β0)和(α1,β1)为TSCPM中Cb和Cr的参数α(即alpha)和参数β(即beta),k为0.5、1或2,由图像级标志位和CU级标志位共同确定。比如说,图像头可以传输一个标志位,如果图像头标志位等于0,那么本图像的k为1或2;如果图像头标志位为1,那么本图像的k为1或0.5。每个使用EPMC模式的CU再传输一个标志位,从本图像的两个k值中确定一个。
[0066] 示例性的,TSCPM和PMC的帧内模式码流标志方案可以参见表2所示。
[0067] 表2
[0068]
[0069]
[0070] 帧内预测滤波(Intra Prediction Filter,IPF):在帧内预测过程中,会忽略一些参考像素点与当前预测单元之间的关联性,通过IPF可以有效增强空间关联性,从而提升帧内预测精度。如图1E所示,预测方向是从右上到左下,生成的当前帧内预测块主要使用的是MRB这一参考像素点,预测样本块的左侧因为没有考虑与URB的关联性,所以预测效果较差。
[0071] 为了解决这一问题,IPF使用URB中的参考像素对帧内预测块进行滤波。IPF中的滤波器包括三种类型,分别为水平的2‑tap滤波器(参见公式(4)所示)、竖直的2‑tap滤波器(参见公式(5)所示)和同时对水平和垂直方向滤波的3‑tap滤波器(参见公式(6)所示)。
[0072] P′(x,y)=f(x)·P(‑1,y)+(1‑f(x))·P(x,y)    公式(4)
[0073] P′(x,y)=f(y)·P(x,‑1)+(1‑f(y))·P(x,y)    公式(5)
[0074] P′(x,y)=f(x)·P(‑1,y)+f(y)·P(x,‑1)+(1‑f(x)‑f(y))·P(x,y)    公式(6)[0075] 对于亮度分量,根据帧内预测模式,从中选择一个滤波器对当前预测值进行滤波。水平2‑tap滤波器被应用于靠近竖直向下的预测模式中,竖直2‑tap滤波器被应用于靠近水平向左的预测模式中,3‑tap滤波器被应用在非角度预测模式以及右下对角模式。对于色度分量,当色度帧内预测模式为水平或TSCPM_L时,采用竖直的2‑tap滤波器对预测值进行滤波;当色度帧内预测模式为垂直或TSCPM_T时,采用水平的2‑tap滤波器对预测值进行滤波。
[0076] 若当前帧内预测块的大小为M*N,对于块内坐标为(i,j)的像素点,这个像素点对应的滤波系数f[i]和f[j]分别由M、i和N、j查帧内预测边界滤波系数表得到,参见表3所示。
[0077] 表3
[0078]
[0079] 改进帧内预测(Improved Intra Prediction,IIP)模式:相比于传统的亮度帧内预测模式,IIP改进了亮度帧内预测的四个方面,以下对本申请中IIP模式下对亮度帧内预测过程的改进进行说明。
[0080] 其中,关于角度模式的改进。为了得到更加精确的预测像素,可以使用8‑tap的插值滤波器来替换原有的4‑tap插值滤波器来生成亚像素点的参考像素,而为了支持8‑tap滤波,参见图1F所示,对左边和上边的4个参考像素进行了填充。示例性的,当MIPF使能时,使用了3类8‑tap滤波器,滤波器的索引值是基于当前块的尺寸以及行列索引号来隐式导出,滤波器的索引使用以下公式导出:filter_idx=mipf_enable_flag?(j<1?((w*h<64)+1:w*h<64)):3。j代表当前像素所在的列的索引号,w和h分别表示当前块的宽度和高度。
[0081] 其中,关于DC模式的改进。针对传统的DC模式:对于亮度块来说,当前块上边的参考样本记为r[i],当前块左边的参考样本记为c[j],r[0]等于c[0],如果i大于2M,则r[i]=r[2M],如果j大于2N,则c[j]=c[2N]。如果r[i]、c[j](i=1~M,j=1~N)均“可用”,则:predMatrix[x][y]=
若r[i](i
=1~M)“可用”,c[j](j=1~N)“不可用”,
否则,若c[j](j=1~N)“可用”,r[i](i=1~M)“不可用”,则
否则,
predMatrix[x][y]=2BitDepth‑1(x=0~M‑1,y=0~N‑1;BitDepth是编码样本精度)。
[0082] 针对改进的DC模式:传统的DC模式,当前块所有像素具有同一预测值,而对于改进的DC模式,当前块内部像素和靠近边界的像素具有不同的预测值,对于内部像素(不是前两行或前两列的像素)仍然使用传统的DC值;对于靠近边界的像素(前两行或前两列的像素),如图1G和图1H所示,使用(DC值和参考像素值)的加权平均值作为最终的预测值。
[0083] 例如,参见图1G所示,若当前像素点位于第一行a位置,则可以使用参考像素A0,A1,A2和DC的加权平均值作为a位置的预测值;若当前像素点位于第一列b位置,则可以使用参考像素B0,B1,B2和DC的加权平均值作为b位置的预测值;若当前像素点位于当前块左上角c位置,则可以使用参考像素C0,C1,C2,C3,C4和DC的加权平均值作为c位置的预测值。参见图1H所示,若当前像素点位于第二行d位置,则可以使用参考像素D和DC的加权平均值作为d位置的预测值;若当前像素点位于第二列e位置,则可以使用参考像素E和DC的加权平均值作为e位置的预测值;若当前像素点位于当前块左上角f位置,则可以使用参考像素F0,F1和DC的加权平均值作为f位置的预测值。示例性的,针对a,b,c,d,e,f位置的权重,可以如表4所示,最后一个权重可以为DC值的权重。
[0084] 表4
[0085] a {18,38,18,182}b {18,38,18,182}
c {18,38,18,38,18,126}
d {13,243}
e {13,243}
f {13,13,230}
[0086] 其中,关于Plane模式的改进。针对传统的plane帧内预测过程来说:orgPredMatrix[x][y]=(ia+(x‑((M>>1)‑1))×ib+(y‑((N>>1)‑1))×ic+16)>>5(x=0~M‑1,y=0~N‑1)。predMatrix[x][y]=Clip1(orgPredMatrix[x][y])(x=0~M‑1,y=0~N‑1)。示例性的,ia=(r[M]+c[N])<<4,ib=((ih<<5)×imh+(1<<(ish‑1)))>>ish,ic=((iv<<5)×imv+(1<<(isv‑1)))>>isv,ibMult[5]={13,17,5,11,23},ibShift[5]={7,
10,11,15,19},imh=ibMult[Log(M)‑2],ish=ibShift[Log(M)‑2],imv=ibMult[Log(N)‑
2],isv=ibShift[Log(N)‑2],
[0087] 针对改进的plane模式:与改进的DC预测过程类似,改进的plane预测过程也采用同样的操作,只不过处理的对象是参考像素值与plane值,对当前块的前两行或前两列采用加权平均的方法得到新的预测值,具体权重参见表4所示,在此不再重复赘述。
[0088] 其中,关于Bilinear模式的改进。传统的Bilinear模式预测过程:参见图1I所示,产生右下角C位置的预测值(右上角参考像素A和左下角参考像素B的加权平均),产生右边界AC位置的预测值(右上角参考像素A和右下角C位置预测值的加权平均),同理,产生下边界BC位置的预测值(左下角参考像素B和右下角C位置预测值的加权平均),剩余其它内部像素点的预测值通过水平线性预测和垂直线性预测的加权平均产生。水平线性预测模型产生的预测值为左边对应位置参考像素L和右边界AC位置的预测值的加权平均;垂直线性预测模型产生的预测值为上边对应位置参考像素T和下边界BC位置的预测值的加权平均。
[0089] 示例性的,orgPredMatrix[x][y]=((((ia‑c[y+1])×(x+1))<>(Log(M)+Log(N)+1),(x=0~M‑1,y=0~N‑1)。predMatrix[x][y]=Clip1(orgPredMatrix[x][y]),(x=0~M‑1,y=0~N‑1)。ia=r[M],ib=c[N],若M等于N,则ic=(ia+ib+1)>>1;否则ic=(((ia<>(ishift+6),ishift=Log(Min(M,N)),weight=bilinearWeight[Log(Max(M,N)/Min(M,N))‑1],bilinearWeight[3]={21,13,7}。
[0090] 改进的Bilinear预测过程:改进了参考像素的使用个数,使用5个参考像素的加权平均值替换原有1个参考像素值,5个参考像素的权重为:{82,252,356,252,82},参见图1J所示。
[0091] 预测值修正过程:在改进的angular、DC、Plane、Bilinear模式的基础上,进一步使用当前块参考像素对预测像素进行修正,参见图1K和图1L所示,对于第一行或第一列的像素X,使用的参考像素标记为“D1”,否则使用的参考像素标记为“D2”,D1和D2包含四个不同位置的参考像素,并且若当前像素点位于前两行或前两列,使用的加权平均的权重为{10,216},否则使用的权重为{13,204}。综上所述,IIP模式包括以上五点改进,对于IIP模式,使用1个标志位iip_flag来标识当前块是否使用改进的帧内预测模式来产生帧内预测值。
[0092] 本申请适用的视频编码框架:参见图2所示,可以使用视频编码框架实现本申请实施例的编码端处理流程,视频解码框架的示意图与图2类似,在此不再重复赘述,可以使用视频解码框架实现本申请实施例的解码端处理流程。在视频编码框架和视频解码框架中,可以包括但不限于:帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端的处理流程,在解码端,通过这些模块之间的配合,可以实现解码端的处理流程。
[0093] 示例性的,预测分为帧内预测和帧间预测,帧内预测是考虑到图像中相邻块之间存在很强的空域相关性,可以利用周围已重建的像素作为参考像素对当前未编码块进行预测,只需要对残差信号(原始信号‑预测信号)进行后续编码处理,而不是对原始信号进行编码,有效去除空域上的冗余,大大提高了视频信号的压缩效率。帧间预测是指利用视频信号时间域上的相关性,使用邻近已编码图像像素预测当前图像的像素,达到去除视频时域冗余的目的。
[0094] 示例性的,在视频编码过程中,变换是指将以空间域中像素形式描述的图像转换至变换域的图像,并以变换系数的形式来表示。由于绝大多数图像都含有较多平坦区域和缓慢变化的区域,因此,适当的变换过程,可以使图像能量在空间域的分散分布,转换为在变换域的相对集中分布,从而能够去除信号之间的频域相关性,配合量化过程,可以有效压缩码流。
[0095] 示例性的,熵编码是指按照信息熵的原理进行无损编码的方式,处于视频压缩的最后一个处理模块,将一系列用来表示视频序列的元素符号,转变为一个用来传输或存储的二进制码流,输入的符号可能包括量化后的变换系数,运动矢量信息,预测模式信息,变换量化相关语法等,熵编码模块的输出数据即原始视频压缩后的最终码流。熵编码可以有效地去除这些视频元素符号的统计冗余,是保证视频编码压缩效率的重要工具之一。
[0096] 二次变换:针对4*4块和非4*4块使用不同的二次变换矩阵。针对编码端,就是经过(DCT2,DCT2)变换后得到变换系数,对左上角的4*4块的变换系数,再与二次变换矩阵相乘得到新的变换系数,然后进行量化和熵编码。针对解码端,对于从码流熵解码得到的变换系数经过反量化后,对于左上角的4*4区域先进行二次逆变换,得到新的变换系数,然后对整个变换块使用(DCT2,DCT2)进行逆变换,得到残差系数。二次变换具体解码端反变换过程如下:
[0097] 情况一、如果当前变换块是亮度帧内预测残差块,宽度或者高度的值大于4,且二次变换启用标志(SecondaryTransformEnableFlag)的值等于1,则对系数矩阵执行以下操作:
[0098] 首先,由变换系数矩阵得到左上角4*4的系数矩阵C:cij=coeffij,i=0~3,j=0~3,在上述公式中,cij是矩阵C的元素,coeffij是变换系数矩阵的元素。如果帧内预测模式(IntraLumaPredMode)的值为0~2,或13~32,或44~65,且当前块外部左边的参考样本“可6
用”,则:cij=Clip3(‑32768,32767,(pij+2)>>7),i=0~3,j=0~3。pij是4*4的矩阵P的元
6
素,矩阵P的计算方式如下:P=C×S4,S4是4*4反变换矩阵,Clip3(‑32768,32767,(pij+2)>>
6
7)表示,若cij的值位于‑32768与32767之间,则cij的值为(pij+2)>>7,若cij的值小于‑
32768,则cij的值为‑32768,若cij的值大于32767,则cij的值为32767。如果帧内预测模式(IntraLumaPredMode)的值为0~23,或34~57,且当前块外部上边的参考样本“可用”,则:
6
cij=Clip3(‑32768,32767,(qij+2)>>7),i=0~3,j=0~3。qij是4×4矩阵Q的元素,矩阵QT T
的计算方式如下:Q=S4×C,S4是S4的转置矩阵,S4是4*4反变换矩阵。
[0099] 然后,根据矩阵C修改变换系数矩阵的元素的值:coeffij=cij,i=0~3,j=0~3。
[0100] 然后,对矩阵coeff进行初始反变换。
[0101] 情况二、如果当前变换块是亮度帧内预测残差块,宽度和高度的值均等于4,且二次变换启用标志(SecondaryTransformEnableFlag)的值等于1,则对系数矩阵执行以下操作:
[0102] 首先,对变换系数矩阵进行如下垂直反变换,得到矩阵K:kij=Clip3(‑32768,4
32767,(vij+2)>>5),i=0~M1‑1,j=0~M2‑1,vij是矩阵V的元素,kij是矩阵K的元素。矩阵VT T
的计算如下:V=D4×CoeffMatrix,D4是反变换矩阵D4的转置矩阵,CoeffMatrix为变换系数。
[0103] 然后,对矩阵K进行如下水平反变换,得到矩阵H:hij=Clip3(‑MaxValue‑1,shift1‑1MaxValue,(wij+2 )>>shift1),i=0~M1‑1,j=0~M2‑1,wi,j是矩阵W的元素,hij是矩阵H的元素。MaxValue的值为(1<
[0104] 示例性的,对于4*4的块,进行完二次变换的逆变换后不需要再进行初始逆变换。
[0105] 参见上述实施例,二次变换技术是指:首先进行初始变换,得到初始变换后的变换系数,对初始变换后的变换系数进行二次变换,得到新的变换系数,对新的变换系数进行量化和熵编码等过程。在相关技术中,是针对当前块的亮度分量进行二次变换。但是,二次变换仅用于亮度分量,不用于色度分量,对于当前块的色度分量,默认只进行(DCT2,DCT2)的初始变换,对于色度分量,也存在经过初始变换后能量可能不够集中的问题。针对上述发现,本申请实施例中,可以对色度分量进行二次变换,从而提高编码性能。
[0106] 在一种可能的实施方式中,针对编码端来说,通过率失真代价值(RDO)决定色度分量是否进行二次变换,并且显式编码二次变换标志位来表示当前块的色度分量是否使用二次变换,且色度U分量和色度V分量共用同一个二次变换标志位,即二次变换标志位指示对色度U分量和色度V分量同时进行二次变换,或对色度U分量和色度V分量都不进行二次变换。
[0107] 在另一种可能的实施方式中,针对编码端来说,通过率失真代价值(RDO)决定色度分量是否进行二次变换,并且显式编码二次变换标志位来表示当前块的色度分量是否使用二次变换,且色度U分量和色度V分量分别使用单独的二次变换标志位。即,一个二次变换标志位指示对色度U分量进行二次变换,或对色度U分量不进行二次变换。另一个二次变换标志位指示对色度V分量进行二次变换,或对色度V分量不进行二次变换。
[0108] 在另一种可能的实施方式中,针对编码端来说,通过率失真代价值(RDO)决定亮度分量和色度分量是否进行二次变换,并且显式编码二次变换标志位来表示当前块的亮度分量和色度分量是否使用二次变换,且亮度分量和色度分量(色度U分量和色度V分量)共用同一个二次变换标志位,即,二次变换标志位指示对亮度分量,色度U分量和色度V分量同时进行二次变换,或对亮度分量,色度U分量和色度V分量都不进行二次变换。
[0109] 以下结合几个具体实施例,对本申请实施例的编码方法、解码方法进行详细说明。
[0110] 实施例1:在一种可能的实施方式中,参见图3A所示,为本申请实施例中提出的解码方法的流程示意图,该解码方法可以应用于解码端,该解码方法可以包括以下步骤:
[0111] 步骤311、获取当前块的编码比特流,并从该编码比特流中解析变换系数标志位,该变换系数标志位用于指示当前块的色度分量对应的最终变换系数矩阵中是否含有非零变换系数。
[0112] 比如说,若该变换系数标志位为第一取值时,则可以用于指示当前块的色度分量对应的最终变换系数矩阵中含有非零变换系数。或者,若该变换系数标志位为第二取值时,则可以用于指示当前块的色度分量对应的最终变换系数矩阵中不含有非零变换系数。
[0113] 示例性的,编码端可以在当前块的编码比特流中编码当前块的色度分量对应的最终变换系数矩阵,具体编码过程参见后续实施例,该最终变换系数矩阵可能含有非零变换系数或不含有非零变换系数。编码端向解码端发送编码比特流时,可以在该编码比特流中编码变换系数标志位,该变换系数标志位用于指示色度分量对应的最终变换系数矩阵中是否含有非零变换系数。综上所述,解码端获取到该编码比特流后,可以从编码比特流中解析变换系数标志位,且变换系数标志位用于指示色度分量对应的最终变换系数矩阵中是否含有非零变换系数。
[0114] 当前块的色度分量为色度U分量和色度V分量,该变换系数标志位包括色度U分量变换系数标志位和色度V分量变换系数标志位。色度U分量变换系数标志位的取值为第一取值时,用于指示当前块的色度U分量对应的最终变换系数矩阵中含有非零变换系数;色度U分量变换系数标志位的取值为第二取值时,用于指示当前块的色度U分量对应的最终变换系数矩阵中不含有非零变换系数。色度V分量变换系数标志位的取值为第一取值时,用于指示当前块的色度V分量对应的最终变换系数矩阵中含有非零变换系数;色度V分量变换系数标志位的取值为第二取值时,用于指示当前块的色度V分量对应的最终变换系数矩阵中不含有非零变换系数。例如,上述第一取值可以为1,第二取值可以为0。基于此,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,包括:色度U分量变换系数标志位的取值为第一取值,和/或,色度V分量变换系数标志位的取值为第一取值。
[0115] 综上所述,解码端可以从当前块的编码比特流中解析色度U分量变换系数标志位和色度V分量变换系数标志位。若该色度U分量变换系数标志位的取值为第一取值,则解码端可以确定色度U分量对应的最终变换系数矩阵中含有非零变换系数。若该色度U分量变换系数标志位的取值为第二取值,则解码端可以确定色度U分量对应的最终变换系数矩阵中不含有非零变换系数。若该色度V分量变换系数标志位的取值为第一取值,则解码端可以确定色度V分量对应的最终变换系数矩阵中含有非零变换系数。若该色度V分量变换系数标志位的取值为第二取值,则解码端可以确定色度V分量对应的最终变换系数矩阵中不含有非零变换系数。
[0116] 步骤312、若当前块满足第一预设条件,则从编码比特流中解析块级别色度分量的二次变换标志位,该二次变换标志位用于指示对该色度分量进行二次反变换,或对该色度分量不进行二次反变换。该第一预设条件至少可以包括:当前块的预测模式为帧内预测模式,该变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数。
[0117] 其中,二次变换标志位的取值为第一取值时,用于指示对该色度分量进行二次反变换,二次变换标志位的取值为第二取值时,用于指示对该色度分量不进行二次反变换。
[0118] 例如,上述第一取值为1,第二取值为0。
[0119] 步骤313、若色度分量对应的最终变换系数矩阵中含有非零变换系数,则从当前块的编码比特流中解析所述当前块的色度分量对应的最终变换系数矩阵,并对色度分量对应的最终变换系数矩阵进行反量化,得到色度分量对应的目标变换系数矩阵,并根据该二次变换标志位确定是否对该色度分量对应的目标变换系数矩阵进行二次反变换。
[0120] 示例性的,若变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,则解码端确定色度分量对应的最终变换系数矩阵中含有非零变换系数,并从当前块的编码比特流中解析当前块的色度分量对应的最终变换系数矩阵,并对色度分量对应的最终变换系数矩阵进行反量化,得到该色度分量对应的目标变换系数矩阵。
[0121] 示例性的,解码端可以确定当前块是否满足第一预设条件,若当前块不满足第一预设条件,则解码端确定对当前块的色度分量对应的目标变换系数矩阵不进行二次反变换。若当前块满足第一预设条件,则解码端还可以从当前块的编码比特流中解析块级别色度分量的二次变换标志位(简称为二次变换标志位)。若该二次变换标志位用于指示对色度分量对应的目标变换系数矩阵进行二次反变换,则解码端根据该二次变换标志位确定对该色度分量对应的目标变换系数矩阵进行二次反变换。若该二次变换标志位用于指示对色度分量对应的目标变换系数矩阵不进行二次反变换,则解码端根据该二次变换标志位确定对该色度分量对应的目标变换系数矩阵不进行二次反变换。
[0122] 在一种可能的实施方式中,该第一预设条件至少可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示当前块的色度分量对应的最终变换系数矩阵中含有非零变换系数。综上所述,若确定当前块的预测模式为帧内预测模式,且该变换系数标志位为第一取值,则解码端可以确定当前块满足第一预设条件。若确定当前块的预测模式不为帧内预测模式,和/或,该变换系数标志位为第二取值,则解码端可以确定当前块不满足第一预设条件。
[0123] 参见上述实施例,变换系数标志位包括色度U分量变换系数标志位和色度V分量变换系数标志位,基于此,若当前块的预测模式为帧内预测模式,并且,色度U分量变换系数标志位为第一取值和/或色度V分量变换系数标志位为第一取值,则解码端确定当前块满足第一预设条件。若当前块的预测模式不为帧内预测模式,和/或,色度U分量变换系数标志位和色度V分量变换系数标志位均为第二取值,则解码端确定当前块不满足第一预设条件。
[0124] 在一种可能的实施方式中,除了当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,第一预设条件还可以包括但不限于以下至少一种:当前块不使用帧内预测滤波模式;当前块不使用改进帧内预测模式;当前块采用变换核对(DCT2,DCT2)进行初始反变换;当前块的色度帧内预测模式满足预设模式条件;当前块的色度分量的尺寸满足预设尺寸条件;控制信息允许色度分量使用二次反变换。
[0125] 比如说,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式(IPF模式)。
[0126] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用改进帧内预测模式(IIP模式)。
[0127] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块采用变换核对(DCT2,DCT2)进行初始反变换。
[0128] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块的色度帧内预测模式满足预设模式条件。
[0129] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块的色度分量的尺寸满足预设尺寸条件。
[0130] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,控制信息允许色度分量使用二次反变换。
[0131] 比如说,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式。
[0132] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式,当前块采用变换核对(DCT2,DCT2)进行初始反变换。
[0133] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式,当前块的色度帧内预测模式满足预设模式条件。
[0134] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式,当前块的色度分量的尺寸满足预设尺寸条件。
[0135] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式,控制信息允许色度分量使用二次反变换。
[0136] 比如说,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式,当前块采用变换核对(DCT2,DCT2)进行初始反变换,当前块的色度帧内预测模式满足预设模式条件。
[0137] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式,当前块采用变换核对(DCT2,DCT2)进行初始反变换,当前块的色度分量的尺寸满足预设尺寸条件。
[0138] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式,当前块采用变换核对(DCT2,DCT2)进行初始反变换,控制信息允许色度分量使用二次反变换。
[0139] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式,当前块采用变换核对(DCT2,DCT2)进行初始反变换,当前块的色度帧内预测模式满足预设模式条件,当前块的色度分量的尺寸满足预设尺寸条件,控制信息允许色度分量使用二次反变换。
[0140] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式,当前块采用变换核对(DCT2,DCT2)进行初始反变换,当前块的色度帧内预测模式满足预设模式条件,控制信息允许色度分量使用二次反变换。
[0141] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式,当前块的色度帧内预测模式满足预设模式条件,控制信息允许色度分量使用二次反变换。
[0142] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式,当前块采用变换核对(DCT2,DCT2)进行初始反变换,当前块的色度帧内预测模式满足预设模式条件。
[0143] 又例如,第一预设条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数,当前块不使用帧内预测滤波模式,当前块不使用改进帧内预测模式,当前块的色度帧内预测模式满足预设模式条件。
[0144] 当然,上述只是几个示例,对此不做限制,第一预设条件可以包括上述条件的任意组合。
[0145] 在上述实施例中,当前块的色度帧内预测模式满足预设模式条件,可以包括但不限于以下至少一种:当前块的色度帧内预测模式不为TSCPM模式;当前块的色度帧内预测模式不为PMC模式;当前块的色度帧内预测模式的模式号为模式号0~模式号4;当前块的色度帧内预测模式不为Intra_Chroma_PCM模式;当前块的色度帧内预测模式不为DM模式。
[0146] 比如说,若当前块的色度帧内预测模式不为TSCPM模式,或者,当前块的色度帧内预测模式不为PMC模式,或者,当前块的色度帧内预测模式的模式号为模式号0~模式号4,则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0147] 又例如,若当前块的色度帧内预测模式不为Intra_Chroma_PCM模式(或者IPD_IPCM模式),或者,当前块的色度帧内预测模式不为DM模式,则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0148] 又例如,若当前块的色度帧内预测模式不为Intra_Chroma_PCM模式,并且,当前块的色度帧内预测模式不为TSCPM模式,则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0149] 又例如,若当前块的色度帧内预测模式不为Intra_Chroma_PCM模式(或者命名为色度IPD_IPCM模式),则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0150] 又例如,若当前块的亮度帧内预测模式不为Intra_Luma_PCM模式(或者命名为亮度IPD_IPCM模式),或者,当前块的色度帧内预测模式不为DM模式,则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0151] 又例如,若当前块的亮度帧内预测模式不为Intra_Luma_PCM模式(或者命名为亮度IPD_IPCM模式),并且,当前块的色度帧内预测模式不为DM模式,则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0152] 又例如,若当前块的亮度帧内预测模式不为Intra_Luma_PCM模式(或者命名为亮度IPD_IPCM模式),和/或,当前块的色度帧内预测模式不为DM模式,则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0153] 在上述实施例中,当前块的色度分量的尺寸满足预设尺寸条件,可以包括但不限于以下至少一种:色度分量的宽度小于等于n1,且色度分量的高度小于等于n2。色度分量的宽度小于等于n1,或色度分量的高度小于等于n2。色度分量的宽度大于等于n3,且色度分量的高度大于等于n4。色度分量的宽度大于等于n3,或色度分量的高度大于等于n4。色度分量的宽度和高度的乘积大于等于n5。色度分量的宽度和高度的乘积小于等于n6。
[0154] 比如说,关于上述预设尺寸条件的任意组合,可以为:色度分量的宽度大于等于n3且小于等于n1,并且,色度分量的高度大于等于n4且小于等于n2。又例如,色度分量的宽度大于等于n3且小于等于n1,或者,色度分量的高度大于等于n4且小于等于n2。又例如,色度分量的宽度小于等于n1,且色度分量的高度小于等于n2,且色度分量的宽度和高度的乘积大于等于n5。又例如,色度分量的宽度小于等于n1,且色度分量的高度小于等于n2,且色度分量的宽度和高度的乘积小于等于n6。
[0155] 当然,上述只是预设尺寸条件的示例,预设尺寸条件可以为上述条件的任意组合。
[0156] 示例性的,n1和n2可以根据经验配置,n1和n2可以相同,也可以不同,比如说,n1=n2=32。当然,32只是示例,还可以为其它数值,如64等。n3和n4可以根据经验配置,n3和n4可以相同,也可以不同,比如说,n3=n4=4。当然,4只是示例,还可以为其它数值,如8等。n5和n6可以根据经验配置,n5和n6可以相同,也可以不同,比如说,n5=n6=128。当然,128只是示例,还可以为其它数值,如256等。
[0157] 在上述实施例中,控制信息允许色度分量使用二次反变换,可以包括但不限于以下一种:序列级控制信息允许色度分量使用二次反变换。图像参数集级控制信息允许色度分量使用二次反变换。图像头级控制信息允许色度分量使用二次反变换。片头级控制信息允许色度分量使用二次反变换。当然,上述只是控制信息的几个示例,对此控制信息的级别不做限制。
[0158] 序列级参数集(SPS,sequence parameter set)存在确定整个视频序列(即多帧视频图像)中是否允许某些工具(方法)开关的标记位,若标记位为1,则视频序列允许启用对应工具(方法);否则该工具(方法)无法在该序列的编码过程中启用。
[0159] 基于此,可以通过序列级控制信息允许色度分量使用二次反变换,或通过序列级控制信息不允许色度分量使用二次反变换。例如,secondary_transform_enable_flag=1,表示序列级控制信息允许色度分量使用二次反变换,secondary_transform_enable_flag=0,表示序列级控制信息不允许色度分量使用二次反变换,secondary_transform_enable_flag也可以记为SecondaryTransformEnableFlag。
[0160] 又例如,est_enable_flag=1,表示序列级控制信息允许使用增强二次反变换,且可以通过est_enable_flag=1表示序列级控制信息允许色度分量使用二次反变换。est_enable_flag=0,表示序列级控制信息不允许使用增强二次反变换,且可以通过est_enable_flag=0表示序列级控制信息不允许色度分量使用二次反变换。est_enable_flag也可以记为EstEnableFlag。
[0161] 又例如,st_chroma_enable_flag=1,表示序列级控制信息允许色度分量使用二次反变换,st_chroma_enable_flag=0,表示序列级控制信息不允许色度分量使用二次反变换。st_chroma_enable_flag也可以记为StChromaEnableFlag。
[0162] 又例如,若secondary_transform_enable_flag=1,且est_enable_flag=1,表示序列级控制信息允许色度分量使用二次反变换,若secondary_transform_enable_flag=1,且est_enable_flag=0,表示序列级控制信息不允许色度分量使用二次反变换。若secondary_transform_enable_flag=0,不需要解码est_enable_flag,可以直接表示序列级控制信息不允许色度分量使用二次反变换。
[0163] 又例如,若secondary_transform_enable_flag=1,且st_chroma_enable_flag=1,表示序列级控制信息允许色度分量使用二次反变换,若secondary_transform_enable_flag=1,且st_chroma_enable_flag=0,表示序列级控制信息不允许色度分量使用二次反变换。若secondary_transform_enable_flag=0,不需要解码st_chroma_enable_flag,可以直接表示序列级控制信息不允许色度分量使用二次反变换。
[0164] 当然,上述只是通过序列级控制信息允许色度分量使用二次反变换和不允许色度分量使用二次反变换的几个示例,对此不做限制。
[0165] 图像参数集(PPS,picture parameter set)存在确定某图像中是否允许某些工具(方法)开关的标记位。若标记位为1,则图像中允许启用对应工具(方法);否则,该工具(方法)无法在图像的编码过程中启用。基于此,通过图像参数集级控制信息允许色度分量使用二次反变换,或通过图像参数集级控制信息不允许色度分量使用二次反变换。
[0166] 图像头(picture header):针对某一帧图像的共同信息,不同于图像参数集(可被不同图像使用),图像头中保存的是仅针对当前图像的共同信息。例如,当当前图像包含多个slice时,所述多个slice可以通用图像头中的信息。图像头存在确定当前图像中是否允许某些工具(方法)开关的标记位。若标记位为1,则当前图像允许启用对应工具(方法);否则,该工具(方法)无法在当前图像的编码过程中启用。基于此,可以通过图像头级控制信息允许色度分量使用二次反变换,或通过图像头级控制信息不允许色度分量使用二次反变换。
[0167] 片头(Slice header):一帧图像包含至少一个slice,每个slice的头信息中,存在确定slice中是否允许某些工具(方法)开关的标记位。若标记位为1,则slice中允许启用对应工具(方法);否则,该工具(方法)无法在该slice的编码过程中启用。基于此,可以通过片头级控制信息允许色度分量使用二次反变换,或通过片头级控制信息不允许色度分量使用二次反变换。
[0168] 在一种可能的实施方式中,当前块的色度分量为色度U分量和色度V分量,上述二次变换标志位可以为UV分量共用二次变换标志位,当UV分量共用二次变换标志位的取值为第一取值时,用于指示对色度U分量和色度V分量同时进行二次反变换,或者,当UV分量共用二次变换标志位的取值为第二取值时,用于指示对色度U分量和色度V分量都不进行二次反变换。基于此,在步骤313中,若解析出的UV分量共用二次变换标志位的取值为第一取值,则确定对色度U分量和色度V分量同时进行二次反变换,若解析出的UV分量共用二次变换标志位的取值为第二取值,则确定对色度U分量和色度V分量都不进行二次反变换。
[0169] 在另一种可能的实施方式中,当前块的色度分量为色度U分量和色度V分量,上述二次变换标志位可以包括U分量二次变换标志位和V分量二次变换标志位;当U分量二次变换标志位的取值为第一取值时,用于指示对色度U分量进行二次反变换,或者,当U分量二次变换标志位的取值为第二取值时,用于指示对色度U分量不进行二次反变换;当V分量二次变换标志位的取值为第一取值时,用于指示对色度V分量进行二次反变换,或者,当V分量二次变换标志位的取值为第二取值时,用于指示对色度V分量不进行二次反变换。基于此,在步骤313中,若解析出的U分量二次变换标志位为第一取值,则确定对色度U分量进行二次反变换;若解析出的U分量二次变换标志位为第二取值,则确定对色度U分量不进行二次反变换。若解析出的V分量二次变换标志位为第一取值,则确定对色度V分量进行二次反变换;若解析出的V分量二次变换标志位为第二取值,则确定对色度V分量不进行二次反变换。
[0170] 在一种可能的实施方式中,解码端从编码比特流中解析二次变换标志位,可以包括但不限于:解码端采用基于上下文的二进制算术解码方式从编码比特流中解析二次变换标志位;或者,解码端采用旁路解码方式从编码比特流中解析二次变换标志位。
[0171] 示例性的,解码端采用基于上下文的二进制算术解码方式从编码比特流中解析二次变换标志位,可以包括但不限于:解码端基于当前块的色度帧内预测模式,从预先配置的至少两个上下文模型中选择目标上下文模型,并基于该目标上下文模型从该编码比特流中解析二次变换标志位。或者,解码端基于色度分量的尺寸,从预先配置的至少两个上下文模型中选择目标上下文模型,并基于该目标上下文模型从该编码比特流中解析二次变换标志位。
[0172] 由以上技术方案可见,本申请实施例中,在对当前块的色度分量进行初始变换后,可以确定是否对当前块的色度分量进行二次变换,若是,则可以对当前块的色度分量进行二次变换,即,二次变换技术也可以应用于当前块的色度分量,当色度分量经过初始变换后存在能量不够集中的问题时,可以对色度分量也进行二次变换,从而提高编码性能和编码效率。
[0173] 实施例2:在一种可能的实施方式中,参见图3B所示,为本申请实施例中提出的解码方法的流程示意图,该解码方法可以应用于解码端,该解码方法可以包括以下步骤:
[0174] 步骤321、获取当前块的编码比特流,并从该编码比特流中解析变换系数标志位,该变换系数标志位用于指示当前块的色度分量对应的最终变换系数矩阵中是否含有非零变换系数。
[0175] 步骤322、若当前块满足第一预设条件,则从该编码比特流中解析块级别色度分量的二次变换标志位,该二次变换标志位用于指示对该色度分量进行二次反变换,或对该色度分量不进行二次反变换。该第一预设条件至少可以包括:当前块的预测模式为帧内预测模式,该变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数。
[0176] 步骤323、若色度分量对应的最终变换系数矩阵中含有非零变换系数,则从当前块的编码比特流中解析所述当前块的色度分量对应的最终变换系数矩阵,并对色度分量对应的最终变换系数矩阵进行反量化,得到色度分量对应的目标变换系数矩阵,并根据该二次变换标志位确定是否对该色度分量对应的目标变换系数矩阵进行二次反变换。
[0177] 示例性的,步骤321‑步骤323的实现过程可以参见实施例1,在此不再重复赘述。
[0178] 步骤324、若对色度分量对应的目标变换系数矩阵进行二次反变换,则对该色度分量对应的目标变换系数矩阵进行二次反变换,得到该色度分量对应的初始变换系数矩阵;若对色度分量对应的目标变换系数矩阵不进行二次反变换,则将该色度分量对应的目标变换系数矩阵确定为该色度分量对应的初始变换系数矩阵。
[0179] 示例性的,色度分量对应的目标变换系数矩阵可以包括色度U分量对应的目标变换系数矩阵和色度V分量对应的目标变换系数矩阵,在此基础上:
[0180] 若二次变换标志位为UV分量共用二次变换标志位,且UV分量共用二次变换标志位用于指示对色度U分量和色度V分量同时进行二次反变换,则对色度U分量对应的目标变换系数矩阵进行二次反变换,得到色度U分量对应的初始变换系数矩阵。以及,对色度V分量对应的目标变换系数矩阵进行二次反变换,得到色度V分量对应的初始变换系数矩阵。若UV分量共用二次变换标志位用于指示对色度U分量和色度V分量都不进行二次反变换,则将色度U分量对应的目标变换系数矩阵确定为色度U分量对应的初始变换系数矩阵,将色度V分量对应的目标变换系数矩阵确定为色度V分量对应的初始变换系数矩阵。
[0181] 若二次变换标志位为U分量二次变换标志位和V分量二次变换标志位,若U分量二次变换标志位用于指示对色度U分量进行二次反变换,则对色度U分量对应的目标变换系数矩阵进行二次反变换,得到色度U分量对应的初始变换系数矩阵。若U分量二次变换标志位用于指示对色度U分量不进行二次反变换,则将色度U分量对应的目标变换系数矩阵确定为色度U分量对应的初始变换系数矩阵。若V分量二次变换标志位用于指示对色度V分量进行二次反变换,则对色度V分量对应的目标变换系数矩阵进行二次反变换,得到色度V分量对应的初始变换系数矩阵。若V分量二次变换标志位用于指示对色度V分量不进行二次反变换,则将色度V分量对应的目标变换系数矩阵确定为色度V分量对应的初始变换系数矩阵。
[0182] 在一种可能的实施方式中,在步骤324中,对该目标变换系数矩阵进行二次反变换,得到该色度分量对应的初始变换系数矩阵(如对色度U分量对应的目标变换系数矩阵进行二次反变换,得到色度U分量对应的初始变换系数矩阵,或,对色度V分量对应的目标变换系数矩阵进行二次反变换,得到色度V分量对应的初始变换系数矩阵),可以包括但不限于:
[0183] 情况一、若该色度分量的宽度大于预设阈值,或该色度分量的高度大于预设阈值,则基于该目标变换系数矩阵中位于左上角的指定区域的变换系数确定系数矩阵;对该系数矩阵进行水平反变换,得到水平反变换矩阵;对该水平反变换矩阵进行垂直反变换,得到垂直反变换矩阵;基于该垂直反变换矩阵对该目标变换系数矩阵中位于左上角的指定区域的变换系数进行更新,得到该初始变换系数矩阵。示例性的,该预设阈值可以根据经验配置,如4等,该左上角的指定区域可以根据经验配置,如目标变换系数矩阵中位于左上角的4*4的子区域。
[0184] 情况二、若该色度分量的宽度大于预设阈值,或该色度分量的高度大于预设阈值,则基于该目标变换系数矩阵中位于左上角的指定区域的变换系数确定系数矩阵;若当前块的色度帧内预测模式的模式号位于第一模式号区间,则对该系数矩阵进行水平反变换,得到水平反变换矩阵;若当前块的色度帧内预测模式的模式号位于第二模式号区间,则对该系数矩阵进行垂直反变换,得到垂直反变换矩阵。若只对该系数矩阵进行水平反变换,则基于水平反变换矩阵对该目标变换系数矩阵中位于左上角的指定区域的变换系数进行更新,得到初始变换系数矩阵。若只对该系数矩阵进行垂直反变换,则基于垂直反变换矩阵对该目标变换系数矩阵中位于左上角的指定区域的变换系数进行更新,得到初始变换系数矩阵。
[0185] 示例性的,第一模式号区间和第二模式号区间可以根据经验配置,对此第一模式号区间和第二模式号区间不做限制,第一模式号区间和第二模式号区间可以不存在重复模式号,第一模式号区间和第二模式号区间也可以存在重复模式号。比如说,第一模式号区间包括模式号0~2、模式号4~6、模式号8~9、模式号11~12、模式号14~15,第二模式号区间包括模式号0~1、模式号3~5、模式号7~8、模式号10~11、模式号13~14、模式号16。若当前块的色度帧内预测模式的模式号为0~2或4~6或8~9或11~12或14~15,则当前块的色度帧内预测模式的模式号位于第一模式号区间。若当前块的色度帧内预测模式的模式号为0~1或3~5或7~8或10~11或13~14或16,则当前块的色度帧内预测模式的模式号位于第二模式号区间。
[0186] 示例性的,若当前块的色度帧内预测模式的模式号既位于第一模式号区间,也位于第二模式号区间,则可以对该系数矩阵进行水平反变换,得到水平反变换矩阵,然后,对该水平反变换矩阵进行垂直反变换,得到垂直反变换矩阵。在此基础上,是对该系数矩阵先进行水平反变换后进行垂直反变换,因此,可以基于垂直反变换后的垂直反变换矩阵对该目标变换系数矩阵中位于左上角的指定区域的变换系数进行更新,得到初始变换系数矩阵。
[0187] 情况三、若该色度分量的宽度等于预设阈值,且该色度分量的高度等于预设阈值,则对目标变换系数矩阵进行垂直反变换,得到垂直反变换矩阵;对该垂直反变换矩阵进行水平反变换,得到水平反变换矩阵;基于该水平反变换矩阵确定初始变换系数矩阵。
[0188] 综上所述,基于情况一,情况二和情况三,若预设阈值为4,指定区域为左上角的4*4的子区域,则在对色度分量进行二次反变换的过程中,若目标变换系数矩阵的宽度或者高度的值大于4,则对左上角4*4的系数矩阵进行二次反变换,若目标变换系数矩阵的宽度和高度的值均为4,则对目标变换系数矩阵进行二次反变换,对此二次反变换过程不再赘述。
[0189] 综上所述,在步骤324中,可以得到色度分量对应的初始变换系数矩阵,即,色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵。
[0190] 步骤325、对色度分量对应的初始变换系数矩阵进行初始反变换,得到色度分量对应的残差系数矩阵。示例性的,解码端可以对色度U分量对应的初始变换系数矩阵进行初始反变换,得到色度U分量对应的残差系数矩阵,以及,解码端可以对色度V分量对应的初始变换系数矩阵进行初始反变换,得到色度V分量对应的残差系数矩阵。
[0191] 示例性的,在初始反变换过程中,若编码端采用变换核对(DCT2,DCT2)对色度分量对应的残差系数矩阵进行初始变换,得到初始变换系数矩阵,则解码端可以采用变换核对(DCT2,DCT2)对初始变换系数矩阵进行初始反变换,得到色度分量对应的残差系数矩阵。
[0192] 当然,在编码端采用其它变换核对进行初始变换时,解码端也采用相同的变换核对进行初始反变换,即初始反变换是初始变换的逆过程,对此初始反变换过程不再赘述。
[0193] 步骤326、根据该色度分量对应的残差系数矩阵确定色度分量的重建值。
[0194] 示例性的,解码端可以根据色度U分量对应的残差系数矩阵确定色度U分量的重建值,解码端可以根据色度V分量对应的残差系数矩阵确定色度V分量的重建值。
[0195] 例如,可以确定色度分量对应的参考块,针对色度分量的每个像素点,从参考块中确定与该像素点对应的参考点,并从残差系数矩阵中确定该像素点对应的残差系数值。根据该参考点的像素值与该残差系数值,就可以得到该像素点的重建值。色度分量的所有像素点对应的重建值,就可以组成色度分量的重建值。当然,上述方式只是示例,对此不做限制。
[0196] 由以上技术方案可见,本申请实施例中,在对当前块的色度分量进行初始变换后,可以确定是否对当前块的色度分量进行二次变换,若是,则可以对当前块的色度分量进行二次变换,即,二次变换技术也可以应用于当前块的色度分量,当色度分量经过初始变换后存在能量不够集中的问题时,可以对色度分量也进行二次变换,从而提高编码性能和编码效率。
[0197] 实施例3:在一种可能的实施方式中,参见图4A所示,为本申请实施例中提出的编码方法的流程示意图,该编码方法可以应用于编码端,该编码方法可以包括以下步骤:
[0198] 步骤411、获取当前块的色度分量对应的残差系数矩阵。
[0199] 示例性的,可以确定当前块的色度分量对应的参考块,针对色度分量的每个像素点,从参考块中确定与该像素点对应的参考点。该像素点的像素值与该参考点的像素值之间的差值,就是该像素点对应的残差系数,色度分量的所有像素点对应的残差系数就组成当前块的色度分量对应的残差系数矩阵。当然,上述方式只是示例,对此不做限制。
[0200] 步骤412、对该残差系数矩阵进行初始变换,得到该色度分量对应的初始变换系数矩阵。
[0201] 比如说,当前块的色度分量包括色度U分量和色度V分量,编码端可以对色度U分量对应的残差系数矩阵进行初始变换,得到色度U分量对应的初始变换系数矩阵,对色度V分量对应的残差系数矩阵进行初始变换,得到色度V分量对应的初始变换系数矩阵。
[0202] 示例性的,编码端可以采用变换核对(DCT2,DCT2)对该色度分量(如色度U分量或者色度V分量)对应的残差系数矩阵进行初始变换,得到该色度分量对应的初始变换系数矩阵。当然,也可以采用其它变换核对进行初始变换,对此初始变换过程不再赘述。
[0203] 步骤413、若当前块满足第二预设条件,则确定是否对色度分量对应的初始变换系数矩阵进行二次变换,得到色度分量对应的目标变换系数矩阵。
[0204] 示例性的,编码端可以确定当前块是否满足第二预设条件,若当前块不满足第二预设条件,则编码端确定对当前块的色度分量对应的初始变换系数矩阵不进行二次变换。若当前块满足第二预设条件,则编码端还可以基于色度分量对应的代价值,确定是否对当前块的色度分量对应的初始变换系数矩阵进行二次变换,具体确定方式参见后续实施例。
[0205] 在一种可能的实施方式中,该第二预设条件至少可以包括:当前块的预测模式为帧内预测模式,色度分量对应的初始变换系数矩阵中含有非零变换系数。综上所述,若确定当前块的预测模式为帧内预测模式,且色度分量对应的初始变换系数矩阵中含有非零变换系数,则确定当前块满足第二预设条件。若确定当前块的预测模式不为帧内预测模式,和/或,色度分量对应的初始变换系数矩阵中不含有非零变换系数,则确定当前块不满足第二预设条件。
[0206] 示例性的,由于当前块的色度分量包括色度U分量和色度V分量,因此,若当前块的预测模式为帧内预测模式,并且,色度U分量对应的初始变换系数矩阵和/或色度V分量对应的初始变换系数矩阵中含有非零变换系数,则确定当前块满足第二预设条件。若当前块的预测模式不为帧内预测模式,和/或,色度U分量对应的初始变换系数矩阵及色度V分量对应的初始变换系数矩阵中均不含有非零变换系数,则确定当前块不满足第二预设条件。
[0207] 示例性的,除了当前块的预测模式为帧内预测模式,色度分量对应的初始变换系数矩阵中含有非零变换系数,第二预设条件还可以包括但不限于以下至少一种:当前块不使用帧内预测滤波模式(IPF模式);当前块不使用改进帧内预测模式(IIP模式);当前块采用变换核对(DCT2,DCT2)进行初始变换;当前块的色度帧内预测模式满足预设模式条件;当前块的色度分量的尺寸满足预设尺寸条件;控制信息允许色度分量使用二次变换。
[0208] 示例性的,第二预设条件中各条件的组合方式可以参见实施例1中第一预设条件中各条件的组合方式,在此不再重复赘述。示例性的,第二预设条件需要与第一预设条件匹配,比如说,第一预设条件包括当前块不使用帧内预测滤波模式时,第二预设条件也包括当前块不使用帧内预测滤波模式。第一预设条件不包括当前块不使用帧内预测滤波模式时,第二预设条件也不包括当前块不使用帧内预测滤波模式,以此类推。
[0209] 在上述实施例中,当前块的色度帧内预测模式满足预设模式条件,可以包括但不限于以下至少一种:当前块的色度帧内预测模式不为TSCPM模式;当前块的色度帧内预测模式不为PMC模式;当前块的色度帧内预测模式的模式号为模式号0~模式号4;当前块的色度帧内预测模式不为Intra_Chroma_PCM模式;当前块的色度帧内预测模式不为DM模式。
[0210] 比如说,若当前块的色度帧内预测模式不为TSCPM模式,或者,当前块的色度帧内预测模式不为PMC模式,或者,当前块的色度帧内预测模式的模式号为模式号0~模式号4,则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0211] 又例如,若当前块的色度帧内预测模式不为Intra_Chroma_PCM模式(或者IPD_IPCM模式),或者,当前块的色度帧内预测模式不为DM模式,则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0212] 又例如,若当前块的色度帧内预测模式不为Intra_Chroma_PCM模式,并且,当前块的色度帧内预测模式不为TSCPM模式,则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0213] 又例如,若当前块的色度帧内预测模式不为Intra_Chroma_PCM模式(或者命名为色度IPD_IPCM模式),则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0214] 又例如,若当前块的亮度帧内预测模式不为Intra_Luma_PCM模式(或者命名为亮度IPD_IPCM模式),或者,当前块的色度帧内预测模式不为DM模式,则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0215] 又例如,若当前块的亮度帧内预测模式不为Intra_Luma_PCM模式(或者命名为亮度IPD_IPCM模式),并且,当前块的色度帧内预测模式不为DM模式,则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0216] 又例如,若当前块的亮度帧内预测模式不为Intra_Luma_PCM模式(或者命名为亮度IPD_IPCM模式),和/或,当前块的色度帧内预测模式不为DM模式,则可以确定当前块的色度帧内预测模式满足预设模式条件。
[0217] 示例性的,当前块的色度帧内预测模式满足预设模式条件还可以参见实施例1中当前块的色度帧内预测模式满足预设模式条件,在此不再重复赘述。
[0218] 在上述实施例中,当前块的色度分量的尺寸满足预设尺寸条件,可以包括但不限于以下至少一种:色度分量的宽度小于等于n1,且色度分量的高度小于等于n2。色度分量的宽度小于等于n1,或色度分量的高度小于等于n2。色度分量的宽度大于等于n3,且色度分量的高度大于等于n4。色度分量的宽度大于等于n3,或色度分量的高度大于等于n4。色度分量的宽度和高度的乘积大于等于n5。色度分量的宽度和高度的乘积小于等于n6。
[0219] 在上述实施例中,控制信息允许色度分量使用二次变换,可以包括但不限于以下一种:序列级控制信息允许色度分量使用二次变换。图像参数集级控制信息允许色度分量使用二次变换。图像头级控制信息允许色度分量使用二次变换。片头级控制信息允许色度分量使用二次变换。
[0220] 在一种可能的实施方式中,若当前块满足第二预设条件,则编码端还可以确定是否对当前块的色度分量进行二次变换,比如说,基于色度分量的代价值(如率失真代价值),确定是否对色度分量进行二次变换,具体确定方式参见后续步骤,在此不再赘述。
[0221] 步骤414、对色度分量对应的目标变换系数矩阵进行量化,得到色度分量对应的最终变换系数矩阵,并在当前块的编码比特流中编码变换系数标志位,该变换系数标志位用于指示色度分量对应的最终变换系数矩阵中是否含有非零变换系数。
[0222] 步骤415、在当前块满足第二预设条件,并确定是否对当前块的色度分量进行二次变换之后,还可以在当前块的编码比特流中编码块级别色度分量的二次变换标志位。示例性的,该二次变换标志位用于指示对该色度分量进行二次变换,或对该色度分量不进行二次变换。
[0223] 在一种可能的实施方式中,当前块的色度分量为色度U分量和色度V分量,上述二次变换标志位可以为UV分量共用二次变换标志位,当UV分量共用二次变换标志位的取值为第一取值时,用于指示对色度U分量和色度V分量同时进行二次变换,或者,当UV分量共用二次变换标志位的取值为第二取值时,用于指示对色度U分量和色度V分量都不进行二次变换。基于此,在步骤413中,可以确定对色度U分量和色度V分量只进行初始变换时的第一代价值,并确定对色度U分量和色度V分量先进行初始变换再进行二次变换时的第二代价值。若第二代价值小于第一代价值,则确定对色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵同时进行二次变换,若第二代价值大于第一代价值,则确定对色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵都不进行二次变换。
[0224] 示例性的,若第二代价值等于第一代价值,则可以确定对色度U分量和色度V分量都不进行二次变换,或者,可以确定对色度U分量和色度V分量同时进行二次变换。
[0225] 在步骤415中,若确定对色度U分量和色度V分量同时进行二次变换,则在当前块的编码比特流中编码UV分量共用二次变换标志位时,该UV分量共用二次变换标志位的取值为第一取值。若确定对色度U分量和色度V分量都不进行二次变换,则在当前块的编码比特流中编码UV分量共用二次变换标志位时,该UV分量共用二次变换标志位的取值为第二取值。
[0226] 在另一种可能的实施方式中,当前块的色度分量为色度U分量和色度V分量,上述二次变换标志位包括U分量二次变换标志位和V分量二次变换标志位。当U分量二次变换标志位的取值为第一取值时,用于指示对色度U分量进行二次变换,或者,当U分量二次变换标志位的取值为第二取值时,用于指示对色度U分量不进行二次变换。当V分量二次变换标志位的取值为第一取值时,用于指示对色度V分量进行二次变换,或者,当V分量二次变换标志位的取值为第二取值时,用于指示对色度V分量不进行二次变换。基于此,在步骤413中,确定对色度U分量只进行初始变换时的第三代价值,并确定对色度U分量先进行初始变换再进行二次变换时的第四代价值。若第四代价值小于第三代价值,则确定对色度U分量对应的初始变换系数矩阵进行二次变换;若第四代价值大于第三代价值,则确定对色度U分量对应的初始变换系数矩阵不进行二次变换;若第四代价值等于第三代价值,则确定对色度U分量不进行二次变换或对色度U分量进行二次变换。确定对色度V分量只进行初始变换时的第五代价值,并确定对色度V分量先进行初始变换再进行二次变换时的第六代价值。若第六代价值小于第五代价值,则确定对色度V分量对应的初始变换系数矩阵进行二次变换;若第六代价值大于第五代价值,则确定对色度V分量对应的初始变换系数矩阵不进行二次变换;若第六代价值等于第五代价值,确定对色度V分量不进行二次变换或对色度V分量进行二次变换。
[0227] 在步骤415中,若确定对色度U分量进行二次变换,则在编码比特流中编码U分量二次变换标志位时,U分量二次变换标志位的取值为第一取值。若确定对色度U分量不进行二次变换,则在编码比特流中编码U分量二次变换标志位时,U分量二次变换标志位的取值为第二取值。若确定对色度V分量进行二次变换,则在编码比特流中编码V分量二次变换标志位时,V分量二次变换标志位的取值为第一取值。若确定对色度V分量不进行二次变换,则在编码比特流中编码V分量二次变换标志位时,V分量二次变换标志位的取值为第二取值。
[0228] 在一种可能的实施方式中,在步骤415中,编码端在当前块的编码比特流中编码二次变换标志位,可以包括但不限于:编码端采用基于上下文的二进制算术编码方式对二次变换标志位进行编码;或者,编码端采用旁路编码方式对二次变换标志位进行编码。
[0229] 示例性的,编码端采用基于上下文的二进制算术编码方式对二次变换标志位进行编码,可以包括但不限于:编码端可以基于当前块的色度帧内预测模式,从预先配置的至少两个上下文模型中选择目标上下文模型,并基于该目标上下文模型对该二次变换标志位进行编码。或者,编码端可以基于当前块的色度分量的尺寸,从预先配置的至少两个上下文模型中选择目标上下文模型,并基于该目标上下文模型对该二次变换标志位进行编码。
[0230] 由以上技术方案可见,本申请实施例中,在对当前块的色度分量进行初始变换后,可以确定是否对当前块的色度分量进行二次变换,若是,则可以对当前块的色度分量进行二次变换,即,二次变换技术也可以应用于当前块的色度分量,当色度分量经过初始变换后存在能量不够集中的问题时,可以对色度分量也进行二次变换,从而提高编码性能和编码效率。
[0231] 实施例4:在一种可能的实施方式中,参见图4B所示,为本申请实施例中提出的编码方法的流程示意图,该编码方法可以应用于编码端,该编码方法可以包括以下步骤:
[0232] 步骤421、获取当前块的色度分量对应的残差系数矩阵。
[0233] 步骤422、对该残差系数矩阵进行初始变换,得到该色度分量对应的初始变换系数矩阵。
[0234] 步骤423、若当前块满足第二预设条件,则确定是否对色度分量对应的初始变换系数矩阵进行二次变换,得到色度分量对应的目标变换系数矩阵。
[0235] 示例性的,步骤421‑步骤423的实现过程可以参见实施例3,在此不再重复赘述。
[0236] 步骤424、若确定对色度分量对应的初始变换系数矩阵进行二次变换,则对该色度分量对应的初始变换系数矩阵进行二次变换,得到该色度分量对应的目标变换系数矩阵。若确定对色度分量对应的初始变换系数矩阵不进行二次变换,则将该色度分量对应的初始变换系数矩阵确定为该色度分量对应的目标变换系数矩阵。
[0237] 在一种可能的实施方式中,色度分量对应的初始变换系数矩阵可以包括色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵,在此基础上:
[0238] 若二次变换标志位为UV分量共用二次变换标志位,且对色度U分量和色度V分量同时进行二次变换,则对色度U分量对应的初始变换系数矩阵进行二次变换,得到色度U分量对应的目标变换系数矩阵,并对色度V分量对应的初始变换系数矩阵进行二次变换,得到色度V分量对应的目标变换系数矩阵。或者,若对色度U分量和色度V分量都不进行二次变换,则将色度U分量对应的初始变换系数矩阵确定为色度U分量对应的目标变换系数矩阵,并将色度V分量对应的初始变换系数矩阵确定为色度V对应的目标变换系数矩阵。
[0239] 若二次变换标志位为U分量二次变换标志位和V分量二次变换标志位,并且,对色度U分量进行二次变换,则可以对色度U分量对应的初始变换系数矩阵进行二次变换,得到色度U分量对应的目标变换系数矩阵。若对色度U分量不进行二次变换,则可以将色度U分量对应的初始变换系数矩阵确定为色度U分量对应的目标变换系数矩阵。
[0240] 若对色度V分量进行二次变换,则对色度V分量对应的初始变换系数矩阵进行二次变换,得到色度V分量对应的目标变换系数矩阵。若对色度V分量不进行二次变换,则将色度V分量对应的初始变换系数矩阵确定为色度V分量对应的目标变换系数矩阵。
[0241] 在一种可能的实施方式中,对色度分量对应的初始变换系数矩阵进行二次变换,得到该色度分量对应的目标变换系数矩阵(如对色度U分量对应的初始变换系数矩阵进行二次变换,得到色度U分量对应的目标变换系数矩阵,或,对色度V分量对应的初始变换系数矩阵进行二次变换,得到色度V分量对应的目标变换系数矩阵),可以包括但不限于:
[0242] 情况1、若该色度分量的宽度大于预设阈值,或该色度分量的高度大于预设阈值,则基于该初始变换系数矩阵中位于左上角的指定区域的变换系数确定系数矩阵;对该系数矩阵进行垂直变换,得到垂直变换矩阵;对该垂直变换矩阵进行水平变换,得到水平变换矩阵;基于该水平变换矩阵对该初始变换系数矩阵中位于左上角的指定区域的变换系数进行更新,得到该目标变换系数矩阵。示例性的,该预设阈值可以根据经验配置,如4等,该左上角的指定区域可以根据经验配置,如目标变换系数矩阵中位于左上角的4*4的子区域。
[0243] 情况2、若该色度分量的宽度大于预设阈值,或该色度分量的高度大于预设阈值,则基于该初始变换系数矩阵中位于左上角的指定区域的变换系数确定系数矩阵;若当前块的色度帧内预测模式的模式号位于第一模式号区间,则对该系数矩阵进行水平变换,得到水平变换矩阵;若当前块的色度帧内预测模式的模式号位于第二模式号区间,则对该系数矩阵进行垂直变换,得到垂直变换矩阵。若只对该系数矩阵进行水平变换,则基于该水平变换矩阵对该初始变换系数矩阵中位于左上角的指定区域的变换系数进行更新,得到该目标变换系数矩阵;若只对该系数矩阵进行垂直变换,则基于该垂直变换矩阵对该初始变换系数矩阵中位于左上角的指定区域的变换系数进行更新,得到该目标变换系数矩阵。
[0244] 第一模式号区间包括模式号0~2、模式号4~6、模式号8~9、模式号11~12、模式号14~15,第二模式号区间包括模式号0~1、模式号3~5、模式号7~8、模式号10~11、模式号13~14、模式号16。若色度帧内预测模式的模式号为0~2或4~6或8~9或11~12或14~15,则色度帧内预测模式的模式号位于第一模式号区间。若色度帧内预测模式的模式号为0~1或3~5或7~8或10~11或13~14或16,则色度帧内预测模式的模式号位于第二模式号区间。
[0245] 示例性的,若当前块的色度帧内预测模式的模式号既位于第一模式号区间,也位于第二模式号区间,则可以对该系数矩阵进行垂直变换,得到垂直变换矩阵;然后,对该垂直变换矩阵进行水平变换,得到水平变换矩阵。在此基础上,是对该系数矩阵先进行垂直变换后进行水平变换,因此,可以基于水平变换后的该水平变换矩阵对该初始变换系数矩阵中位于左上角的指定区域的变换系数进行更新,得到该目标变换系数矩阵。
[0246] 情况3、若该色度分量的宽度等于预设阈值,且该色度分量的高度等于预设阈值,则对该初始变换系数矩阵进行水平变换,得到水平变换矩阵;对水平变换矩阵进行垂直变换,得到垂直变换矩阵;基于垂直变换矩阵确定该目标变换系数矩阵。
[0247] 综上所述,基于情况1,情况2和情况3,若预设阈值为4,指定区域为左上角的4*4的子区域,则在对色度分量进行二次变换的过程中,若初始变换系数矩阵的宽度或者高度的值大于4,则对左上角4*4的系数矩阵进行二次变换,若初始变换系数矩阵的宽度和高度的值均为4,则对初始变换系数矩阵进行二次变换,对此二次变换过程不再赘述。
[0248] 综上所述,在步骤424中,可以得到色度分量对应的目标变换系数矩阵,即,色度U分量对应的目标变换系数矩阵和色度V分量对应的目标变换系数矩阵。
[0249] 步骤425,对色度分量对应的目标变换系数矩阵进行量化,得到该色度分量对应的最终变换系数矩阵,并在当前块的编码比特流中编码变换系数标志位,该变换系数标志位用于指示该色度分量对应的最终变换系数矩阵中是否含有非零变换系数。
[0250] 示例性的,在得到该色度分量对应的最终变换系数矩阵后,还可以在当前块的编码比特流中编码该色度分量对应的最终变换系数矩阵,对此编码过程不做限制。
[0251] 示例性的,若该变换系数标志位为第一取时,则指示当前块的色度分量对应的最终变换系数矩阵中含有非零变换系数。或者,若该变换系数标志位为第二取值时,则指示当前块的色度分量对应的最终变换系数矩阵中不含有非零变换系数。示例性的,该变换系数标志位可以包括色度U分量变换系数标志位和色度V分量变换系数标志位。该色度U分量变换系数标志位的取值为第一取值时,可以用于指示当前块的色度U分量对应的最终变换系数矩阵中含有非零变换系数;该色度U分量变换系数标志位的取值为第二取值时,可以用于指示当前块的色度U分量对应的最终变换系数矩阵中不含有非零变换系数。此外,该色度V分量变换系数标志位的取值为第一取值时,可以用于指示当前块的色度V分量对应的最终变换系数矩阵中含有非零变换系数;该色度V分量变换系数标志位的取值为第二取值时,可以用于指示当前块的色度V分量对应的最终变换系数矩阵中不含有非零变换系数。
[0252] 步骤426,在当前块的编码比特流中编码二次变换标志位,该二次变换标志位用于指示对当前块的色度分量进行二次变换,或,对当前块的色度分量不进行二次变换。
[0253] 示例性的,在当前块的编码比特流中编码二次变换标志位之前,可以判断色度分量对应的最终变换系数矩阵中是否含有非零变换系数,若色度分量对应的最终变换系数矩阵中含有非零变换系数,则在当前块的编码比特流中编码该二次变换标志位。若色度分量对应的最终变换系数矩阵中不含有非零变换系数,则不在当前块的编码比特流中编码该二次变换标志位。
[0254] 比如说,针对UV分量共用二次变换标志位的应用场景,若色度U分量对应的最终变换系数矩阵中含有非零变换系数,和/或,色度V分量对应的最终变换系数矩阵中含有非零变换系数,则在编码比特流中编码UV分量共用二次变换标志位。若色度U分量对应的最终变换系数矩阵中不含有非零变换系数,且色度V分量对应的最终变换系数矩阵中不含有非零变换系数,则不在编码比特流中编码UV分量共用二次变换标志位。
[0255] 又例如,针对U分量二次变换标志位和V分量二次变换标志位的应用场景,若色度U分量对应的最终变换系数矩阵中含有非零变换系数,则在编码比特流中编码U分量二次变换标志位,若色度U分量对应的最终变换系数矩阵中不含有非零变换系数,则不在编码比特流中编码U分量二次变换标志位。若色度V分量对应的最终变换系数矩阵中含有非零变换系数,则在编码比特流中编码V分量二次变换标志位,若色度V分量对应的最终变换系数矩阵中不含有非零变换系数,则不在编码比特流中编码V分量二次变换标志位。
[0256] 由以上技术方案可见,本申请实施例中,在对当前块的色度分量进行初始变换后,可以确定是否对当前块的色度分量进行二次变换,若是,则可以对当前块的色度分量进行二次变换,即,二次变换技术也可以应用于当前块的色度分量,当色度分量经过初始变换后存在能量不够集中的问题时,可以对色度分量也进行二次变换,从而提高编码性能和编码效率。
[0257] 在上述实施例1‑实施例4中,第一取值可以为1,第二取值可以为0;或者,第一取值可以为0,第二取值可以为1;当然,上述只是示例,对此第一取值和第二取值不做限制。
[0258] 实施例5:在一种可能的实施方式中,参见图5A所示,为本申请实施例中提出的解码方法的流程示意图,该解码方法可以应用于解码端,该解码方法可以包括以下步骤:
[0259] 步骤511、获取当前块的编码比特流,并从该编码比特流中解析亮度分量变换系数标志位,色度U分量变换系数标志位和色度V分量变换系数标志位。
[0260] 示例性的,亮度分量变换系数标志位用于指示亮度分量对应的最终变换系数矩阵中是否含有非零变换系数,色度U分量变换系数标志位用于指示色度U分量对应的最终变换系数矩阵中是否含有非零变换系数,色度V分量变换系数标志位用于指示色度V分量对应的最终变换系数矩阵中是否含有非零变换系数。
[0261] 比如说,若亮度分量变换系数标志位的取值为第一取值,则确定该亮度分量对应的最终变换系数矩阵中含有非零变换系数。若亮度分量变换系数标志位的取值为第二取值,则确定该亮度分量对应的最终变换系数矩阵中不含有非零变换系数。若色度U分量变换系数标志位的取值为第一取值,则确定该色度U分量对应的最终变换系数矩阵中含有非零变换系数。若色度U分量变换系数标志位的取值为第二取值,则确定该色度U分量对应的最终变换系数矩阵中不含有非零变换系数。若色度V分量变换系数标志位的取值为第一取值,则确定该色度V分量对应的最终变换系数矩阵中含有非零变换系数。若色度V分量变换系数标志位的取值为第二取值,则确定该色度V分量对应的最终变换系数矩阵中不含有非零变换系数。
[0262] 步骤512、若当前块满足第三预设条件,则从编码比特流中解析块级别的亮色度二次变换标志位,该亮色度二次变换标志位为亮度分量,色度U分量和色度V分量共用的二次变换标志位,当亮色度二次变换标志位的取值为第一取值时,用于指示对亮度分量,色度U分量和色度V分量同时进行二次反变换,或者,当亮色度二次变换标志位的取值为第二取值时,用于指示对亮度分量,色度U分量和色度V分量都不进行二次反变换。
[0263] 步骤513、若最终变换系数矩阵中含有非零变换系数(如亮度分量对应的最终变换系数矩阵、色度U分量对应的最终变换系数矩阵、色度V分量对应的最终变换系数矩阵中,至少一个含有非零变换系数),则从该编码比特流中解析亮度分量对应的最终变换系数矩阵,色度U分量对应的最终变换系数矩阵,色度V分量对应的最终变换系数矩阵。对亮度分量对应的最终变换系数矩阵进行反量化,得到该亮度分量对应的目标变换系数矩阵,对色度U分量对应的最终变换系数矩阵进行反量化,得到该色度U分量对应的目标变换系数矩阵,对色度V分量对应的最终变换系数矩阵进行反量化,得到该色度V分量对应的目标变换系数矩阵。
[0264] 步骤514、根据该亮色度二次变换标志位确定是否对亮度分量对应的目标变换系数矩阵、色度U分量对应的目标变换系数矩阵和色度V分量对应的目标变换系数矩阵进行二次反变换,即,同时进行二次反变换,或者都不进行二次反变换。
[0265] 示例性的,解码端可以确定当前块是否满足第三预设条件,若当前块不满足第三预设条件,则解码端确定对亮度分量对应的目标变换系数矩阵、色度U分量对应的目标变换系数矩阵和色度V分量对应的目标变换系数矩阵都不进行二次反变换。若当前块满足第三预设条件,则解码端从当前块的编码比特流中解析亮色度二次变换标志位。若该亮色度二次变换标志位的取值为第一取值,则解码端确定对当前块的亮度分量对应的目标变换系数矩阵、色度U分量对应的目标变换系数矩阵和色度V分量对应的目标变换系数矩阵同时进行二次反变换。若该亮色度二次变换标志位的取值为第二取值,则解码端确定对当前块的亮度分量对应的目标变换系数矩阵、色度U分量对应的目标变换系数矩阵和色度V分量对应的目标变换系数矩阵都不进行二次反变换。
[0266] 在一种可能的实施方式中,该第三预设条件至少可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示最终变换系数矩阵中含有非零变换系数。变换系数标志位用于指示最终变换系数矩阵中含有非零变换系数,包括以下条件的至少一种:亮度分量变换系数标志位用于指示亮度分量对应的最终变换系数矩阵中含有非零变换系数,比如说,亮度分量变换系数标志位的取值为第一取值。色度U分量变换系数标志位用于指示色度U分量对应的最终变换系数矩阵中含有非零变换系数,比如说,色度U分量变换系数标志位的取值为第一取值。色度V分量变换系数标志位用于指示色度V分量对应的变最终换系数矩阵中含有非零变换系数,比如说,色度V分量变换系数标志位的取值为第一取值。
[0267] 综上所述,若确定当前块的预测模式为帧内预测模式,且变换系数标志位用于指示最终变换系数矩阵中含有非零变换系数(如亮度分量变换系数标志位、色度U分量变换系数标志位和色度V分量变换系数标志位中的至少一个为第一取值),则解码端确定当前块满足第三预设条件。否则,解码端确定当前块不满足第三预设条件。
[0268] 在一种可能的实施方式中,除了当前块的预测模式为帧内预测模式,变换系数标志位用于指示最终变换系数矩阵中含有非零变换系数,第三预设条件还可以包括但不限于以下至少一种:当前块不使用帧内预测滤波模式;当前块不使用DT划分模式;当前块不使用改进帧内预测模式;当前块采用变换核对(DCT2,DCT2)进行初始反变换;当前块的色度帧内预测模式满足预设模式条件;当前块的尺寸满足预设尺寸条件;控制信息允许使用二次反变换。示例性的,第三预设条件可以包括上述所有条件的任意组合,对此不做限制。
[0269] 在上述实施例中,当前块的色度帧内预测模式满足预设模式条件,可以参见实施例1,在此不再重复赘述。当前块的尺寸满足预设尺寸条件,可以参见实施例1,在此不再重复赘述。控制信息允许使用二次反变换,可以参见实施例1,在此不再重复赘述。
[0270] 在一种可能的实施方式中,解码端从编码比特流中解析亮色度二次变换标志位,可以包括但不限于:解码端采用基于上下文的二进制算术解码方式从编码比特流中解析亮色度二次变换标志位;或者,解码端采用旁路解码方式从编码比特流中解析亮色度二次变换标志位。
[0271] 解码端采用基于上下文的二进制算术解码方式从编码比特流中解析亮色度二次变换标志位,可以包括但不限于:解码端基于当前块的色度帧内预测模式,从预先配置的至少两个上下文模型中选择目标上下文模型,并基于该目标上下文模型从该编码比特流中解析亮色度二次变换标志位。或者,解码端基于色度分量的尺寸,从预先配置的至少两个上下文模型中选择目标上下文模型,并基于该目标上下文模型从该编码比特流中解析亮色度二次变换标志位。
[0272] 示例性的,若对当前块的亮度分量、色度U分量和色度V分量同时进行二次反变换,则对亮度分量对应的目标变换系数矩阵进行二次反变换,得到亮度分量对应的初始变换系数矩阵,对色度U分量对应的目标变换系数矩阵进行二次反变换,得到色度U分量对应的初始变换系数矩阵,对色度V分量对应的目标变换系数矩阵进行二次反变换,得到色度V分量对应的初始变换系数矩阵。若对当前块的亮度分量、色度U分量和色度V分量都不进行二次反变换,则将亮度分量对应的目标变换系数矩阵确定为亮度分量对应的初始变换系数矩阵,将色度U分量对应的目标变换系数矩阵确定为色度U分量对应的初始变换系数矩阵,将色度V分量对应的目标变换系数矩阵确定为色度V分量对应的初始变换系数矩阵。
[0273] 在一种可能的实施方式中,对色度分量(如色度U分量和色度V分量)对应的目标变换系数矩阵进行二次反变换,得到该色度分量对应的初始变换系数矩阵的过程,可以参见步骤325,在此不再赘述。对亮度分量对应的目标变换系数矩阵进行二次反变换,得到该亮度分量对应的初始变换系数矩阵的过程,可以包括但不限于:若该亮度分量的宽度大于预设阈值,或该亮度分量的高度大于预设阈值,则基于该目标变换系数矩阵中位于左上角的指定区域的变换系数确定系数矩阵;对该系数矩阵进行水平反变换,得到水平反变换矩阵;对该水平反变换矩阵进行垂直反变换,得到垂直反变换矩阵;基于该垂直反变换矩阵对该目标变换系数矩阵中位于左上角的指定区域的变换系数进行更新,得到该初始变换系数矩阵。
[0274] 或者,若该亮度分量的宽度等于预设阈值,且该亮度分量的高度等于预设阈值,则对该目标变换系数矩阵进行垂直反变换,得到垂直反变换矩阵;对该垂直反变换矩阵进行水平反变换,得到水平反变换矩阵;基于该水平反变换矩阵确定该初始变换系数矩阵。
[0275] 示例性的,可以对亮度分量对应的初始变换系数矩阵进行初始反变换,得到亮度分量对应的残差系数矩阵;对色度U分量对应的初始变换系数矩阵进行初始反变换,得到色度U分量对应的残差系数矩阵;对色度V分量对应的初始变换系数矩阵进行初始反变换,得到色度V分量对应的残差系数矩阵。关于初始反变换的方式,在此不再重复赘述。
[0276] 示例性的,可以根据亮度分量对应的残差系数矩阵确定该亮度分量的重建值,根据色度U分量对应的残差系数矩阵确定色度U分量的重建值,根据色度V分量对应的残差系数矩阵确定色度V分量的重建值。至此,解码端可以基于亮度分量的重建值,色度U分量的重建值,色度V分量的重建值确定当前块的重建值,即完成当前块的解码流程。
[0277] 由以上技术方案可见,本申请实施例中,在对当前块的亮度分量和色度分量进行初始变换后,可以确定是否对当前块的亮度分量和色度分量进行二次变换,即,二次变换技术同时可以应用于当前块的亮度分量和色度分量,当亮度分量和色度分量经过初始变换后存在能量不够集中的问题时,可以对亮度分量和色度分量进行二次变换,提高编码性能和编码效率。
[0278] 实施例6:在一种可能的实施方式中,参见图5B所示,为本申请实施例中提出的编码方法的流程示意图,该编码方法可以应用于编码端,该编码方法可以包括以下步骤:
[0279] 步骤521、获取当前块的亮度分量对应的残差系数矩阵,当前块的色度U分量对应的残差系数矩阵,当前块的色度V分量对应的残差系数矩阵。
[0280] 步骤522、对亮度分量对应的残差系数矩阵进行初始变换,得到该亮度分量对应的初始变换系数矩阵;对色度U分量对应的残差系数矩阵进行初始变换,得到该色度U分量对应的初始变换系数矩阵;对色度V分量对应的残差系数矩阵进行初始变换,得到该色度V分量对应的初始变换系数矩阵。关于初始变换的实现方式,在此不再重复赘述。
[0281] 步骤523、若当前块满足第四预设条件,则确定是否对当前块的亮度分量对应的初始变换系数矩阵、色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵进行二次变换,即,同时进行二次变换,或者都不进行二次变换。
[0282] 示例性的,编码端可以确定当前块是否满足第四预设条件,若当前块不满足第四预设条件,则编码端可以确定对当前块的亮度分量对应的初始变换系数矩阵、色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵都不进行二次变换。若当前块满足第四预设条件,则编码端还可以基于当前块的代价值(如率失真代价值),确定是否对当前块的亮度分量对应的初始变换系数矩阵、色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵进行二次变换。
[0283] 在一种可能的实施方式中,第四预设条件至少可以包括:当前块的预测模式为帧内预测模式,初始变换系数矩阵中含有非零变换系数。初始变换系数矩阵中含有非零变换系数,包括以下条件的至少一种:亮度分量对应的变换系数矩阵中含有非零变换系数;色度U分量对应的变换系数矩阵中含有非零变换系数;色度V分量对应的变换系数矩阵中含有非零变换系数。综上所述,若确定当前块的预测模式为帧内预测模式,且初始变换系数矩阵中含有非零变换系数,则确定当前块满足第四预设条件。若确定当前块的预测模式不为帧内预测模式,和/或,初始变换系数矩阵中不含有非零变换系数,则确定当前块不满足第四预设条件。
[0284] 在一种可能的实施方式中,除了当前块的预测模式为帧内预测模式,初始变换系数矩阵中含有非零变换系数,第四预设条件还可以包括但不限于以下至少一种:当前块不使用帧内预测滤波模式;当前块不使用DT划分模式;当前块不使用改进帧内预测模式;当前块采用变换核对(DCT2,DCT2)进行初始变换;当前块的色度帧内预测模式满足预设模式条件;当前块的尺寸满足预设尺寸条件;控制信息允许使用二次变换。示例性的,第四预设条件需要与第三预设条件匹配,比如说,第三预设条件包括当前块不使用帧内预测滤波模式时,第四预设条件也包括当前块不使用帧内预测滤波模式。第三预设条件不包括当前块不使用帧内预测滤波模式时,第四预设条件也不包括当前块不使用帧内预测滤波模式。
[0285] 示例性的,关于当前块的色度帧内预测模式满足预设模式条件,当前块的尺寸满足预设尺寸条件,控制信息允许使用二次变换,可以参见实施例3,在此不再重复赘述。
[0286] 步骤524、若确定对亮度分量对应的初始变换系数矩阵、色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵进行二次变换,则对亮度分量对应的初始变换系数矩阵进行二次变换,得到该亮度分量对应的目标变换系数矩阵,对色度U分量对应的初始变换系数矩阵进行二次变换,得到该色度U分量对应的目标变换系数矩阵,对色度V分量对应的初始变换系数矩阵进行二次变换,得到该色度V分量对应的目标变换系数矩阵。若确定对亮度分量对应的初始变换系数矩阵、色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵都不进行二次变换,则将亮度分量对应的初始变换系数矩阵确定为该亮度分量对应的目标变换系数矩阵,将色度U分量对应的初始变换系数矩阵确定为该色度U分量对应的目标变换系数矩阵,将色度V分量对应的初始变换系数矩阵确定为该色度V分量对应的目标变换系数矩阵。
[0287] 示例性的,对色度分量(如色度U分量和色度V分量)对应的初始变换系数矩阵进行二次变换,得到色度分量对应的目标变换系数矩阵的过程,可以参见步骤424,在此不再赘述。对亮度分量对应的初始变换系数矩阵进行二次变换,得到亮度分量对应的目标变换系数矩阵的过程,可以包括但不限于:若亮度分量的宽度大于预设阈值,或亮度分量的高度大于预设阈值,则基于该初始变换系数矩阵中位于左上角的指定区域的变换系数确定系数矩阵;对该系数矩阵进行垂直变换,得到垂直变换矩阵;对该垂直变换矩阵进行水平变换,得到水平变换矩阵;基于该水平变换矩阵对该初始变换系数矩阵中位于左上角的指定区域的变换系数进行更新,得到该目标变换系数矩阵。或者,若亮度分量的宽度等于预设阈值,且亮度分量的高度等于预设阈值,则对该初始变换系数矩阵进行水平变换,得到水平变换矩阵;对水平变换矩阵进行垂直变换,得到垂直变换矩阵;基于垂直变换矩阵确定该目标变换系数矩阵。
[0288] 步骤525、对亮度分量对应的目标变换系数矩阵进行量化,得到亮度分量对应的最终变换系数矩阵,对色度U分量对应的目标变换系数矩阵进行量化,得到色度U分量对应的最终变换系数矩阵,对色度V分量对应的目标变换系数矩阵进行量化,得到色度V分量对应的最终变换系数矩阵。对亮度分量对应的最终变换系数矩阵、色度U分量对应的最终变换系数矩阵和色度V分量对应的最终变换系数矩阵进行编码,得到编码比特流。以及,在编码比特流中编码亮度分量变换系数标志位,色度U分量变换系数标志位和色度V分量变换系数标志位。亮度分量变换系数标志位用于指示亮度分量对应的最终变换系数矩阵中是否含有非零变换系数,色度U分量变换系数标志位用于指示色度U分量对应的最终变换系数矩阵中是否含有非零变换系数,色度V分量变换系数标志位用于指示色度V分量对应的最终变换系数矩阵中是否含有非零变换系数。
[0289] 步骤526、在当前块的编码比特流中编码块级别的亮色度二次变换标志位,该亮色度二次变换标志位为亮度分量,色度U分量和色度V分量共用的二次变换标志位。
[0290] 示例性的,当该亮色度二次变换标志位的取值为第一取值时,用于指示对亮度分量,色度U分量和色度V分量同时进行二次反变换,或者,当该亮色度二次变换标志位的取值为第二取值时,用于指示对亮度分量,色度U分量和色度V分量都不进行二次反变换。
[0291] 在步骤523中,确定对亮度分量、色度U分量和色度V分量只进行初始变换时的第七代价值,确定对亮度分量、色度U分量和色度V分量先进行初始变换再进行二次变换时的第八代价值。若第八代价值小于第七代价值,则确定对亮度分量对应的初始变换系数矩阵、色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵同时进行二次变换,若第八代价值大于第七代价值,则确定对亮度分量对应的初始变换系数矩阵、色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵都不进行二次变换。若第八代价值等于第七代价值,则确定对亮度分量对应的初始变换系数矩阵、色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵同时进行二次变换,或对亮度分量对应的初始变换系数矩阵、色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵都不进行二次变换。
[0292] 在步骤526中,若确定对亮度分量对应的初始变换系数矩阵、色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵同时进行二次变换,则在当前块的编码比特流中编码亮色度二次变换标志位,且该亮色度二次变换标志位的取值为第一取值。若确定对亮度分量对应的初始变换系数矩阵、色度U分量对应的初始变换系数矩阵和色度V分量对应的初始变换系数矩阵都不进行二次变换,则在当前块的编码比特流中编码亮色度二次变换标志位,且该亮色度二次变换标志位的取值为第二取值。
[0293] 在一种可能的实施方式中,编码端在当前块的编码比特流中编码亮色度二次变换标志位,可以包括但不限于:编码端采用基于上下文的二进制算术编码方式对亮色度二次变换标志位进行编码;或者,编码端采用旁路编码方式对亮色度二次变换标志位进行编码。
[0294] 编码端采用基于上下文的二进制算术编码方式对亮色度二次变换标志位进行编码,可以包括但不限于:编码端可以基于当前块的色度帧内预测模式,从预先配置的至少两个上下文模型中选择目标上下文模型,并基于该目标上下文模型对该亮色度二次变换标志位进行编码。或者,编码端可以基于当前块的色度分量的尺寸,从预先配置的至少两个上下文模型中选择目标上下文模型,并基于该目标上下文模型对该亮色度二次变换标志位进行编码。
[0295] 在一种可能的实施方式中,步骤526之前,还可以判断最终变换系数矩阵中是否含有非零变换系数,若亮度分量对应的最终变换系数矩阵、色度U分量对应的最终变换系数矩阵和色度V分量对应的最终变换系数矩阵中,有至少一个最终变换系数矩阵中含有非零变换系数,则在当前块的编码比特流中编码亮色度二次变换标志位。若亮度分量对应的最终变换系数矩阵、色度U分量对应的最终变换系数矩阵和色度V分量对应的最终变换系数矩阵中,均不含有非零变换系数,则不在当前块的编码比特流中编码该亮色度二次变换标志位。
[0296] 由以上技术方案可见,本申请实施例中,在对当前块的亮度分量和色度分量进行初始变换后,可以确定是否对当前块的亮度分量和色度分量进行二次变换,即,二次变换技术同时可以应用于当前块的亮度分量和色度分量,当亮度分量和色度分量经过初始变换后存在能量不够集中的问题时,可以对亮度分量和色度分量进行二次变换,提高编码性能和编码效率。
[0297] 在上述实施例5和实施例6中,第一取值可以为1,第二取值可以为0;或者,第一取值可以为0,第二取值可以为1;当然,上述只是示例,对此第一取值和第二取值不做限制。
[0298] 实施例7:本申请实施例中提出一种二次变换方法,解码端的解码流程包括:若当前块满足解析条件(即第一预设条件),则从当前块的编码比特流中解析二次变换标志位。当二次变换标志位等于0(通过0表示第二取值),表示色度分量不进行二次反变换,当二次变换标志位等于1(通过1表示第一取值),表示色度分量进行二次反变换。示例性的,若色度分量进行二次反变换,则对色度分量的目标变换系数矩阵左上角4*4区域进行二次反变换,并更新左上角4*4区域的变换系数,得到初始变换系数矩阵,然后,再对初始变换系数矩阵进行初始反变换,得到残差系数矩阵。若色度分量不进行二次反变换,则直接对目标变换系数矩阵(即目标变换系数矩阵作为初始变换系数矩阵)进行初始反变换,得到残差系数矩阵。然后,基于残差系数矩阵(即残差块)确定重建块,如残差块与预测块相加得到重建块。
[0299] 示例性的,解析条件可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度分量对应的最终变换系数矩阵中含有非零变换系数。比如说,ctp_u为1或者ctp_v为1。ctp_u为色度U分量变换系数标志位,ctp_u为1表示色度U分量对应的最终变换系数矩阵中含有非零变换系数。ctp_v为色度V分量变换系数标志位,ctp_v为1表示色度V分量对应的最终变换系数矩阵中含有非零变换系数。
[0300] 编码端的编码流程包括:若当前块满足解析条件(即第二预设条件),编码端通过RDO决策当前块的色度分量是否进行二次变换,若决策色度分量不进行二次变换,则直接对残差系数矩阵(即残差块)进行初始变换,得到初始变换系数矩阵,对初始变换系数矩阵进行量化,得到最终变换系数矩阵,在当前块的编码比特流中编码最终变换系数矩阵,并在编码比特流中编码二次变换标志位等于0,以表示不进行二次变换。若决策色度分量进行二次变换,则对残差系数矩阵进行初始变换,得到初始变换系数矩阵,并对初始变换系数矩阵左上角4*4的变换系数进行二次变换,得到二次变换后的目标变换系数矩阵,对目标变换系数矩阵进行量化,得到最终变换系数矩阵,在当前块的编码比特流中编码最终变换系数矩阵,并在编码比特流中编码二次变换标志位等于1,以表示进行二次变换。示例性的,解析条件可以包括:当前块的预测模式为帧内预测模式,色度分量对应的最终变换系数矩阵中含有非零变换系数。
[0301] 实施例8:色度U分量和色度V分量共用一个二次变换标志位,该二次变换标志位可以为UV分量共用二次变换标志位,将该UV分量共用二次变换标志位记为st_chroma_flag,st_chroma_flag也可以命名为StChromaFlag。
[0302] 解码端的解码流程包括:若当前块满足解析条件1(即第一预设条件),从当前块的编码比特流中解析st_chroma_flag。当st_chroma_flag等于0,表示色度U分量和色度V分量都不进行二次反变换,当st_chroma_flag等于1,表示色度U分量和色度V分量同时进行二次反变换。示例性的,若色度U分量和色度V分量同时进行二次反变换,则对色度U分量对应的目标变换系数矩阵左上角4*4区域进行二次反变换,并更新左上角4*4区域的变换系数,得到色度U分量对应的初始变换系数矩阵,再对色度U分量对应的初始变换系数矩阵进行初始反变换,得到色度U分量对应的残差系数矩阵。对色度V分量对应的目标变换系数矩阵左上角4*4区域进行二次反变换,并更新左上角4*4区域的变换系数,得到色度V分量对应的初始变换系数矩阵,再对色度V分量对应的初始变换系数矩阵进行初始反变换,得到色度V分量对应的残差系数矩阵。若色度U分量和色度V分量都不进行二次反变换,则直接对色度U分量对应的目标变换系数矩阵进行初始反变换,得到色度U分量对应的残差系数矩阵,并对色度V分量对应的目标变换系数矩阵进行初始反变换,得到色度V分量对应的残差系数矩阵。然后,基于色度U分量对应的残差系数矩阵(即残差块)和色度V分量对应的残差系数矩阵确定重建块,例如,色度U分量对应的残差块与预测块相加可以得到色度U分量对应的重建块,色度V分量对应的残差块与预测块相加可以得到色度V分量对应的重建块。
[0303] 示例性的,解析条件1可以参见实施例1的第一预设条件,在此不再赘述。
[0304] 编码端的编码流程包括:若当前块满足解析条件2,编码端通过RDO决策对当前块的色度U分量和色度V分量都不进行二次变换,或者,对当前块的色度U分量和色度V分量同时进行二次变换。若决策对色度U分量和色度V分量都不进行二次变换,则直接对色度U分量对应的残差系数矩阵(即残差块)进行初始变换,得到色度U分量对应的初始变换系数矩阵,对该色度U分量对应的初始变换系数矩阵进行量化,得到色度U分量对应的最终变换系数矩阵。对色度V分量对应的残差系数矩阵(即残差块)进行初始变换,得到色度V分量对应的初始变换系数矩阵,对该色度V分量对应的初始变换系数矩阵进行量化,得到色度V分量对应的最终变换系数矩阵。在当前块的编码比特流中编码色度U分量对应的最终变换系数矩阵和色度V分量对应的最终变换系数矩阵,在编码比特流中编码st_chroma_flag等于0。
[0305] 若决策对色度U分量和色度V分量同时进行二次变换,则对色度U分量对应的残差系数矩阵进行初始变换,得到色度U分量对应的初始变换系数矩阵,对色度U分量对应的初始变换系数矩阵左上角4*4的变换系数进行二次变换,得到色度U分量对应的目标变换系数矩阵,对该色度U分量对应的目标变换系数矩阵进行量化,得到色度U分量对应的最终变换系数矩阵。对色度V分量对应的残差系数矩阵进行初始变换,得到色度V分量对应的初始变换系数矩阵,对色度V分量对应的初始变换系数矩阵左上角4*4的变换系数进行二次变换,得到色度V分量对应的目标变换系数矩阵,对该色度V分量对应的目标变换系数矩阵进行量化,得到色度V分量对应的最终变换系数矩阵。在编码比特流中编码色度U分量对应的最终变换系数矩阵和色度V分量对应的最终变换系数矩阵,在编码比特流编码st_chroma_flag等于1。
[0306] 示例性的,解析条件2可以参见实施例3的第二预设条件,在此不再赘述。
[0307] 实施例9:色度U分量和色度V分量共用一个二次变换标志位,该二次变换标志位可以为UV分量共用二次变换标志位,将该UV分量共用二次变换标志位记为st_chroma_flag。
[0308] 解码端的解码流程包括:解析当前块的变换系数标志位ctp_u和ctp_v,ctp_u表示当前块的色度U分量对应的最终变换系数矩阵是否含非零变换系数,ctp_v表示当前块的色度V分量对应的最终变换系数矩阵是否含非零变换系数,例如ctp_u=0表示当前块的色度U分量对应的最终变换系数矩阵不含非零变换系数,ctp_u=1表示当前块的色度U分量对应的最终变换系数矩阵含非零变换系数,ctp_v=0表示当前块的色度V分量对应的最终变换系数矩阵不含非零变换系数,ctp_v=1表示当前块的色度V分量对应的最终变换系数矩阵含非零变换系数。若当前块满足解析条件1(第一预设条件),从编码比特流中解析st_chroma_flag。当st_chroma_flag等于0,表示色度U分量和色度V分量都不进行二次反变换,当st_chroma_flag等于1,表示色度U分量和色度V分量同时进行二次反变换。
[0309] 若当前块的色度分量(如色度U分量和/或色度V分量)对应的最终变换系数矩阵含非零变换系数,则从当前块的编码比特流中解析当前块的色度分量对应的最终变换系数矩阵,并对色度分量对应的最终变换系数矩阵进行反量化,得到色度分量对应的目标变换系数矩阵。
[0310] 示例性的,若色度U分量和色度V分量同时进行二次反变换,则对色度U分量对应的目标变换系数矩阵左上角4*4区域进行二次反变换,并更新左上角4*4区域的变换系数,得到色度U分量对应的初始变换系数矩阵,再对色度U分量对应的初始变换系数矩阵进行初始反变换,得到色度U分量对应的残差系数矩阵。对色度V分量对应的目标变换系数矩阵左上角4*4区域进行二次反变换,并更新左上角4*4区域的变换系数,得到色度V分量对应的初始变换系数矩阵,再对色度V分量对应的初始变换系数矩阵进行初始反变换,得到色度V分量对应的残差系数矩阵。若色度U分量和色度V分量都不进行二次反变换,则直接对色度U分量对应的目标变换系数矩阵进行初始反变换,得到色度U分量对应的残差系数矩阵,并对色度V分量对应的目标变换系数矩阵进行初始反变换,得到色度V分量对应的残差系数矩阵。然后,基于色度U分量对应的残差系数矩阵(即残差块)和色度V分量对应的残差系数矩阵确定重建块,例如,色度U分量对应的残差块与预测块相加可以得到色度U分量对应的重建块,色度V分量对应的残差块与预测块相加可以得到色度V分量对应的重建块。
[0311] 示例性的,解析条件1可以参见实施例1的第一预设条件,在此不再赘述。
[0312] 解码端解析st_chroma_flag语法描述可以为下面描述中的一种或多种:
[0313] 语法1
[0314]
[0315] 语法2
[0316]
[0317] 语法3
[0318]
[0319] 在上述语法1、语法2和语法3中,语法1表示在当前块为色度块,并且当前块的预测模式为帧内预测模式,当前块的色度帧内预测模式不为Intra_Chroma_PCM模式,当前块不使用帧内预测滤波(IPF)模式,当前块不使用改进帧内预测(IIP)模式,变换系数标志位用于指示色度u或v分量对应的最终变换系数矩阵中含有非零变换系数。语法2表示在当前块为色度块,并且当前块的预测模式为帧内预测模式,当前块的色度帧内预测模式不为Intra_Chroma_PCM模式,当前块不使用帧内预测滤波(IPF)模式,当前块不使用改进帧内预测(IIP)模式,变换系数标志位用于指示色度u或v分量对应的最终变换系数矩阵中含有非零变换系数,控制信息StChromaEnableFlag允许色度分量使用二次反变换。语法3表示在当前块为色度块,并且当前块的预测模式为帧内预测模式,当前块的色度帧内预测模式不为Intra_Chroma_PCM模式,当前块不使用帧内预测滤波(IPF)模式,当前块不使用改进帧内预测(IIP)模式,变换系数标志位用于指示色度u或v分量对应的最终变换系数矩阵中含有非零变换系数,控制信息EstEnableFlag允许色度分量使用二次反变换。
[0320] 编码端的编码流程包括:
[0321] 若当前块满足解析条件2,编码端通过RDO决策对当前块的色度U分量和色度V分量都不进行二次变换,或,对当前块的色度U分量和色度V分量同时进行二次变换。若决策对色度U分量和色度V分量都不进行二次变换,则直接对色度U分量对应的残差系数矩阵(即残差块)进行初始变换,得到色度U分量对应的初始变换系数矩阵,对色度U分量对应的初始变换系数矩阵进行量化,得到色度U分量对应的最终变换系数矩阵。对色度V分量对应的残差系数矩阵(即残差块)进行初始变换,得到色度V分量对应的初始变换系数矩阵,对该色度V分量对应的初始变换系数矩阵进行量化,得到色度V分量对应的最终变换系数矩阵。
[0322] 在当前块的编码比特流中编码色度U分量对应的最终变换系数矩阵和色度V分量对应的最终变换系数矩阵,在编码比特流中编码变换系数标志位ctp_u和ctp_v,ctp_u表示当前块的色度U分量对应的最终变换系数矩阵是否含非零变换系数,ctp_v表示当前块的色度V分量对应的最终变换系数矩阵是否含非零变换系数,例如ctp_u=0表示当前块的色度U分量对应的最终变换系数矩阵不含非零变换系数,ctp_u=1表示当前块的色度U分量对应的最终变换系数矩阵含非零变换系数,ctp_v=0表示当前块的色度V分量对应的最终变换系数矩阵不含非零变换系数,ctp_v=1表示当前块的色度V分量对应的最终变换系数矩阵含非零变换系数。
[0323] 若色度U分量对应的最终变换系数矩阵和/或色度V分量对应的最终变换系数矩阵含非零变换系数,在编码比特流中编码st_chroma_flag为0,并在编码比特流中编码最终变换系数矩阵。
[0324] 若决策对色度U分量和色度V分量同时进行二次变换,则对色度U分量对应的残差系数矩阵进行初始变换,得到色度U分量对应的初始变换系数矩阵,对色度U分量对应的初始变换系数矩阵左上角4*4的变换系数进行二次变换,得到色度U分量对应的目标变换系数矩阵,对该色度U分量对应的目标变换系数矩阵进行量化,得到色度U分量对应的最终变换系数矩阵。对色度V分量对应的残差系数矩阵进行初始变换,得到色度V分量对应的初始变换系数矩阵,对色度V分量对应的初始变换系数矩阵左上角4*4的变换系数进行二次变换,得到色度V分量对应的目标变换系数矩阵,对该色度V分量对应的目标变换系数矩阵进行量化,得到色度V分量对应的最终变换系数矩阵。
[0325] 在当前块的编码比特流中编码色度U分量对应的最终变换系数矩阵和色度V分量对应的最终变换系数矩阵,在编码比特流中编码变换系数标志位ctp_u和ctp_v,ctp_u表示当前块的色度U分量对应的最终变换系数矩阵是否含非零变换系数,ctp_v表示当前块的色度V分量对应的最终变换系数矩阵是否含非零变换系数,例如ctp_u=0表示当前块的色度U分量对应的最终变换系数矩阵不含非零变换系数,ctp_u=1表示当前块的色度U分量对应的最终变换系数矩阵含非零变换系数,ctp_v=0表示当前块的色度V分量对应的最终变换系数矩阵不含非零变换系数,ctp_v=1表示当前块的色度V分量对应的最终变换系数矩阵含非零变换系数。
[0326] 若色度U分量对应的最终变换系数矩阵和/或色度V分量对应的最终变换系数矩阵含非零变换系数,在编码比特流中编码st_chroma_flag为1,并在编码比特流中编码最终变换系数矩阵。
[0327] 示例性的,解析条件2可以参见实施例3的第二预设条件,在此不再赘述。
[0328] 实施例10:在实施例8或实施例9的st_chroma_flag的基础上,编码端可以采用基于上下文的二进制算术编码方式对st_chroma_flag进行编码,解码端可以采用基于上下文的二进制算术解码方式对st_chroma_flag进行解码。或者,编码端采用旁路编码方式对st_chroma_flag进行编码,解码端采用旁路解码方式对st_chroma_flag进行解码。若采用基于上下文的二进制算术编码方式或者解码方式,还可以预先配置上下文模型,以下对此上下文模型进行说明:
[0329] 情况1、预先配置一个单独的上下文模型,该上下文模型作为所有色度分量的目标上下文模型。基于此,针对编码端来说,在需要对st_chroma_flag进行编码时,编码端可以基于该上下文模型对st_chroma_flag进行编码。针对解码端来说,在需要对st_chroma_flag进行解码时,解码端可以基于该上下文模型对st_chroma_flag进行解码。
[0330] 情况2、预先配置基于色度帧内预测模式的至少两个上下文模型,这些上下文模型均可能作为目标上下文模型。针对编码端来说,在需要对st_chroma_flag进行编码时,编码端先基于当前块的色度帧内预测模式,从预先配置的至少两个上下文模型中选择目标上下文模型,并基于目标上下文模型对st_chroma_flag进行编码。针对解码端来说,在需要对st_chroma_flag进行解码时,解码端先基于当前块的色度帧内预测模式,从预先配置的至少两个上下文模型中选择目标上下文模型,并基于目标上下文模型对st_chroma_flag进行解码。
[0331] 例如,参见表5所示,可以预先配置两个上下文模型,这两个上下文模型分别为上下文模型0和上下文模型1。针对编码端来说,若当前块的色度帧内预测模式的模式号位于0‑4(DM、DC、HOR、VER、BI),则将上下文模型0作为目标上下文模型,并基于上下文模型0对st_chroma_flag进行编码,同理,解码端基于上下文模型0对st_chroma_flag进行解码。针对编码端来说,若当前块的色度帧内预测模式的模式号位于5‑16(DM、DC、HOR、VER、BI之外的其它模式),则将上下文模型1作为目标上下文模型,并基于上下文模型1对st_chroma_flag进行编码,同理,解码端基于上下文模型1对st_chroma_flag进行解码。
[0332] 表5
[0333]IntraChromaMode(色度帧内预测模式) Context model(上下文模型)
0‑4(DM、DC、HOR、VER、BI) 0
5‑16(other modes) 1
[0334] 又例如,参见表6所示,可以预先配置三个上下文模型,分别为上下文模型0、上下文模型1和上下文模型2。针对编码端来说,若当前块的色度帧内预测模式的模式号位于0‑4(DM、DC、HOR、VER、BI),则将上下文模型0作为目标上下文模型,并基于上下文模型0对st_chroma_flag进行编码,解码端基于上下文模型0对st_chroma_flag进行解码。针对编码端来说,若当前块的色度帧内预测模式的模式号位于5‑7(TSCPM、TSCPM_L、TSCPM_T),则将上下文模型1作为目标上下文模型,基于上下文模型1对st_chroma_flag进行编码,解码端基于上下文模型1对st_chroma_flag进行解码。针对编码端来说,若当前块的色度帧内预测模式的模式号位于8‑16(PMC、PMC_L、PMC_T、EPMC、EPMC_L、EPMC_T、EPMC2、EPMC2_L、EPMC2_T),则将上下文模型2作为目标上下文模型,并基于上下文模型2对st_chroma_flag进行编码,解码端基于上下文模型2对st_chroma_flag进行解码。
[0335] 表6
[0336]
[0337]
[0338] 又例如,参见表7所示,可以预先配置四个上下文模型,分别为上下文模型0‑上下文模型3。针对编码端来说,若当前块的色度帧内预测模式的模式号位于0‑4(DM、DC、HOR、VER、BI),则将上下文模型0作为目标上下文模型,基于上下文模型0对st_chroma_flag进行编码,解码端基于上下文模型0对st_chroma_flag进行解码。针对编码端来说,若当前块的色度帧内预测模式的模式号位于5‑7(TSCPM、TSCPM_L、TSCPM_T),则将上下文模型1作为目标上下文模型,基于上下文模型1对st_chroma_flag进行编码,解码端基于上下文模型1对st_chroma_flag进行解码。针对编码端来说,若当前块的色度帧内预测模式的模式号位于8‑10(PMC、PMC_L、PMC_T),则将上下文模型2作为目标上下文模型,基于上下文模型2对st_chroma_flag进行编码,解码端基于上下文模型2对st_chroma_flag进行解码。针对编码端来说,若当前块的色度帧内预测模式的模式号位于11‑16(EPMC、EPMC_L、EPMC_T、EPMC2、EPMC2_L、EPMC2_T),则将上下文模型3作为目标上下文模型,基于上下文模型3对st_chroma_flag进行编码,解码端基于上下文模型3对st_chroma_flag进行解码。
[0339] 表7
[0340]
[0341] 情况3、预先配置基于当前块的色度分量的尺寸的至少两个上下文模型,这些上下文模型均可能作为目标上下文模型。针对编码端来说,先基于当前块的色度分量的尺寸,从预先配置的至少两个上下文模型中选择目标上下文模型,并基于目标上下文模型对st_chroma_flag进行编码。针对解码端来说,先基于当前块的色度分量的尺寸,从预先配置的至少两个上下文模型中选择目标上下文模型,并基于目标上下文模型对st_chroma_flag进行解码。
[0342] 比如说,可以基于色度分量的宽度配置至少两个上下文模型,可以基于色度分量的高度配置至少两个上下文模型,可以基于色度分量的宽度和高度的最大值配置至少两个上下文模型,可以基于色度分量的宽度和高度的最小值配置至少两个上下文模型,可以基于色度分量的宽度和高度的乘积配置至少两个上下文模型,当然,上述只是几个示例,对此不做限制。
[0343] 例如,参见表8所示,可以根据宽度和高度的乘积配置两个上下文模型,这两个上下文模型分别为上下文模型0和上下文模型1。针对编码端来说,若色度分量的宽度和高度的乘积大于或者等于N,则可以将上下文模型0作为目标上下文模型,并基于上下文模型0对st_chroma_flag进行编码,同理,解码端基于上下文模型0对st_chroma_flag进行解码。针对编码端来说,若色度分量的宽度和高度的乘积小于N,则将上下文模型1作为目标上下文模型,并基于上下文模型1对st_chroma_flag进行编码,同理,解码端基于上下文模型1对st_chroma_flag进行解码。示例性的,N可以根据经验进行配置,如N可以设为128。
[0344] 表8
[0345]Size=宽度*高度 Context model(上下文模型)
Size>=N 0
Size
[0346] 又例如,参见表9所示,可以根据宽度和高度的最小值配置两个上下文模型,这两个上下文模型分别为上下文模型0和上下文模型1。针对编码端来说,若色度分量的宽度和高度的最小值大于或者等于M,则将上下文模型0作为目标上下文模型,并基于上下文模型0对st_chroma_flag进行编码,同理,解码端基于上下文模型0对st_chroma_flag进行解码。针对编码端来说,若色度分量的宽度和高度的最小值小于M,则将上下文模型1作为目标上下文模型,并基于上下文模型1对st_chroma_flag进行编码,同理,解码端基于上下文模型1对st_chroma_flag进行解码。示例性的,M可以根据经验进行配置,如M可以设为4或8。
[0347] 表9
[0348] Size=min(宽度,高度) Context model(上下文模型)Size>=M 0
Size
[0349] 实施例11:在实施例8或实施例9的基础上,对于二次变换过程,从编码端来说,就是经过(DCT2,DCT2)变换后得到初始变换系数矩阵,然后对初始变换系数矩阵左上角的4*4的变换系数,再与二次变换矩阵相乘得到新的变换系数,使用新的变换系数替换初始变换系数矩阵左上角的4*4的变换系数,得到目标变换系数矩阵,然后再进行量化得到最终变换系数矩阵。从解码端来说,对于从码流熵解码得到的最终变换系数矩阵经过反量化后,得到目标变换系数矩阵,对目标变换系数矩阵左上角的4*4区域先进行二次反变换得到新的变换系数,使用新的变换系数替换目标变换系数矩阵左上角的4*4的变换系数,得到初始变换系数矩阵,然后对初始变换系数矩阵使用(DCT2,DCT2)进行逆变换,得到残差系数。
[0350] 针对色度分量(如色度U分量和色度V分量)来说,解码端反变换过程如下:
[0351] 情况一、如果当前块是色度帧内预测残差块(即色度分量),色度分量的宽度或高度的值大于4,且SecondaryTransformEnableFlag(即二次变换启用标志)的值等于1(二次变换启用标志的值等于1,表示序列级或帧级允许启用二次变换),且StChromaFlag的值等于1(StChromaFlag的值等于1表示对色度分量进行二次变换,需要注意的是,在其它实施例中,StChromaFlag也可以记为st_chroma_flag,二者是一个意思),对系数矩阵执行以下操作:
[0352] 1、由变换系数矩阵得到左上角4*4的系数矩阵C:cij=coeffij,i=0~3,j=0~3,在上述公式中,cij是矩阵C的元素,coeffij是变换系数矩阵的元素。示例性的,系数矩阵C是基于目标变换系数矩阵中位于左上角的4*4区域的变换系数确定的系数矩阵。
[0353] 2、对系数矩阵C进行如下水平反变换:cij=Clip3(‑32768,32767,(pij+26)>>7),i=0~3,j=0~3。pij是4*4的矩阵P的元素,矩阵P的计算方式如下:P=C×S4,S4是4*4反变6
换矩阵,Clip3(‑32768,32767,(pij+2)>>7)表示,若cij的值位于‑32768与32767之间,则cij
6
的值为(pij+2)>>7,若cij的值小于‑32768,则cij的值为‑32768,若cij的值大于32767,则cij的值为32767。示例性的,对系数矩阵C进行水平反变换后得到的是水平反变换矩阵。
[0354] 3、对水平反变换矩阵进行如下垂直反变换:cij=Clip3(‑32768,32767,(qij+26)>>T T7),i=0~3,j=0~3。qij是4×4矩阵Q的元素,矩阵Q的计算方式如下:Q=S4×C,S4是S4的转置矩阵,S4是4*4反变换矩阵。对水平反变换矩阵进行垂直反变换后得到的是垂直反变换矩。
[0355] 4、根据垂直反变换矩修改目标变换系数矩阵的元素的值:coeffij=cij,i=0~3,j=0~3。即基于垂直反变换矩阵对目标变换系数矩阵中位于左上角的4*4区域的变换系数进行替换。
[0356] 情况二、如果当前块是色度帧内预测残差块,色度分量的宽度和高度的值均等于4,且SecondaryTransformEnableFlag的值等于1,且StChromaFlag的值等于1,则:
[0357] 1、对变换系数矩阵进行如下垂直反变换,得到矩阵K:kij=Clip3(‑32768,32767,4
(vij+2)>>5),i=0~M1‑1,j=0~M2‑1,vij是矩阵V的元素,kij是矩阵K的元素。矩阵V的计算T T
如下:V=D4×CoeffMatrix,D4是反变换矩阵D4的转置矩阵,CoeffMatrix为变换系数。示例性的,对目标变换系数矩阵进行垂直反变换后,得到的矩阵K是垂直反变换矩阵。
[0358] 2、对矩阵K进行如下水平反变换,得到矩阵H:hij=Clip3(‑MaxValue‑1,MaxValue,shift1‑1(wij+2 )>>shift1),i=0~M1‑1,j=0~M2‑1,wi,j是矩阵W的元素,hij是矩阵H的元素。
MaxValue的值为(1<
[0359] 示例性的,对于4*4的块,进行完二次反变换后不需要再进行初始逆变换。
[0360] 实施例12:在实施例8、实施例9和实施例11的基础上,针对色度分量(如色度U分量和色度V分量)来说,在二次反变换过程中,还可以基于当前块的色度针对预测模式决定是否进行水平反变换和垂直反变换,在此基础上,解码端反变换过程如下:
[0361] 情况一、如果当前块是色度帧内预测残差块,色度分量的宽度或高度的值大于4,且SecondaryTransformEnableFlag的值等于1,st_chroma_flag等于1,对系数矩阵执行以下操作:
[0362] 1、由变换系数矩阵得到左上角4*4的系数矩阵C:cij=coeffij,i=0~3,j=0~3,在上述公式中,cij是矩阵C的元素,coeffij是变换系数矩阵的元素。示例性的,系数矩阵C是基于目标变换系数矩阵中位于左上角的4*4区域的变换系数确定的系数矩阵。
[0363] 2、若IntraChromaPredMode的值为0~2或4~6或8~9或11~12或14~15,对系数6
矩阵C进行如下水平反变换:cij=Clip3(‑32768,32767,(pij+2)>>7),i=0~3,j=0~3。
pij是4*4的矩阵P的元素,矩阵P的计算方式如下:P=C×S4,S4是4*4反变换矩阵。示例性的,对系数矩阵C进行水平反变换后得到的是水平反变换矩阵。IntraChromaPredMode的值为0~2或4~6或8~9或11~12或14~15,表示色度帧内预测模式的模式号位于第一模式号区间。
[0364] 3、若IntraChromaPredMode的值为0~1或3~5或7~8或10~11或13~14或16,对6
系数矩阵进行如下垂直反变换:cij=Clip3(‑32768,32767,(qij+2)>>7),i=0~3,j=0~T T
3。qij是4×4矩阵Q的元素,矩阵Q的计算方式如下:Q=S4×C,S4是S4的转置矩阵,S4是4*4反变换矩阵。对系数矩阵进行垂直反变换后得到的是垂直反变换矩,IntraChromaPredMode的值为0~1或3~5或7~8或10~11或13~14或16,表示色度帧内预测模式的模式号位于第二模式号区间。示例性的,若步骤3之前,未对系数矩阵C进行水平反变换,则在步骤3中,是直接对系数矩阵C进行垂直反变换。若步骤3之前,已经对系数矩阵C进行水平反变换,得到水平反变换矩阵,则在步骤3中,是对水平反变换矩阵进行垂直反变换。
[0365] 4、根据系数矩阵修改目标变换系数矩阵的元素的值:coeffij=cij,i=0~3,j=0~3。示例性的,若只对系数矩阵C进行水平反变换,得到水平反变换矩阵,而未对水平反变换矩阵进行垂直反变换,则使用水平反变换矩阵修改目标变换系数矩阵的元素的值。若只对系数矩阵C进行垂直反变换,得到垂直反变换矩阵,而未对系数矩阵C进行水平反变换,则使用垂直反变换矩阵修改目标变换系数矩阵的元素的值。若先对系数矩阵C进行水平反变换,得到水平反变换矩阵,然后对水平反变换矩阵进行垂直反变换,得到垂直反变换矩阵,则使用垂直反变换矩阵(即经过水平反变换和垂直反变换后的矩阵)修改目标变换系数矩阵的元素的值。
[0366] 情况二、如果当前块是色度帧内预测残差块,色度分量的宽度和高度的值均等于4,且SecondaryTransformEnableFlag的值等于1,且st_chroma_flag的值等于1,则:
[0367] 1、对变换系数矩阵进行如下垂直反变换,得到矩阵K:kij=Clip3(‑32768,32767,4
(vij+2)>>5),i=0~M1‑1,j=0~M2‑1,vij是矩阵V的元素,kij是矩阵K的元素。矩阵V的计算T T
如下:V=D4×CoeffMatrix,D4是反变换矩阵D4的转置矩阵,CoeffMatrix为变换系数。示例性的,对目标变换系数矩阵进行垂直反变换后,得到的矩阵K是垂直反变换矩阵。
[0368] 2、对矩阵K进行如下水平反变换,得到矩阵H:hij=Clip3(‑MaxValue‑1,MaxValue,shift1‑1(wij+2 )>>shift1),i=0~M1‑1,j=0~M2‑1,wi,j是矩阵W的元素,hij是矩阵H的元素。
MaxValue的值为(1<
[0369] 示例性的,对于4*4的块,进行完二次反变换后不需要再进行初始逆变换。
[0370] 实施例13:色度U分量和色度V分量使用不同的二次变换标志位,色度U分量的二次变换标志位为U分量二次变换标志位,将该U分量二次变换标志位记为st_cb_flag,色度V分量的二次变换标志位为V分量二次变换标志位,将该V分量二次变换标志位记为st_cr_flag。示例性的,st_cb_flag也可以命名为StCbFlag,st_cr_flag也可以命名为StCrFlag。
[0371] 解码端的解码流程包括:若当前块满足解析条件3(即第一预设条件),则从当前块的编码比特流中解析st_cb_flag。当st_cb_flag等于0,表示色度U分量不进行二次反变换,当st_cb_flag等于1,表示色度U分量进行二次反变换。若色度U分量进行二次反变换,对色度U分量对应的目标变换系数矩阵左上角4*4区域进行二次反变换,并更新左上角4*4区域的变换系数,得到色度U分量对应的初始变换系数矩阵,再对色度U分量对应的初始变换系数矩阵进行初始反变换,得到色度U分量对应的残差系数矩阵。若色度U分量不进行二次反变换,则直接对色度U分量对应的目标变换系数矩阵进行初始反变换,得到色度U分量对应的残差系数矩阵。基于色度U分量对应的残差系数矩阵得到色度U分量对应的重建块。
[0372] 若当前块满足解析条件4(即第一预设条件),则从当前块的编码比特流中解析st_cr_flag。当st_cr_flag等于0,表示色度V分量不进行二次反变换,当st_cr_flag等于1,表示色度V分量进行二次反变换。若色度V分量进行二次反变换,对色度V分量对应的目标变换系数矩阵左上角4*4区域进行二次反变换,并更新左上角4*4区域的变换系数,得到色度V分量对应的初始变换系数矩阵,再对色度V分量对应的初始变换系数矩阵进行初始反变换,得到色度V分量对应的残差系数矩阵。若色度V分量不进行二次反变换,则直接对色度V分量对应的目标变换系数矩阵进行初始反变换,得到色度V分量对应的残差系数矩阵。基于色度V分量对应的残差系数矩阵(即残差块)得到色度V分量对应的重建块。
[0373] 示例性的,解析条件3可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度U分量对应的最终变换系数矩阵中含有非零变换系数,如ctp_u为1。解析条件4可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示色度V分量对应的最终变换系数矩阵中含有非零变换系数,如ctp_v为1。解析条件3和解析条件4还可以包括可选的解析条件,这些可选的解析条件参见实施例1的第一预设条件,在此不再赘述。
[0374] 编码端的编码流程包括:若当前块满足解析条件5,编码端通过RDO决策对色度U分量不进行二次变换或进行二次变换。若决策对色度U分量不进行二次变换,则直接对色度U分量对应的残差系数矩阵进行初始变换,得到色度U分量对应的初始变换系数矩阵,对色度U分量对应的初始变换系数矩阵进行量化,得到色度U分量对应的最终变换系数矩阵。在编码比特流中编码色度U分量对应的最终变换系数矩阵,在编码比特流中编码st_cb_flag等于0。若决策对色度U分量进行二次变换,则对色度U分量对应的残差系数矩阵进行初始变换,得到色度U分量对应的初始变换系数矩阵,对色度U分量对应的初始变换系数矩阵左上角4*4的变换系数进行二次变换,得到色度U分量对应的目标变换系数矩阵,对色度U分量对应的目标变换系数矩阵进行量化,得到色度U分量对应的最终变换系数矩阵,在编码比特流中编码色度U分量对应的最终变换系数矩阵,并在编码比特流中编码st_cb_flag等于1。
[0375] 若当前块满足解析条件6,编码端还可以通过RDO决策对色度V分量不进行二次变换或进行二次变换。若决策对色度V分量不进行二次变换,则直接对色度V分量对应的残差系数矩阵进行初始变换,得到色度V分量对应的初始变换系数矩阵,对色度V分量对应的初始变换系数矩阵进行量化,得到色度V分量对应的最终变换系数矩阵。在当前块的编码比特流中编码色度V分量对应的最终变换系数矩阵,并在编码比特流中编码st_cr_flag等于0。若决策对色度V分量进行二次变换,则对色度V分量对应的残差系数矩阵进行初始变换,得到色度V分量对应的初始变换系数矩阵,对色度V分量对应的初始变换系数矩阵左上角4*4的变换系数进行二次变换,得到色度V分量对应的目标变换系数矩阵,对色度V分量对应的目标变换系数矩阵进行量化,得到色度V分量对应的最终变换系数矩阵,在当前块的编码比特流中编码色度V分量对应的最终变换系数矩阵,并在编码比特流中编码st_cr_flag等于
1。
[0376] 示例性的,解析条件5可以包括:当前块的预测模式为帧内预测模式,色度U分量对应的最终变换系数矩阵中含有非零变换系数。解析条件6可以包括:当前块的预测模式为帧内预测模式,色度V分量对应的最终变换系数矩阵中含有非零变换系数。解析条件5和解析条件6还可以包括可选的解析条件,这些可选的解析条件参见实施例3的第二预设条件。
[0377] 实施例14:在实施例13的st_cb_flag的基础上,编码端采用基于上下文的二进制算术编码方式对st_cb_flag进行编码,解码端采用基于上下文的二进制算术解码方式对st_cb_flag进行解码。或者,编码端采用旁路编码方式对st_cb_flag进行编码,解码端采用旁路解码方式对st_cb_flag进行解码。若采用基于上下文的二进制算术编码方式或者解码方式,还可以预先配置上下文模型。比如说,预先配置一个单独的上下文模型,该上下文模型作为所有色度U分量的目标上下文模型。又例如,预先配置基于色度帧内预测模式的至少两个上下文模型,这些上下文模型均可能作为目标上下文模型。又例如,预先配置基于当前块的色度分量的尺寸的至少两个上下文模型,这些上下文模型均可能作为目标上下文模型。
[0378] 示例性的,关于上下文模型的配置方式,及st_cb_flag的编码方式和解码方式,可以参见实施例10,将st_chroma_flag替换为st_cb_flag即可,本实施例14中不再重复赘述。
[0379] 在实施例13的st_cr_flag的基础上,编码端采用基于上下文的二进制算术编码方式对st_cr_flag进行编码,解码端采用基于上下文的二进制算术解码方式对st_cr_flag进行解码。或者,编码端采用旁路编码方式对st_cr_flag进行编码,解码端采用旁路解码方式对st_cr_flag进行解码。若采用基于上下文的二进制算术编码方式或者解码方式,还可以预先配置上下文模型。比如说,预先配置一个单独的上下文模型,该上下文模型作为所有色度V分量的目标上下文模型。又例如,预先配置基于色度帧内预测模式的至少两个上下文模型,这些上下文模型均可能作为目标上下文模型。又例如,预先配置基于当前块的色度分量的尺寸的至少两个上下文模型,这些上下文模型均可能作为目标上下文模型。
[0380] 示例性的,关于上下文模型的配置方式,及st_cr_flag的编码方式和解码方式,可以参见实施例10,将st_chroma_flag替换为st_cr_flag即可,本实施例14中不再重复赘述。
[0381] 实施例15:在实施例13的基础上,针对色度U分量来说,解码端的反变换过程与实施例11或者实施例12的反变换过程类似,将实施例11或者实施例12的情况一的条件替换为“如果当前块是色度帧内预测残差块(即色度分量),色度分量的宽度或高度的值大于4,且SecondaryTransformEnableFlag的值等于1,并且,当前色度分量为色度U分量且st_cb_flag的值等于1”,将实施例11或者实施例12的情况二的条件替换为“如果当前块是色度帧内预测残差块,色度分量的宽度和高度的值均等于4,且SecondaryTransformEnableFlag的值等于1,并且,当前色度分量为色度U分量且st_cb_flag的值等于1”即可,具体反变换过程与实施例11或者实施例12的情况一和情况二相同,在此不再重复赘述。
[0382] 同理,在实施例13的基础上,针对色度V分量来说,解码端的反变换过程与实施例11或者实施例12的反变换过程类似,将实施例11或者实施例12的情况一的条件替换为“如果当前块是色度帧内预测残差块(即色度分量),色度分量的宽度或高度的值大于4,且SecondaryTransformEnableFlag的值等于1,并且,当前色度分量为色度V分量且st_cr_flag的值等于1”,将实施例11或者实施例12的情况二的条件替换为“如果当前块是色度帧内预测残差块,色度分量的宽度和高度的值均等于4,且SecondaryTransformEnableFlag的值等于1,并且,当前色度分量为色度V分量且st_cr_flag的值等于1”即可,具体反变换过程与实施例11或者实施例12的情况一和情况二相同,在此不再重复赘述。
[0383] 实施例16:亮度分量、色度U分量和色度V分量共用一个二次变换标志位,该二次变换标志位可以为亮色度二次变换标志位,将该亮色度二次变换标志位记为st_tu_flag。示例性的,st_tu_flag也可以命名为StTuFlag。
[0384] 解码端的解码流程包括:若当前块满足解析条件7(即第三预设条件),则从当前块的编码比特流中解析st_tu_flag。当st_tu_flag等于0,表示亮度分量、色度U分量和色度V分量都不进行二次反变换,当st_tu_flag等于1,表示亮度分量、色度U分量和色度V分量同时进行二次反变换。示例性的,若亮度分量、色度U分量和色度V分量同时进行二次反变换,则对亮度分量对应的目标变换系数矩阵左上角4*4区域进行二次反变换,并更新左上角4*4区域的变换系数,得到亮度分量对应的初始变换系数矩阵,再对亮度分量对应的初始变换系数矩阵进行初始反变换,得到亮度分量对应的残差系数矩阵。同理,可以得到色度U分量对应的残差系数矩阵和色度V分量对应的残差系数矩阵。若亮度分量、色度U分量和色度V分量都不进行二次反变换,则直接对亮度分量对应的目标变换系数矩阵进行初始反变换,得到亮度分量对应的残差系数矩阵,同理,可以得到色度U分量对应的残差系数矩阵和色度V分量对应的残差系数矩阵。然后,可以基于亮度分量对应的残差系数矩阵、色度U分量对应的残差系数矩阵和色度V分量对应的残差系数矩阵确定当前块的重建块。
[0385] 示例性的,解析条件7可以包括:当前块的预测模式为帧内预测模式,变换系数标志位用于指示亮度分量对应的最终变换系数矩阵中含有非零变换系数,和/或,色度分量对应的最终变换系数矩阵中含有非零变换系数,例如,ctp_y为1或ctp_u为1或ctp_v为1,ctp_y为1用于表示亮度分量对应的最终变换系数矩阵中含有非零变换系数。解析条件7还可以包括可选的解析条件,这些可选的解析条件参见实施例5的第三预设条件,在此不再重复赘述。
[0386] 编码端的编码流程包括:若当前块满足解析条件8(即第四预设条件),则编码端通过RDO决策对当前块的亮度分量、色度U分量和色度V分量都不进行二次变换,或者,对当前块的亮度分量、色度U分量和色度V分量同时进行二次变换。若决策对亮度分量、色度U分量和色度V分量都不进行二次变换,则编码端直接对亮度分量对应的残差系数矩阵(即残差块)进行初始变换,得到亮度分量对应的初始变换系数矩阵,对亮度分量对应的初始变换系数矩阵进行量化,得到亮度分量对应的最终变换系数矩阵。同理,可以得到色度U分量对应的最终变换系数矩阵和色度V分量对应的最终变换系数矩阵。编码端在当前块的编码比特流中编码亮度分量对应的最终变换系数矩阵、色度U分量对应的最终变换系数矩阵和色度V分量对应的最终变换系数矩阵,并在编码比特流中编码st_tu_flag等于0。
[0387] 若决策对亮度分量、色度U分量和色度V分量同时进行二次变换,则对亮度分量对应的残差系数矩阵进行初始变换,得到亮度分量对应的初始变换系数矩阵,对亮度分量对应的初始变换系数矩阵左上角4*4的变换系数进行二次变换,得到亮度分量对应的目标变换系数矩阵,对亮度分量对应的目标变换系数矩阵进行量化,得到亮度分量对应的最终变换系数矩阵。同理,可以得到色度U分量对应的最终变换系数矩阵和色度V分量对应的最终变换系数矩阵。在编码比特流中编码亮度分量对应的最终变换系数矩阵、色度U分量对应的最终变换系数矩阵和色度V分量对应的最终变换系数矩阵,并在编码比特流中编码st_tu_flag等于1。
[0388] 示例性的,解析条件8可以包括:当前块的预测模式为帧内预测模式,亮度分量对应的初始变换系数矩阵或色度U分量对应的初始变换系数矩阵或色度V分量对应的初始变换系数矩阵中含有非零变换系数。解析条件8还可以包括可选的解析条件,这些可选的解析条件参见实施例6的第四预设条件,在此不再重复赘述。
[0389] 实施例17:在实施例16的st_tu_flag的基础上,编码端可以采用基于上下文的二进制算术编码方式对st_tu_flag进行编码,解码端采用基于上下文的二进制算术解码方式对st_tu_flag进行解码。或者,编码端可以采用旁路编码方式对st_tu_flag进行编码,解码端采用旁路解码方式对st_tu_flag进行解码。若采用基于上下文的二进制算术编码方式或者解码方式,还可以预先配置上下文模型。比如说,可以预先配置一个单独的上下文模型,该上下文模型作为所有亮度分量和色度分量的目标上下文模型。又例如,可以预先配置基于当前块的尺寸的至少两个上下文模型,这些上下文模型均可能作为目标上下文模型。
[0390] 关于上下文模型的配置方式,及st_tu_flag的编码方式和解码方式,可以参见实施例10,将st_chroma_flag替换为st_tu_flag即可,本实施例17中不再重复赘述。
[0391] 实施例18:在实施例11基础上,针对色度分量(如色度U分量和色度V分量),解码端的反变换过程与实施例11的反变换过程一致,针对亮度分量,将实施例11的情况一的条件替换为“如果当前块是帧内亮度预测残差块,当前块的宽度或高度的值大于4,且SecondaryTransformEnableFlag的值等于1,est_tu_flag的值等于1”,将实施例11的情况二的条件替换为“如果当前块是帧内亮度预测残差块,当前块的宽度和高度的值均等于4,且SecondaryTransformEnableFlag的值等于1,est_tu_flag的值等于1”即可,具体反变换过程与实施例11的情况一和情况二相同,在此不再重复赘述。
[0392] 在一种可能的实施方式中,针对当前块,包括亮度分量和色度分量(如色度U分量和色度V分量),在此情况下,解码端反变换过程如下:
[0393] a ) 如 果 当 前 块 是 帧 内 预 测 残 差 块 ,M 1 或 M 2 的 值 大 于 4 且SecondaryTransformEnableFlag的值等于1,对CoeffMatrix执行以下操作:
[0394] 1)由变换系数矩阵得到4×4矩阵C:
[0395] cij=coeffij,i=0~3,j=0~3
[0396] 式中cij是矩阵C的元素,coeffij是变换系数矩阵的元素。
[0397] 2)若当前块满足以下条件之一:
[0398] 条件1、当前块是亮度预测残差块,EstEnableFlag非零且当前块的TransformSplitDirection的值为0且EstTuFlag的值等于1,或者EstEnableFlag为0且IntraLumaPredMode的值为0~2或13~32或44~65,且坐标为(x0‑1,y0+j‑1)(j=1~N)的参考样本“可用”;
[0399] 条件2、当前块是色度预测残差块,StChromaFlag的值等于1(StChromaFlag的值等于1表示对色度分量进行二次变换)。
[0400] 则:cij=Clip3(‑32768,32767,(pij+26)>>7),i=0~3,j=0~3
[0401] 式中pij是4×4矩阵P的元素。矩阵P的计算如下:
[0402] P=C×S4
[0403] 其中S4是4×4反变换矩阵。
[0404] 3)若当前块满足以下条件之一:
[0405] 条件1、当前块是亮度预测残差块,如果EstEnableFlag非零且当前块的TransformSplitDirection的值为0且EstTuFlag的值等于1,或者EstEnableFlag为0且IntraLumaPredMode的值为0~23或34~57,且坐标为(x0+i‑1,y0‑1)(i=1~M)的参考样本“可用”;
[0406] 条件2、当前块是色度预测残差块,StChromaFlag的值等于1(StChromaFlag的值等于1表示对色度分量进行二次变换)。
[0407] 则:cij=Clip3(‑32768,32767,(qij+26)>>7),i=0~3,j=0~3
[0408] 式中qij是4×4矩阵Q的元素。矩阵Q的计算如下:
[0409] Q=S4T×C
[0410] 式中S4T是S4的转置。
[0411] 4)根据矩阵C修改变换系数矩阵的元素的值:
[0412] coeffij=cij,i=0~3,j=0~3
[0413] b)对变换系数矩阵进行如下垂直反变换,得到矩阵K:
[0414] 1) 如 果 当 前 块 是帧 内 预 测残 差 块 ,M 1 和 M 2 的 值 均 等 于 4 且SecondaryTransformEnableFlag的值等于1,并且满足以下条件之一:
[0415] 条件1、当前块是亮度预测残差块,且EstEnableFlag为0或EstEnableFlag非零且EstTuFlag的值等于1;
[0416] 条件2、当前块是色度预测残差块,StChromaFlag的值等于1(StChromaFlag的值等于1表示对色度分量进行二次变换)。
[0417] 则:kij=Clip3(‑32768,32767,(vij+24)>>5),i=0~M1‑1,j=0~M2‑1[0418] 式中vij是矩阵V的元素,kij是矩阵K的元素。矩阵V的计算如下:
[0419] V=D4T×CoeffMatrix
[0420] 式中D4T是反变换矩阵D4的转置矩阵。
[0421] 2)否则,判断PbtCuFlag、SbtCuFlag、SbtDirFlag和SbtPosFlag的值,
[0422] 第一、如果PbtCuFlag的值为1且变换块的顺序号为0、1、2或3:
[0423] kij=Clip3(‑32768,32767,(vij+24)>>5),i=0~M1‑1,j=0~M2‑1
[0424] 式中vij是矩阵V的元素,kij是矩阵K的元素。矩阵V的计算如下:
[0425] 如果变换块的顺序号为0或1:则
[0426] V=DCT8M2T×CoeffMatrix
[0427] 式中DCT8M2T是DCT8M2的转置矩阵,DCT8M2是M2×M2反变换矩阵。
[0428] 否则,如果变换块的顺序号为2或3:则
[0429] V=DST7M2T×CoeffMatrix
[0430] 式中DST7M2T是DST7M2的转置矩阵,DST7M2是M2×M2反变换矩阵。
[0431] 第二、否则,如果SbtCuFlag的值为1且变换块的顺序号为0且变换块的宽度小于64且变换块的高度小于32:
[0432] kij=Clip3(‑32768,32767,(vij+24)>>5),i=0~M1‑1,j=0~M2‑1
[0433] 式中vij是矩阵V的元素,kij是矩阵K的元素。矩阵V的计算如下:
[0434] 如果SbtDirFlag为1且SbtPosFlag为0:则
[0435] V=DCT8M2T×CoeffMatrix
[0436] 式中DCT8M2T是DCT8M2的转置矩阵,DCT8M2是M2×M2反变换矩阵。
[0437] 否则:
[0438] V=DST7M2T×CoeffMatrix
[0439] 式中DST7M2T是DST7M2的转置矩阵,DST7M2是M2×M2反变换矩阵。
[0440] 第三、否则:
[0441] kij=Clip3(‑32768,32767,(vij+24)>>5),i=0~M1‑1,j=0~M2‑1
[0442] 式中vij是矩阵V的元素,kij是矩阵K的元素。矩阵V的计算如下:
[0443] V=DCT2M2T×CoeffMatrix
[0444] 式中DCT2M2T是DCT2M2的转置矩阵,DCT2M2是M2×M2反变换矩阵。
[0445] c)对矩阵K进行如下水平反变换,得到矩阵H:
[0446] 1) 如果当前变换块是帧内预测残差块 ,M1和M2的值均等于4且SecondaryTransformEnableFlag的值等于1,并且满足以下条件之一:
[0447] 条件1、当前块是亮度预测残差块,且EstEnableFlag为0或EstEnableFlag非零且EstTuFlag的值等于1;
[0448] 条件2、当前块是色度预测残差块,StChromaFlag的值等于1(StChromaFlag的值等于1表示对色度分量进行二次变换)。
[0449] 则:
[0450] hij=Clip3(‑MaxValue‑1,MaxValue,(wij+2shift1‑1)>>shift1),i=0~M1‑1,j=0~M2‑1
[0451] 式中wi,j是矩阵W的元素,hij是矩阵H的元素。MaxValue的值为(1<
[0452] W=K×D4
[0453] 式中D4是反变换矩阵。
[0454] 2)否则,判断PbtCuFlag、SbtCuFlag、SbtDirFlag和SbtPosFlag的值,
[0455] 第一、如果PbtCuFlag的值为1且变换块的顺序号为0、1、2或3:
[0456] hij=Clip3(‑MaxValue‑1,MaxValue,(wij+2shift1‑1)>>shift1)i=0~M1‑1,j=0~M2‑1
[0457] 式中wij是矩阵W的元素,hij是矩阵H的元素。MaxValue的值为(1<
[0458] 如果变换块的顺序号为0或2:则
[0459] W=K×DCT8M1
[0460] 否则,如果变换块的顺序号为1或3:则
[0461] W=K×DST7M1
[0462] 式中DCT8M1、DST7M1是M1×M1反变换矩阵。
[0463] 第二、否则,如果SbtCuFlag的值为1且变换块的顺序号为0且变换块的宽度小于32且变换块的高度小于64:
[0464] hij=Clip3(‑MaxValue‑1,MaxValue,(wij+2shift1‑1)>>shift1)i=0~M1‑1,j=0~M2‑1
[0465] 式中wij是矩阵W的元素,hij是矩阵H的元素。MaxValue的值为(1<
[0466] 如果SbtDirFlag为0且SbtPosFlag为0:则
[0467] W=K×DCT8M1
[0468] 否则:
[0469] W=K×DST7M1
[0470] 式中DCT8M1、DST7M1是M1×M1反变换矩阵。
[0471] 第三、否则:
[0472] hij=Clip3(‑MaxValue‑1,MaxValue,(wij+2shift1‑1)>>shift1)i=0~M1‑1,j=0~M2‑1
[0473] 式中wij是矩阵W的元素,hij是矩阵H的元素。MaxValue的值为(1<
[0474] W=K×DCT2M1
[0475] 式中DCT2M1是M1×M1反变换矩阵。
[0476] d)把矩阵H直接作为残差样值矩阵ResidueMatrix,结束反变换操作。
[0477] 实施例19:
[0478] 解 码端的 解码 流程 包括 :从 码流中 解析 二次 变换 使能 标志 位SecondaryTransformEnableFlag,SecondaryTransformEnableFlag表示序列级控制信息是否允许当前序列使用二次反变换,例如,SecondaryTransformEnableFlag等于第一取值(如1)表示序列级控制信息允许当前序列使用二次反变换,SecondaryTransformEnableFlag等于第二取值(如0)表示序列级控制信息不允许当前序列使用二次反变换。若序列级控制信息允许当前序列使用二次反变换,则还可以解析色度二次变换使能标志位st_chroma_enable_flag,st_chroma_enable_flag表示序列级控制信息是否允许色度分量(即当前序列的所有图像块的色度分量)使用二次反变换,例如,st_chroma_enable_flag等于第一取值表示序列级控制信息允许色度分量使用二次反变换,st_chroma_enable_flag等于第二取 值 表 示 序 列 级 控 制 信 息 不 允 许 色 度 分 量 使 用 二次 反 变 换 。上 述SecondaryTransformEnableFlag和st_chroma_enable_flag的语法描述如下:
[0479]
[0480] 示例性的,上述序列级控制信息只是一个示例,还可以是图像参数集级控制信息、图像头级控制信息、片头级控制信息,对此控制信息的级别不做限制。
[0481] 编码端的编码流程包括:编码二次变换使能标志位SecondaryTransformEnableFlag到码流中,SecondaryTransformEnableFlag表示序列级控制信息是否允许当前序列使用二次反变换,例如,SecondaryTransformEnableFlag等于第一取值表示序列级控制信息允许当前序列使用二次反变换,
SecondaryTransformEnableFlag等于第二取值表示序列级控制信息不允许当前序列使用二次反变换。若序列级控制信息允许当前序列使用二次反变换,则编码色度二次变换使能标志位st_chroma_enable_flag,st_chroma_enable_flag表示序列级控制信息是否允许色度分量(即当前序列的所有图像块的色度分量)使用二次反变换,例如,st_chroma_enable_flag等于第一取值表示序列级控制信息允许色度分量使用二次反变换,st_chroma_enable_flag等于第二取值表示序列级控制信息不允许色度分量使用二次反变换。
[0482] 示例性的,上述序列级控制信息只是一个示例,还可以是图像参数集级控制信息、图像头级控制信息、片头级控制信息,对此控制信息的级别不做限制。
[0483] 实施例20:针对改进帧内预测(IIP)模式,若确定对当前块进行IIP,分别对当前块的亮度分量和色度分量进行IIP,包括:
[0484] 1、若当前块的亮度分量或色度分量的预测模式为角度帧内预测模式:
[0485] 亮度分量:使用8‑tap的插值滤波器来生成亚像素点的参考像素,并且当MIPF使能时,使用3类8‑tap滤波器,滤波器的索引值是基于当前块的尺寸以及行列索引号来隐式导出。滤波器的索引使用以下公式导出:filter_idx=mipf_enable_flag?(j<1?((w*h<64)+1:w*h<64)):3。j代表当前像素所在的列的索引号,w和h分别表示当前亮度分量的宽度和高度。
[0486] 色度分量:使用8‑tap的插值滤波器来生成亚像素点的参考像素,当MIPF使能时,使用3类8‑tap滤波器,滤波器的索引值是基于当前块的尺寸以及行列索引号来隐式导出。滤波器的索引使用以下公式导出:filter_idx=mipf_enable_flag?(j<2?((w*h<32)+1:w*h<32)):3。j代表当前像素所在的列的索引号,w和h分别表示当前色度分量的宽度和高度。
[0487] 2、若当前块的亮度分量或色度分量的预测模式为DC模式:
[0488] 对于亮度分量和色度分量,执行以下操作:当前块内部像素和靠近边界的像素具有不同的预测值,对于内部像素(不是前两行或前两列的像素)仍然使用传统的DC值;对于靠近边界的像素(前两行或前两列的像素),如图1G和图1H所示,使用(DC值和参考像素值)的加权平均值作为最终的预测值,亮度和色度拥有各自的参考像素。
[0489] 例如,参见图1G所示,若当前像素点位于第一行a位置,则使用参考像素A0,A1,A2和DC的加权平均值作为a位置的预测值;若当前像素点位于第一列b位置,则使用参考像素B0,B1,B2和DC的加权平均值作为b位置的预测值;若当前像素点位于当前块左上角c位置,则使用参考像素C0,C1,C2,C3,C4和DC的加权平均值作为c位置的预测值。参见图1H所示,若当前像素点位于第二行d位置,则使用参考像素D和DC的加权平均值作为d位置的预测值;若当前像素点位于第二列e位置,则使用参考像素E和DC的加权平均值作为e位置的预测值;若当前像素点位于当前块左上角f位置,则使用参考像素F0,F1和DC的加权平均值作为f位置的预测值。
[0490] a,b,c,d,e,f位置的权重参见表4所示,最后一个权重可以为DC值的权重。
[0491] 3、若当前块的亮度分量或色度分量的预测模式为Plane模式:
[0492] 对于亮度分量和色度分量,执行以下操作:当前块内部像素和靠近边界的像素具有不同的预测值,对于内部像素(不是前两行或前两列的像素)仍然使用plane预测值;对于靠近边界的像素(前两行或前两列的像素),使用(plane预测值和参考像素值)的加权平均值作为最终的预测值。亮度和色度拥有各自的参考像素,具体权重与改进DC模式一致。
[0493] 4、若当前块的亮度分量或色度分量的预测模式为Bilinear模式:
[0494] 对于亮度分量和色度分量,执行以下操作:使用5个参考像素的加权平均替换原有1个参考像素值,5个参考像素的权重为:{82,252,356,252,82}。亮度和色度拥有各自的参考像素。然后再进行bilinear预测过程。
[0495] 当然,上述实施例1‑实施例20可以单独实现,也可以组合实现。例如,每个实施例可以单独实现,实施例1和实施例3可以组合实现,实施例2和实施例4可以组合实现,实施例5和实施例6可以组合实现,实施例8和实施例10可以组合实现,实施例9和实施例10可以组合实现,实施例8和实施例11可以组合实现,实施例9和实施例11可以组合实现,实施例8和实施例12可以组合实现,实施例9和实施例12可以组合实现,实施例8、实施例10和实施例11可以组合实现,实施例8、实施例10和实施例12可以组合实现,实施例13和实施例14可以组合实现,实施例13和实施例15可以组合实现,实施例13、实施例14和实施例15可以组合实现,实施例16和实施例17可以组合实现,实施例16和实施例18可以组合实现,实施例16、实施例17和实施例18可以组合实现等等。
[0496] 当然,上述只是几个示例,对实施例的组合方式不做限制。
[0497] 基于与上述方法同样的申请构思,本申请实施例还提出一种解码装置,应用于解码端,如图6A所示,为所述装置的结构图,所述装置包括:获取模块611,用于获取当前块的编码比特流;解码模块612,用于从所述编码比特流中解析变换系数标志位,所述变换系数标志位用于指示所述当前块的色度分量对应的最终变换系数矩阵中是否含有非零变换系数;若当前块满足第一预设条件,则从所述编码比特流中解析块级别色度分量的二次变换标志位,所述二次变换标志位用于指示对所述色度分量进行二次反变换,或对所述色度分量不进行二次反变换;其中,第一预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数;若所述色度分量对应的最终变换系数矩阵中含有非零变换系数,则从所述编码比特流中解析所述色度分量对应的最终变换系数矩阵;处理模块613,用于对所述色度分量对应的最终变换系数矩阵进行反量化,得到所述色度分量对应的目标变换系数矩阵;确定模块614,用于根据所述二次变换标志位确定是否对所述色度分量对应的目标变换系数矩阵进行二次反变换。
[0498] 在一种可能的实施方式中,所述第一预设条件还包括以下至少一种:所述当前块不使用帧内预测滤波模式;所述当前块不使用改进帧内预测模式;所述当前块采用变换核对(DCT2,DCT2)进行初始反变换;所述当前块的色度帧内预测模式满足预设模式条件;所述当前块的色度分量的尺寸满足预设尺寸条件;控制信息允许色度分量使用二次反变换。
[0499] 在一种可能的实施方式中,所述变换系数标志位包括色度U分量变换系数标志位和色度V分量变换系数标志位;所述色度U分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度U分量对应的最终变换系数矩阵中含有非零变换系数;所述色度U分量变换系数标志位的取值为第二取值时,用于指示所述色度U分量对应的最终变换系数矩阵中不含有非零变换系数;所述色度V分量变换系数标志位的取值为第一取值时,用于指示所述当前块的色度V分量对应的最终变换系数矩阵中含有非零变换系数;所述色度V分量变换系数标志位的取值为第二取值时,用于指示所述色度V分量对应的最终变换系数矩阵中不含有非零变换系数;其中,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数,包括:所述色度U分量变换系数标志位的取值为第一取值,和/或,所述色度V分量变换系数标志位的取值为第一取值。
[0500] 在一种可能的实施方式中,所述色度分量为色度U分量和色度V分量,所述二次变换标志位为UV分量共用二次变换标志位;所述UV分量共用二次变换标志位的取值为第一取值时,用于指示对所述色度U分量和所述色度V分量同时进行二次反变换,或者,所述UV分量共用二次变换标志位的取值为第二取值时,用于指示对所述色度U分量和所述色度V分量都不进行二次反变换。或,所述色度分量为色度U分量和色度V分量,所述二次变换标志位包括U分量二次变换标志位和V分量二次变换标志位;所述U分量二次变换标志位的取值为第一取值时,用于指示对所述色度U分量进行二次反变换,或者,所述U分量二次变换标志位的取值为第二取值时,用于指示对所述色度U分量不进行二次反变换;所述V分量二次变换标志位的取值为第一取值时,用于指示对所述色度V分量进行二次反变换,或者,所述V分量二次变换标志位的取值为第二取值时,用于指示对所述色度V分量不进行二次反变换。
[0501] 在一种可能的实施方式中,所述处理模块613还用于:若对所述色度分量对应的目标变换系数矩阵进行二次反变换,则对所述色度分量对应的目标变换系数矩阵进行二次反变换,得到所述色度分量对应的初始变换系数矩阵;若对所述色度分量对应的目标变换系数矩阵不进行二次反变换,则将所述色度分量对应的目标变换系数矩阵确定为所述色度分量对应的初始变换系数矩阵;对所述初始变换系数矩阵进行初始反变换,得到所述色度分量对应的残差系数矩阵;根据所述残差系数矩阵确定所述色度分量的重建值。
[0502] 基于与上述方法同样的申请构思,本申请实施例还提出一种编码装置,应用于编码端,如图6B所示,为所述装置的结构图,所述装置包括:获取模块621,用于获取当前块的色度分量对应的残差系数矩阵;对所述残差系数矩阵进行初始变换,得到所述色度分量对应的初始变换系数矩阵;确定模块622,用于若所述当前块满足第二预设条件,则确定是否对所述色度分量对应的初始变换系数矩阵进行二次变换,得到所述色度分量对应的目标变换系数矩阵;处理模块623,用于对所述色度分量对应的目标变换系数矩阵进行量化,得到所述色度分量对应的最终变换系数矩阵;编码模块624,用于在所述当前块的编码比特流中编码变换系数标志位,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中是否含有非零变换系数;在所述当前块的编码比特流中编码块级别色度分量的二次变换标志位;其中,所述二次变换标志位用于指示对所述色度分量进行二次变换,或者对所述色度分量不进行二次变换;其中,所述第二预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述色度分量对应的初始变换系数矩阵中含有非零变换系数。
[0503] 在一种可能的实施方式中,所述第二预设条件包括以下至少一种:所述当前块不使用帧内预测滤波模式;所述当前块不使用改进帧内预测模式;所述当前块采用变换核对(DCT2,DCT2)进行初始变换;所述当前块的色度帧内预测模式满足预设模式条件;所述当前块的色度分量的尺寸满足预设尺寸条件;控制信息允许色度分量使用二次变换。
[0504] 在一种可能的实施方式中,所述色度分量为色度U分量和色度V分量,所述二次变换标志位为UV分量共用二次变换标志位;所述UV分量共用二次变换标志位的取值为第一取值时,用于指示对所述色度U分量和所述色度V分量同时进行二次变换,或者,所述UV分量共用二次变换标志位的取值为第二取值时,用于指示对所述色度U分量和所述色度V分量都不进行二次变换。或者,所述色度分量为色度U分量和色度V分量,所述二次变换标志位包括U分量二次变换标志位和V分量二次变换标志位;所述U分量二次变换标志位的取值为第一取值时,用于指示对所述色度U分量进行二次变换,或者,所述U分量二次变换标志位的取值为第二取值时,用于指示对所述色度U分量不进行二次变换;所述V分量二次变换标志位的取值为第一取值时,用于指示对所述色度V分量进行二次变换,或者,所述V分量二次变换标志位的取值为第二取值时,用于指示对所述色度V分量不进行二次变换。
[0505] 所述处理模块623还用于:若确定对所述色度分量对应的初始变换系数矩阵进行二次变换,则对所述色度分量对应的初始变换系数矩阵进行二次变换,得到所述色度分量对应的目标变换系数矩阵;若确定不对所述色度分量对应的初始变换系数矩阵进行二次变换,则将所述色度分量对应的初始变换系数矩阵确定为所述色度分量对应的目标变换系数矩阵。
[0506] 本申请实施例提供的解码端设备(解码端设备可以是视频解码器),从硬件层面而言,其硬件架构示意图具体可以参见图7A所示。包括:处理器711和机器可读存储介质712,所述机器可读存储介质712存储有能够被所述处理器711执行的机器可执行指令;所述处理器711用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,处理器用于执行机器可执行指令,以实现如下步骤:获取当前块的编码比特流,并从所述编码比特流中解析变换系数标志位,所述变换系数标志位用于指示所述当前块的色度分量对应的最终变换系数矩阵中是否含有非零变换系数;若当前块满足第一预设条件,则从所述编码比特流中解析块级别色度分量的二次变换标志位,所述二次变换标志位用于指示对所述色度分量进行二次反变换,或对所述色度分量不进行二次反变换;其中,第一预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中含有非零变换系数;若所述色度分量对应的最终变换系数矩阵中含有非零变换系数,则从所述编码比特流中解析所述色度分量对应的最终变换系数矩阵,并对所述色度分量对应的最终变换系数矩阵进行反量化,得到所述色度分量对应的目标变换系数矩阵;根据所述二次变换标志位确定是否对所述色度分量对应的目标变换系数矩阵进行二次反变换。
[0507] 本申请实施例提供的编码端设备(编码端设备可以是视频编码器),从硬件层面而言,其硬件架构示意图具体可以参见图7B所示。包括:处理器721和机器可读存储介质722,所述机器可读存储介质722存储有能够被所述处理器721执行的机器可执行指令;所述处理器721用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,处理器用于执行机器可执行指令,以实现如下步骤:获取当前块的色度分量对应的残差系数矩阵;对所述残差系数矩阵进行初始变换,得到所述色度分量对应的初始变换系数矩阵;若所述当前块满足第二预设条件,则确定是否对所述色度分量对应的初始变换系数矩阵进行二次变换,得到所述色度分量对应的目标变换系数矩阵;对所述色度分量对应的目标变换系数矩阵进行量化,得到所述色度分量对应的最终变换系数矩阵,并在所述当前块的编码比特流中编码变换系数标志位,所述变换系数标志位用于指示所述色度分量对应的最终变换系数矩阵中是否含有非零变换系数;在所述当前块的编码比特流中编码块级别色度分量的二次变换标志位;其中,所述二次变换标志位用于指示对所述色度分量进行二次变换,或者对所述色度分量不进行二次变换;其中,所述第二预设条件至少包括:所述当前块的预测模式为帧内预测模式,所述色度分量对应的初始变换系数矩阵中含有非零变换系数。
[0508] 基于与上述方法同样的申请构思,本申请实施例中还提供一种摄像机设备,该摄像机设备可以包括上述任一实施例中的编码装置和/或解码装置。
[0509] 基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的编解码方法。其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0510] 基于与上述方法同样的申请构思,本申请实施例还提供一种计算机应用程序,所述计算机应用程序令被处理器执行时,能够实现本申请上述示例公开的编解码方法。
[0511] 上述实施例阐明的系统、装置、模块或单元,可以由计算机芯片或实体实现,或由具有某种功能的产品来实现。一种典型的实现为计算机,计算机的形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
[0512] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0513] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品形式。
[0514] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
[0515] 这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。