视频图像帧内编码实验1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

视频图像帧内编码实验

一、 实验目的

1. 了解多媒体通信中图像压缩技术

2. 熟悉视频帧内压缩编码过程

3. 掌握二维DCT 变换算法

二、 实验原理

视频帧内编码有多种模式,最基本的是基于8×8块的DCT 顺序编码,将一帧图像分为8×8的块,然后按照从左至右、自上而下的顺序,对块进行DCT 、量化和熵编码。其编、解码框图如下:

图1 基于DCT 的顺序编码框图

图2 基于DCT 的顺序解压缩框图

视频帧内压缩编码算法的主要步骤:

1) 正向离散余弦变换(DCT)。 2) 量化(quantization)。 3) Z 字形扫描(zigzag scan)。

DCT 解码器

IDCT

逆量化器

熵解码器

量化表

熵编码表

压缩图像数重构图像

DCT

熵编码器

量化表

熵编码表

压缩图像数据

源图像数据

基于DCT 的编码器

图像子块

量化器

4) 使用差分脉冲编码调制(differential pulse code modulation ,DPCM)

对直流系数(DC)进行编码。

5) 使用行程长度编码(run-length encoding ,RLE)对交流系数(AC)进行

编码。

6) 熵编码(entropy coding)。

三、 实验内容

按照上述压缩过程实现一幅图像的压缩,图像编码流程如下:

图3 JPEG 图像编码流程

1. DCT 变换

对8×8的图像数据块进行二维DCT 的变换,把能量集中在少数几个系数上,从而达到数据压缩的目的。: DCT 变换公式:

DCT 反变换公式:

输入原图像

8×8二维DCT 变换

量化

DC 系数差分编码 AC 系数游程编码

熵编码

生成压缩图像

文件保存

输出原图像

8×8二维IDCT 变换

逆量化

DC 系数解码

AC 系数解码码

熵解码

读取压缩图像文件

表说明

量化表

16

)12(cos

16

)12(cos

),()()(4

1),(7

07

π

π

υv y u x y x f v C y C u F x y ++=

∑∑

==

其中:

二维DCT 变换可以分解为行和列的一维DCT 变换的组合运算,也可将8×8的块分为更小的子块,直接对二维数据进行2维快速余弦变换。 2. 量化

量化表达式为:

其中 T(u ,v)是推荐的量化矩阵,详见附录1量化矩阵表 3. 熵编码

对直流DC 系数和交流AC 系数分别采用不同的压缩编码算法 1)

DC 系数编码:

把所有子块的DC 系数集合在一起,采用差分编码的方法表示。编码步骤为:

a ) 将初始值设为128,对相邻块的DC 系数F(0,0)进行差分运算

b )将差分值改写为[size,value] (尺寸,幅值)的符号对。尺寸取2

的对数加1

c ) 按照表2、3对该符号对进行编码

2)

AC 系数编码 AC 系数编码步骤为:

a ) 以块为单位,从AC01开始对块内的量化数据进行Z 形行程

扫描,记录两个非零值的大小和其间连续零的个数

b )将扫描结果改写为[RunLength ,level](行程、幅度)的符号对,

其中RunLength 代表该非零值和它前一个值之间0的个数,以(EOB)表示块结束。

c ) 按照表3对上述的符号对进行编码。若符号在表中查不到对

应码字,用ESC 码表示,然后按表4,5对RunLength 和level 进行编码。

4. 对编码后的图像数据进行解码,与原始图像数据进行比较。

16

1216

124

1707

π

π

v y u x v u F v C u C y x f u v )(cos

)(cos

),()()(),(++=

∑∑

==⎪⎩

⎨⎧≠==

0v u, 0v u, 12

1

)()

(v C u C ⎥

⎤⎢⎣⎡=),(),(),(ˆv u T v u F NINT v u F

四、实验要求

1.根据实验内容要求编写编解码程序,所用编程语言自选,实验完成后提交

完整源程序,并在关键处加上详细批注

I=imread('cameraman.tif')

I=im2double(I) %转换图像矩阵为双精度型。

J=dct2(I);

T=dctmtx(8) %产生二维DCT变换矩阵

a1=[16 11 10 16 24 40 51 61;

12 12 14 19 26 58 60 55;

14 13 16 24 40 57 69 56;

14 17 22 29 51 87 80 62;

18 22 37 56 68 109 103 77;

24 35 55 64 81 104 113 92;

49 64 78 87 103 121 120 101;

72 92 95 98 112 100 103 99 ];

for i=1:8:200

for j=1:8:200

P=I(i:i+7,j:j+7);

K=T*P*T';

I2(i:i+7,j:j+7)=K;

K=K./a1; %量化

K(abs(K)<0.03)=0;

I3(i:i+7,j:j+7)=K;

end

end

figure;

imshow(I2);

title('DCT变换后的频域图像'); %显示DCT变换后的频域图像

for i=1:8:200

for j=1:8:200

P=I3(i:i+7,j:j+7).*a1; %反量化

相关文档
最新文档