H.264/AVC编码器原理 下
5.7整数变换与量化
为了进一步压缩图像,一般可以采用变换编码及量化来消除图像信号中的相关性及减小图像编码的动态范围。在频域中,图像信号能量大部分集中在低频区,相对时域信号,码率有较大的下降。
5.8 CAVLC(基于上下文自适应的可变长编码)
5.8.1 熵编码的基本原理
熵编码是无损压缩编码方法,由其生成的码流可以经解码无失真地恢复出原数据,熵编码的实质是统计编码。
定义符号ai出现的自信息量为:I(ai)=-log2p(ai); P(ai)是ai出现的概率
平均信息量:,称H(X)为信息源的熵。
5.8.2 CAVLC的基本原理
在H.264的CAVLC中,通过已编码句法元素的情况,动态的调整编码中使用的码表可以获得极高的压缩比。
CAVLC用于亮度和色度残差数据的编码,残差经变换编码后特点:4×4块数据预测、变换、量化后,非零系数主要在低频部分,高频系数大部分为零;量化后经zig-zag扫描后,DC系数附近非零系数值较大,高频位置的非零系数大多数为+1和-1;相邻4×4系数是相关的。
5.8.3 CAVLC的上下文模型
利用已编码符号所提供的相关性,为所要编码的符号选择合适的上下文模型,进而降低符号间的冗余度。在CAVLC中上下文模型的选择主要体现在:非零系数编码所需表格的选择以及拖尾系数后缀长度的更新。
5.8.7 CAVLC与UVLC比较
UVLC(Universal Variable Length Coding)即基于指数哥伦布的统一变长编码实现简单,不需浪费空间来储存映射码表。
5.9 CAVBAC(基于上下文的自适应性二进制算术编码)
5.9.1 自适应性算术编码
1、算法流程
在算术编码的递进计算过程中,编码器必须保存以下变量记录状态:
(1)当前区间的下限L;
(2)当前区间的大小R;
(3)当前字符Binval
(4)各个字符的概率Px
R的递进关系如下:R=RxPx;
2、自适应算术编码的计算复杂度及优化
算术编码的复杂度主要在两方面:概率的估计及更新;
(1)CABAC的概率模型
假设输入流为T,当前字符为Binval,在Binval之前的字符为z,,条件概率P(Binval|z)就是当前字符的概率估计值。
CABAC在计算复杂度和编码效率之间作了折中,建立了一个基于查表的概率模型,将从0到0.5范围内的概率量化为64个值,这些概率对应于最小概率符号LPS,则最大概率符号MPS的概率为1-Plps。字符的概率估计被限制在表内,概率的刷新也不是去计算P(Binval|z),而是按照某种法则在表中查找。
(2)乘法优化
CABAC首先建立了一个4×64的二维表格,存储预先计算好的乘法结果,表格的入口参数一个是Px,另一个为R。
5.9.2 上下文模型
1、算术编码的生命期
为了将差错控制在一定范围内,CABAC将片作为算术编码的生命期,在每个片开始时,按照一定的法则为编码器指定初始的,并初始化[0,1)为当前区间。
5.10 码率控制
5.10.1 基于Lagrangian优化算法的H.264编码控制模型
视频编码的控制都是编码器实现的核心问题。由于视频序列中的图像内容随着空间与时间的不同而变化很大,需要为图像的不同部分选择不同的编码参数进行压缩编码,而编码控制的目的就是确定一组编码参数。
1、Lagrangian优化算法
在给定的限定码率Rc下,对于给定信源样本序列所选的编码模式,应使编码后的失真度最小 minD(S,I) R(S,I)<=Rc;
2、编码控制模型
在Lagrange参数与量化参数Q选定后,H.264通过最小化Lagrangian代价函数实现对每一个宏块的编码模式的选定。宏块Sk的Lagrangian代价函数为:
其中Ik为相应的编码模式。
5.11 去方块滤波
在图像编解码过程中由于:1、基于块的帧内和帧间预测残差的DCT变换,变换系数的量化过程相对粗糙,会造成在图像边界上的视觉不连续;2、运动补偿预测;这两个主要的原因造成了图像出现了方块效应。
在视频编解码器中加入去方块滤波器的方法有两种:后置滤波和环路滤波器;
5.11.1 去方块滤波的概念
如果在DCT边界上正好是图像的边界,若不加以判断而误认为是方块效应,则可能造成新的误差,因此在滤波方块效应时,应该先判断边界是真实图像还是方块效应形成的伪边界。
5.11.2 边界分析
1、4×4方块的误差分析
2、自适应边界级滤波器
3、自适应样点级滤波器
4、自适应片级滤波
5.12 其余特征
5.12.1 参考图像的管理
H.264中已编码图像存储在编码器的参考缓冲区,即解码图像缓冲区(DPB),并有相应的参考图像列表list0,以供帧间宏块的运动补偿预测使用。
在DPB中被编码重建或解码的图像被标为一下四种图像之一:(1)“非参考图像”;(2)短期参考图像;(3)长期参考图像;(4)直接输出显示。当短期和长期图像号达到参考帧最大数时,最高索引号的图像被移出缓冲区,即实行滑动窗口内存控制。
参考图像缓冲区通常由编码器发送即时解码刷新图像(IDR)编码图像刷新,当接收到IDR时,编码器立即将缓冲区的图像标记为“非参考”。通常,视频编码的第一帧图像都是IDR图像。
5.12.2 重排序
4×4变换系数通过zig-zag顺序映射为一个16元素的矩阵。
5.12.3 隔行视频
效率高的隔行视频编码工具应该能优化宏块的压缩。
5.12.4 数据分割片
组成片的数据存放在3个独立的DP(数据分割,A、B、C)中,各自包含一个编码片的子集。
5.12.5 H.264传输
H.264的编码视频序列包括一系列的NAL单元,每个NAL单元包含一个RBSP。