JPEG图像压缩实验.docx
- 文档编号:4367698
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:12
- 大小:105.34KB
JPEG图像压缩实验.docx
《JPEG图像压缩实验.docx》由会员分享,可在线阅读,更多相关《JPEG图像压缩实验.docx(12页珍藏版)》请在冰豆网上搜索。
JPEG图像压缩实验
JPEG静态图像压缩实验指导书
一、实验目的
1.了解多媒体通信中图像压缩技术
2.熟悉JPEG图像压缩编码过程
3.掌握二维DCT变换算法
二、实验原理
JPEG(JointPhotographicExpertsGroup)是一个由ISO和ITU-T两个组织机构联合组成的一个图像专家小组,负责制定静态的数字图像数据压缩编码标准,这个专家组开发的算法称为JPEG算法,并且成为国际上通用的标准。
JPEG是一个适用范围很广的静态图像数据压缩标准,既可用于灰度图像又可用于彩色图像。
JPEG不仅适于静止图像的压缩,电视图像的帧内图像的压缩编码,也常采用此算法。
JPEG标准定义了多种工作模式,其中最基本的是基于8×8块的DCT顺序编码,将一帧图像分为8×8的块,然后按照从左至右、自上而下的顺序,对块进行DCT、量化和熵编码。
其编、解码框图如下:
图1基于DCT的顺序编码框图
图2基于DCT的顺序解压缩框图
JPEG压缩编码算法的主要计算步骤:
1)正向离散余弦变换(FDCT)。
2)量化(quantization)。
3)Z字形编码(zigzagscan)。
4)使用差分脉冲编码调制(differentialpulsecodemodulation,DPCM)对直流系数(DC)进行编码。
5)使用行程长度编码(run-lengthencoding,RLE)对交流系数(AC)进行编码。
6)熵编码(entropycoding)。
三、实验内容
按照上述压缩过程实现一幅图像的压缩,生成符合JPEG标准的图像文件JPEG图像编码流程如下:
图3JPEG图像编码流程
1.DCT变换
对8×8的图像数据块进行二维DCT的变换,把能量集中在少数几个系数上,从而达到数据压缩的目的。
:
DCT变换公式:
DCT反变换公式:
其中:
二维DCT变换可以分解为行和列的一维DCT变换的组合运算,也可将8×8的块分为更小的子块,直接对二维数据进行2维快速余弦变换。
2.
量化
量化表达式为:
其中T(u,v)是推荐的量化矩阵,详见附录1量化矩阵表
3.熵编码
JPEG标准中熵编码对直流DC系数和交流AC系数分别采用不同的压缩编码算法
1)DC系数编码:
JEPG把所有子块的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.对编码后的图像数据进行解码,与原始图像数据进行比较。
四、实验要求
1.根据实验内容要求编写编解码程序,所用编程语言自选。
可以参考实验室提供的范例程序,并充分发挥你的创造性,写出有自己特色的程序。
2.生成JPEG格式的压缩文件,可用第三方软件打开,由指导教师验证通过
3.实验完成后提交完整源程序,并在关键处加上详细批注。
4.撰写实验报告,实验报告要求详细介绍你实现的功能,设计思想,并根据思考题进行分析。
五、样本程序说明
实验室提供一个BC编写的样本程序,供大家参考。
见“JPEG实验”文件夹,各文件功能说明如下:
1)JPEG压缩程序:
gendat.exe
2)为压缩后的数据加上JPEG文件头的程序genjpg.exe
3)解JEPG压缩程序extrdat.exe
其中:
(1)的输入参量是需要生成的压缩文件的名字。
主程序流程为:
a)程序初始化,读取文件名称、原始图像数据等基本数据;
b)从AC.TAB和DC.TAB两个文件生成AC表和DC表,存入数组
c)以8×8为样本单位进行DCT变换
d)以8×8为样本单位进行量化
e)以8×8为样本单位进行Z形扫描
f)以8×8为样本单位进行熵编码
g)以8×8为样本单位进行解量化
h)以8×8为样本单位进行IDCT变换
请大家在参考上述程序的基础上,编写自己的JPEG压缩程序,利用
(2)、(3)程序检查自己的程序是否正确。
六、思考题
1.计算图像的压缩比,并比较原图像的效果
2.DCT变换、量化后,数据的范围是多少?
有没有可能超出码表所给出的幅值范围。
附录:
JPEG图像压缩方法相关数据
表1:
量化矩阵T(U,V)
亮度量化矩阵T(u,v)
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
色差量化矩阵T(u,v)
17
18
24
47
99
99
99
99
18
21
26
66
99
99
99
99
24
26
56
99
99
99
99
99
47
66
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
表2:
DC系数码表
SizeCode
0100
100
201
3101
4110
51110
61111,0
71111,10
81111,110
表3:
DC系数码表
ValueCode
128~2551000,0000~1111,1111
64~1271000,000~1111,111
32~631000,00~1111,11
16~311000,0~1111,1
8~151000~1111
4~7100~111
2~310~11
11
0—
-10
-2~-301~00
-4~-7011~000
-8~-150111~0000
-16~-3101111~00000
-32~-63011111~000000
-64~-1270111111~0000000
-128~-25501111111~00000000
表4:
Runlength
LevelCode
0111S
20100S
30010,1S
40000,110S
50010,0110S
60010,0001S
70000,0010,10S
80000,0001,1110S
90000,0001,1000S
100000,0001,0011S
110000,0001,0000S
120000,0000,1110S
130000,0000,1100,1S
140000,0000,1100,0S
150000,0000,1011,1S
160000,0000,0111,11S
170000,0000,0111,01S
180000,0000,0111,00S
190000,0000,0110,11S
200000,0000,0110,10S
210000,0000,0110,01S
220000,0000,0110,00S
230000,0000,0101,11S
240000,0000,0101,10S
250000,0000,0101,01S
260000,0000,0101,00S
270000,0000,0100,11S
280000,0000,0100,10S
290000,0000,0100,01S
300000,0000,0100,00S
310000,0000,0011,000S
320000,0000,0010,111S
330000,0000,0010,110S
340000,0000,0010,101S
350000,0000,0010,100S
360000,0000,0010,010S
370000,0000,0010,010S
380000,0000,0010,001S
390000,0000,0010,000S
11011S
20001,10S
30010,1010S
40000,0011,00S
50000,0001,1011S
60000,0000,1011,0S
70000,0000,1010,1S
80000,0000,0011,111S
90000,0000,0011,110S
100000,0000,0011,101S
110000,0000,0011,100S
120000,0000,0011,011S
130000,0000,0011,010S
140000,0000,0011,001S
150000,0000,0001,0011S
160000,0000,0001,0010S
170000,0000,0001,0001S
180000,0000,0001,0000S
210101S
20000,100S
30000,0010,11S
40000,0001,0100S
50000,0000,1010,0S
310011,1S
20010,0100S
30000,0001,1100S
40000,0000,1001,1S
410011,0S
20000,0011,11S
30000,0001,0010S
510001,11S
20000,0010,01S
30000,0000,1001,0S
610001,01S
20000,0001,1110S
30000,0000,0001,0100S
710001,00S
20000,0001,0101S
810000,111S
20000,0001,0001S
910000,110S
20000,0000,1000,1S
1010010,0111S
20000,0000,1000,0S
1110010,0011S
20000,0000,0001,1010S
1210010,0010S
20000,0000,0001,1001S
1310010,0000S
20000,0000,0001,1000S
1410000,0011,10S
20000,0000,0001,0110S
1510000,0011,01S
20000,0000,0001,0110S
1610000,0010,00S
20000,0000,0001,0101S
1710000,0001,1111S
1810000,0001,1010S
1910000,0001,1001S
2010000,0001,0111S
2110000,0001,0110S
2210000,0000,1111,1S
2310000,0000,1111,0S
2410000,0000,1110,1S
2510000,0000,1110,0S
2610000,0000,1101,1S
2710000,0000,0001,1111S
2810000,0000,0001,1110S
2910000,0000,0001,1101S
3010000,0000,0001,1100S
3110000,0000,0001,1011S
EOB10
esc0000,10
注:
S表示,当Level为正值时S=0,Level为负值时S=1。
表5:
esc标识下的Runlength码表
RunlengthCode
00000,00
10000,01
20000,10
631111,11
表6:
esc标识下的Level码表
LevelCode
-2551000,0000,0000,0001
-2541000,0000,0000,0010
-1291000,0000,1000,0111
-1281000,0000,1000,0000
-1271000,0001
-1261000,0010
-21111,1110
-11111,1111
00000,0000
10000,0001
1260111,1110
1270111,1111
1280000,0000,1000,0000
1290000,0000,1000,0001
2540000,0000,1111,1110
2550000,0000,1111,1111
%浙江万里学院电信系钱裕禄编写,2001年3月;
%主要应用MATLAB影像处理工具箱中的dctmtx函数实现算法;
%出发点是采用分别对分解后的每个数据小方块进行DCT变换.
I=imread(′panda.tif′);%读取内存中TIFF格式图像文件
I1=im2double(I);%将图像变换成双精度格式
T=dctmtx(8);%处理后返回一个8×8阶DCT变换矩阵
B1=blkproc(I1,[88],′P1*x*P2′,T,T′);%对图像I1的每个不同
mask=[11110000
11100000
11000000
10000000
00000000
00000000
00000000
00000000];
%选取10个DCT系数重构图像
B2=blkproc(B1,[88],′P1.*x′,mask);
I2=blkproc(B2,[88],′P1*x*P2′,T′,T);
%构建处理后的图像
subplot(2,2,1);imshow(I1);
subplot(2,2,2);imshow(I2);
subplot(2,2,3);imshow(dct2(I1));
subplot(2,2,4);mesh(dct2(I1));
colorbar(′horiz′);%在水平轴旁增加一颜色等级条
量化
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JPEG 图像 压缩 实验