H. 264 算法特点

36 篇文章 2 订阅
33 篇文章 2 订阅
 H. 264 是联合视频组JVT 开发的一个新的数字视频编码标准,它既是ITU- T 的H. 264 算法,又是ISO/ IEC 的MPEG- 4 的第10 部分。1998 年1 月份开始征集H. 264 算法草案,1999 年9 月完成第一个草案,2001 年5 月制定了其测试模式TML- 8,2002 年6 月JVT 第5 次会议通过了H. 264 的FCD 版,2003 年5 月,ITU 正式核准颁布。
H. 264 算法还是基于块的混合编码技术,编码过程基本与以前的编码标准相同,只是每个功能模块都进行了技术更新,帧内预测、帧间预测、整数DCT 变换、环路滤波、熵编码等模块都做了技术提升。
(1)NAL 与VCL 网络适配层NAL(Network Abstraction Layer)是H. 264 为适应网络传输应用而制定的一层数据打包操作。传统的视频编码算法编完的视频码流在任何应用领域下(无论用于存储、传输等)都是统一的码流模式,视频码流仅有视频编码层VCL(Video Coding Layer)。而H. 264 可根据不同应用增加不同的NAL 片头,以适应不同的网络应用环境,减少码流的传输差错。
(2)帧内预测H. 264 为能进一步利用图像的空间相关性,H. 264 引入了多模式的帧内预测以提高压缩效率。简单地说,帧内预测编码就是用周围邻近的像素值来预测当前的像素值,然后对预测误差进行编码。预测是基于块的,亮度分量(Luma)块的大小可以在16 × 16 和4 × 4 之间选择,16 × 16 块有4 种预测模式,4 × 4 块有9 种预测模式;色度分量(Chroma)预测是对整个8 × 8 块进行的,预测模式同亮度16 × 16 的4 种预测模式。
(3)帧间预测帧间预测即传统的运动估计ME 加运动补偿MC,H. 264 的运动估计更精准、快速,效果更好。
1)多变的宏块大小传统的运动估计块大小是16 × 16,由于运动物体复杂多变,仅使用一种模式效果不好。H. 264 采用了7 种方式对一个宏块进行分割,分别为16 × 16、16 × 8、8 × 16、8 × 8、8 × 4、4 × 8、4 × 4,每种方式下块的大小和形状都不相同,这就使编码器可以根据图像的内容选择最好的预测模式。实验表明,与仅使用16 × 16 块进行预测相比,使用不同大小和形状的块可以使码率节省15% 以上。
2)更精细的像素精度在H. 264 算法中,Luma 分量的运动矢量MV 使用1/ 4 像素精度。Chroma 分量的MV 由Luma MV 导出,由于Chroma 分辨率是Luma 的一半(YUV4: 2: 0),所以其MV 精度将为1/ 8。如此精细的预测精度较之整数精度可以使码率节省超过20%。
3)更多参考帧H. 264 支持多参考帧预测(Multiple Reference Frames),即可以有多于1 个(最多5 个)的在当前帧之前解码重建的帧,作为参考帧产生对当前帧的预测(Motion- compensated Prediction)。这特别适用于视频序列中含有周期性运动的情况。
4)环路滤波环路滤波(Loop Filter)的作用是,消除经反量化和反变换后重建图像中由于预测误差产生的块效应,从而一方面改善图像的主观质量,另一方面减少预测误差。与以往的Deblocking Filter 不同的是,经过滤波后的图像将根据需要放在缓存中用于帧间预测,而不是仅仅在输出重建图像时用来改善主观质量,也就是说该滤波器位于解码环中,而非解码环的输出外,因而得名Loop Filter。
(4)整数DCT 变换
传统的DCT 是由浮点算法定点实现,所以IDCT 不是可逆的,容易造成解码图像的周围“拖尾”现象。H. 264 对帧内或帧间预测的残差(Residual)进行整数DCT 变换编码。新标准对DCT 的定义做了修改,使得变换仅用整数加减法和移位操作即可实现,这样在不考虑量化影响的情况下,解码端的输出可以准确地恢复编码端的输入。此外,该变换是针对4 × 4 块进行的,这也有助于减少块效应。为了进一步利用图像的空间相关性,在对色度(Chroma)的预测残差和16 × 16 帧内预测的预测残差进行上述整数DCT 变换之后,标准还将每个4 × 4 变换系数块中的DC 系数组成2 × 2 或4 × 4 大小的块,进一步做哈达玛(Hadamard)变换。
(5)熵编码
对于预测残差,H. 264 有两种熵编码的方式:基于上下文的自适应变长码CAVLC(Context- based Adaptive Variable Length Coding)和基于上下文的自适应二进制算术编码CABAC(Context- based Adaptive Binary Arithmetic Coding);如果待编码的数据不是预测残差这一类型,则H. 264 采用Exp- Golomb 码或CABAC 来编码,具体选用哪种编码类型视编码器的设置而定。
1)CAVLC
 可变字长编码VLC 的基本思想就是,对出现频率大的符号使用较短的码字,而出现频率小的符号采用较长的码字,这样可以使平均码长最小。在CAVLC 中,H. 264 采用若干VLC 码表,不同的码表有不同的概率模型。编码器能够根据上下文,如周围块的非零系数或系数的绝对值大小,在这些码表中自动地选择,最大可能地与当前数据的概率模型匹配,从而实现了上下文自适应的功能。
2)CABAC
算术编码是一种高效的熵编码方案,其每个符号所对应的码长被认为是分数。由于每一个符号的编码都与以前编码的结果有关,所以它考虑的是信源符号序列整体的概率特性,而不是单个符号的概率特性,因而它能够更大程度地逼近信源的极限熵,极大的降低码率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值