`
mmdev
  • 浏览: 12846517 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

MPEG4 & H.264学习笔记之三 ------ 熵编码

 
阅读更多

3.5 熵编码
熵编码把一系列用来表示视频序列的元素符号转变为一个用来传输或是存储的压缩码流.输入的符号可能包括量化的变换系数(像上面所说的运行级或零树),运动向量(对于每个运动补偿块的向量值x和y),标记(在序列中用来表示重同步位的点),头(宏块头,图象头,序列的头等)以及附加信息(对于正确解码来说不重要的信息).在这一节中,我们将介绍一些预测性的预编码的方法(用来表示编码帧中的区域关系)在之后接着介绍两种被广泛使用的熵编码技术----修改后的哈夫曼编码和算术编码.

3.5.1 预测编码
在图象的某些区域中,某些符号是高度相关的.比如说,相邻的intra编码块的平均值或DC值是非常相近的,相邻的运动向量可能会有相似的x和y值,等等.编码效率可以由从前面编码的数据预测当前块或宏块的元素,并编码它们之间的差异值来进行提高.一个块或宏块的运动向量指明了在之前编码的帧的预测参考值的编移量.相邻块或宏块的向量经常是相关的因为物体的运动可能会经过帧的一个很大的区域.这对于很小的块或有大量运动物体的运动来说尤其是如此的.运动向量的压缩可以由从之前的编码向量来预测每个运动向量来改进.一个对于当前宏块X的向量的简单的预测是水平相邻的宏块A,三个或更多的之前编码的向量可以被用来预测宏块X的向量(比如A,B和C).预测的和实际运动向量的差值被编码并传输.

量化参数或量化器步长控制了压缩效率和图象质量的平衡量.在实时的视频编解码中,在一个编码帧中修改量化是必要的(例如改变压缩率来使编码码率与传输信道码率相适应).在相邻的宏块中很小的改变参数值就是足够的了.修改了的量化参数必须告诉解码器,而我们不把新的量化参数值传输走,而是传输一个差异值(比如+1,-1或+2,-2)来表示这个参数值变化了多少.因为用来编码差异值要比编码整个量化参数来说要使用更少的位.

3.5.2 变长编码
一个变长的编码器把输入符号映射到一系列的码字(VLC).每个符号映射到一个码字,而码字有变化的长度但是必须包括整数个位.经常出现的符号用短的VLC来表示,而不常出来的符号用长的VLC来表示.对于大量压缩符号来说,这样的操作会让压缩率提高.

3.5.2.1 哈夫曼编码
哈夫曼编码向每个VLC进行赋值的方法是基于对于不同的符号的出现机率的不同来定的.根据Huffman在1952年提出的原始设想,计算每个符号的出现机率是必要的,用这个结果来构造一系列的变长的码字.

如果分布机率值是准确的,那么哈夫曼编码提供了一种对于原始数据来说很有效的压缩方法.然而,为了达到最优化的压缩,对于不同序列的不同的码表是需要的.

3.5.2.2 预计算的哈夫曼编码
哈夫曼编码过程对于视频的编解码有两个不利的地方.首先,解码器必须使用在编码器设置的相同的码字来进行解码.传输这些信息到解码端会加大传输内容,并降低压缩效率,尤其对于短的视频序列来说.第二,对于大的视频序列的可能性值表在视频数据编码之前是不能得到的,这就会造成一些在编码过程的延时.由于这些原因,近来的图形和视频编码标准基于通常的视频序列的统计模型进行编码,用来解决这个问题.

变换系数(TCOEF)
MPEG-4视频部分使用量化系数的3D编码,它们使用每个码字来表示一个(run,level,last)的组合.总共102个特定的(run,level,last)组合有VLC值.在每个码字的last位是's',用来指明符号的解码系数符号(0表示正,1表示负).

一个包含超过八个0的run值的码字是无效的,这样任何以000000000开始的码字都表示码流中有错误.所有的其他序列都可以被用有效的编码值来进行解码.注意最小的码被赋给小的run和小的level值中,因为它们发生的机率比较大.

运动向量差(MVD)
差值编码的运动向量被编码为一对VLC,一个是对于x值的,一个是对于y值的.注意最短的码表示小的运动向量差值(比如MVD=0表示简单的码值1).这些码表与哈夫曼值是非常相似的,因为每个符号都被赋给了唯一个码字.通常用的符号被赋了短码字,在单独的一个表中,没有码字的前缀是同其他码字相同的.

3.5.2.3 其他的变长编码
与哈夫曼和基于哈夫曼的编码一样,一些其他的VLC方法被用在了视频编码的程序中.基于哈夫曼编码的一个很大的不利是它们对于传输错误是敏感的.在VLC序列的错误会导致解码器损失同步信息,并不能正确地进行解码,这样就导致了使解码处于混乱状态.一个预定义的编码表的缺点在于解码端和编码端必须保存同样的码表.一个可代替它的方式是用如果输入的符号已知时可自生成码的方法,比如说指数Golomb编码法.


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jasonme/archive/2005/04/10/341902.aspx

分享到:
评论

相关推荐

    H.264视频编码性能分析

    同以往标准相比,它采用了许多新技术,例如1/4,1/8精度的子像素运动估计,多参考帧技术,去块滤波,加强的熵编码,小块的整数变换等来提高编码效果,但这些技术同时也增加了H.264编码器的复杂度,限制了H.264在很多...

    H.264熵编码分析

    H264协议中熵编码算法分析,包括指数编码,CAVLC,和CABAC,举例分析算法的细节,一看就懂。

    h.264熵编码分析(v2.0)

    关于h.264熵编码的一些分析和详细的讲述

    基于H.264的熵编码结构

    摘 要:Exp-Golomb和CAVLC是H.264引入的新的熵编码形式,通过引入上下文的方式,减少编码码流,提高鲁棒性。该文提出一种熵编码的硬件结构,采用全0子块探测,双RAM结构,流水线技术,以及通过计算代替查找表的方法...

    高效的H.264并行编码算法

    摘要: CABAC是H.264/AVC视频压缩标准主要档次中采用的熵编码机制,结合RDO模式选择技术,可以降 低2o%的编码码率,但是编码器计算复杂度却同时大大增加.对算法进行并行化是有效加快编码速度的方法,但是, 由于...

    论文研究-基于H.264的多视点立体视频解码器优化算法研究.pdf

    为了提高多视点立体视频的解码速度,基于H.264/MVC标准,根据码字前缀的特点,将原有码表划分为若干区域,精确了查表范围,优化了熵解码中CAVLC的查表过程,并将优化后的解码器移植到播放器中。实验结果表明,提出的...

    T-REC-H.266-202008-I!!PDF-E.pdf

    H.266/VVC的压缩视频方式与H.265/HEVC相似,但是在分区、预测和熵编码等方面都有所改进。与H.265相比,H.266进一步优化了压缩性能,在保证视频清晰度不变的情况下,H.266存储体积减小一半、宽带流量节省一半,画质更...

    新一代视频压缩编码标准H.264—很清晰的

    前 言 2 第1章 绪 论 9 1.1信息化与视频通信 9 1.1.1什么是信息 9 1.1.2什么是信息化 9 1.1.3 我国的信息化和视频通信 9 1.2 视频信息和信号的特点 10 1.2.1 直观性 10 ...附录三 H.264档次和级 318

    H.264视频编码研究的PPT

    同以往标准相比,它采用了许多新技术,例如1/4,1/8精度的子像素运动估计,多参考帧技术,去块滤波,加强的熵编码,小块的整数变换等来提高编码效果,但这些技术同时也增加了H.264编码器的复杂度,限制了H.264在很多...

    论文研究-H.264/AVC标准中CAVLC和CABAC熵编码算法研究 .pdf

    H.264/AVC标准中CAVLC和CABAC熵编码算法研究,郑幸福,龙昭华,本本文主要分析H.264中两种熵编码技术:基于上下文自适应可变长编码(CAVLC, Context-Based Adaptive Variable Length Coding)和基于上下文二进制算

    H.264熵编码CABAC经典文章与提案汇兑

    本人学CABAC时收集的H.264熵编码CABAC的经典文章与JVT关于CABAC的提案汇兑,共32个文件。

    离散余弦变换matlab代码-H.264-based-Motion-Compensation-Residual-Coding:在本项目中,您将

    H.264 的运动补偿残差编码 编程语言 MATLAB 操作说明 运行“MAIN.m” 介绍 该项目旨在让学生实现一个简单的 H.264/AVC 帧间编码器。 在这个过程中,学生将使用运动估计、4*4 整数离散余弦变换、量化和熵编码等工具。

    H.264详解经典资料

    详细了解H.264,包括Overview,帧内帧间,block-size,Loopfilte,熵编码等

    H.264视频压缩熵编码和网络传输的研究

    H.264视频压缩熵编码和网络传输的研究 研究生论文

    小波包分解&小波包能量熵算例.rar

    说明: 关于小波包分解和小波包能量熵的算例,可直接运行。(Examples of wavelet packet decomposition and wavelet packet energy entropy.) 文件列表: 小波包分解&小波包能量熵算例\107.mat, 2931672 , 2000-01...

    H.264熵解码分析

    H.264协议中的三种熵编码算法的解码算法,即包括 CAVLC CABAC 指数编码,对于英语不好的协议初学者挺不错的。

    论文研究-H.264解码器中CAVLC码表查找算法的改进 .pdf

    H.264解码器中CAVLC码表查找算法的改进,刘莉媛,穆翠英,H.264视频编码标准在基本档次和扩展档次采用基于上下文的自适应可变长编码(CAVLC)熵编码方法,但标准并未明确规定CAVLC的具体编解码方法

    h264 熵编码

    在解析h264 关键帧,获取视频的高宽时,需要解析 H264 sps pps 信息时,此时就需要知道其中的熵编码,此文档是不错之选

    H.264视频编码介绍

     H.264是在MPEG-4技术的基础之上建立起来的,其编解码流程主要包括5个部分:帧间和帧内预测(Estimation)、变换(Transform)和反变换、量化(Quantization)和反量化、环路滤波(Loop Filter)、熵编码(Entropy ...

Global site tag (gtag.js) - Google Analytics