变换编码:DCTnxn(4,8,16,32)、DST4x4、Hardmard 2nx2n
主要分析内容如下:
- DCT变换
- DCT变换尺寸的影响:
- DST变换
- Hardmard变换
- H264&H265标准中,关于变换编码的使用
- H264变换、量化过程整合
变换编码的目的:大多数图像像素间强相关性,适当的变换可使图像能量在空间域的分布转到变换域的相对集中分布,以达到去除空间冗余的目的,结合量化,“z”扫描和熵编码等后续操作,达到有效编码的目的。
EG:
- 1. DCT变换,变散余弦变换(Discrete Cosine Transform)
图像处理中主要采用的公式:
Eg:
序列1,元素幅值差异较大,相邻元素间相关性较弱,DCT结果能量分布较分散
序列2,元素幅值差异较小,相邻元素间相关性较强,DCT结果能量集中于DC系数上,AC系数幅值非常小;
H264中,采用二维4x4DCT,推导过程如下:
其中,可分解成二个一维4x4整数DCT,其中之一,
同理,二维情形如下:
H.264规定,变换过程中只进行上式矩阵中,剩余部分由量化过程一并进行。因此整个变换过程只有加法和移位操作,大幅提高了计算速度 。
H.264&H.265:
H.264中,将a,b,c值作了相应处理,将c,b值的比值定为0.5,从而减化了整个计算。
H.265中,将a,b,c值作了相应放大,同时乘以128,并作整数化处理
a=64, b=83,c=36; 对应变换矩阵为:
2.DCT变换尺寸的影响:
Eg: 采用不用的DCT尺寸,进行变换,分析去相关性影响:
基于图像熵,计算相应比值。由上图可见,DCT尺寸越大,去相关性越好。
由于DCT过程,都有一个浮点转整数的过程,如果采用浮点,编解码过程将会出现失配,如果采用整数过程,将会损失精度。
DCT过程,综合结论:
- 相关性强的图像内容,都可采用DCT,可有效将能量在变换域中进行集中。
- 越平担的区域,将采用越大的DCT尺寸。(基于残差的分布信息,选择DCT尺寸更合适)
相关性不强的图像内容,怎么办?
1. 不作变换处理,或DST来处理。2. 小尺寸的DCT变换,将会出现大量高频能量,即DC系数,提取后,系数相关性适中,将采用Hardmard变换处理。
3. DST变换 (DiscreteSineTransform)
此变换或适应于距离预测像素越远,预测残差幅度越大的特性。目前,仅H265中,帧内4x4模式亮度分量残差编码使用了4x4DST,能使帧内编码性能提高0.8%。
除变换系数不同外,其他方面与4x4DCT一致,因此DST将不增加计算复杂度。
4. Hardmard变换
变换矩阵为,为奇数行偶对称,偶数行奇对称的正交矩阵,只含有加减运算,易于实现,用于DC系数数进一步去除相关性。
计算复杂度低,同时可近似达到DCT的性能,在RDO中被采用于替代SAD。
EG:
SAD:114, DCT:98 SATD(Hardmard):96
I_block中,用于初选方向;P/B_block中,用于计算亚像素点匹配;目前H264&H265标准参考模型中,均采用。
5. H264&H265标准中,关于变换编码的使用
DCT,DST,HARDMARD三种变换,其中,
- DCT可有效去除能量相关性,越大的尺寸,去除能量相关性越好;
- Hardmard, 去除能量相关性方面弱于DCT,但计算简单,可用于DC系数变换和快速模式决策中。
- DST,去除能量相关性弱于DCT,适用于距离预测值越远,幅值越大的编码块;
- H265中,用各种DCT尺寸来应对不同的图像内容,弃用了DC系数单独处理过程;
变换编码选择异同:
变换系数不同,且H264中,将部分变换系数与量化过程进行了合并,H265中则没有对应操作。
改进空间:
- 相对于基于图像内容作DCT尺寸选择来说,基于残差的分布来换DCT尺寸更合适;
- 量化过程为非标准过程,调整不同位置的量化表或用先验量化表,可有效降低有损失真。
6. H264变换、量化过程整合
以UV为例,作说明:
1. DCT、Hardmard过程,H264和H265可以互用,只是表不一致;
2. 存储空间方面,可以互用,单独加入DC存储;
3. 扫描过程,可互用;