RTMP远程机器人实验系统的设计与实现客户端人机交互设计(5)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

RTMP远程机器人实验系统的设计与实现客户端人机交互设计(5)

熵编码压缩是无损压缩的一种,它是通过采用新的编码来表示输入,从而达到 预期的的效果。

CAVLC(Context Adaptive Variable Length Coding)是 H。264/MPEG-4AVC 的熵 编码方式的一种。该编码方式以 zig-zag 顺序用于对转换后的残差块编码。虽然 CAVLC 的压缩效率不如 CABAC,但实现简单,并且具有极强的兼容性,在 H。264 的所有版本 变动中没有不支持的。来~自,优^尔-论;文*网www.youerw.com +QQ752018766-

CABAC(Context Adaptive Binary Arithmatic Coding) 是 另 一 种 H。264/MPEG-4AVC 的熵编码算法。它使用不同的概率模型在不同的环境中进行编码。 流程:1。用二进制表示欲编码的符号。2。对于每一位,编码器选择一个合适的概率模 型,并通过相邻元素的信息来优化这个概率模型。3。使用算术编码压缩数据。

熵解码的主要工作就是根据程序中预定好的流程,读取对应的有效数据并将这些 数据给与解码器中相应函数的变量上,为进一步解码提供基础。

以两个解析函数之一的 CAVLC 的解码函数为例,其流程大致可分为:首先,第一 步,解析 Skip 类型的宏块,然后根据解析得到的变量启动相应函数获取 mb_type,继 而根据当前宏块推测左边和上边宏块的信息,解码程序此时就开始出现分支,依据 mb_type 的不同,分成三种情况进行预测工作[11]: 情况一:如果宏块使用的是帧内预测的情况下

(1)若是 4x4 类型的帧内预测宏块,就需要独立分析其模式。

(2)若是 16x16 类型的帧内预测宏块,让后续的函数对其进行加工,本函数不执行 任何动作。

情况二:整个宏块被划分为 4 个 8x8 的子宏块,它们的每个块需要再次 划分为四种子块。这些可能不尽相同的小的子块此时需要逐个地进行解 析:

(1)分析子块的信息,得到它的参考帧序号

(2)分析子块的信息,得到它的运动矢量 情况三:如果宏块是不属于前面提到的任何一种类型的 这个时候需要弄清楚该宏块到底是什么类型的宏块,然后进行如下流 程:

(1)分析子块的信息,得到它的参考帧序号

(2)分析子块的信息,得到它的运动矢量 预测工作完成之后,我们才可以进行下一步的解码行为,所以接着,我们

需要解码残差信息,然后根据解析到的信息对图像的变量进行赋值,就此得到 解析图像的基本信息,

2。3。4 宏块解码

有人分析了 FFmpeg 的 H。264 解码器每个函数运行的耗时情况,发现熵解码、 宏块解码、环路滤波耗时比例分别为:23。64%、51。85%、22。22%。所以宏块解

码在时间上具有十分重要的比重。宏块解码与有两种方法的熵解码不一样,由 于它比较复杂,可以分为两个部分,帧内预测宏块的宏块解码和帧间预测宏块 的宏块解码。

帧间预测是利用视频图像几帧之间的时间相关性对图像进行压缩的技术。 帧内预测是一个比较新的概念,只有当编码 Intra 图像时才可以用帧内预 测。除了一些边缘的特殊块,对于一般的 4×4 块,我们都可以通过该像素所

在块的周围的 17 个像素的加权和(权值大于等于 0)来预测我们想要预测的块。 显然,与在时间上取得压缩的帧间预测不同,帧内预测是通过去除相邻块之间 的空间冗余度,取得更为有效的空域预测编码算法进行压缩。

基于熵解码得到的图像的基本信息将图像数据尽力复原的过程就是宏块解 码。其流程大致分为两步:

(1)预测 如果是帧内预测宏块,就通过帧内预测得到预测数据,如果是帧间预测 宏块就通过运动补偿(即帧间预测)获取预测数据。 (责任编辑:qin)