1 / 40

第十二章 基于 DCT 变换的 视频压缩编码原理

第十二章 基于 DCT 变换的 视频压缩编码原理. 12.1 引言. 视频:从本质上说,视频是一组图象帧序列。 视频流:由图象帧序列变换而成的比特流。 问题:为什么要把视频变成流?. 网络传输的需要 连续播放的需要 信息压缩的需要 纠检错的需要 流复用以及流控制的需要. 如何实现压缩的视频流? 视频压缩的核心就是 DCT 变换 什么是 DCT 变换?. DCT 变换,即离散余弦变换是变换编码中应用最广泛的编码方法。 基于 DCT 变换的图象编码主要包括以下几个步骤: 图象分块、 DCT 变换、量化、熵编码、运动估计与补偿以及速率控制等。. 速率控制.

jaunie
Download Presentation

第十二章 基于 DCT 变换的 视频压缩编码原理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第十二章 基于DCT变换的视频压缩编码原理

  2. 12.1 引言

  3. 视频:从本质上说,视频是一组图象帧序列。 • 视频流:由图象帧序列变换而成的比特流。 • 问题:为什么要把视频变成流?

  4. 网络传输的需要 • 连续播放的需要 • 信息压缩的需要 • 纠检错的需要 • 流复用以及流控制的需要

  5. 如何实现压缩的视频流? • 视频压缩的核心就是DCT变换 • 什么是DCT变换?

  6. DCT变换,即离散余弦变换是变换编码中应用最广泛的编码方法。DCT变换,即离散余弦变换是变换编码中应用最广泛的编码方法。 • 基于DCT变换的图象编码主要包括以下几个步骤: • 图象分块、DCT变换、量化、熵编码、运动估计与补偿以及速率控制等。

  7. 速率控制 输入 输出 图象分块 DCT变换 量化 熵编码 缓冲 运动估计与补偿

  8. 12.2 图象分块

  9. 在图象压缩编码过程中,DCT变换是对一个一个不重叠的分块图象进行的,所以第一步就是对图象进行分块。在图象压缩编码过程中,DCT变换是对一个一个不重叠的分块图象进行的,所以第一步就是对图象进行分块。 • 假设一帧图象为M点N点象素,我们可以将这样一帧图象分成若干个L点L点(如8 8,16 16等)的子块,M和N必须是L的整数倍。

  10. L L N M

  11. 12.3 离散余弦变换DCT

  12. 12.4 量化

  13. 所谓的量话就是要将某幅度值表示成为有限字长的计算机可存储的数字。所谓的量话就是要将某幅度值表示成为有限字长的计算机可存储的数字。 • 例如:=3.14159…, • 计算机不可能精确表示这样的无限长的浮点数,怎么办? • 通过量化将该值截断。 • 关于量化有一整套理论,我将在通信原理中予以讲述。

  14. 12.5 熵编码

  15. DCT变换经过量化之后,大部分值已经变成0,只有一小部分值不为0。DCT变换经过量化之后,大部分值已经变成0,只有一小部分值不为0。 • 我们可以通过Zig-Zig扫描将一个m点n点的二维序列变成一个mn点一维序列。 • 通过对各图象块进行Zig-Zig编码,我们可以得到一个一维序列

  16. Zig-Zig扫描示意 扫描后的一维序列为: 1,0,0,0,2,0,0,0,0,-1,0,0,0,-5,0,0,0 1 0 0 0 0 2 0 -5 0 -1 0 0 0 0 0 0

  17. 在Zig-Zig扫描的基础上可以做游程编码,所谓游程编码,就是在前面得到的一维序列中,对所有的非0值编码,编成的码为二维码,(m,n),其中n表示非0值本身,m表示该非0值到前一个非0值之间0的个数。在Zig-Zig扫描的基础上可以做游程编码,所谓游程编码,就是在前面得到的一维序列中,对所有的非0值编码,编成的码为二维码,(m,n),其中n表示非0值本身,m表示该非0值到前一个非0值之间0的个数。 • 上例经过游程编码可得: (0,1) (3,2)(4,-1)(3,-5)

  18. 于是,我们得到了一个二维事件的序列,对这些二维事件而言,出现的概率是不同的,可能某事件(m1,n1)的概率大一些,而某事件(m2,n2)的概率小一些。于是,我们得到了一个二维事件的序列,对这些二维事件而言,出现的概率是不同的,可能某事件(m1,n1)的概率大一些,而某事件(m2,n2)的概率小一些。

  19. 因而对这些二维事件可以采用变长编码。 • 变长编码的基本思想是对出现概率大的事件用较短的码表示,而对出现概率小的事件用较长的码表示,从而可以减小平均码长,达到信息压缩的目的。 • 至此图象编码的工作就完成了。

  20. 12.6 解码过程

  21. 解码过程很简单,接收端只要根据变长码解出二维事件序列,就可以恢复出图象DCT变换的矩阵,再经过IDCT变换就可以恢复图象。解码过程很简单,接收端只要根据变长码解出二维事件序列,就可以恢复出图象DCT变换的矩阵,再经过IDCT变换就可以恢复图象。 • 当然由于量化是要引入误差的(即计算机有限字长的影响),恢复出的图象与原图象会有较小的差异。

  22. 12.7 运动估计和补偿

  23. 对于一段每秒25帧的视频流而言,每帧图象之间往往差异不大,用术语来说就是相邻帧间有很强的相关性。对于一段每秒25帧的视频流而言,每帧图象之间往往差异不大,用术语来说就是相邻帧间有很强的相关性。 • 如果如实将每帧都采用前面的方法编码传输的话,相当于传输了很多冗余的信息,导致带宽的浪费。 • 运动估计和补偿技术就是为了解决这一问题而出现的技术。

  24. 对第k帧中的一小块图象T1,以及第k-1帧中的一小块图象T2,(二者)大小相等。对第k帧中的一小块图象T1,以及第k-1帧中的一小块图象T2,(二者)大小相等。 • 我们可以计算二者之间的差异。 • 假设T1和T2之间的差异最小,我们可以得到一个运动矢量V。 T1 V T2 T2 第k帧 第k-1帧 图象小块间的差异可以用下面的公式表示

  25. 如果我们在第k-1帧中进行全搜索的话我们总可以找到与T1差异最小的图象块,当然这一过程计算量很大。如果我们在第k-1帧中进行全搜索的话我们总可以找到与T1差异最小的图象块,当然这一过程计算量很大。

  26. 通过运动估计,我们可以为为当前图象中每一个图象小块从前一时刻的图象中获得一个最相近图象块,并得到一个运动矢量,将两图象块相减,就可以得到一个差值图象块。于是我们只需要将前一帧最相近图象块的编号,运动矢量和差值图象块传到接收端,就可以恢复出一帧图象,而差值图象块可以采用前面介绍的图象编码技术做DCT变换、量化、熵编码。通过运动估计,我们可以为为当前图象中每一个图象小块从前一时刻的图象中获得一个最相近图象块,并得到一个运动矢量,将两图象块相减,就可以得到一个差值图象块。于是我们只需要将前一帧最相近图象块的编号,运动矢量和差值图象块传到接收端,就可以恢复出一帧图象,而差值图象块可以采用前面介绍的图象编码技术做DCT变换、量化、熵编码。

  27. 在接收端显然需要根据发送端发来的信息做运动补偿,首先根据运动矢量将前一帧的图象块移动到相应的位置,然后在加差值图象块。在接收端显然需要根据发送端发来的信息做运动补偿,首先根据运动矢量将前一帧的图象块移动到相应的位置,然后在加差值图象块。

  28. 运动估计与补偿技术尽管需要很大的运算量,但可以实现视频流的极大压缩,所以至今仍是学术界和工业界研究的热点和难点问题。运动估计与补偿技术尽管需要很大的运算量,但可以实现视频流的极大压缩,所以至今仍是学术界和工业界研究的热点和难点问题。

  29. 12.8 混合编码

  30. 现在流行的图象压缩的国际标准无一例外地采用变换编码+运动补偿+熵编码的混合编码方案来实现图象以及图象序列(视频流)的压缩。现在流行的图象压缩的国际标准无一例外地采用变换编码+运动补偿+熵编码的混合编码方案来实现图象以及图象序列(视频流)的压缩。 • 即用DCT变换来消除图象的帧内相关性,用运动补偿来消除图象序列的帧间相关性。用熵编码来提高编码效率。 • 如H.261, H.263, MPEG1, MPEG2

  31. 12.9 I、B、P帧编码模式

  32. 为了防止运动估计和补偿技术所带来的误差积累问题。在基于DCT变换的图象压缩编码中,一般采用I、B、P帧的编码模式。为了防止运动估计和补偿技术所带来的误差积累问题。在基于DCT变换的图象压缩编码中,一般采用I、B、P帧的编码模式。 • I帧是信息帧,不进行运动估计和补偿 • P帧是预测帧,它要利用前面紧临的I帧进行运动估计和补偿。 • B帧也是预测帧,它与P帧不同的地方在于,B帧要利用前面和后面紧临的两个I帧进行运动估计和补偿

  33. 于是编码序列的模式可以表述如下: • 注:有些图象序列中可能没有B帧 … … 时间 I B B P B I

  34. 视频压缩编码为什么不直接对图象帧序列进行,而要将图象帧序列进行DCT变换之后形成二维频域帧序列后再进行?视频压缩编码为什么不直接对图象帧序列进行,而要将图象帧序列进行DCT变换之后形成二维频域帧序列后再进行?

  35. DCT变换的本质是二维付里叶变换,是一种从二维时域到二维频域的变换方法。DCT变换的本质是二维付里叶变换,是一种从二维时域到二维频域的变换方法。 • 从压缩编码的角度来看,我们希望编码的前一级输入中有较多的“0”(通过将较小的数值近似为0实现),以及较好的“0”值连续性。 • 就一帧图象而言,在时域中,图象体现为象素,基本上都是非0值,且0值的连续性不好;而从其频域上看,图象体现为频谱,非0值仅局限于某些频段,而且0值的连续性要比时域好。

  36. 12.9 总结

  37. 这一章我们介绍了基于DCT编码的图象压缩的基本原理。这一章我们介绍了基于DCT编码的图象压缩的基本原理。 • 我们明确了DCT变换的实质是离散付里叶变换。 • 现代图象压缩编码方案基本上都是混合编码的方案,所谓混合编码就是综合利用DCT变换、运动估计与补偿技术以及熵编码技术达到压缩编码的目的。

  38. 我们还明确了一些重要的概念:DCT变换可以消除帧内的信息冗余,运动估计与补偿可以消沉帧间的信息冗余,熵编码的目的是为了提高编码的效率。我们还明确了一些重要的概念:DCT变换可以消除帧内的信息冗余,运动估计与补偿可以消沉帧间的信息冗余,熵编码的目的是为了提高编码的效率。 • 为了避免运动估计和补偿技术带来的误差积累,一般采用I、B、P帧的编码模式,其中I帧是信息帧;B和P帧是预测帧,存在于两个I帧之间。

More Related