先说一句,在传统的混合编码框架中,预测和变换是不会产生失真的,只有量化才会导致失真。
貌似264没有把变换和量化分的很清楚,没有特别明显的界限感,下面实际看看。
264的basic transform或者说是core transform是4x4或者8x8的整数变换,是DCT的近似。
首先聊聊亮度的变换量化
除了(a)使用16x16Intra Prediction进行编码的宏块和(b)在High profile打开用于宏块的8x8整数变换两种情况,都是使用下图的流程进行亮度分量的变换量化的:

图中每一个小块尺寸为4x4,使用4x4的变换核进行变换,在缩放和量化之后,按照z顺序扫描。
如果出现前面说的(a)情况,那么流程会有一些变化,如下所示:

在4x4的小块使用4x4的变换核进行变化之后,每个4x4小块的DC系数拼起来,得到一个4x4的DC系数组成的块,再进行一次哈达玛变换。这是因为这些直流系数是高度相关的,使用两次变换可以更彻底的去除频域冗余,提高编码性能。反变换过程如下所示:

如果出现前面说的(b)情况,就是使用8x8的变换核,对于那些使用8x8Intra Prediction或者是任一Inter Prediction的宏块,变换流程如下所示:

再聊聊色度的变换量化
现在假设是YUV420格式,对应16x16大小的亮度宏块,有两个8x8大小的色度宏块。色度的变换量化过程和亮度的(a)情况相似,流程如下所示:

反流程如下所示:

先建立一个对264的变换量化的整体认识,具体细节比如量化步长、变换核什么的等实际用到了再看。。。
本文详细介绍了H.264编码中的变换和量化过程,包括亮度和色度分量的处理。对于亮度,讨论了不同情况下的变换流程,如16x16 Intra Prediction和8x8 Inter Prediction宏块的处理方式。色度变换与亮度类似,但与亮度的16x16宏块不同,它对应于8x8的色度宏块。量化步长和变换核的具体细节在实际应用中尤为重要,是理解H.264编码效率的关键。
914

被折叠的 条评论
为什么被折叠?



