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

进行编码和解码的方法、解码端、编码端和系统与流程

2022-02-20 02:25:42 来源:中国专利 TAG:

进行编码和解码的方法、解码端、编码端和系统
1.本技术为2019年03月09日提交的申请号为201910177580.4、发明名称为“进行编码和解码的方法、解码端、编码端和系统”的中国专利申请的分案申请。
技术领域
2.本公开涉及音视频技术领域,特别涉及一种进行编码和解码的方法、解码端、编码端和系统。


背景技术:

3.随着互联网技术和计算机技术的发展,视频应用程序越来越多,用户对视频应用程序中高清视频的需求越来越大,但是由于高清视频的数据量比较大,想要高清视频在有限的网络带宽中传输,需要对高清视频进行编码处理。一般编码处理包括:帧内预测(或帧间预测)、变换、量化、熵编码、环内滤波等环节。在进行编码处理时,通过帧内预测获取到残差块(可以称为是tu(transmission unit,变换单元)),对tu进行变换(变换是指将以空间域中像素形式描述的图像转换至变换域,以变换系数的形式加以表示),得到变换系数。然后对变换系数进行量化和熵编码后,得到编码数据。
4.相关技术中,在变换时,通常是选择某个预设变换核对(变换核对是由水平变换核和垂直变换核组成的变换核对),对tu进行变换处理,得到变换系数。相应的,在解码时也是选择编码时使用的预设变换核对,对tu进行逆变换处理,得到残差信号。
5.这样,由于同一tu采用不同的变换核对进行变换,压缩效果大不相同,所以使用同一个预设变换核对,对所有tu进行变换处理,有可能会导致编解码性能较差。


技术实现要素:

6.为了解决现有技术的问题,本公开实施例提供了一种进行编码和解码的方法、解码端、编码端和系统。所述技术方案如下:
7.第一方面,提供了一种进行解码的方法,所述方法包括:
8.获取当前块的编码数据;
9.从所述编码数据中获取所述当前块的变换核对索引,其中,所述变换核对索引对应的二值化码字的第一个比特位是基于一个上下文模型进行的自适应二进制算术解码;
10.根据所述变换核对索引,确定所述当前块对应的变换核对,其中,所述变换核对包括水平变换核和垂直变换核。
11.在本公开的一种可能的实施方式中,所述变换核对索引对应的二值化码字包括多个比特位,所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术解码方式进行编码。
12.在本公开的一种可能的实施方式中,所述根据所述变换核对索引,确定所述当前块对应的变换核对,包括:
13.根据所述当前块的帧内预测模式和所述变换核对索引,确定所述当前块对应的变
换核对;或者,
14.根据所述当前块的形状信息和所述变换核对索引,确定所述当前块对应的变换核对。
15.第二方面,提供了一种进行编码的方法,所述方法包括:
16.确定当前块对应的变换核对以及所述当前块对应的变换核对索引;
17.根据对所述变换核对索引对应的二值化码字的第一个比特位基于一个上下文模型进行自适应二进制算术编码的方式,对所述变换核对索引进行编码,添加至所述编码数据中。
18.在本公开的一种可能的实施方式中,所述根据对所述变换核对索引对应的二值化码字的第一个比特位基于一个上下文模型进行自适应二进制算术编码的方式,对所述变换核对索引进行编码,添加至所述编码数据中,包括:
19.如果所述变换核对索引对应的二值化码字包括多个比特位,则对第一个比特位基于一个上下文模型进行自适应二进制算术编码,并对所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码;
20.将编码后的变换核对索引,添加至所述编码数据中。
21.在本公开的一种可能的实施方式中,所述确定当前块对应的变换核对以及所述当前块对应的变换核对索引,包括:
22.确定所述当前块对应的变换核对,根据所述当前块的帧内预测模式和所述变换核对,确定所述当前块对应的变换核对索引;或者,
23.确定所述当前块对应的变换核对,根据所述当前块的形状信息和所述变换核对,确定所述当前块对应的变换核对索引。
24.第三方面,提供了一种进行解码的方法,所述方法包括:
25.获取当前块的编码数据;
26.从所述编码数据中获取变换核对索引,其中,如果所述变换核对索引对应的二值化码字包括多个比特位,则所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术解码方式进行编码;
27.根据所述变换核对索引,确定所述当前块对应的变换核对,其中,所述变换核对包括水平变换核和垂直变换核。
28.在本公开的一种可能的实施方式中,所述变换核对索引的第一个比特位是基于一个上下文模型进行的自适应二进制算术解码。
29.在本公开的一种可能的实施方式中,所述根据所述变换核对索引,确定所述当前块对应的变换核对,包括:
30.根据所述当前块的帧内预测模式和所述变换核对索引,确定所述当前块对应的变换核对;或者,
31.根据所述当前块的形状信息和所述变换核对索引,确定所述当前块对应的变换核对,其中,所述变换核对包括水平变换核和垂直变换核。
32.第四方面,提供了一种进行编码的方法,所述方法包括:
33.确定当前块对应的变换核对以及所述当前块对应的变换核对索引;
34.如果所述变换核对索引对应的二值化码字包括多个比特位,则对所述多个比特位
中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码,添加至所述编码数据中。
35.在本公开的一种可能的实施方式中,所述方法还包括:
36.对所述第一个比特位基于一个上下文模型进行自适应二进制算术编码。
37.在本公开的一种可能的实施方式中,所述确定当前块对应的变换核对以及所述当前块对应的变换核对索引,包括:
38.确定所述当前块对应的变换核对,根据所述当前块的帧内预测模式和所述变换核对,确定所述当前块对应的变换核对索引;或者,
39.确定所述当前块对应的变换核对,根据所述当前块的形状信息和所述变换核对,确定所述当前块对应的变换核对索引。
40.第五方面,提供了一种进行解码的方法,所述方法包括:
41.获取当前块的编码数据;
42.从所述编码数据中获取变换核对索引,并获取所述当前块的帧内预测模式或者所述当前块的形状信息;
43.根据所述当前块的帧内预测模式和所述变换核对索引,确定所述当前块对应的变换核对,或者,根据所述当前块的形状信息和所述变换核对索引,确定所述当前块对应的变换核对,其中,所述变换核对包括水平变换核和垂直变换核。
44.在本公开的一种可能的实施方式中,所述根据所述当前块的帧内预测模式和所述变换核对索引,确定所述当前块对应的变换核对,包括:
45.如果所述变换核对索引为第一索引,且所述当前块的帧内预测模式的模式号小于或等于预设数值,则确定所述当前块对应的变换核对为第一变换核对;
46.如果所述变换核对索引为第一索引,且所述当前块的帧内预测模式的模式号大于预设数值,则确定所述当前块对应的变换核对为第二变换核对;
47.如果所述变换核对索引为第二索引,且所述当前块的帧内预测模式的模式号小于或等于预设数值,则确定所述当前块对应的变换核对为第二变换核对;
48.如果所述变换核对索引为第二索引,且所述当前块的帧内预测模式的模式号大于预设数值,则确定所述当前块对应的变换核对为第一变换核对。
49.在本公开的一种可能的实施方式中,所述根据所述当前块的形状信息和所述变换核对索引,确定所述当前块对应的变换核对,包括:
50.如果所述变换核对索引为第一索引,且所述当前块的形状信息满足预设形状限制条件,则确定所述当前块对应的变换核对为第一变换核对;
51.如果所述变换核对索引为第一索引,且所述当前块的形状信息不满足预设形状限制条件,则确定所述当前块对应的变换核对为第二变换核对;
52.如果所述变换核对索引为第二索引,且所述当前块的形状信息满足预设形状限制条件,则确定所述当前块对应的变换核对为第二变换核对;
53.如果所述变换核对索引为第二索引,且所述当前块的形状信息不满足预设形状限制条件,则确定所述当前块对应的变换核对为第一变换核对。
54.在本公开的一种可能的实施方式中,所述变换核对索引对应的二值化码字的第一个比特位是基于一个上下文模型进行的自适应二进制算术解码。
55.在本公开的一种可能的实施方式中,所述变换核对索引对应的二值化码字包括多个比特位,所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术解码方式进行编码。
56.第六方面,提供了一种进行编码的方法,所述方法包括:
57.获取当前块的帧内预测模式、所述当前块对应的变换核对,或者所述当前块的形状信息、所述当前块对应的变换核对;
58.根据所述当前块的帧内预测模式和所述当前块对应的变换核对,确定所述当前块对应的变换核对索引,或者,根据所述当前块的形状信息和所述当前块对应的变换核对,确定所述当前块对应的变换核对索引;
59.对变换核对索引进行编码处理,添加至所述编码数据中。
60.在本公开的一种可能的实施方式中,所述根据所述当前块的帧内预测模式和所述当前块对应的变换核对,确定所述当前块对应的变换核对索引,包括:
61.如果所述变换核对为第一变换核对,且所述当前块的帧内预测模式的模式号小于或等于预设数值,则确定所述当前块对应的变换核对索引为第一索引;
62.如果所述变换核对为第二变换核对,且所述当前块的帧内预测模式的模式号大于预设数值,则确定所述当前块对应的变换核对索引为第一索引;
63.如果所述变换核对为第二变换核对,且所述当前块的帧内预测模式的模式号小于或等于预设数值,则确定所述当前块对应的变换核对索引为第二索引;
64.如果所述变换核对为第一变换核对,且所述当前块的帧内预测模式的模式号大于预设数值,则确定所述当前块对应的变换核对索引为第二索引。
65.在本公开的一种可能的实施方式中,所述根据所述当前块的形状信息和所述当前块对应的变换核对,确定所述当前块对应的变换核对索引,包括:
66.如果所述变换核对为第一变换核对,且所述当前块的形状信息满足预设形状限制条件,则确定所述当前块对应的变换核对索引为第一索引;
67.如果所述变换核对为第二变换核对,且所述当前块的形状信息不满足预设形状限制条件,则确定所述当前块对应的变换核对索引为第一索引;
68.如果所述变换核对为第二变换核对,且所述当前块的形状信息-满足预设形状限制条件,则确定所述当前块对应的变换核对索引为第二索引;
69.如果所述变换核对为第一变换核对,且所述当前块的形状信息不满足预设形状限制条件,则确定所述当前块对应的变换核对索引为第二索引。
70.在本公开的一种可能的实施方式中,所述对所述变换核对索引进行编码处理,包括:
71.根据对所述变换核对索引对应的二值化码字的第一个比特位基于一个上下文模型进行自适应二进制算术编码的方式进行编码。
72.在本公开的一种可能的实施方式中,所述对所述变换核对索引进行编码处理,包括:
73.如果所述变换核对索引对应的二值化码字包括多个比特位,则对所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码。
74.第七方面,提供了一种进行解码的解码端,所述解码端包括:
75.获取模块,用于:
76.获取当前块的编码数据;
77.从所述编码数据中获取所述当前块的变换核对索引,其中,所述变换核对索引对应的二值化码字的第一个比特位是基于一个上下文模型进行的自适应二进制算术解码;
78.确定模块,用于根据所述变换核对索引,确定所述当前块对应的变换核对,其中,所述变换核对包括水平变换核和垂直变换核。
79.在本公开的一种可能的实施方式中,所述变换核对索引对应的二值化码字包括多个比特位,所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术解码方式进行编码。
80.在本公开的一种可能的实施方式中,所述确定模块,用于:
81.根据所述当前块的帧内预测模式和所述变换核对索引,确定所述当前块对应的变换核对;或者,
82.根据所述当前块的形状信息和所述变换核对索引,确定所述当前块对应的变换核对。
83.第八方面,提供了一种进行编码的编码端,所述编码端包括:
84.确定模块,用于确定当前块对应的变换核对以及所述当前块对应的变换核对索引;
85.编码处理,用于根据对所述变换核对索引对应的二值化码字的第一个比特位基于一个上下文模型进行自适应二进制算术编码的方式,对所述变换核对索引进行编码,添加至所述编码数据中。
86.在本公开的一种可能的实施方式中,所述编码模块,用于:
87.如果所述变换核对索引对应的二值化码字包括多个比特位,则对第一个比特位基于一个上下文模型进行自适应二进制算术编码,并对所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码;
88.将编码后的变换核对索引,添加至所述编码数据中。
89.在本公开的一种可能的实施方式中,所述确定模块,用于:
90.确定所述当前块对应的变换核对,根据所述当前块的帧内预测模式和所述变换核对,确定所述当前块对应的变换核对索引;或者,
91.确定所述当前块对应的变换核对,根据所述当前块的形状信息和所述变换核对,确定所述当前块对应的变换核对索引。
92.第九方面,提供了一种进行解码的解码端,所述解码端包括:
93.获取模块,用于:
94.获取当前块的编码数据;
95.从所述编码数据中获取变换核对索引,其中,如果所述变换核对索引对应的二值化码字包括多个比特位,则所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术解码方式进行编码;
96.确定模块,用于根据所述变换核对索引,确定所述当前块对应的变换核对,其中,所述变换核对包括水平变换核和垂直变换核。
97.在本公开的一种可能的实施方式中,所述变换核对索引的第一个比特位是基于一个上下文模型进行的自适应二进制算术解码。
98.在本公开的一种可能的实施方式中,所述确定模块,用于:
99.根据所述当前块的帧内预测模式和所述变换核对索引,确定所述当前块对应的变换核对;或者,
100.根据所述当前块的形状信息和所述变换核对索引,确定所述当前块对应的变换核对,其中,所述变换核对包括水平变换核和垂直变换核。
101.第十方面,提供了一种进行编码的编码端,所述编码端包括:
102.确定模块,用于确定当前块对应的变换核对以及所述当前块对应的变换核对索引;
103.编码模块,用于如果所述变换核对索引对应的二值化码字包括多个比特位,则对所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码,添加至所述编码数据中。
104.在本公开的一种可能的实施方式中,所述编码模块,还用于:
105.对所述第一个比特位基于一个上下文模型进行自适应二进制算术编码。
106.在本公开的一种可能的实施方式中,所述确定模块,用于:
107.确定所述当前块对应的变换核对,根据所述当前块的帧内预测模式和所述变换核对,确定所述当前块对应的变换核对索引;或者,
108.确定所述当前块对应的变换核对,根据所述当前块的形状信息和所述变换核对,确定所述当前块对应的变换核对索引。
109.第十一方面,提供了一种进行解码的解码端,所述解码端包括:
110.获取模块,用于:
111.获取当前块的编码数据;
112.从所述编码数据中获取变换核对索引,并获取所述当前块的帧内预测模式或者所述当前块的形状信息;
113.确定模块,用于根据所述当前块的帧内预测模式和所述变换核对索引,确定所述当前块对应的变换核对,或者,根据所述当前块的形状信息和所述变换核对索引,确定所述当前块对应的变换核对,其中,所述变换核对包括水平变换核和垂直变换核。
114.在本公开的一种可能的实施方式中,所述确定模块,用于:
115.如果所述变换核对索引为第一索引,且所述当前块的帧内预测模式的模式号小于或等于预设数值,则确定所述当前块对应的变换核对为第一变换核对;
116.如果所述变换核对索引为第一索引,且所述当前块的帧内预测模式的模式号大于预设数值,则确定所述当前块对应的变换核对为第二变换核对;
117.如果所述变换核对索引为第二索引,且所述当前块的帧内预测模式的模式号小于或等于预设数值,则确定所述当前块对应的变换核对为第二变换核对;
118.如果所述变换核对索引为第二索引,且所述当前块的帧内预测模式的模式号大于预设数值,则确定所述当前块对应的变换核对为第一变换核对。
119.在本公开的一种可能的实施方式中,所述确定模块,用于:
120.如果所述变换核对索引为第一索引,且所述当前块的形状信息满足预设形状限制
条件,则确定所述当前块对应的变换核对为第一变换核对;
121.如果所述变换核对索引为第一索引,且所述当前块的形状信息不满足预设形状限制条件,则确定所述当前块对应的变换核对为第二变换核对;
122.如果所述变换核对索引为第二索引,且所述当前块的形状信息满足预设形状限制条件,则确定所述当前块对应的变换核对为第二变换核对;
123.如果所述变换核对索引为第二索引,且所述当前块的形状信息不满足预设形状限制条件,则确定所述当前块对应的变换核对为第一变换核对。
124.在本公开的一种可能的实施方式中,所述变换核对索引对应的二值化码字的第一个比特位是基于一个上下文模型进行的自适应二进制算术解码。
125.在本公开的一种可能的实施方式中,所述变换核对索引对应的二值化码字包括多个比特位,所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术解码方式进行编码。
126.第十二方面,提供了一种进行编码的编码端,所述编码端包括:
127.获取模块,用于获取当前块的帧内预测模式、所述当前块对应的变换核对,或者所述当前块的形状信息、所述当前块对应的变换核对;
128.确定模块,用于根据所述当前块的帧内预测模式和所述当前块对应的变换核对,确定所述当前块对应的变换核对索引,或者,根据所述当前块的形状信息和所述当前块对应的变换核对,确定所述当前块对应的变换核对索引;
129.编码模块,用于对变换核对索引进行编码处理,添加至所述编码数据中。
130.在本公开的一种可能的实施方式中,所述确定模块,用于:
131.如果所述变换核对为第一变换核对,且所述当前块的帧内预测模式的模式号小于或等于预设数值,则确定所述当前块对应的变换核对索引为第一索引;
132.如果所述变换核对为第二变换核对,且所述当前块的帧内预测模式的模式号大于预设数值,则确定所述当前块对应的变换核对索引为第一索引;
133.如果所述变换核对为第二变换核对,且所述当前块的帧内预测模式的模式号小于或等于预设数值,则确定所述当前块对应的变换核对索引为第二索引;
134.如果所述变换核对为第一变换核对,且所述当前块的帧内预测模式的模式号大于预设数值,则确定所述当前块对应的变换核对索引为第二索引。
135.在本公开的一种可能的实施方式中,所述确定模块,用于:
136.如果所述变换核对为第一变换核对,且所述当前块的形状信息满足预设形状限制条件,则确定所述当前块对应的变换核对索引为第一索引;
137.如果所述变换核对为第二变换核对,且所述当前块的形状信息不满足预设形状限制条件,则确定所述当前块对应的变换核对索引为第一索引;
138.如果所述变换核对为第二变换核对,且所述当前块的形状信息-满足预设形状限制条件,则确定所述当前块对应的变换核对索引为第二索引;
139.如果所述变换核对为第一变换核对,且所述当前块的形状信息不满足预设形状限制条件,则确定所述当前块对应的变换核对索引为第二索引。
140.在本公开的一种可能的实施方式中,所述编码模块,用于:
141.根据对所述变换核对索引对应的二值化码字的第一个比特位基于一个上下文模
型进行自适应二进制算术编码的方式进行编码。
142.在本公开的一种可能的实施方式中,所述编码模块,用于:
143.如果所述变换核对索引对应的二值化码字包括多个比特位,则对所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码。
144.第十三方面,提供了一种进行解码的解码端,包括处理器和存储器,其中,所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现上述第一方面、第三方面、第五方面任一方面所述的方法步骤。
145.第十四方面,提供了一种进行编码的编码端,所述编码端包括:包括处理器和存储器,其中,所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现上述第二方面、第四方面、第六方面任一方面的方法步骤。
146.第十五方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面至第六方面任一方面所述的方法步骤。
147.第十六方面,提供了一种进行编码的和解码的系统,所述系统包括编码端和解码端,其中:
148.所述编码端,如上述第八方面所述的编码端;所述解码端,如上述第七方面所述的解码端;或者,
149.所述编码端,如上述第十方面所述的编码端;所述解码端,如上述第九方面所述的解码端;或者,
150.所述编码端,如上述第十二方面所述的编码端;所述解码端,如上述第11方面所述的解码端。
151.本公开实施例提供的技术方案带来的有益效果至少包括:
152.本公开实施例中,编码端在编码当前块时,可以获取当前块对应的变换核对,进行编码处理,而不是直接获取预设的变换核对,所以可以提升编解码性能。编码端编码变换核对索引对应的二值化码字时,使用一个上下文模型对变换核对索引对应的二值化码字中第一个比特位进行编码处理,而不需要多个上下文模型,所以可以节约内存空间。另外,由于不需要多个上下文模型,所以也不需要更新上下文,可以降低编码和解码的复杂度。
附图说明
153.图1是本公开实施例提供的一种块的划分类型示意图;
154.图2是本公开实施例提供的一种ctu划分成cu的示意图;
155.图3是本公开实施例提供的常用的三种块的示意图;
156.图4是本公开实施例提供的进行帧内预测时的方向示意图;
157.图5是本公开实施例提供的一种进行编码的示意图;
158.图6是本公开实施例提供的一种分布信号的示意图;
159.图7是本公开实施例提供的一种残差信号分布的示意图;
160.图8是本公开实施例提供的一种进行编码的方法流程示意图;
161.图9是本公开实施例提供的一种进行解码的方法流程示意图;
162.图10是本公开实施例提供的一种进行编码的方法流程示意图;
163.图11是本公开实施例提供的一种进行解码的方法流程示意图;
164.图12是本公开实施例提供的一种进行编码的方法流程示意图;
165.图13是本公开实施例提供的一种进行解码的方法流程示意图;
166.图14是本公开实施例提供的一种解码端的结构示意图;
167.图15是本公开实施例提供的一种编码端的结构示意图;
168.图16是本公开实施例提供的一种解码端的结构示意图;
169.图17是本公开实施例提供的一种编码端的结构示意图;
170.图18是本公开实施例提供的一种解码端的结构示意图;
171.图19是本公开实施例提供的一种编码端的结构示意图;
172.图20是本公开实施例提供的一种编码端的结构示意图;
173.图21是本公开实施例提供的一种解码端的结构示意图。
具体实施方式
174.为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
175.为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
176.本公开提供了一种进行编码和进行解码的方法,进行编码的方法的执行主体为编码端,进行解码的方法的执行主体可以是解码端,其中,编码端或解码端可以是服务器、电脑、手机等能对视频数据进行编码和/或解码的设备。
177.其中,编码端或解码端中可以设置有处理器、存储器和收发器等,处理器可以用于进行编码和/或解码的处理,存储器可以用于存储进行编码和/或解码过程中需要的数据以及产生的数据,收发器可以用于接收以及发送数据,如获取视频数据等。
178.在进行实施前,首先对本公开实施例可能涉及的概念进行解释:
179.变换核(transform kernel):
180.在视频编码中,变换是实现视频数据压缩必不可少的阶段,能够使信号的能量更加集中,而基于dct(discrete cosine transform,离散余弦变换)/dst(discrete sine transform,离散正弦变换)的变换技术一直是视频编码主流的变换技术。dct和dst根据基函数的不同又具体分为多种变换核,表一给出了常用的五种变换核的基函数。
181.表一
[0182][0183]
正变换(forward transform)和逆变换(inverse transform):
[0184]
在视频编码过程中,变换过程包含了正变换和逆变换过程,又叫前向变换和反向变换,其中正变换是将一个二维残差信号(残差系数)转换成能量更加集中的二维频谱信号(变换系数),变换系数再经过量化过程可以有效去除高频成分,保留中低频成分,起到了压缩的作用。用矩阵形式表示如公式(1):
[0185]
f=b
·f·at
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0186]
其中,m表示残差块宽度,n表示残差块高度,f表示nxm维的原始残差信号,f表示nxm维的频域信号。a和b表示mxm和nxn维的变换矩阵,它们均满足正交性。
[0187]
逆变换又称反变换,是正变换的逆过程,即通过正交变换矩阵a和b,将频域信号f转换成时域残差信号f。用矩阵形式表示为公式(2):
[0188]
f=b
t
·f·aꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0189]
水平变换(horizental transform)和垂直变换(vertical transform):
[0190]
在视频编码的变换阶段,输入的是一个二维残差信号,如公式(3)所示,x=a
·ft
,则f=b
·
x
t

[0191]
f=b
·f·at
=b
·
(a
·ft
)
t
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0192]
因此一个二维残差信号的正变换可以通过两次一维的正变换方式实现,第一次正变换后得到一个mxn的信号x,去除了二维残差信号的水平方向像素之间的相关性,因此第一次正变换称为水平变换,称a为水平变换矩阵,第二次正变换去除了二维残差信号的垂直方向像素之间的相关性,因此第二次正变换称为垂直变换,称b为垂直变换矩阵。
[0193]
变换核对(transform pair):
[0194]
在下一代视频编码标准中,tu(transmission unit,变换单元)支持矩阵块,因此m不一定等于n,因此a和b的维度不一定相等,除此之外,下一代视频编码标准还支持a和b不是同一种变换核生产的变换矩阵,因此在变换中存在a和b对应的变换核组成的变换核对{h,v},其中h称为水平变换核,v称为垂直变换核。
[0195]
块划分技术(block parition)
[0196]
在hevc(high efficiency video coding,高效率的视频压缩)中,一个64x64大小的ctu(coding tree unit,编码树单元)使用四叉树递归划分成cu(coding unit,编码单
元)。在叶子节点cu级确定是否使用帧内编码或者帧间编码。cu可以进一步划分成两个或者四个pu(prediction unit,预测单元),同一个pu内使用相同的预测信息。在预测完成后得到残差信号后,一个cu可以进一步四叉划分成多个tu。
[0197]
但是在新提出的vvc(versatile video coding,通用视频编码)中的块划分技术有了较大变化。一种混合了二叉树/三叉树/四叉树((binary/ternary/quaternary)tree(bt/tt/qt))划分结构取代了原先的划分模式,取消了原先cu,pu,tu的概念的区分,支持了cu的更灵活的划分方式。cu可以是正方形也可以是矩形划分,ctu首先进行四叉树的划分,然后四叉树划分的叶子节点可以进一步进行二叉树和三叉树的划分。也就是说总共有五种划分类型,四叉树划分,水平二叉树划分,垂直二叉树划分,水平三叉树划分和垂直三叉树划分,如图1所示,表示了五种划分类型,在图1中,(a)表示不划分,(b)表示四叉树划分,(c)水平二叉树划分,(d)垂直二叉树划分,(e)水平三叉树划分,(f)垂直三叉树划分。如图2所示,提供一个ctu划分成cu的示例图。
[0198]
因此,基于上述划分方式,块通常存在三种形状,如图3所示,在图3中,(a)表示宽大于高的块,(b)宽等于高的块,(c)宽小于高的块。
[0199]
帧内预测:
[0200]
帧内预测是考虑到在图像中,相邻块之间存在很强的空域相关性,因此可以利用周围已经重建的像素作为参考像素对当前未编码块进行预测,因此只需要对残差信号(原始信号-预测信号)进行后续编码处理,而不是对原始信号进行编码,有效去除了空域上的冗余,大大提高了视频信号的压缩效率。而且在帧内预测中,更加密集的角度可以带来更好的预测效果,如图4所示,示出了vvc给出的67种帧内预测模式进行帧内预测时的角度方向示意图,帧内预测模式数量从hevc的33种增加到65种,当模式号为0时,表示planar(平面)模式,当模式号为1时,表示dc模式(dc模式指当前块的预测像素均为参考像素的平均值),黑色实线表示原来hevc的角度方向(2,4,6,8,

,64,66),虚线是新增的角度方向(3,5,7,9,..,63,65),更加密集的角度方向能够更加有效地捕捉到自然视频中任意方向的边界,可以利用更多的参考信息进行率失真代价选择,从而可以找到更加适合的帧内预测模式来更加准确地预测当前编码块,使得预测块更加接近原始编码块,编码当前块所需要传输的比特更少,从而编码性能更高。在进行帧内预测编码时,这67种帧内模式运用在所有尺寸的编码块上,包括亮度分量和色度分量。
[0201]
在图4中,帧内预测模式的模式号为2~34,角度方向与水平向右方向的夹角范围为:-45度~45度,帧内预测模式的模式号为35~66,角度方向与水平向右方向的夹角范围为:-135度~-45度。
[0202]
需要说明的是,在一个平面直角坐标系中,水平向右方向为x轴的正方向,竖直向上为y轴的正方向,这样,第一象限与第二象限中以原点为顶点的射线(射线远离原点的方向)与x轴的正方向构成的夹角为正值,第三象限与第四象限为中以原点为顶点的射线(射线远离原点的方向)与x轴的正方向构成的夹角为负值。例如,水平向右方向与第四象限中的对称轴(远离原点的方向)的夹角为-45度。
[0203]
本公开实施例提供了一种常见的编码框架,如图5所示,完整的视频编码方法一般包括预测、变换、量化、熵编码、环内滤波等环节。其中预测具体分为帧内预测和帧间预测,帧内预测是考虑到在图像中,相邻块之间存在很强的空域相关性,因此可以利用周围已经
重建的像素作为参考像素对当前未编码块进行预测,因此只需要对残差信号(原始信号-预测信号)进行后续编码处理,而不是对原始信号进行编码,有效去除了空域上的冗余,大大提高了视频信号的压缩效率。帧间预测是指利用视频信号时间域上的相关性,使用邻近已编码图像像素预测当前图像的像素,已达到去除视频时域冗余的目的。在帧间预测模块,由于视频存在很强的时域相关性,即时域相邻的两帧图像有很多相似图像块,当前帧的图像块往往在相邻参考图像中进行运动搜索,找到与当前块最匹配的块作为参考块。由于参考块与当前块相似度高,两者的差值非常小,因此编码差值的码率开销通常远小于直接编码当前块像素值带来的码率开销。
[0204]
在上述的变换过程中,对于同一tu(也可以称为是残差块,也可以称为是当前块)采用不同的变换对对残差块进行压缩,压缩的效果大不相同。这是由变换核本身基函数所决定的,如图6所示,对应dct2、dst7和dct8三种变换核基函数,输入信号位为64点。从图中的零阶基函数可以看出,dct2对均匀分布的信号具有较强的能量集中效果,并且形成的直流分量是输入信号均值的倍数,dst7对幅值递增的输入信号具有较强的能量集中效果,dct8对幅值递减的输入信号具有较强的能量集中效果。
[0205]
为了更直观感受不同变换核与残差特性的关系,如图7所示,5种不同的水平垂直变换核对代表的是不同类型的残差分布情况,对于{dct2,dct2}变换核类型,代表的是tu的残差分布均匀,对于{dst7,dst7}变换核类型,代表的是tu的残差分布从左到右,从上到下依次变大,主要分布在tu的右下角,类似地,{dct8,dst7}代表残差主要分布在tu的左下角,{dst7,dct8}代表残差主要分布在tu的右上角,{dct8,dct8}代表残差主要分布在tu的左上角。
[0206]
本公开实施例提供了一种进行编码的方法,该方法的执行流程可以如图8所示。
[0207]
步骤801,编码端获取当前块的残差信号。
[0208]
在实施中,编码端在对视频数据进行编码时,首先进行帧内预测,得到残差信号(得到残差块的方式与现有的视频编码标准中一致,不再赘述),然后将残差信号作为当前要进行处理的当前块的残差信号。
[0209]
选择帧内预测模式的方式可以如下:
[0210]
一般评价编码效率的有两大指标:码率和psnr(peak signal to noise ratio,峰值信噪比)。一般比特流越小,则压缩率越大;psnr越大,重建图像质量越好。在进行模式选择的时候,判别公式实质上也就是对这二者的综合评价。
[0211]
模式对应的代价:j(mode)=d λ*r。其中,d表示distortion(失真),通常使用sse(sum of squares error,和方差)指标来衡量,sse是指重建块与源图像的差值均方和,λ是拉格朗日乘子,r就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。
[0212]
编码端可以获取显式多核变换语法表,如表二所示,只要选取一种帧内预测模式,就选取表二中的每一个变换核对进行变换处理,再进行量化,再进行熵编码,再进行解码处理,这样,遍历完每一种帧内预测模式,然后选择率失真代价最小的帧内预测模式和变换核对,确定为当前块对应的帧内预测模式。这样,就可以确定当前块对应的帧内预测模式和变换核对。例如,帧内预测模式有67种,一种有5个变换核对,这样,会有67*5个组合,每个组合中包括一种帧内预测模式和一个变换核对,选取率失真代价最小的组合,用于最终的帧内
预测和变换。
[0213]
表二
[0214][0215]
需要说明的是,表二的另外一种可能的实现形式也可以是使用dct4替代dct8,dst4来替代dst7,或者使用其它变换核来替代dct8和dst7。
[0216]
另外,如表三所示,为了缩短编码时长,在表二的基础上,可以将变换核对(dct8,dct8)删除,也即不进行(dct8,dct8)的rdo决策,这样,上述组合会从67*5个,变为67*4个,减少了rdo决策的次数,因此缩短了编码时长。而且由于少了变换核对(dct8,dct8),变换核对索引对应的二值化码字的比特位也会从4个减少至3个,也可以减少编码的比特开销。
[0217]
表三
[0218][0219]
需要说明的是,表三的另外一种可能的实现形式也可以是使用dct2来替代dct8,或者满足一定预设形状限制条件下使用dct2替代dct8。
[0220]
另外,如表四所示,为了缩短编码时长,在表三的基础上,可以将变换核对(dst7,dct8)删除。也即不进行(dst7,dct8)的rdo决策,这样,上述组合会从67*4个,变为67*3个,减少了rdo决策的次数,因此缩短了编码时长。而且由于少了变换核对(dct8,dct8)、(dst7,dct8),变换核对索引对应的二值化码字的比特位也会从3个减少至2个,也可以减少编码的比特开销。
[0221]
表四
[0222]
[0223]
另外,如表五所示,为了缩短编码时长,在表三的基础上,可以将变换核对(dct8,dst7)删除。也即不进行(dct8,dst7)的rdo决策,这样,上述组合会从67*4个,变为67*3个,减少了rdo决策的次数,因此缩短了编码时长。而且由于少了变换核对(dct8,dct8)、(dct8,dst7),变换核对索引对应的二值化码字的比特位也会从3个减少至2个,也可以减少编码的比特开销。
[0224]
表五
[0225][0226]
另外,如表六所示,为了缩短编码时长,在表三的基础上,可以将变换核对(dct8,dct8)、(dct8,dst7)、(dst7,dct8)删除。也即不进行(dct8,dct8)、(dct8,dst7)、(dst7,dct8)的rdo决策,这样,上述组合会从67*4个,变为67*2个,减少了rdo决策的次数,因此缩短了编码时长。而且由于少了变换核对(dct8,dct8)、(dct8,dst7)、(dst7,dct8),变换核对索引对应的二值化码字的比特位也会从3个减少至1个,也可以减少编码的比特开销。
[0227]
需要说明的是,表四和表五的另外一种可能的实现形式也可以是使用dct2来替代dct8,或者满足一定预设形状限制条件下使用dct2替代dct8。
[0228]
表六
[0229][0230]
需要说明的是,使用表四时,虽然rdo决策的次数减少,但是编码性能也降低了。
[0231]
另外,还需要说明的是,对于表二,变换对索引对应的二值化码字的第一个比特位是为了区分当前块使用的变换核对索引1对应的变换核对,还是变换核对索引2-5对应的变换核对,编码第二个比特位是为了区分当前块使用的变换核对索引2对应的变换核对,还是变换核对索引3-5对应的变换核对,编码第三个比特位是为了区分当前块使用的变换核对索引3对应的变换核对,还是变换核对索引4-5对应的变换核对,编码第四个比特位是为了区分当前块使用的变换核对索引4对应的变换核对,还是变换核对索引5对应的变换核对。也即,如果第一个比特位为0,说明使用(dct2,dct2)的变换核对,如果第一个比特位为1,第二个比特位为0,说明使用(dst7,dst7)的变换核对,如果第一个比特位为1,第二个比特位为1,第三个比特位为0,说明使用(dct8,dst7)的变换核对,如果第一个比特位为1,第二个比特位为1,第三个比特位为1,第四个比特位为0,说明使用(dst7,dct8)的变换核对,如果第一个比特位为1,第二个比特位为1,第三个比特位为1,第四个比特位为1,说明使用(dct8,dct8)的变换核对。
[0232]
另外,还需要说明的是,对于表三,变换对索引对应的二值化码字的第一个比特位
是为了区分当前块使用的变换核对索引1对应的变换核对,还是变换核对索引2-4对应的变换核对,编码第二个比特位是为了区分当前块使用的变换核对索引2对应的变换核对,还是变换核对索引3-4对应的变换核对,编码第三个比特位是为了区分当前块使用的变换核对索引3对应的变换核对,还是变换核对索引4对应的变换核对。也即,如果第一个比特位为0,说明使用(dct2,dct2)的变换核对,如果第一个比特位为1,第二个比特位为0,说明使用(dst7,dst7)的变换核对,如果第一个比特位为1,第二个比特位为1,第三个比特位为0,说明使用(dct8,dst7)的变换核对,如果第一个比特位为1,第二个比特位为1,第三个比特位为1,说明使用(dst7,dct8)的变换核对。
[0233]
另外,还需要说明的是,对于表四,变换对索引对应的二值化码字的第一个比特位是为了区分当前块使用的变换核对索引1对应的变换核对,还是变换核对索引2-3对应的变换核对,编码第二个比特位是为了区分当前块使用的变换核对索引2对应的变换核对,还是变换核对索引3对应的变换核对。也即,如果第一个比特位为0,说明使用(dct2,dct2)的变换核对,如果第一个比特位为1,第二个比特位为0,说明使用(dst7,dst7)的变换核对,如果第一个比特位为1,第二个比特位为1,说明使用(dct8,dst7)的变换核对。
[0234]
另外,还需要说明的是,对于表五,变换对索引对应的二值化码字的第一个比特位是为了区分当前块使用的变换核对索引1对应的变换核对,还是变换核对索引2-3对应的变换核对,编码第二个比特位是为了区分当前块使用的变换核对索引2对应的变换核对,还是变换核对索引3对应的变换核对。也即,如果第一个比特位为0,说明使用(dct2,dct2)的变换核对,如果第一个比特位为1,第二个比特位为0,说明使用(dst7,dst7)的变换核对,如果第一个比特位为1,第二个比特位为1,说明使用(dst7,dct8)的变换核对。
[0235]
另外,还需要说明的是,对于表六,变换对索引对应的二值化码字的第一个比特位是为了区分当前块使用的变换核对索引1对应的变换核对,还是变换核对索引2对应的变换核对。也即,如果第一个比特位为0,说明使用(dct2,dct2)的变换核对,如果第一个比特位为1,第二个比特位为0,说明使用(dst7,dst7)的变换核对。
[0236]
步骤802,编码端确定当前块对应的变换核对以及当前块对应的变换核对索引。
[0237]
其中,变换核对包括垂直变换核和水平变换核。
[0238]
在实施中,编码端可以获取最终选择的变换核对,然后在表二至表六任一个表所描述的变换核对与变换核对索引的对应关系中,选取出该变换核对对应的变换核对索引。
[0239]
需要说明的是,在编码时,一般已经固定了使用表二至表六中的哪一个,所以仅能获取到表二至表六中的一个。
[0240]
在本公开的一种可能的实施方式中,在步骤802之前,还可以进行如下判断:
[0241]
确定当前块的高度与宽度均小于或者等于预设阈值,且当前块为亮度块。
[0242]
其中,预设阈值可以预设,并且存储至解码端,预设阈值一般为n(n可以为32)。
[0243]
在实施中,解码端在执行完步骤801时,可以确定当前块在高度方向的像素点的数目,即为当前块的高度,并且确定当前块在宽度方向上的像素点的数目,即为当前块的宽度。并且可以判断当前块是否为亮度块,如果是当前块为亮度块,且当前块的高度与宽度均小于或等于预设阈值,才执行步骤802的处理。
[0244]
在本公开的一种可能的实施方式中,还可以使用帧内预测模式或者当前块的形状信息,确定变换核对索引,如下所示:
[0245]
方式一,编码端确定当前块对应的变换核对,根据当前块的帧内预测模式和变换核对,确定当前块对应的变换核对索引。
[0246]
在实施中,编码端可以按照前面提到的方式确定变换核对和当前块的帧内预测模式,然后获取预设的显式多核变换核对的语法表,在该表中,使用帧内预测模式和变换核对,确定出当前块对应的变换核对索引。
[0247]
在本公开的一种可能的实施方式中,可以使用如下方式,使用帧内预测模式,确定变换核对索引,相应的处理可以如下:
[0248]
如果变换核对为第一变换核对,且当前块的帧内预测模式的模式号小于或等于预设数值,则确定当前块对应的变换核对索引为第一索引,如果变换核对为第二变换核对,且当前块的帧内预测模式的模式号大于预设数值,则确定当前块对应的变换核对索引为第一索引,如果变换核对为第二变换核对,且当前块的帧内预测模式的模式号小于或等于预设数值,则确定当前块对应的变换核对索引为第二索引,如果变换核对为第一变换核对,且当前块的帧内预测模式的模式号大于预设数值,则确定当前块对应的变换核对索引为第二索引。
[0249]
在实施中,预设的显式多核变换对的语法表,如表七所示:
[0250]
表七
[0251][0252]
在表七中第一变换核对为(dst7,dct8),帧内预测模式的模式号小于或等于预设数值(预设数值为34),可以确定变换核对索引为3,那么对应的二值化码字的比特位有3个,依次为1、1、0。第二变换核对为(dct8,dst7),帧内预测模式的模式号大于34,可以确定对应的变换核对索引为3,那么对应的二值化码字的比特位有3个,依次为1、1、0。第二变换核对为(dct8,dst7),帧内预测模式的模式号小于或等于34,可以确定对应的变换核对索引为4,那么对应的二值化码字的比特位有4个,依次为1、1、1、0。第一变换核对为(dst7,dct8),帧内预测模式的模式号大于34,可以确定变换核对索引为4,那么对应的二值化码字的比特位有4个,依次为1、1、1、0。
[0253]
需要说明的是,由于某些变换核对可以直接确定出变换核对索引,所以在进行方式一时满足的条件为:确定出的变换核对不是(dct2,dct2)、(dst7,dst7)、(dct8,dct8)中的任一种。
[0254]
还需要说明的是,在表七中,变换核对索引为3时,上述mode=0~34?dst7:dct8指:帧内预测模式的模式号为0至34为真时,水平变换核为dst7,否则水平变换核为dct8。
mode=0~34?dct8:dst7指:帧内预测模式的模式号为0至34为真时,垂直变换核为dct8,否则垂直变换核为dst7。变换核对索引为4时,上述mode=0~34?dct8:dst7指:帧内预测模式的模式号为0至34为真时,水平变换核为dct8,否则水平变换核为dst7。mode=0~34?dst7:dct8指:帧内预测模式的模式号为0至34为真时,垂直变换核为dst7,否则垂直变换核为dct8。
[0255]
方式二,编码端确定当前块对应的变换核对,根据当前块的形状信息和变换核对,确定当前块对应的变换核对索引。
[0256]
在实施中,编码端可以按照前面提到的方式,确定变换核对和当前块的形状信息,然后获取预设的显式多核变换核对的语法表,在该表中,使用变换核对和当前块的形状信息,确定出当前块对应的变换核对索引。
[0257]
在本公开的一种可能的实施方式中,在参考当前块的形状信息确定出变换核对索引的处理可以如下:
[0258]
如果变换核对为第一变换核对,且当前块的形状信息满足预设形状限制条件,则确定当前块对应的变换核对索引为第一索引。如果变换核对为第二变换核对,且当前块的形状信息不满足预设形状限制条件,则确定当前块对应的变换核对索引为第一索引。如果变换核对为第二变换核对,且当前块的形状信息满足预设形状限制条件,则确定当前块对应的变换核对索引为第二索引。如果变换核对为第一变换核对,且当前块的形状信息不满足预设形状限制条件,则确定当前块对应的变换核对索引为第二索引。
[0259]
其中,预设形状限制条件可以预设,并且存储至编码端,预设形状限制条件为宽度大于或等于高度。
[0260]
在实施中,预设的显式多核变换对的语法表如表八所示:
[0261]
表八
[0262][0263]
在表八中第一变换核对为(dst7,dct8),当前块的形状信息为宽度大于或等于高度,可以确定变换核对索引为3,那么对应的二值化码字的比特位有3个,依次为1、1、0。第二变换核对为(dct8,dst7),当前块的形状信息为宽度小于高度,可以确定对应的变换核对索引为3,那么对应的二值化码字的比特位有3个,依次为1、1、0。第二变换核对为(dct8,dst7),当前块的形状信息为宽度大于或等于高度,可以确定对应的变换核对索引为4,那么对应的二值化码字的比特位有4个,依次为1、1、1、0。第一变换核对为(dst7,dct8),当前块的形状信息为宽度小于高度,可以确定变换核对索引为4,那么对应的二值化码字的比特位
有4个,依次为1、1、1、0。
[0264]
基于表八,方式二中,当前块的形状信息为宽度大于或等于高度,第一变换核对为(dst7,dct8)时,第一索引为3;,当前块的形状信息为宽度小于高度,第二变换核对为(dct8,dst7),第一索引为3;当前块的形状信息为宽度小于高度,第一变换核对为(dst7,dct8),第一索引为4,当前块的形状信息为宽度大于或等于高度,第二变换核对为(dct8,dst7),第一索引为4。
[0265]
需要说明的是,由于某些变换核对可以直接确定出变换核对索引,所以在进行方式二时满足的条件为:确定出的变换核对不是(dct2,dct2)、(dst7,dst7)、(dct8,dct8)中的任一种。
[0266]
还需要说明的是,在表八中,变换核对索引为3时,上述w≥h?dst7:dct8指:当前块的宽度大于或等于高度为真时,水平变换核为dst7,否则水平变换核为dct8。w≥h?dct8:dst7指:当前块的宽度大于或等于高度为真时,垂直变换核为dct8,否则垂直变换核为dst7。变换核对索引为4时,上述w≥h?dct8:dst7指:当前块的宽度大于或等于高度为真时,水平变换核为dct8,否则水平变换核为dst7。w≥h?dst7:dct8指:当前块的宽度大于或等于高度为真时,垂直变换核为dst7,否则垂直变换核为dct8。
[0267]
还需要说明的是,上述表七中,mode表示模式号,上述表八中,w表示宽度,h表示高度。
[0268]
这样,由于上述基于当前块的形状信息、帧内预测模式自适应的调整变换核对的优先级,可以使概率越高的变换核对,需要编码的变换核对索引对应的二值化码字越短。
[0269]
另外,编码端在获取到当前块后,可以首先判断当前块的高度和宽度是否均小于或等于n(n可以为32),并且判断是否是亮度块,如果当前块的高度和宽度均小于或等于n,且是亮度块,则可以继续执行步骤801,如果高度和宽度均小于或等于n、是亮度块二者至少一个不满足,则直接获取预设的变换核对(即(dct2,dct2))。
[0270]
步骤803,编码端根据变换核对,对当前块的残差信号进行编码处理,得到当前块对应的编码数据。
[0271]
在实施中,编码端在获取到当前块对应的变换核对后,可以基于变换核对,对当前块的残差信号进行变换,得到变换系数,然后对变换系数进行量化处理,得到量化系数,对量化系数进行熵编码处理,得到当前块对应的编码数据。
[0272]
步骤804,编码端根据对变换核对索引对应的二值化码字的第一个比特位基于一个上下文模型进行自适应二进制算术编码的方式,对变换核对索引进行编码,添加至编码数据中。
[0273]
在实施中,为了使解码端可以知道编码端所使用的变换核对,所以要在编码数据中添加变换核对索引。
[0274]
编码端可以对变换核对索引对应的二值化码字的第一个比特位基于一个上下文模型进行自适应的二进制算术编码,如果二值化码字还包括其它比特位,对这些其它比特位,可以使用cabac(context-based adaptive binary arithmetic coding,基于上下文的自适应二进制算术编码)的方式进行编码,也可以使用旁路的二进制算术编码方式进行编码,然后将编码后的变换核对索引添加至编码数据中。
[0275]
这样,就完成了当前块的编码处理。每个当前块都按照图8所示的流程进行处理,
即可编码一整段的视频数据。
[0276]
在本公开的一种可能的实施方式中,对于上述其它比特位,可以使用旁路的二进制算术编码方式进行编码,相应的处理可以如下:
[0277]
如果变换核对索引对应的二值化码字包括多个比特位,则对第一个比特位基于一个上下文模型进行自适应二进制算术编码,并对多个比特位中除第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码,将编码后的变换核对索引,添加至编码数据中。
[0278]
在实施中,在变换核对索引对应的二值化码字包括多个比特位时,可以对第一个比特位基于一个上下文模型进行自适应的二进制算术编码,并且对多个比特位中除第一个比特位之外的其它比特位中至少一个比特位采用旁路的二进制算术编码方式进行编码,然后将编码后的变换核对索引,添加至编码数据中。
[0279]
例如,所使用的变换核对为(dct8,dct8),对应有4个比特位,依次为1、1、1、1,在编码第一个比特位时,使用一个上下文模型,在编码后面3个比特位时,均使用旁路的二进制算术编码方式进行编码。这样,不需要存储后面几个比特位的上下文模型,所以可以节约内存空间,并且降低编码和解码的复杂度。
[0280]
另外,为了使解码端也可以使用显式多核变换方式,可以在编码数据中添加目标标识,目标标识用于指示使用了显式多核变换方式。
[0281]
对于上述图8所示的编码方式,本公开实施例还提供了对应的解码方式,如图9所示,处理流程可以如下:
[0282]
步骤901,解码端获取当前块的编码数据。
[0283]
在实施中,解码端有编码数据要进行解码时,可以获取编码数据,然后对编码数据进行熵解码处理,对熵解码结果进行反量化处理,得到当前块。
[0284]
步骤902,解码端从编码数据中获取当前块的变换核对索引,其中,变换核对索引对应的二值化码字的第一个比特位是基于一个上下文模型进行的自适应二进制算术解码。
[0285]
在实施中,解码端可以从当前块的编码数据中获取当前块对应的变换核对索引,编码端对当前块的变换核对索引进行编码时,变换核对索引对应的二值化码字的第一个比特位是基于一个上下文模型进行的自适应二进制算术编码。这样,在解码第一个比特位时,也是基于一个上下文模型进行的自适应二进制算术解码。
[0286]
在本公开的一种可能的实施方式中,在步骤902之前,还可以进行如下判断:
[0287]
确定当前块的高度与宽度均小于或者等于预设阈值,且当前块为亮度块。
[0288]
其中,预设阈值可以预设,并且存储至解码端,预设阈值一般为n(n可以为32)。
[0289]
在实施中,解码端在执行完步骤901时,可以确定当前块在高度方向的像素点的数目,即为当前块的高度,并且确定当前块在宽度方向上的像素点的数目,即为当前块的宽度。并且可以判断当前块是否为亮度块,如果是当前块为亮度块,且当前块的高度与宽度均小于或等于预设阈值,才执行步骤902的处理。
[0290]
另外,在执行步骤902的处理之前,还可以判断编码数据中是否携带有目标标识,目标标识用于指示进行显式多核变换处理。如果编码数据中包括目标标识,说明使用了显式多核变换处理,可以进行步骤902的处理。
[0291]
步骤903,解码端根据变换核对索引,确定当前块对应的变换核对,其中,变换核对
包括水平变换核和垂直变换核。
[0292]
在实施中,解码端在确定出当前块的变换核对索引之后,可以在变换核对索引和变换核对的对应关系中,确定当前块对应的变换核对。
[0293]
步骤904,解码端根据变换核对,对当前块进行解码处理,得到当前块对应的重建信息。
[0294]
在实施中,在确定出当前块对应的变换核对后,可以使用该变换核对,对当前块反量化后的数据进行反变换处理,得到当前块对应的残差信号,然后将残差信号与预测信号进行相加,得到当前块对应的重建信息。
[0295]
这样,就完成了当前块的解码处理。每个当前块都按照图9所示的流程进行处理,即可解码一整段的视频数据。
[0296]
在步骤903中,有多种方式可以确定当前块的变换核对,以下给出多种可行的方式:
[0297]
方式一:如表二所示,变换核索引为1,说明使用的变换核对为(dct2,dct2),变换核索引为2,说明使用的变换核对为(dst7,dst7),变换核索引为3,说明使用的变换核对为(dct8,dst7),变换核索引为4,说明使用的变换核对为(dst7,dct8),变换核索引为5,说明使用的变换核对为(dct8,dct8)。
[0298]
方式二,可以使用表三描述的变换核对索引与变换核对的对应关系、当前块的变换核对索引,确定当前块的变换核对。
[0299]
方式三,可以使用表四描述的变换核对索引与变换核对的对应关系、当前块的变换核对索引,确定当前块的变换核对。
[0300]
方式四,可以使用表五描述的变换核对索引与变换核对的对应关系、当前块的变换核对索引,确定当前块的变换核对。
[0301]
方式五,可以使用表六描述的变换核对索引与变换核对的对应关系、当前块的变换核对索引,确定当前块的变换核对。
[0302]
在本公开的一种可能的实施方式中,还可以使用当前块的帧内模式信息或者,当前块的形状信息,确定变换核对,相应的处理可以如下:
[0303]
根据当前块的帧内预测模式和变换核对索引,确定当前块对应的变换核对;或者,
[0304]
根据变换核对索引、当前块的宽度和高度,确定当前块对应的变换核对。
[0305]
在实施中,如果变换核对索引为第一索引,且当前块的帧内预测模式的模式号小于或等于预设数值,则确定当前块对应的变换核对为第一变换核,如果变换核对索引为第一索引,且当前块的帧内预测模式的模式号大于预设数值,则确定当前块对应的变换核对为第二变换核,如果变换核对索引为第二索引,且当前块的帧内预测模式的模式号小于或等于预设数值,则确定当前块对应的变换核对为第二变换核,如果变换核对索引为第二索引,且当前块的帧内预测模式的模式号大于预设数值,则确定当前块对应的变换核对为第一变换核。
[0306]
或者,如果变换核对索引为第一索引,且当前块的形状信息满足预设形状限制条件,则确定当前块对应的变换核对为第一变换核对,如果变换核对索引为第一索引,且当前块的形状信息不满足预设形状限制条件,则确定当前块对应的变换核对为第二变换核对,如果变换核对索引为第二索引,且当前块的的形状信息满足预设形状限制条件,则确定当
前块对应的变换核对为第二变换核对,如果变换核对索引为第二索引,且当前块的形状信息不满足预设形状限制条件,则确定当前块对应的变换核对为第一变换核对。(该过程可以步骤803的过程相对应,此处不再赘述)
[0307]
上述预设数值可以为表七和表八中的34,第一索引可以为3,第一变换核对为(dct8,dst7),第二索引可以为4,第二变换核对为(dst7,dct8)。
[0308]
在本公开的一种可能的实施方式中,为了节约编码端的内存空间,编码端在对变换核对索引对应的二值化码字进行编码时,如果变换核对索引对应的二值化码字包括多个比特位,多个比特位中除第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码。这样,如果某个比特位采用旁路的二进制算术编码方式进行编码,就不需要存储上下文模型,所以可以节约内存空间。同样,解码端在解码时,也使用相应的方式进行解码。
[0309]
本公开实施例中,编码端在编码当前块时,可以获取当前块对应的变换核对,进行编码处理,而不是直接获取预设的变换核对,所以可以提升编解码性能。编码端编码变换核对索引对应的二值化码字时,使用一个上下文模型对变换核对索引对应的二值化码字中第一个比特位进行编码处理,而不需要多个上下文模型,所以可以节约内存空间。另外,由于不需要多个上下文模型,所以也不需要更新上下文,可以降低编码和解码的复杂度。
[0310]
本公开另一实施例,考虑到变换核对索引对应的二值化码字包括多个比特位时内存空间的节约,提供了以下的编解码过程,如图10所示:
[0311]
步骤1001,编码端获取当前块的残差信号。
[0312]
在实施中,在实施中,编码端在对视频数据进行编码时,首先进行帧内预测,得到残差信号(得到残差块的方式与现有的视频编码标准中一致,不再赘述),然后将残差信号作为当前要进行处理的当前块的残差信号。
[0313]
选择帧内预测模式的方式与步骤801中选择帧内预测模式的方式相同,可以参见步骤801,此处不再赘述。
[0314]
步骤1002,编码端确定当前块对应的变换核对以及当前块对应的变换核对索引。
[0315]
其中,变换核对包括垂直变换核和水平变换核。
[0316]
在实施中,编码端可以获取最终选择的变换核对,然后在表二至表六任一个表中选取出该变换核对对应的变换核对索引。(此处理过程可以参见步骤802的处理)。
[0317]
需要说明的是,在编码时,一般已经固定了使用表二至至表六中的哪一个,所以仅能获取到表二至表六中的一个。
[0318]
在本公开的一种可能的实施方式中,有多种方式可以确定变换核对索引,以下给出两种可行的实施方式:
[0319]
方式一,编码端确定当前块对应的变换核对,根据当前块的帧内预测模式和变换核对,确定当前块对应的变换核对索引。
[0320]
此过程与步骤802中表七所示的方式一完全相同,此处不再赘述。
[0321]
方式二,确定当前块对应的变换核对,根据当前块的形状信息和变换核对,确定当前块对应的变换核对索引。
[0322]
此过程与步骤802中表八所示的方式二完全相同,此处不再赘述。
[0323]
另外,编码端在获取到当前块后,可以首先判断当前块的高度和宽度是否均小于
或等于n(n可以取32),并且判断是否是亮度块,如果当前块的高度和宽度均小于或等于32,且是亮度块,则可以继续执行步骤1002,如果高度和宽度均小于或等于32、是亮度块二者至少一个不满足,则直接获取预设的变换核对(即(dct2,dct2))。
[0324]
步骤1003,编码端根据变换核对,对当前块的残差信号进行编码处理,得到当前块对应的编码数据。
[0325]
在实施中,编码端在获取到当前块对应的变换核对后,可以基于变换核对,对当前块的残差信号进行变换,得到变换系数,然后对变换系数进行量化处理,得到量化系数,量化系数进行熵编码处理,得到当前块对应的编码数据。
[0326]
步骤1004,编码端如果变换核对索引对应的二值化码字包括多个比特位,则对多个比特位中除第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码,添加至编码数据中。
[0327]
在实施中,为了使解码端可以知道编码端所使用的变换核对,所以要在编码数据中添加变换核对索引。
[0328]
如果变换核对索引对应的二值化码字包括多个比特位,编码端可以对变换核对索引对应的二值化码字中第一个比特位采用cabac的方式进行编码,如果变换核对索引中还包括其它比特位,对这些其它比特位,至少一个比特位使用旁路的二进制算术编码方式进行编码,然后将编码后的变换核对索引添加至编码数据中。这样,由于旁路的二进制算术编码方式不需要存储上下文模型,所以如果使用旁路的二进制算术编码方式进行编码,该比特位不需要存储上下文模型。
[0329]
这样,就完成了当前块的编码处理。每个当前块都按照图10所示的流程进行处理,即可编码一整段的视频数据。
[0330]
在本公开的一种可能的实施方式中,对第一个比特位基于一个上下文模型进行自适应二进制算术编码。
[0331]
在实施中,在使用cabac的方式对第一个比特位进行编码时,可以使用一个上下文模型进行的自适应二进制算术编码,而不是多个上下文模型,所以不需要存储多个上下文模型,也可以节约存储空间。
[0332]
另外,为了使解码端也可以使用显式多核变换方式,可以在编码数据中添加目标标识,目标标识用于指示使用了显式多核变换方式。
[0333]
基于图10所示的编码方式,如图11所示,本公开实施例还提供了相应的解码方式:
[0334]
步骤1101,解码端获取当前块的编码数据。
[0335]
在实施中,有编码数据要进行解码时,可以获取编码数据,然后对编码数据进行熵解码处理,对熵解码结果进行反量化处理,得到编码数据中的当前块,作为当前块
[0336]
步骤1102,解码端从编码数据中获取变换核对索引,其中,如果变换核对索引对应的二值化码字包括多个比特位,则多个比特位中除第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行解码。
[0337]
在实施中,解码端可以从编码数据中获取当前块对应的变换核对索引,在编码端对当前块的变换核对索引进行编码时,如果变换核对索引对应的二值化码字包括多个比特位,则多个比特位中除第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码。这样,在解码端解码使用旁路的二进制算术编码方式进行编
码的比特位时,也是使用旁路的二进制算术解码方式进行解码,也可以节约解码端的内存空间。
[0338]
在本公开的一种可能的实施方式中,为了节约内存空间,多个比特位中的第一个比特位采用一个上下文模型编码。
[0339]
在本公开的一种可能的实施方式中,在进行步骤1102之前,确定当前块的高度与宽度均小于或者等于目标数值,且当前块为亮度块。
[0340]
在实施中,目标数值可以预设并且存储至解码端,一般为n(n可以为32)。在当前块的高度和宽度均小于或者等于n,且当前块为亮度块时,才进行步骤1102的处理。否则可以确定当前块对应的变换核对为(dct2,dct2),后续可以直接使用该变换核对进行解码处理。
[0341]
另外,在执行步骤1102的处理之前,还可以判断编码数据中是否携带有目标标识,目标标识用于指示进行显式多核变换处理。如果编码数据中目标标识,说明使用了显式多核变换处理,可以进行步骤1102的处理。
[0342]
步骤1103,解码端根据变换核对索引,确定当前块对应的变换核对,其中,变换核对包括水平变换核和垂直变换核。
[0343]
此过程与步骤903的处理过程完全相同,可以参见步骤903的处理,此处不再赘述。
[0344]
在本公开的一种可能的实施方式中,在确定变换核对时,还可以使用当前块的高度和宽度,或者当前块的帧内预测模式,相应的处理可以如下:
[0345]
根据当前块的帧内预测模式和变换核对索引,确定当前块对应的变换核对;或者,根据当前块的形状信息和变换核对索引,确定当前块对应的变换核对,其中,变换核对包括水平变换核和垂直变换核。
[0346]
在实施中,该过程与步骤903中使用当前块的高度和宽度,或者当前块的帧内预测模式确定变换核对的方式相同,可以参见步骤903的处理,此处不再赘述。
[0347]
步骤1104,解码端根据变换核对,对当前块进行解码处理,得到当前块对应的重建信息。
[0348]
在实施中,在确定出当前块对应的变换核对后,可以使用变换核对,对当前块对应的量化系数进行反变换处理,得到当前块对应的残差信号,然后利用当前块周围已经重建区域内像素点的像素值按照所使用的帧内预测模式构建预测信号,然后将残差信号与预测信号进行相加,得到当前块对应的重建信息。
[0349]
这样,就完成了当前块的解码处理。每个当前块都按照图10所示的流程进行处理,即可解码一整段的视频数据。
[0350]
本公开实施例中,编码端在编码当前块时,可以获取当前块对应的变换核对,进行编码处理,而不是直接获取预设的变换核对,所以可以提升编解码性能。编码端编码变换核对索引时,使用旁路的二进制算术编码方式对变换核对索引对应的二值化索引中除第一个比特位之外的其它比特位中至少一个比特位进行编码处理,对于这至少一个比特位不需要存储上下文模型,所以可以节约内存空间。另外,由于至少一个比特位未使用cabac方式,而使用旁路的二进制算术编码方式,所以也可以降低编码和解析的复杂度。
[0351]
本公开另一实施例中,如图12所示,还提供了基于当前块的形状信息、或者当前块的帧内预测模式,确定变换核对的处理:
[0352]
步骤1201,编码端获取当前块的残差信号。
[0353]
在实施中,在实施中,编码端在对视频数据进行编码时,首先进行帧内预测,得到残差信号(得到残差块的方式与现有的视频编码标准中一致,不再赘述),然后将残差信号作为当前要进行处理的当前块的残差信号。
[0354]
需要说明的是,本公开实施例中的tu与前面提到的cu一样。
[0355]
选择帧内预测模式的方式与步骤801中选择帧内预测模式的方式相同,可以参见步骤801,此处不再赘述。
[0356]
步骤1202,编码端获取当前块的帧内预测模式、当前块对应的变换核对,或者当前块的形状信息、当前块对应的变换核对。
[0357]
其中,变换核对包括垂直变换核和水平变换核。
[0358]
在实施中,编码端可以获取步骤1201最终在帧内预测时,使用的帧内预测模式(即为当前块对应的帧内预测模式),以及使率失真最小时,该帧内预测模式对应的变换核对(即为当前块对应的变换核对)。
[0359]
或者,编码端可以确定该当前块块的高度和宽度(即编码块在高度方向像素点的数目,编码块在宽度方向像素点的数目),这样,就可以获取到当前块的形状信息,并且获取使率失真最小时,所使用的变换核对(即为当前块对应的变换核对)。
[0360]
另外,编码端在获取到当前块后,可以首先判断当前块的高度和宽度是否均小于或等于n(n可以为32),并且判断是否是亮度块,如果当前块的高度和宽度均小于或等于n,且是亮度块,则可以继续执行步骤1202,如果高度和宽度均小于或等于n、是亮度块二者至少一个不满足,则直接获取预设的变换核对(即(dct2,dct2))。
[0361]
步骤1203,编码端根据当前块的帧内预测模式和当前块对应的变换核对,确定当前块对应的变换核对索引,或者,根据当前块的形状信息和当前块对应的变换核对,确定当前块对应的变换核对索引。
[0362]
在实施中,在步骤1202确定出的变换核对不是(dct2,dct2)、(dst7,dst7)、(dct8,dct8)中的任一种时,可以获取预设的显式多核变换对的语法表(如上述表七所示),可以从表七中确定出当前块对应的帧内预测模式和变换核对共同对应的变换核对索引,即为当前块对应的变换核对索引。例如,变换核对为(dst7,dct8),当前块对应的帧内预测模式的模式号为32,则共同对应的变换核对索引为3。
[0363]
或者,在步骤1202确定出的变换核对不是(dct2,dct2)、(dst7,dst7)、(dct8,dct8)中的任一种时,可以获取预设的显式多核变换对的语法表(如上述表八所示),可以从表八中确定出当前块的形状信息、变换核对共同对应的变换核对索引,即为当前块对应的变换核对索引。例如,变换核对为(dst7,dct8),当前块的宽度大于高度,则共同对应的变换核对索引为3。
[0364]
在本公开的一种可能的实施方式中,在使用帧内预测模式和变换核对确定变换核索引时,可以使用如下方式:
[0365]
如果变换核对为第一变换核对,且当前块的帧内预测模式的模式号小于或等于预设数值,则确定当前块对应的变换核对索引为第一索引,如果变换核对为第二变换核对,且当前块的帧内预测模式的模式号大于预设数值,则确定当前块对应的变换核对索引为第一索引,如果变换核对为第二变换核对,且当前块的帧内预测模式的模式号小于或等于预设数值,则确定当前块对应的变换核对索引为第二索引,如果变换核对为第一变换核对,且当
前块的帧内预测模式的模式号大于预设数值,则确定当前块对应的变换核对索引为第二索引。
[0366]
在实施中,该过程与步骤802中的表七所示的方式一完全相同,此处不再赘述。
[0367]
在本公开的一种可能的实施方式中,在使用当前块的形状信息、变换核对确定变换核索引时,可以使用如下方式:
[0368]
如果变换核对为第一变换核对,且当前块的形状信息满足预设形状限制条件,则确定当前块对应的变换核对索引为第一索引,如果变换核对为第二变换核对,且当前块的形状信息不满足预设形状限制条件,则确定当前块对应的变换核对索引为第一索引,如果变换核对为第二变换核对,且当前块的形状信息-满足预设形状限制条件,则确定当前块对应的变换核对索引为第二索引,如果变换核对为第一变换核对,且当前块的形状信息不满足预设形状限制条件,则确定当前块对应的变换核对索引为第二索引。
[0369]
在实施中,该过程与步骤802中的表八所示的方式二完全相同,此处不再赘述。
[0370]
步骤1204,编码端根据变换核对,对当前块的残差信号进行编码处理,得到当前块对应的编码数据。
[0371]
在实施中,编码端在获取到当前块对应的变换核对后,可以基于变换核对,对当前块的残差信号进行变换,得到变换系数,然后对变换系数进行量化处理,得到量化系数,量化系数进行熵编码处理,得到当前块对应的编码数据。
[0372]
步骤1205,编码端对变换核对索引进行编码处理,添加至编码数据中。
[0373]
在实施中,为了使解码端可以知道编码端所使用的变换核对,所以要在编码数据中添加变换核对索引的二值化码字。
[0374]
编码端可以对变换核对索引进行编码处理,然后将编码处理后的变换核对索引添加至编码数据中。
[0375]
这样,就完成了当前块的编码处理。每个当前块都按照图12所示的流程进行处理,即可编码一整段的视频数据。
[0376]
在本公开的一种可能的实施方式中,为了节约内存空间,可以按照如下方式编码变换核对索引,相应的步骤1205的处理可以如下:
[0377]
如果变换核对索引对应的二值化码字包括多个比特位,则对第一个比特位使用cabac方式进行编码,并对多个比特位中除第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码。
[0378]
在实施中,如果变换核对索引对应的二值化码字仅包括一个比特位,则可以直接使用cabac方式进行编码处理,如果变换核对索引对应的二值化码字包括多个比特位,则可以对第一个比特位使用cabac方式进行编码,并且对除第一个比特位之外的其它比特位中至少一个比特位采用旁路的二进制算术编码方式进行编码,然后将编码后的变换核对索引,添加至编码数据中。这样,由于变换核对索引对应的二值化码字包括多个比特位时,有些比特位采用旁路的二进制算术编码方式进行编码,不需要存储上下文模型,所以可以节约内存空间。
[0379]
在本公开的一种可能的实施方式中,对变换核对索引对应的二值化码字中第一个比特位基于一个上下文模型进行自适应的二进制算术编码。
[0380]
在实施中,编码端可以对变换核对索引对应的二值化码字中第一个比特位采用一
个上下文模型编码进行编码,这样,由于仅采用了一个上下文模型,所以仅会存储一个上下文模型,占用的内存空间也比较少。
[0381]
另外,为了使解码端也可以使用显式多核变换方式,可以在编码数据中添加目标标识,目标标识用于指示使用了显式多核变换方式。
[0382]
基于上述图12所示的编码过程,本公开实施例还提供了解码的过程,如图13所示:
[0383]
步骤1301,解码端获取当前块的编码数据。
[0384]
在实施中,有编码数据要进行解码时,可以获取编码数据,然后对编码数据进行熵解码处理,对熵解码结果进行反量化处理,得到编码数据中的当前块,作为当前块。
[0385]
步骤1302,解码端从编码数据中获取变换核对索引,并获取当前块的帧内预测模式或者当前块的形状信息。
[0386]
在实施中,解码端可以从编码数据中获取当前块对应的变换核对索引,并且可以确定当前块在高度方向上包括的像素点的数目(即高度),并且可以确定当前块在宽度方向上包括的像素点的数目(即宽度),然后判断高度与宽度的大小,即获取到当前块的形状信息。
[0387]
或者,解码端可以从编码数据中获取当前块对应的变换核对索引,并且从编码数据中帧内预测模式的标识位解析得到帧内预测模式的模式号。
[0388]
在本公开的一种可能的实施方式中,变换核对索引对应的二值化码字包括多个比特位,第一个比特位使用cabac方式解码,多个比特位中除第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行解码。这样,在编码端由于变换核对索引包括多个比特位时,有些比特位采用旁路的二进制算术编码方式进行编码,不需要存储上下文模型,所以可以节约内存空间。这样,在解码端使用旁路的二进制算术编码方式进行编码的比特位也需要使用旁路的二进制算术解码方式进行解码,解码端也不需要存储上下文模型,也可以节约内存空间。
[0389]
在本公开的一种可能的实施方式中,变换核对索引的第一个比特位采用一个上下文模型解码。这样,由于解码端仅采用了一个上下文模型,所以仅会存储一个上下文模型,占用的内存空间也比较少。
[0390]
在本公开的一种可能的实施方式中,在进行步骤1302之前,确定当前块的高度与宽度均小于或者等于目标数值,且当前块为亮度块。
[0391]
在实施中,目标数值可以预设并且存储至解码端,一般为n(n为32)。在当前块的高度和宽度均小于或者等于n,且当前块为亮度块时,才进行步骤1302的处理。否则可以确定当前块对应的变换核对为(dct2,dct2),后续可以直接使用该变换核对进行解码处理。
[0392]
另外,在执行步骤1302的处理之前,还可以判断编码数据中是否携带有目标标识,目标标识用于指示进行显式多核变换处理。如果编码数据中目标标识,说明使用了显式多核变换处理,可以进行步骤1302的处理。
[0393]
步骤1303,解码端根据当前块的帧内预测模式和变换核对索引,确定当前块对应的变换核对,或者,根据当前块的形状信息和变换核对索引,确定当前块对应的变换核对,其中,变换核对包括水平变换核和垂直变换核。
[0394]
在实施中,变换核对包括水平变换核和垂直变换核。在步骤1302确定出的变换核对不是(dct2,dct2)、(dst7,dst7)、(dct8,dct8)中的任一种时,可以获取预设的显式多核
变换对的语法表(如上述表七所示),可以从表七中确定出当前块对应的帧内预测模式和变换核对索引共同对应的变换核对,即为当前块对应的变换核对。例如,当前块对应的帧内预测模式的模式号为32,变换核对索引为3,变换核对则为(dst7,dct8)。
[0395]
或者,在步骤1302确定出的变换核对不是(dct2,dct2)、(dst7,dst7)、(dct8,dct8)中的任一种时,可以获取预设的显式多核变换对的语法表(如上述表八所示),可以从表八中确定出当前块的高度和宽度、变换核对索引共同对应的变换核对,即为当前块对应的变换核对。例如,当前块的宽度大于宽度,变换核对索引为3,则变换核对为(dst7,dct8)。
[0396]
在本公开的一种可能的实施方式中,在使用帧内预测模式和变换核对索引确定变换核对时,可以使用如下方式:
[0397]
如果变换核对索引为第一索引,且当前块的帧内预测模式的模式号小于或等于预设数值,则确定当前块对应的变换核对为第一变换核对,如果变换核对索引为第一索引,且当前块的帧内预测模式的模式号大于预设数值,则确定当前块对应的变换核对为第二变换核对,如果变换核对索引为第二索引,且当前块的帧内预测模式的模式号小于或等于预设数值,则确定当前块对应的变换核对为第二变换核对,如果变换核对索引为第二索引,且当前块的帧内预测模式的模式号大于预设数值,则确定当前块对应的变换核对为第一变换核对。
[0398]
在实施中,在步骤1302确定出的变换核对不是(dct2,dct2)、(dst7,dst7)、(dct8,dct8)中的任一种时,可以获取预设的显式多核变换对的语法表(如上述表七所示),可以从表七中确定出当前块对应的变换核对。
[0399]
上述第一索引为3,预设数值为34,第一变换核对为(dst7,dct8),第二索引为4,预设数值为34,第二变换核对为(dct8,dst7)。
[0400]
在本公开的一种可能的实施方式中,在使用当前块的高度和宽度、变换核对索引确定变换核对时,可以使用如下方式:
[0401]
如果变换核对索引为第一索引,且当前块的形状信息满足预设形状限制条件,则确定当前块对应的变换核对为第一变换核对,如果变换核对索引为第一索引,且当前块的形状信息不满足预设形状限制条件,则确定当前块对应的变换核对为第二变换核对,如果变换核对索引为第二索引,且当前块的形状信息满足预设形状限制条件,则确定当前块对应的变换核对为第二变换核对,如果变换核对索引为第二索引,且当前块的形状信息不满足预设形状限制条件,则确定当前块对应的变换核对为第一变换核对。
[0402]
在实施中,在步骤1302确定出的变换核对不是(dct2,dct2)、(dst7,dst7)、(dct8,dct8)中的任一种时,可以获取预设的显式多核变换对的语法表(如上述表八所示),可以从表八中确定出当前块对应的变换核对。
[0403]
上述第一索引为3,w≥h,第一变换核对为(dst7,dct8),第二索引为4,w≥h,第二变换核对为(dct8,dst7)。
[0404]
步骤1304,解码端根据变换核对,对当前块进行解码处理,得到当前块对应的重建信息。
[0405]
在实施中,在确定出当前块对应的目标变换核对后,可以使用目标变换核对,对当前块对应的量化系数进行反变换处理,得到当前块对应的残差信号,然后利用当前块周围已经重建区域内像素点的像素值按照所使用的帧内预测模式构建预测信号,然后将残差信
号与预测信号进行相加,得到当前块对应的重建信息。
[0406]
这样,就完成了当前块的解码处理。每个当前块都按照图13所示的流程进行处理,即可解码一整段的视频数据。
[0407]
需要说明的是,本公开实施例中,基于帧内预测模式、或者当前块的形状信息,自适应的调整变换核对的优先级,可以尽可能的使概率越高的变换核对,需要编码的码字越短。
[0408]
本公开实施例中,编码端在进行编码时,在选取变换核对时,还使用了当前块的帧内预测模式或者当前块的形状信息,而不是使用预设的变换核对,相应的在解码时,也使用当前块的帧内预测模式或者当前块的形状信息,而不是使用预设的变换核对,所以可以提升编解码性能。
[0409]
基于相同的技术构思,本公开实施例还提供了一种进行解码的解码端,如图14所示,该解码端包括:
[0410]
获取模块1410,用于:
[0411]
获取当前块的编码数据;
[0412]
从所述编码数据中获取所述当前块的变换核对索引,其中,所述变换核对索引对应的二值化码字的第一个比特位是基于一个上下文模型进行的自适应二进制算术解码;
[0413]
确定模块1420,用于根据所述变换核对索引,确定所述当前块对应的变换核对,其中,所述变换核对包括水平变换核和垂直变换核。
[0414]
在本公开的一种可能的实施方式中,所述变换核对索引对应的二值化码字包括多个比特位,所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术解码方式进行编码。
[0415]
在本公开的一种可能的实施方式中,所述确定模块1420,用于:
[0416]
根据所述当前块的帧内预测模式和所述变换核对索引,确定所述当前块对应的变换核对;或者,
[0417]
根据所述当前块的形状信息和所述变换核对索引,确定所述当前块对应的变换核对。
[0418]
基于相同的技术构思,本公开实施例还提供了一种进行编码的编码端,如图15所示,该编码端包括:
[0419]
确定模块1510,用于确定当前块对应的变换核对以及所述当前块对应的变换核对索引;
[0420]
编码模块1520,用于根据对所述变换核对索引对应的二值化码字的第一个比特位基于一个上下文模型进行自适应二进制算术编码的方式,对所述变换核对索引进行编码,添加至所述编码数据中。
[0421]
在本公开的一种可能的实施方式中,所述编码模块1520,用于:
[0422]
如果所述变换核对索引对应的二值化码字包括多个比特位,则对第一个比特位基于一个上下文模型进行自适应二进制算术编码,并对所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码;
[0423]
将编码后的变换核对索引,添加至所述编码数据中。
[0424]
在本公开的一种可能的实施方式中,所述确定模块1510,用于:
[0425]
确定所述当前块对应的变换核对,根据所述当前块的帧内预测模式和所述变换核对,确定所述当前块对应的变换核对索引;或者,
[0426]
确定所述当前块对应的变换核对,根据所述当前块的形状信息和所述变换核对,确定所述当前块对应的变换核对索引。
[0427]
本公开实施例中,编码端在编码当前块时,可以获取当前块对应的变换核对,进行编码处理,而不是直接获取预设的变换核对,所以可以提升编解码性能。编码端编码变换核对索引对应的二值化码字时,使用一个上下文模型对变换核对索引对应的二值化码字中第一个比特位进行编码处理,而不需要多个上下文模型,所以可以节约内存空间。另外,由于不需要多个上下文模型,所以也不需要更新上下文,可以降低编码和解码的复杂度。
[0428]
基于相同的技术构思,本公开实施例还提供了一种进行解码的解码端,如图16所示,该解码端包括:
[0429]
获取模块1610,用于:
[0430]
获取当前块的编码数据;
[0431]
从所述编码数据中获取变换核对索引,其中,如果所述变换核对索引对应的二值化码字包括多个比特位,则所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术解码方式进行编码;
[0432]
确定模块1620,用于根据所述变换核对索引,确定所述当前块对应的变换核对,其中,所述变换核对包括水平变换核和垂直变换核。
[0433]
在本公开的一种可能的实施方式中,所述变换核对索引的第一个比特位是基于一个上下文模型进行的自适应二进制算术解码。
[0434]
在本公开的一种可能的实施方式中,所述确定模块1620,用于:
[0435]
根据所述当前块的帧内预测模式和所述变换核对索引,确定所述当前块对应的变换核对;或者,
[0436]
根据所述当前块的形状信息和所述变换核对索引,确定所述当前块对应的变换核对,其中,所述变换核对包括水平变换核和垂直变换核。
[0437]
基于相同的技术构思,本公开实施例还提供了一种进行编码的编码端,如图17所示,该编码端包括:
[0438]
确定模块1710,用于确定当前块对应的变换核对以及所述当前块对应的变换核对索引;
[0439]
编码模块1720,用于如果所述变换核对索引对应的二值化码字包括多个比特位,则对所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码,添加至所述编码数据中。
[0440]
在本公开的一种可能的实施方式中,所述编码模块1720,还用于:
[0441]
对所述第一个比特位基于一个上下文模型进行自适应二进制算术编码。
[0442]
在本公开的一种可能的实施方式中,所述确定模块1710,用于:
[0443]
确定所述当前块对应的变换核对,根据所述当前块的帧内预测模式和所述变换核对,确定所述当前块对应的变换核对索引;或者,
[0444]
确定所述当前块对应的变换核对,根据所述当前块的形状信息和所述变换核对,确定所述当前块对应的变换核对索引。
[0445]
本公开实施例中,编码端在编码当前块时,可以获取当前块对应的变换核对,进行编码处理,而不是直接获取预设的变换核对,所以可以提升编解码性能。编码端编码变换核对索引时,使用旁路的二进制算术编码方式对变换核对索引对应的二值化索引中除第一个比特位之外的其它比特位中至少一个比特位进行编码处理,对于这至少一个比特位不需要存储上下文模型,所以可以节约内存空间。另外,由于至少一个比特位未使用cabac方式,而使用旁路的二进制算术编码方式,所以也可以降低编码和解析的复杂度。
[0446]
基于相同的技术构思,本公开实施例还提供了一种进行解码的解码端,如图18所示,该解码端包括:
[0447]
获取模块1810,用于:
[0448]
获取当前块的编码数据;
[0449]
从所述编码数据中获取变换核对索引,并获取所述当前块的帧内预测模式或者所述当前块的形状信息;
[0450]
确定模块1820,用于根据所述当前块的帧内预测模式和所述变换核对索引,确定所述当前块对应的变换核对,或者,根据所述当前块的形状信息和所述变换核对索引,确定所述当前块对应的变换核对,其中,所述变换核对包括水平变换核和垂直变换核。
[0451]
在本公开的一种可能的实施方式中,所述确定模块1820,用于:
[0452]
如果所述变换核对索引为第一索引,且所述当前块的帧内预测模式的模式号小于或等于预设数值,则确定所述当前块对应的变换核对为第一变换核对;
[0453]
如果所述变换核对索引为第一索引,且所述当前块的帧内预测模式的模式号大于预设数值,则确定所述当前块对应的变换核对为第二变换核对;
[0454]
如果所述变换核对索引为第二索引,且所述当前块的帧内预测模式的模式号小于或等于预设数值,则确定所述当前块对应的变换核对为第二变换核对;
[0455]
如果所述变换核对索引为第二索引,且所述当前块的帧内预测模式的模式号大于预设数值,则确定所述当前块对应的变换核对为第一变换核对。
[0456]
在本公开的一种可能的实施方式中,所述确定模块1820,用于:
[0457]
如果所述变换核对索引为第一索引,且所述当前块的形状信息满足预设形状限制条件,则确定所述当前块对应的变换核对为第一变换核对;
[0458]
如果所述变换核对索引为第一索引,且所述当前块的形状信息不满足预设形状限制条件,则确定所述当前块对应的变换核对为第二变换核对;
[0459]
如果所述变换核对索引为第二索引,且所述当前块的形状信息满足预设形状限制条件,则确定所述当前块对应的变换核对为第二变换核对;
[0460]
如果所述变换核对索引为第二索引,且所述当前块的形状信息不满足预设形状限制条件,则确定所述当前块对应的变换核对为第一变换核对。
[0461]
在本公开的一种可能的实施方式中,所述变换核对索引对应的二值化码字的第一个比特位是基于一个上下文模型进行的自适应二进制算术解码。
[0462]
在本公开的一种可能的实施方式中,所述变换核对索引对应的二值化码字包括多个比特位,所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术解码方式进行编码。
[0463]
基于相同的技术构思,本公开实施例还提供了一种进行编码的编码端,如图19所
示,该编码端包括:
[0464]
获取模块1910,用于获取当前块的帧内预测模式、所述当前块对应的变换核对,或者所述当前块的形状信息、所述当前块对应的变换核对;
[0465]
确定模块1920,用于根据所述当前块的帧内预测模式和所述当前块对应的变换核对,确定所述当前块对应的变换核对索引,或者,根据所述当前块的形状信息和所述当前块对应的变换核对,确定所述当前块对应的变换核对索引;
[0466]
编码模块1930,用于对变换核对索引进行编码处理,添加至所述编码数据中。
[0467]
在本公开的一种可能的实施方式中,所述确定模块1920,用于:
[0468]
如果所述变换核对为第一变换核对,且所述当前块的帧内预测模式的模式号小于或等于预设数值,则确定所述当前块对应的变换核对索引为第一索引;
[0469]
如果所述变换核对为第二变换核对,且所述当前块的帧内预测模式的模式号大于预设数值,则确定所述当前块对应的变换核对索引为第一索引;
[0470]
如果所述变换核对为第二变换核对,且所述当前块的帧内预测模式的模式号小于或等于预设数值,则确定所述当前块对应的变换核对索引为第二索引;
[0471]
如果所述变换核对为第一变换核对,且所述当前块的帧内预测模式的模式号大于预设数值,则确定所述当前块对应的变换核对索引为第二索引。
[0472]
在本公开的一种可能的实施方式中,所述确定模块1920,用于:
[0473]
如果所述变换核对为第一变换核对,且所述当前块的形状信息满足预设形状限制条件,则确定所述当前块对应的变换核对索引为第一索引;
[0474]
如果所述变换核对为第二变换核对,且所述当前块的形状信息不满足预设形状限制条件,则确定所述当前块对应的变换核对索引为第一索引;
[0475]
如果所述变换核对为第二变换核对,且所述当前块的形状信息-满足预设形状限制条件,则确定所述当前块对应的变换核对索引为第二索引;
[0476]
如果所述变换核对为第一变换核对,且所述当前块的形状信息不满足预设形状限制条件,则确定所述当前块对应的变换核对索引为第二索引。
[0477]
在本公开的一种可能的实施方式中,所述编码模块1930,用于:
[0478]
根据对所述变换核对索引对应的二值化码字的第一个比特位基于一个上下文模型进行自适应二进制算术编码的方式进行编码。
[0479]
在本公开的一种可能的实施方式中,所述编码模块1930,用于:
[0480]
如果所述变换核对索引对应的二值化码字包括多个比特位,则对所述多个比特位中除所述第一个比特位之外的其它比特位中至少有一个比特位采用旁路的二进制算术编码方式进行编码。
[0481]
本公开实施例中,编码端在进行编码时,在选取变换核对时,还使用了当前块的帧内预测模式或者当前块的形状信息,而不是使用预设的变换核对,相应的在解码时,也使用当前块的帧内预测模式或者当前块的形状信息,而不是使用预设的变换核对,所以可以提升编解码性能。
[0482]
需要说明的是:上述实施例提供的解码端在进行解码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将解码端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另
外,上述实施例提供的解码端与进行解码的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0483]
需要说明的是:上述实施例提供的编码端在进行编码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将编码端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的编码端与进行编码的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0484]
图20是本发明实施例提供的一种编码端的结构示意图,该编码端2000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)2001和一个或一个以上的存储器2002,其中,所述存储器2002中存储有至少一条指令,所述至少一条指令由所述处理器2001加载并执行以实现上述进行编码的方法的步骤。
[0485]
图21是本发明实施例提供的一种解码端的结构示意图,该解码端2100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)2101和一个或一个以上的存储器2102,其中,所述存储器2102中存储有至少一条指令,所述至少一条指令由所述处理器2101加载并执行以实现上述进行解码的方法的步骤。
[0486]
本公开实施例还提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的进行编码和进行解码的方法步骤。
[0487]
本公开实施例还提供了一种编码端,包括处理器和存储器,其中,所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现上述所述的进行编码的方法步骤。
[0488]
本公开实施例还提供了一种解码端,包括处理器和存储器,其中,所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现上述所述的进行解码的方法步骤。
[0489]
本公开实施例还提供了一种编码和解码的系统,所述系统包括编码端和解码端,其中:
[0490]
所述编码端,如上述进行编码处理的编码端;
[0491]
所述解码端,如上述进行解码处理的解码端。
[0492]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0493]
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
再多了解一些

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

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

相关文献