读书笔记-现代操作系统-7多媒体操作系统-7.3视频编码7.4音频压缩

来源:互联网 发布:网络教育文凭单位认吗 编辑:程序博客网 时间:2024/06/04 23:36

7.3 视频压缩

首先压缩算法需要两个概念一个是在源端对数据进行压缩,另一个是在目的端对数据进行解压缩。或者分别被称为编码和解码
有些算法具有不对称性,这是指压缩和解压缩的复杂度是不一样的。这对实际应用而言是很有意义的。
另一个是有损和无损的概念,文件压缩通常都是需要无损的,但是对于视频来说有损压缩更常见。

7.3.1 JPEG标准

Joint Photographic Experts Group 联合摄影专家组
这里仅仅介绍24位RGB视频的压缩方法。并且省略细节。

对于块预制:首先从RGB中抽取出3个块,一个亮度信息和两个色度信息,
对于NTSC制式分别为Y、I和Q,对于PAL制式分别为Y、U和V。
每个矩阵的取值范围都是0-255之间。
具体步骤如下:
1. 在I和Q矩阵中由4个元素进行平均,因为人眼对亮度敏感,这样数据压缩了2倍。然后将三个矩阵每个元素减去128,将0置于取值范围的中间。最后将每个矩阵划分成8*8的块。
2. 对每一个小块应用DCT,每一个DCT的输出是一个8*8的DCT系数矩阵。
3. 量化(quantization),对不重要的DCT稀疏将被抛去。
4. 通过将每一块的(0,0)值以它与前一块中相应元素相差的量替换而减小。
5. 将64个元素线性化并且对线性化得到的列表进行行程长度编码。
6. 采用Huffman编码对列表中的数字进行编码以用于储存或传输。

JPEG大体上是对称的。解码按照反顺序进行。

7.3.2 MPEG标准

Motion Picture Experts Group 运动图像专家组。
视频中存在两种冗余:
空间冗余——已经利用JPEG对每一帧进行编码而得到
时间冗余——前后帧之间的相同部分。

MPEG-2输出由三种帧组成:

  1. I帧-自包含的JPEG帧的静止图像
  2. P帧-与上一帧逐块的差
  3. B帧-与上一帧和下一帧的差

I帧在输出流中周期性的出现是非常重要的:

  1. MPEG可以用于电视广播,而观众收看的是随意的,如果所有帧都是依赖于第一帧,如果错过了第一帧那随后的所有帧都无法解析了
  2. 如果任何一帧接受错误,那么进一步解码就无效了。
  3. 没有I帧。每次快进或者倒退的时候需要计算经过的每一帧。

因此每秒通常插入1-2I帧。

P帧是基于宏块(macroblock)思想,宏块覆盖亮度空间中的16*16个像素和色度读空间中的8*8个像素。通过在前一帧中搜索宏块或者与其只存在轻微差异的宏块实现对一个宏块的编码。但是在MPEG中并没有具体的规定如何搜索、搜索多远以及如何计算一个匹配的好坏,这些都留给每一个具体的实现。

B帧和P帧类似,不同的是它允许参考宏块既可以在前一帧中,也可以在后续的帧中,既可以在I帧中也可以在P帧中。这一额外的自由对于改进运动补偿,并且在无头从前面或后面经过其他物体时非常有用。在B帧编码的时候,编码器需要在内存中同时保持三个解码的帧:过去的帧、当前的帧和未来的帧,各帧必须以依赖的顺序而不是以显示的顺序出现在MPEG流中。因此视频通过网络观看的时候即使有完美的定时也是需要缓冲的。

7.4 音频压缩

音频编码主要分为两大类:
波形编码——通过傅里叶变化(Fourier transform)变换成频率分离。
感知编码——在人类听觉系统中寻找某种细纹,用来对付信号编码。最流行的MP3就是基于这样的编码。

感知编码的关键在于一些声音可以掩盖住其他声音。也就所谓的频段屏蔽在一个频段里响亮的声音掩盖住另一频段中较柔和的声音的能力,这种较柔和的声音只有在没有响亮声音时才可以听到。
实际上,即使响亮的声音立即停止,人耳也由于调低的增益短时间内无法听到。这就是所谓的暂时屏蔽。

此外实验也表明。通过跟踪哪些附加频段能量更强的信号所屏蔽的信号,可以省略越来越多的编码信号中的频率

MP3编码的实质就是对声音做傅里叶变化从而得到每个频率的能量,之后只传递哪些不被屏蔽掉的频率,并且尽可能少的二进制位数来编码这些频率。

1 0
原创粉丝点击