基于DSP 的图像压缩系统

基于DSP 的图像压缩系统
基于DSP 的图像压缩系统

基于DSP的图像压缩系统

摘要:本文介绍了传统的JPEG图像压缩的原理以及TMS320VC5409DSP芯片应用于图像压缩系统的可行性方案和系统的硬件方案,重点描述了一个基于TMS320VC5409 DSP芯片的图像压缩系统。该系统利用DSP芯片的特点,对传统的JPEG 算法的DCT变换和量化过程作了一些改进,使本系统的压缩算法比传统的JPEG压缩速度更快并且在压缩率相同的情况下图像的质量也更高。

关键词:图像压缩;DSP;JPEG 算法,快速DCT 变换

Image compression system based on DSP

Abstract: The article summarizes the theory of standard image compression, especially focuses on the feasibility and method that TMS320VC5409 is used in the image compression system. What's more, based on the image compression system, a fast DCT image compression method and an adaptive JPEG quantification way are proposed in terms of the at tribute of the TMS320VC5409 DSP chip. The realization and application o f the image compression system shows the proposed method runs faster and gets higher quality of image than the standard JPEG compression method at the same compression rate.

Keywords:image compression;DSP;JPEG algorithm;fast DCT

0 引言

随着多媒体和网络技术的发展和应用,数字图像大信息量的特点使得图像压缩技术的要求也越来越高,因此专用高速数字信息的处理技术成为发展的方向。在硬件技术中,TI推出的C5000系列DSP将数字信号处理器的处理能力提高到了一个新的境界,使信号处理系统的研究重点又回到软件算法上。在压缩算法研究上,DCT、小波等多个算法因为其高可靠性和高效性也越来越受到青睐。

1硬件系统设计

1. 1 TMS320C5409作为主处理器可行性分析

本系统中,TMS320C5409作为主处理器,任务是实现JPEG 压缩编码。文献[4] 指出,

?的数据块作JPEG压缩以运算速度为100 MHz的TMS320C5409作为主处理器,并以88

编码时,所需要的机器周期为62?Cycles, 内存空间为6. 3 KB,如表1所示。

表 1 TMS320C54X性能和内存需要

通过分析不难得到,当处理一帧大小为640?480的图像时,作JPEG压缩编码所需要的时间为: t = 62?10?640?480 ns = 0. 198 66 s。当处理的图像分辨率更小时,则压缩每帧所花的时间更少,这对于应用在对实时性要求不是很高的场合是完全可行的。

1. 2 硬件系统框图

图1是基于TMS320C5409的图像处理系统的结构图。C5409为中央处理器;SRAM为DSP 片外扩展数据存储器;EPROM为脱机工作时的程序存储器,用于存储系统的引导程序和其他应用程序;A/D部分负责把转换为数字信号的图像存入帧存储器中;地址译码、图像采集系统控制电路产生本系统各部分的地址译码信号,使之映射到不同的地址区域,并控制图像A/D芯片进行图像采集,这部分由CPLD实现控制;图像采集芯片的寄存器控制由51单片机完成。

图 1 图像处理系统结构框图

1. 3 DSP外围时序控制电路的设计

本系统中各种外围接口电路多,系统的时序控制复杂。为简化接口电路,并提高I/O口寻址速度,本系统采用了Latice公司的IspLsi2064VE芯片,采用VHDL语言编程进行I/O口电路的扩展以及产生对外围电路控制的时序,电路如图2所示。

图 2 C5409与CPLD连接示意图

由于DSP的通用I/ O口较少,而外部接口较多,必须扩展I/ O口。本文所采用的方法是将DSP的输出信号/IS,/ PS,/ DS,/ IOMST RB,/ MSTRB(分别为IO空间、程序空间、数据空间选择信号,I /O总线信号和存储器总线信号)作为为CPLD的输入信号。CPLD 的输出则主要是各个外围器件的控制信号,包括存储器(程序存储器,数据存储器、串口)的控制信号等。

1. 4 DSP芯片电源电路设计

电源设计中需要考虑的主要问题是功率和散热问题。功率要求:电流的消耗主要取决于器件的激活度,即CPU的激活度,外设功耗主要取决于正在工作的外设及其速度,与CPU 相比,外设功耗是比较小的。以TMS320C5409为例,其进行FFT运算时,需要的电源电流最大。因此在设计电源时,必须考虑在电源电流和实际需用电流之间留有一定裕量,因为峰值电流会更大,裕量至少是20%。C5409采用了双电源供电机制,其工作电压为3. 3 V和

1. 8 V 。其中,1. 8 V 主要为DSP 的内部逻辑提供电压,包括CPU 和其他所有的外设逻辑。外部接口引脚采用3. 3 V 电压。

1. 5 存储空间的扩展方案

经模数转换的图像数据是非常大的。对于分辨率为640?480,量化8位的黑白图像,数据量为640?480= 300 K 。C5409的内部仅有32 KB 的随机存储器和16 KB 的只读存储器,不能满足大数据量存储的需要,因此必须扩展存储器存放图像数据和应用程序。考虑外接64 KB 的RAM 和512 KB 的Flash ,RAM 使用CYPRESS 公司的CY7C1021V33,Flash 采用SST 公司的SST39VF512。

2 JPEG 图像压缩算法

2. 1 JPEG 图像压缩

传统的JPEG 图像压缩算法过程为:(1)离散余弦变换;(DCT );(2)量化(3)行程编码和熵编码如图3所示。

图 3 JPEG 图像压缩框图

其中二维 DCT 变换公式为:

()()7700

21211cos

cos 41616uv u v yx x y x u x v S C C S ππ==++=∑∑ 01u v u v u v C C C C ===当、时,、、 量化主要通过原始数据除以量化表得到。量化表值可以根据需要自定,其值规定了其所对应 DCT 系数的量化步长。

编码根据直流和交流数据分别采取不同的编码方式。对DC 系数采用DCPM 编码,前子块的DC 系数被用来预测当前子块的DC 系数进行差值无失真编码。对于AC 系数, 先按照Zig-Zag 序列扫描,再进行编码。最后将所有码值进行熵编码,形成JPEG 图像格式。

2. 2 JPEG 算法的优化

JPEG 基本系统能够对图像进行低压缩比压缩,但是DCT 和IDCT 在软件实现的过程中,是最耗费时间的运算,而且,由于没有考虑图像本身的频谱特性,JPEG 量化表对于所有图像压缩并不一定最优。采用快速 DCT 算法可提高软件的速度,增强软件的实时性。同时,根据图像本身的频谱特性,自适应改进JPEG 推荐的量化表。

2. 2. 1 快速 DCT 算法

将一幅图像分成许多8?8的小块后直接进行 2D-DCT 变换,运算量将会十分巨大。因此需要将8?8二维DCT 变换转换成为2次8点的一维DCT 的复合运算。具体做法是对每一个8?8块,先做列方向上的DCT ,得到1个中间矩阵,再对该矩阵各行进行DCT 。可以

看到,8?8矩阵的2维DCT 可以转换成16次一维8点DCT 。

目前,针对一维DCT 运算,很多不同的DCT 快速算法已经提出,其中Loeffler 算法[6]所需要的计算量最小。Loeffler 算法将8点的一维DCT 运算分为4级运算,由于各级之间的输入输出的依存关系,4级操作必须串行进行,而各级内部的运算可并行处理。Loeffler 算法涉及3种运算因子:蝶形因子、旋转因子和倍乘因子,分别如图4(a )-图4(c )所示。 蝶形因子的运算关系为:

001O I I =+

101O I I =-

图4 3种运算因子图示

需要2次加法完成;倍乘因子的输入输出关系比较简单:只需 1次乘法;旋转因子的运算关系为:

001cos

sin 22n n O I k I k N N

ππ=+ 101sin cos 22n n O I k I k N N ππ=-+ 需4次乘法2次加法完成。如果对其输入输出关系式做以下变换:

()0101cos sin cos 222n n n O I k k k I I N N N πππ??=+++ ??? ()1001cos sin cos 222n n n O I k k k I I N N N πππ??=-+++ ??

? 只需要3次乘法3次加法。其中,2cos 2k N π和2sin 2k N

π以及它们的和差都是已知系数,通过查表获得。

由此计算可知,1个8点DCT 的Loeffler 算法共需要11次乘法29次加法。从DSP 汇编语言编程的角度来看,1个代数运算应包括取操作数、运算、存操作数3个步骤。因此,该算法大约需要120条指令。C5409的运算能力很强,支持单周期加、减法和单周期乘法运算,并且能够在单周期完成2个16位数的加、减法运算,再加上DSP 中有3组数据总线,因而可以利用长操作数(32 位)进行长字运算。在长字指令中,给出的地址存取的总是高16位操作数,因而只需5条长字指令即可计算2个蝶形运算。加上采取其他的一些优化措施,大约90条指令完成Loeffler 算法。虽然Loeffler 算法运算量最小,但是运用于本文系统并不是最优。因为该算法是为高级语言设计,没有利用汇编语言的特点和DSP 硬件的特点。本文提出了基于DSP 乘法累加单元的DCT 快速算法。DSP 的乘法累加单元能在单周期内完成一次乘法和一次累加运算,如汇编指令(见表 2)运用于DCT 运算,将大大简化程序的复杂度并减少计算的时间。

表2 C5409双操作数乘法累加指令

具体算法如下:利用蝶形运算:

()()()()0707;07S x x S x x =+=-

()()()()1616;16S x x S x x =+=-

()()()()2525;25S x x S x x =+=-

()()()()3434;34S x x S x x =+=-

展开一维DCT 公式:

()()()1

221cos 4N k n n k

y k Cga x n g N π-=+=∑

(2)

01,cos 4k a a π

≠==式中:当k 0时,

经过化简合并后结果如下:

()()()()()()()()0123

0123

0123

0123

4567

4567

4567

4567

02461357y aS aS aS aS y fS gS gS gS y aS aS aS aS y gS fS fS gS y eS dS cS bS y dS dS eS cS y eS eS bS dS y bS cS dS eS =+++=+--=--+=-+-=+++=---+=+-+=-+-+

式中:

1

0.3536,cos 0.4904216a b π

====

1

31

5cos 0.4157,cos 0.2778216216c d π

π

====

1

71cos 0.0975,cos 0.461921628e f ππ

====

13cos 0.191328

g π== 从上面表达式可以看出,(0)~(7)y y 都是乘法累加运算,而S0~ S7可由(0)~(7)x x 经过蝶形运算得到,因此DCT 算法由原来的4级运算变成2级,即第1级蝶形运算和第2级乘法累加运算,第1级蝶形运算共要10+ 4=14 (10次计算操作和4次辅助操作)条指令,第2级运算每个输出要4+ 1+ 1= 6条指令(做4次乘法累加运算、1次读取操作和1次存储操作),一共 48条指令,这样计算一个8点DCT 要62条指令。因此大大缩减了运算的时间,提高了CPU 的工作效率,增强系统的实时性。

2. 2. 2 量化算法优化

在JPEG 图像压缩技术中,传统量化的核心是量化表。所谓标量量化就是对8?8图像块的 DCT 变换系数使用量化表组逐个相除并四舍五入。JPEG 推荐了色度与亮度2个量化表,它按照自然图像进行高频与低频部分压缩量的比率分配。但是如果图像信号频率分布不均,如高频分量很多或低频分量很多,这个量化表就不是最优的了。因此如果按照图像高频低频的具体情形对量化表调整,就可在质量相同的情况下获得更高的压缩率,或者在压缩率相同的情况下获得更高的图像质量。本文提出的根据事实情况自适应量化方法,即量化阶段采用二次计算的方法,其算法过程主要为2步:(1)对变换后的图像系数进行自适应处理;

(2)构造新的量化表。具体方法如下:

首先求出亮度分量和2个色度分量在频率域中所有8?8子块的63个交流系数绝对值的平均值(,)P u v ,其中,0,...,7u v =为位置信息。接下来求出63个交流系数平均值中的最大值,1(,)[1(,)]Z u v MAX P u v =,最后将63个交流系数平均值进行归一化处理,同时加入频率位置信息,分别得出亮度和色度量化表中63个交流分量的矫正系数,计算过程如式(3)

所示: 2221()1(,)(,)1(,)

V u v P u v X u v Z u v += (3) 由此可以得到量化表的矫正式Q1 ( u, v ) =Q1( u, v ) / X1( u,v)对 JPEG 量化表进行矫正,作为最终的量化表进行量化。将上述矫正后的量化表作为最终的量化表,对图像进行标准 JPEG 压缩形成完全符合JPEG 格式的压缩文件。本算法的解码过程与标准JPEG 解码过程完全相同,可以看出它也是标准 JPEG 编码过程的逆过程。

3 实验结果

3. 1 快速 DCT 运算

将本文提出的算法、Loeffler 的DSP 优化算法和纯Loeffer 算法分别进行测试。结果如表3所示,从中可以看到本文算法较Loeffler 的DSP 优化算法大约节省了1/ 4的时间,较纯Loeff ler 算法大约节省了一半的时间,其效果是十分明显的(5409时钟频率100 MHz )。

表3 3种算法比较

3. 2 自适应量化

就自适应量化器进行了微机仿真。本文采用中等复杂度的标准图像作为测试图,与基本JPEG 系统进行性能比较(基于峰值信噪比(PSNR))。只将JPEG标准方法中的量化表更改为2. 2. 2修正的量化表,就可以在同等压缩比下,提高恢复图像的质量。表4为不同压缩比下,采用JPEG量化表和自适应量化表两种方法的峰值信噪比的比较。从压缩比和峰值信噪比的对比结果可看出,自适应量化JPEG方法的压缩比略高于标准JPEG方法。

表4 不同压缩比下峰值信噪比的比较

4 结论

本文以TI的TMS320VC5409作为开发平台,实现了一种新的JPEG图像压缩系统。该系统的优点是提高了JPEG的运行速度,增强了图像的压缩率和质量,并且易于硬件实现。这一实现方案可应用于需要对视频图像进行实时采集、压缩及存储的绝大部分场合。

参考文献

[1]PENNEBAKER W B. JPEG静止数据压缩标准[M].黎洪松,成实,译. 北京:学苑出版

社,1996.

[2]林福宗. 图像文件格式(上) [M] . 北京:清华大学出版社,1996.

[3]TMS 320VC5409 Datasheet [DB/OL]. Literature Number:SPRS082C;Texas Instrument s;

April ,1999.

[4]RABADI W,TALLURI R,ILLGNER K,et al. Programmable DSP platform,for digital still

cameras. Texas Instruments Incorporated [DB/OL]. Literature Number:SPRA651- April,2000.

[5]张雪松,倪国强,周立伟. 基于JPEG标准实时图像编码系统的研究[J]. 北京理工大学学

报,1998,18(2):217-221.

[6]LOEFFLER C,LIGT ENBERG A,MOSCHYT Z G. Pratical fast 1-D DCT algorithm with

11multiplication [J]. Procint1confon Acoustics Speech and Signal Processing,1989(ICAS SP89):988-991.

[7]齐美彬. 基于DSP的视频图像压缩系统的研究[D]. 合肥:合肥工业大学,2001.

相关主题
相关文档
最新文档