引言
随着多媒体和网络技术的发展,数字图像大信息量的特点对图像压缩技术的要求越来越高,因此,专用高速数字信息处理技术成为发展的方向。其中,在硬件技术中,TI 推出的C5000系列DSP将数字信号处理器的处理能力提升到了一个新的高度,使信号处理系统的研究重点又回到软件算法上。在压缩算法研究方面,DCT、小波等多个算法因为其高可靠性和高效性也越来越受到青睐。
系统硬件设计
TMS320C5409作为主处理器的可行性分析
TMS320C5409时钟频率为100MHz,性价比极高。采用围绕1组程序总线、3组数据总线和4组地址总线建立的改进型哈佛结构,取址和读数可同时进行。有独立的硬件乘法器,有利于实现优化卷积、数字滤波、FFT、矩阵运算等算法中的大量重复乘法运算。具有循环寻址、位倒序等特殊指令,这些指令使FFT、卷积等运算中的寻址、排序及计算速度大大提高。有一组或多组独立的DMA总线,与CPU的程序、数据总线并行工作。
在本系统中,TMS320C5409作为主处理器,任务是实现JPEG压缩编码。
通过分析不难得到,当处理一帧大小为640×480的图像时,作JPEG压缩编码所需要的时间为:
T=62×10(ns)×640×480=0.19866s,当所处理的图像分辨率更小时,则压缩每帧所花的时间更少,这对于应用在对实时性要求不是很高的场合是完全可行的。
硬件设计框图
图1 图像处理系统结构框图
图1是基于TMS320C5409的图像处理系统结构图。C5409为中央处理器,SRAM为DSP片外扩展数据存储器,EEPROM为脱机工作时的程序存储器,用于存储系统的引导程序和其它应用程序, A/D转换部分负责把转换为数字信号的图像存入帧存储器中。地址译码、图像采集系统控制电路产生本系统各部分的地址译码信号,使之映射到不同的地址区域,并控制ADC进行图像采集,这部分由CPLD控制;图像采集芯片的寄存器控制由51单片机完成。
图 2 存储器扩展示意图
存储空间的扩展方案
经过A/D转换的原始图像数据是非常大的,TMS320C5409的内部仅有32KB的RAM和16KB的ROM ,不能满足需要,因此,必须扩展存储器来存放原始图像数据和应用程序。本文考虑外接64KB的RAM和512KB的Flash,RAM使用Cypress公司的CY7C1021V33, Flash采用SST公司的SST39VF512。由于 C5409的数据空间仅为64KB,因此采用内存页扩展技术。C5409的扩展输出口1Q和2Q作为扩展内存的页选择信号。用C5409的A15引脚和XF引脚通过3/8译码器来控制扩展存储器片选信号的产生,当A15=0时,选择片内RAM;当A15=1,XF=0时选择片外SRAM;当A15=1,XF=1时选择片外Flash;存储器的扩展如图2所示。将外部扩展RAM的64KB中的48KB用于存放原始图像数据,16KB用于存放压缩后的图像和程序以及暂存的数据。
DSP芯片电源电路设计
电源设计中需要考虑的主要问题是功率和散热。功率要求:电流的消耗主要取决于器件的激活度,即CPU的激活度,外设功耗主要取决于正在工作的外设及其速度,与CPU相比,外设功耗是比较小的。以TMS320C5409为例,进行FFT运算时,需要的电源电流。因此在设计电源时,必须考虑在电源电流和实际需用电流之间留有一定裕量,因为峰值电流会更大,裕量至少是20%。
&nb
C5409采用了双电源供电机制,工作电压为3.3V和1.8V。其中,1.8V主要为DSP的内部逻辑提供电压,包括CPU和其它所有外设逻辑。外部接口引脚采用3.3V电压。本系统的电源采用了TI公司的两路输出电源芯片TPS73HD318,它是一种双输出稳压器。输出电压一路为3.3V、一路为1.8V,每路电源的输出电流为750mA。
JPEG图像压缩算法
JPEG算法的优化
尽管JPEG基本系统能够对图像进行低压缩比压缩,但是DCT和IDCT在软件实现的过程中,是耗费时间的运算,而且,由于没有考虑图像本身的频谱特性,JPEG量化表对于所有图像压缩并不一定。采用快速DCT算法可提高软件的速度,增强软件的实时性。同时,根据图像本身的频谱特性,自适应改进JPEG推荐的量化表。
快速DCT算法
如果将一幅图像分成许多8×8的小块后直接进行2D-DCT变换,运算量将会十分巨大。因此,需要将8×8二维DCT变换转换成两次8点的一维DCT复合运算。具体做法是对每一个8×8 块先做列方向上的DCT变换,得到一个中间矩阵,再对该矩阵各行进行DCT变换。可以看到,8×8矩阵的2维DCT可以转换成16次一维8点DCT。
目前,很多针对一维DCT运算的DCT快速算法已经提出。其中,Loeffler算法所需要的计算量。Loeffler算法将8点一维DCT运算分为4级,由于各级之间的输入/输出存在依存关系,4级操作必须串行进行,而各级内部的运算可并行处理。
由此计算可知,一个8点DCT的Loeffler算法共需要11次乘法和29次加法。从DSP汇编语言编程的角度来看,一个代数运算应包括取操作数、运算、存操作数三个步骤。因此,该算法大约需要120条指令。C5409的运算能力很强,支持单周期加/减法和单周期乘法运算,并且能够在单周期内完成两个16位数的加/减法运算,再加上DSP中有3组数据总线,因而可以利用长操作数(32位)进行长字运算。在长字指令中,给出的地址存取的总是高16位操作数,因而只需5条长字指令即可计算2个蝶形运算。加上采取其它优化措施,大约需90条指令完成Loeffler算法。
虽然Loeffler算法运算量,但是运用于本文系统并不是。因为该算法是为语言设计,没有利用汇编语言的特点和DSP硬件的特点。本文提出了基于DSP乘法累加单元的DCT快速算法。
D SP的乘法累加单元能在单周期内完成乘法和累加运算。如汇编指令运用于DCT运算,将大大简化程序的复杂度并减少计算时间。具体算法如下,利用蝶形运算:
S0=x(0)+x(7);S7=x(0)-x(7)
S1=x(1)+x(6);S6=x(1)-x(6)
S2=x(2)+x(5);S5=x(2)-x(5)
S3=x(3)+x(4);S4=x(3)-x(4)
展开一维DCT公式
经过化简合并后结果如下:
y(0)=aS0+aS1+aS2+aS3
y(2)=fS0+gS1-gS2-aS3
y(4)=aS0
由此可以得到量化表的矫正式 Qp1 ( u , v) = Q1 ( u , v) / X1 ( u , v),对JPEG量化表进行矫正。
将上述矫正后的量化表作为终的量化表,对图像进行标准JPEG压缩,形成完全符合JPEG格式的压缩文件。本算法的解码过程与标准JPEG解码过程完全相同,可以看出它也是标准JPEG编码过程的逆过程。
实验结果
快速DCT运算
将本文提出的算法、Loeffler的DSP优化算法和纯Loeffler算法分别进行测试。结果见表1,可以看到本文算法较Loeffler的DSP优化算法大约节省了1/4的时间,较纯Loeffler算法大约节省了一半时间,其效果是十分明显的。
自适应量化
对自适应量化器进行仿真。本文采用中等复杂度的标准图像作为测试图,与基本JPEG系统进行性能比较 (基于峰值信噪比(PSNR))。只将JPEG标准方法中的量化表更改为修正的量化表,就可以在同等压缩比下,提高恢复图像的质量。表2为不同压缩比下,采用JPEG量化表和自适应量化表两种方法的峰值信噪比。从压缩比和峰值信噪比的对比结果可看出,自适应量化JPEG方法的压缩比略高于标准JPEG方法。
结语
本文以TI的TMS320C5409作为开发平台,实现了一种新的JPEG图像压缩系统。该系统的优点是提高了JPEG的运行速度,增强了图像的压缩率和质量,并且易于硬件实现。这一方案可应用于需要对视频图像进行实时采集、压缩及存储的绝大部分场合。
[1]. C5000 datasheet https://www.dzsc.com/datasheet/C5000_1136424.html.
[2]. CPLD datasheet https://www.dzsc.com/datasheet/CPLD_1136600.html.
[3]. SST datasheet https://www.dzsc.com/datasheet/SST_1180824.html.
[4]. SST39VF512 datasheet https://www.dzsc.com/datasheet/SST39VF512_887736.html.
[5]. A15 datasheet https://www.dzsc.com/datasheet/A15_1244519.html.
[6]. TPS73HD318 datasheet https://www.dzsc.com/datasheet/TPS73HD318_1049719.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。