论文导读:谈到图像压缩,就离不开JPEG压缩标准。正向离散余弦变换(FDCT)。DCT变换的实现常用三种方法,一种是基于FFT的快速算法。
关键词:静态图像压缩,JPEG,DCT,快速算法
1 引言
在信息技术迅猛发展的今天,人们对计算机实时处理图像信息的要求越来越高。在如何保证图像质量的前提下,同时兼顾实时性和高效性成为一个值得研究的问题。于是,对图像信息进行一定的压缩成为一个必不可少的环节。图像压缩就是在保证不失真的条件下,获得最大的压缩比。谈到图像压缩,就离不开JPEG压缩标准。
JPEG(Joint Photographic ExpertsGroup)是一个由国际标准化协会(ISO,Consultative Committee ofInternational Telephone and Telegraph)联合组成的一个专家组,负责制定静态数字图像数据压缩编码标准,这个专家组开发的算法称为JPEG算法,并且成为国际上通用的标准,因此又称为JPEG标准[1]。JPEG算法主要步骤是:1、色彩系统变换;2、正向离散余弦变换(FDCT);3、量化;4、Z字形编码;5、游程编码;6、Huffman编码。
本文主要研究FDCT和量化后高频系数舍取问题。离散余弦变换,简称DCT,是一种实数域变换,其变换核为余弦函数。DCT除了具有一般的正交变换性质外,它的变换阵的基向量能很好地描述人类语音信号和图像信号的相关特征。而且对于具有一阶马尔柯夫过程的随机信号,DCT十分接近Karhunen-Leove变换,也就是说它是一种最佳近似变换[2]。
2 DCT变换的基本原理
2.1 DCT变换的定义
一维DCT的变换定义为
F(0) = (1)
F(u) = (2)
二维DCT的变换定义为
F(0,0) = (3)
F(u,v) = (4)
3 算法的实现过程
3.1 DCT变换
DCT的实现常常将图像分成一些小而易处理的块,一般选择8×8的块作为DCT计算的大小。
DCT变换的实现常用三种方法,一种是基于FFT的快速算法;一种是蝶型算法(一般是8×8DCT);另一种是DCT变换矩阵方法。
一副原始输入图像经DCT产生的输出矩阵有个显著的特点:随着元素离DCT系数越来越远,它的模就倾向于越来越小。这意味着通过DCT来处理数据,已将图像的表示集中到输出矩阵的左上角的系数,而矩阵的右下部分系数几乎不包含有用的信息。而怎么确定多少低频系数保留,正是本文所研究的方向。
3.2 系数量化
严格说DCT本身并不能进行码率压缩,因为64个样值仍然得到64个系数。经DCT变换后,比特数增加了,直流分量的最大值是原来256的64/8倍,即0~2047,交流分量的范围是-1024~1023。量化是对经过FDCT变换后的频率系数进行量化,将DCT系数按比例缩小,并取其最接近的整数值的处理过程称为量化。这里量化采用JPEG标准中给出的参考值,如表1和表2。(对于灰度图,只需要亮度量化表)[3,4]
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 |
表1 色差量化值表
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 |
24 |
22 |
39 |
56 |
68 |
109 |
103 |
77 |
26 |
35 |
55 |
64 |
81 |
104 |
113 |
92 |
49 |
64 |
78 |
87 |
103 |
121 |
120 |
101 |
72 |
92 |
95 |
98 |
112 |
100 |
103 |
99 |
表2 亮度量化值表
例如Lena某局部进行8×8FDCT和量化后,会出现如下结果(如图1所示)

图1 Lena某局部8×8FDCT和量化后的值
从上面数据矩阵我们可以看出,能量基本都集中的矩阵的左上角,对于靠近右下角的系数都是接近于0。按照JPEG标准,可以对这些接近于0的系数进行舍去(即取0)。如果继续对如上系数矩阵进行Zigzag编码,则会发现它可以增加连续的“0”系数的个数,也就是“0”的游程长度。
实验证明,如果忽略的“0”的个数越多,图像的质量越差。X(0~63)表示连续保留(根据Zigzag编码,从低频开始)点的个数。Y表示重建图像与原始图像之间的误差。
这里误差使用如下准则:
 (5)
对Lena图进行上述误差分析,可以得到表3:
X |
Y |
X |
Y |
X |
Y |
X |
Y |
00 |
0.1511717 |
01 |
0.1398982 |
02 |
0.1397655 |
03 |
0.1397018 |
04 |
0.1396019 |
05 |
0.1395212 |
06 |
0.1392894 |
07 |
0.1389030 |
08 |
0.1359008 |
09 |
0.1355868 |
10 |
0.1354935 |
11 |
0.1354088 |
12 |
0.1282848 |
13 |
0.1272731 |
14 |
0.1270425 |
15 |
0.1268910 |
16 |
0.1258107 |
17 |
0.0829871 |
18 |
0.0826323 |
19 |
0.0781296 |
20 |
0.0764551 |
21 |
0.0761645 |
22 |
0.0758429 |
23 |
0.0755721 |
24 |
0.0632835 |
25 |
0.0617573 |
26 |
0.0585135 |
27 |
0.0514102 |
28 |
0.0512820 |
29 |
0.0498466 |
30 |
0.0494828 |
31 |
0.0493515 |
32 |
0.0434799 |
33 |
0.0405173 |
34 |
0.0403251 |
35 |
0.0355459 |
36 |
0.0352633 |
37 |
0.0351300 |
38 |
0.0344202 |
39 |
0.0342197 |
40 |
0.0327300 |
41 |
0.0323821 |
42 |
0.0293252 |
43 |
0.0289443 |
44 |
0.0285816 |
45 |
0.0280020 |
46 |
0.0278848 |
47 |
0.0275138 |
48 |
0.0237650 |
49 |
0.0243017 |
50 |
0.0233929 |
51 |
0.0229508 |
52 |
0.0219301 |
53 |
0.0209894 |
54 |
0.0202730 |
55 |
0.0198978 |
56 |
0.0171309 |
57 |
0.0148083 |
58 |
0.0122255 |
59 |
0.0099237 |
60 |
0.0082239 |
61 |
0.0064648 |
62 |
0.0057872 |
63 |
0.0039984 |
表3 误差分析
从实验结果可以看出,误差和保留点数之间呈单调关系,即随着保留的点越多,图像的误差越小。下面是几个不同保留点的实验结果图:
 
图2 当X=2时,恢复图样图3 当X=16时,恢复图样
 
图4 当X=17时,恢复图样图5 当X=24时,恢复图样图6 当X=63时,恢复图样
实验结果表明,当X=17的时候,这时候图像的质量发生明显改善,也就是说按照上述误差策略,选择一个合适的阈值。在这个误差范围内。认为图像的质量可以被接受。根据大量实验,当选择误差阈值为10%比较理想。
3.3 选择合适的保留点
根据所确定的误差阈值,本文提出一个快速选择保留点个数的方法。
参照上述实验分析,可以认为图像质量跟保留点的个数呈一种单调关系,保留点越多(X越大),图像质量越好(Y越小)。可以假设初始X=32,计算出此时的误差Y,如果Y小于误差阈值,则继续查找X序列的前半部分即令X=16,否则查找X序列的后半部分。依此类推直到找出合适的X为止。
4 实验结果及比较
显而易见,文本所提出的算法不能从根本上解决图像质量问题,只是一个查找合适保留点数的快速算法。如果我们使用顺序查找法,当X=17的时候,需要迭代17步;而使用本文所提出的方法,最多需要6步( =64)就可以找出合适的点。
参考文献:
[1] CCITT. Full JPEG Standard. [M]
[2]Alan V. Oppenheim Signals & Systems[M] 西安交通大学出版社
[3] 张益贞、刘滔 Visual C++实现MPEG/JPEG编码技术[M] 人民邮电出版社
[4] 杨淑莹VC++图像处理程序设计 清华大学出版社[M]
[5] W. Pennebaker and J. Mitchell, JPEG, StillImage Data Compression Standard[J]. New York: Van Nostrand, 1993.
[6] E Feig and S. Winograd Fast algorithms for the discretecosine transform[J] IEEE Trans Signal Processing, 1992,40(9):2174-2193
[7] M.A.Haque A two dimensional fastcosin transform[J]. IEEE Trans Acoust, Speech, and SignalProcessing,1985,33(6):1532-1539
[8] 朱翔, 袁杰,都思丹. 基于JPEG序列的图像重建[J], 电子与信息学报,2007,29(8):1841-1844
[9] 王纲. 8×8整型DCT/IDCT变换算法研究[J], 实验科学与技术, 2006,4:26-28
|