Top Banner
第第第第 第第 DCT 第第第 第第第第第第第第
40

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

Jan 05, 2016

Download

Documents

jaunie

第十二章 基于 DCT 变换的 视频压缩编码原理. 12.1 引言. 视频:从本质上说,视频是一组图象帧序列。 视频流:由图象帧序列变换而成的比特流。 问题:为什么要把视频变成流?. 网络传输的需要 连续播放的需要 信息压缩的需要 纠检错的需要 流复用以及流控制的需要. 如何实现压缩的视频流? 视频压缩的核心就是 DCT 变换 什么是 DCT 变换?. DCT 变换,即离散余弦变换是变换编码中应用最广泛的编码方法。 基于 DCT 变换的图象编码主要包括以下几个步骤: 图象分块、 DCT 变换、量化、熵编码、运动估计与补偿以及速率控制等。. 速率控制. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 第十二章  基于 DCT 变换的 视频压缩编码原理

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

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

12.1 引言

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

视频:从本质上说,视频是一组图象帧序列。

视频流:由图象帧序列变换而成的比特流。

问题:为什么要把视频变成流?

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

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

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

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

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

DCT 变换,即离散余弦变换是变换编码中应用最广泛的编码方法。

基于 DCT 变换的图象编码主要包括以下几个步骤:

图象分块、 DCT 变换、量化、熵编码、运动估计与补偿以及速率控制等。

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

图象分块 DCT 变换 量化 熵编码 缓冲

速率控制

运动估计与补偿

输入 输出

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

12.2 图象分块

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

在图象压缩编码过程中, DCT 变换是对一个一个不重叠的分块图象进行的,所以第一步就是对图象进行分块。

假设一帧图象为 M 点 N 点象素,我们可以将这样一帧图象分成若干个 L 点 L点(如 8 8 , 16 16 等)的子块, M和 N 必须是 L 的整数倍。

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

N

M

L

L

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

12.3 离散余弦变换 DCT

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

D C T 变 换 :

L

vn

L

umnmfvCuC

LvuF

L

m

L

n 2

)12(cos

2

)12(cos),()()(

4),(

1

0

1

02

0,1

0,2/1)(

i

iiC

),( nmf 是 图 象 块 的 象 素 值 , ),( vuF 的 本 质 上 就 是 二 维 离

散 付 里 叶 变 换 。

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

DCT 反变换,IDCT:

L

vn

L

umvuFvCuCnmf

L

u

L

v 2

)12(cos

2

)12(cos),()()(),(

1

0

1

0

0,1

0,2/1)(

i

iiC

),( nmf 是图象块的象素值, ),( vuF 的本质上就是二维离

散付里叶变换。

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

12.4 量化

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

所谓的量话就是要将某幅度值表示成为有限字长的计算机可存储的数字。

例如: =3.14159… , 计算机不可能精确表示这样的无限长的

浮点数,怎么办? 通过量化将该值截断。 关于量化有一整套理论,我将在通信原

理中予以讲述。

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

12.5 熵编码

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

DCT 变换经过量化之后,大部分值已经变成 0 ,只有一小部分值不为 0 。

我们可以通过 Zig-Zig 扫描将一个 m 点 n 点的二维序列变成一个 mn 点一维序列。

通过对各图象块进行 Zig-Zig 编码,我们可以得到一个一维序列

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

Zig-Zig 扫描示意

1 0 0 0

0 2 0 -5

0 -1 0 0

0 0 0 0

扫描后的一维序列为:

1 , 0 , 0 , 0 , 2 ,0 , 0 , 0 , 0 , -1 ,0 , 0 , 0 , -5 , 0 ,0 , 0

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

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

上例经过游程编码可得: (0,1) (3,2)(4,-1)(3,-5)

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

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

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

因而对这些二维事件可以采用变长编码。 变长编码的基本思想是对出现概率大的

事件用较短的码表示,而对出现概率小的事件用较长的码表示,从而可以减小平均码长,达到信息压缩的目的。

至此图象编码的工作就完成了。

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

12.6 解码过程

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

解码过程很简单,接收端只要根据变长码解出二维事件序列,就可以恢复出图象 DCT 变换的矩阵,再经过 IDCT 变换就可以恢复图象。

当然由于量化是要引入误差的(即计算机有限字长的影响),恢复出的图象与原图象会有较小的差异。

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

12.7 运动估计和补偿

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

对于一段每秒 25 帧的视频流而言,每帧图象之间往往差异不大,用术语来说就是相邻帧间有很强的相关性。

如果如实将每帧都采用前面的方法编码传输的话,相当于传输了很多冗余的信息,导致带宽的浪费。

运动估计和补偿技术就是为了解决这一问题而出现的技术。

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

对第 k帧中的一小块图象 T1 ,以及第 k-1 帧中的一小块图象 T2 ,(二者)大小相等。

我们可以计算二者之间的差异。

假设 T1 和 T2 之间的差异最小,我们可以得到一个运动矢量 V。

T1

T2

第 k帧 第 k-1 帧 图象小块间的差异可以用下面的公式表示

T2

V

M

m

N

n

nmTnmTd1 1

2)],(2),(1[

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

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

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

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

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

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

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

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

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

12.8 混合编码

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

现在流行的图象压缩的国际标准无一例外地采用变换编码 +运动补偿 +熵编码的混合编码方案来实现图象以及图象序列(视频流)的压缩。

即用 DCT 变换来消除图象的帧内相关性,用运动补偿来消除图象序列的帧间相关性。用熵编码来提高编码效率。

如 H.261 , H.263 , MPEG1 , MPEG2

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

12.9 I、 B、 P帧编码模式

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

为了防止运动估计和补偿技术所带来的误差积累问题。在基于 DCT 变换的图象压缩编码中,一般采用 I、 B、 P帧的编码模式。

I帧是信息帧,不进行运动估计和补偿 P帧是预测帧,它要利用前面紧临的 I帧进行

运动估计和补偿。 B帧也是预测帧,它与 P帧不同的地方在于,B帧要利用前面和后面紧临的两个 I帧进行运动估计和补偿

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

于是编码序列的模式可以表述如下: 注:有些图象序列中可能没有 B帧

时间I B B P B I

… …

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

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

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

DCT 变换的本质是二维付里叶变换,是一种从二维时域到二维频域的变换方法。

从压缩编码的角度来看,我们希望编码的前一级输入中有较多的“ 0”(通过将较小的数值近似为 0 实现),以及较好的“ 0”值连续性。

就一帧图象而言,在时域中,图象体现为象素,基本上都是非 0 值,且 0 值的连续性不好;而从其频域上看,图象体现为频谱,非 0 值仅局限于某些频段,而且 0 值的连续性要比时域好。

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

12.9 总结

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

这一章我们介绍了基于 DCT 编码的图象压缩的基本原理。

我们明确了 DCT 变换的实质是离散付里叶变换。

现代图象压缩编码方案基本上都是混合编码的方案,所谓混合编码就是综合利用 DCT 变换、运动估计与补偿技术以及熵编码技术达到压缩编码的目的。

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

我们还明确了一些重要的概念: DCT 变换可以消除帧内的信息冗余,运动估计与补偿可以消沉帧间的信息冗余,熵编码的目的是为了提高编码的效率。

为了避免运动估计和补偿技术带来的误差积累,一般采用 I、 B、 P帧的编码模式,其中 I帧是信息帧;B和 P帧是预测帧,存在于两个 I帧之间。