H264---熵编码---CAVLC(上下文自适应的变长编码Context-based Adaptive Variable Length Coding)

《新一代视频压缩编码标准H.264》毕厚杰主编 6.8.3节

一、熵编码回顾

熵编码: 
	1、无损编码:解码后可无失真还原信源信息; 
	2、利用信源符号的概率特性,使编码后的信息尽可能接近信源的熵; 

常见熵编码方法: 
	变长编码:哈夫曼编码、香农-费诺编码、指数哥伦布编码; 
	算数编码;

2. CAVLC的基本原理

我们知道,CAVLC的全称叫做“上下文自适应的变长编码Context-based Adaptive Variable Length Coding”。所谓“上下文自适应”,说明了CAVLC算法不是像指数哥伦布编码那样采用固定的码流-码字映射的编码,而是一种动态编码的算法,因而压缩比远远超过固定变长编码UVLC等算法。

在H.264标准中,CAVLC主要用于预测残差的编码。在博文中我们给出了H.264的编码流图,其中可知,熵编码的输入为帧内/帧间预测残差经过变换-量化后的系数矩阵。以4×4大小的系数矩阵为例,经过变换-量化后,矩阵通常呈现以下特性:
 1、经过变换量化后的矩阵通常具有稀疏的特性,即矩阵中大多数的数据已0为主。CAVLC可以通过游程编码高效压缩连续的0系数串;
 2、经过zig-zag扫描的系数矩阵的最高频非0系数通常是值为±1的数据串。CAVLC可以通过传递连续的+1或-1的长度来高效编码高频分量;
 3、非零系数的幅值通常在靠近DC(即直流分量)部分较大,而在高频部分较小;
 4、矩阵内非0系数的个数同相邻块相关;
鉴于上述的特性3和4,针对待编码的系数在系数矩阵中不同的位置,以及相邻块的有关信息,在编码时采用不同的码表进行编码。CAVLC的这种特性,体现了命名中的“上下文自适应”的方法。

3、CALVC编码涉及的相关概念

编码需要的重要元素:
一般都是以4X4的宏块(也支持8x8宏块)做编码,所以下面是0~16

1、非零系数的个数(TotalCoeffs):取值范围为[0, 16],即当前系数矩阵中包括多少个非0值的元素;
2、拖尾系数的个数(TrailingOnes):取值范围为[0, 3],表示最高频的几个值为±1的系数的个数,如果±1 的个数大于 3 个,
只有最后 3 个被视为拖尾系数,其余的被视为普通的非零系数。
3、拖尾系数的符号:以1 bit表示,0表示+,1表示

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值