当前位置: 主页 > 处理视频 > 视频压制教程 > 进阶必读 视频压缩算法探讨

进阶必读 视频压缩算法探讨

2009-05-15   www.av110.net / 整理 点击: 标签:编码 算法 视频压缩
  

前言

  视频压缩算法通过对视频信号的压缩处理可以极大地降低视频信号的存储和带宽需求,在此基础上尽可能多的获得最佳的图像质量。因此,了解视频压缩算法的基本原理对于嵌入式系统,处理器以及视频应用工具的开发人员来说,是非常必要的,例如在处理器选型以及软件优化的过程中,视频压缩算法的性能开销和存储空间占用就是其中非常关键的因素。

  在本文中,我们将着重探讨视频压缩算法的特点和处理流程,我们将对基本的视频压缩算法进行解释,包括静态图像压缩、运动估计、图像去噪, 以及色彩空间转换,同时我们还将讨论视频压缩算法对处理器的性能需求以及由这些需求所带来的一系列影响。


静态图像压缩


  视频剪辑也就是我们通常所说的动态图像序列,动态图像序列是由在时间轴上的若干幅静态图片组成的,在动态图像序列中的每一幅图片称之为“帧”。在动态图像的压缩算法中大量的使用了静态图像压缩的算法和技术,例如静态图像压缩标准JPEG。实际上简单的动态图像序列压缩的方法就是将此序列中的每一幅静态图片独立的压缩,忽略掉这些图片在时间上的相关性。在一些视频产品的应用中使用了这种方法,将每一幅图片都用JPEG标准进行压缩,我们称之为“运动JPEG”或者也叫MJPEG。

  目前更为先进的视频压缩算法更多的利用了视频序列中连续的静态图像,也就是连续帧之间的时间相关性,利用运动估计和运动补偿算法获得更好的压缩比,当然这些先进的视频压缩算法也同样采用了静态图像压缩里面的一些基本算法,因此我们的讨论就从基于块变换的静态图像算法JPEG开始。

数字图像压缩的基本单元

  块变换

  在JPEG和大多视频压缩算法中所采用的压缩算法都是“有损压缩”,所谓有损压缩就是指从压缩后的数据中无法完全恢复重构出原始的压缩前图像,有损压缩会丢失掉一部分原始图像的信息,因此,有损压缩算法就需要尽量保证由信息丢失所造成的原始图像和重构图像之间的差异不被人眼所察觉。

  对于JPEG和类似的图像压缩算法来说,压缩的第一步需要将图像分割为小块,同时将每个小块进行变换,使之由空域信号变换成为时域信号。这种空域到时域的变换多采用8x8的离散余弦变换(以下称DCT),经过DCT变换之后,8x8的空域像素矩阵变换成为8x8的频域信号矩阵,DCT变换能够完整的保留所有8x8像素块的信息,因此反向离散余弦变换(以下称IDCT)也就能够从8x8频域信号矩阵中完整的恢复原始8x8像素矩阵。DCT变换后的频域信号矩阵中包含原始8x8像素矩阵的低频部分和高频部分,其中低频部分对应图像的重要信息,高频部分对应图像的细节信息,就人眼的特点来说,对于图像低频部分的感知要比对于图像高频部分的感知敏感很多,因此在DCT变换将图像的信息按照其人眼感知的敏感程度分离之后,后续的压缩步骤就是将其低频部分编码更多的比特,从而获得更高的精度,而对其高频部分编码更少的比特数或者不编码比特,从而在保留一定的视觉效果的同时,获得更好的压缩效果。在解码端,再用IDCT变换从频域信号矩阵中恢复出原始8x8像素矩阵。

  IDCT变换和DCT变换的运算量基本一致,因此这两种变换对处理器的性能要求也基本类似。一个二维8x8 DCT变换和IDCT变换在典型的DSP平台上需要数百个指令周期完成,视频压缩算法的执行中每秒都需要进行大量的DCT和IDCT运算,以一个MPEG4的解码器为例,在解码分辨率为CIF(352x288),帧率为30fps的视频序列时,需要每秒进行71,280次IDCT运算,在TI TMS320C55x DSP处理器平台上需要占用40MHz的处理性能(不考虑集成DCT加速器),这大概占用了整个视频解码器应用时处理器性能的30%。

  由于DCT和IDCT运算的单位都是很小的图像块,因此相对于帧缓存以及图像压缩应用中的其他数据存储来说,其对存储资源的占用几乎可以忽略不计,正是基于其大运算量,低存储占用的特点,DCT和IDCT运算单元特别适合用专用的硬件加速协处理器来实现。
  
  量化

  DCT变换后的结果称为DCT系数,正如上文所说,编码器需要对于DCT系数中的重要的低频分量编码更多的比特,对于DCT系数中的次要的高频分量编码更少的比特,这种对系数的编码方法可以通过两步来实现:首先通过量化过程舍去次要的视频信息,然后利用统计学的方法尽可能少的对剩余的重要信息进行比特编码。

  量化过程就是将每个DCT系数向若干预设值进行舍入的过程,例如,DCT系数是值介于-1 到1 之间的实数,将其用缩放因子20进行缩放,同时将结果舍入到最近的整数,于是DCT系数便量化成为值介于-20到20之间的整数,共有41个,在理想情况下,为每个DCT系数选择合适的量化因子可以使量化后的DCT系数在向右取整的过程中不至于引入明显的量化噪声。

  在解码端,采用与编码端相反的反量化过程,就上文所属的例子来说,对量化后的DCT系数进行反量化,用1/20进行缩放,反量化值缩放到-1到1之间,注意此时的反量化值与原始的量化前系数已经不再相等,不过足够接近,以保证IDCT 变换以后不会引入明显的视觉差异。反量化大概需要占用整个视频解码器应用时处理器性能的3%-15%,与DCT和IDCT变化类似,量化和反量化对存储器的资源占用可以忽略不计。

顶一下
(2)
100%
踩一下
(0)
0%
栏目热点
  • MeGUI压制使用说明书 MeGUI压制使用说明书 MeGUI 压制使用说明书 绪论: 视频压制的概念 一些尚未入门的爱好者常常会把视频压制与视频转换混为一谈。视频压制是一种入门比较简单,但深入有点深奥的视频压缩技术,用
精彩推荐