APP下载

基于ATmega128的LED屏图像数据解码设计

2009-05-12杜小伟谢桂泉周展怀潘永雄

现代电子技术 2009年2期

杜小伟 谢桂泉 周展怀 潘永雄

摘 要:针对目前对全彩LED显示屏图像数据的处理需依赖计算机的情况,提出利用ATmega128单片机实现JPEG图像解码的方法,并利用此方法实现了通过GPRS网络对全彩LED显示屏图像数据的远程传输。针对ATmega128的资源和性能特点,对JPEG解码进行了可行性分析。重点论述Huffman解码、IDCT解码和图像缩放的优化算法在ATmega128单片机上的实现。由于图像的处理在单片机上实现,降低了产品的成本,具有较强地生产实用性。

关键词:ATmega128;JPEG解码;Huffman解码;IDCT解码;全彩LED显示屏

中图分类号:TP368文献标识码:B

文章编号:1004 373X(2009)04 192 03

Design of Decoding for LED Display′s Image Data Based on ATmega128

DU Xiaowei1,XIE Guiquan1,ZHOU Zhanhuai2,PAN Yongxiong2

(1.South China University of Technology,Guangzhou,510641,China;2.Guangdong University of Technology,Guangzhou,510006,China)

Abstract:According to the situation that at present the image data′s processing of the full-color LED display relyes on the computer,this paper proposes a solution of using ATmega128 chip to realize the purpose of decoding JPEG image.By using the solution,images in full-color LED′s display can be changed through the GPRS networks.Feasibility analysis of JPEG decode is given according to the resources and characteristics of ATmega128.The article emphasizes the realization of Huffman decode,IDCT decode and image scaling on ATmega128.Because image processing is achieved in microcontroller,which reduces the cost of products and have strong production practicality.

Keywords:ATmega128;JPEG decode;Huffman decode;IDCT decode;full-color LED display

专利:基于GPRS的远程交互式多用户智能信息屏设备(ZL200720052615.4)

随着LED显示屏的普及和成本的降低,LED显示屏已经成为公共场合信息宣传的一种重要工具[1]。目前实现对LED显示屏的文字图像更改的方法主要有:显示屏通过串口或网线与计算机连接实现更改;通过GPRS网络实现数据的远程传输,接收后在计算机上用特定软件解码后发送到LED显示屏显示。以上方法始终需要在计算机平台上实现,附加成本较高。

设计利用手机作为发送端,发送彩信至GPRS模块,利用ATmega128单片机直接对彩信图像进行解码然后发送到LED显示屏上进行显示。

1 JPEG解码可行性分析

该设计所用全彩LED屏接收的数据格式为Xmp格式[2],Xmp格式是简化的BMP格式。Xmp格式在图像数据前有6个字节表示图像的属性,第1字节为1个点的字节数;第2字节为XMP文件中包含的图片个数;第3,4字节为图像的高;第5,6字节为图像的宽,其后为图像每点的颜色。每点的颜色用2个字节表示(16位色)。由于所用全彩LED屏只有64×64像素,所以JPEG解码后还需进行图像的缩放。

JPEG解码过程中所需要的缓存主要包括原始JPEG图像数据的缓存、中间变量的缓存以及解出的Xmp数据的缓存。根据JPEG图像的复杂度及压缩比的不同,一般一帧320×240的彩色JPEG图像的大小在2~20 KB。JPEG解码缓存主要用于存储Huffman表,量化表,IDCT解码的临时结果等。这些大约需要8 KB。解出的Xmp数据的缓存要求的RAM相对比较固定为9 KB。综上JPEG解码大致需25 KB的RAM。ATmega128内部只有4 KB的SRAM[3],所以该系统外扩了64 KB的外部RAM。

2 软件实现

该设计采用avr-gcc作为编译工具。avr-gcc默认设置栈由内部RAM的顶部向下生长[4]。由于图像处理过程中需要占用大量的RAM空间,所以应该通过设置把所有数据区移到外部RAM,只留栈区在内部RAM,避免数据的相互覆盖。

JPEG解码[5]过程主要包括Huffman解码、反量化及IDCT变换、色彩变换等模块。该文采用的LED显示屏是64×64点像素,并且只能显示Xmp格式的图片。因此在JPEG解码后需增加图像的缩放模块。其流程框图如图1所示。

图1 JPEG图像解码为Xmp格式的流程图

2.1 Huffman解码的实现

Huffman解码是解码过程中重要的一环。传统的哈夫曼解码需要逐位查找哈夫曼表,进行比较判断,由于查找过程需要大量的移位及循环。这样的解码效率非常低。针对这种情况,充分考虑到ATmega128的存储容量的限制,在读文件头时,软件事先构造出不同码长下的哈夫曼码字的最小值表和最大值表如表1所示,最小值在哈夫曼表中的索引以及哈夫曼树各叶子结点对应的编码表。

表1 构造的最小值表和最大值表

不同码长的首地址最小值表最大值表

码长为1的最小值的首地址码长为1的最小值码长为1的最大值

码长为n的最小值的首地址码长为n的最小值码长为n的最大值

码长为16的最小值的首地址码长为16的最小值码长为16的最大值

在解码的时候,读取1串二进制数据,分别与各码长下的最大值和最小值进行比较,如果在哈夫曼表中没有该码长的码字,说明该比特数据不是完整的Huffman编码,接着读取下一个比特数据加在前面的比特数据组成的新的码字,然后再在最小值表和最大值表中进行查找,直至找到确切的码字。最后把该码字减去同一码长下最小值,加上此最小值在哈夫曼表中的索引即可得到该码字在编码表中的位置。

2.2 IDCT变换的实现

将8×8 块中的颜色分量单元的64个值逐一乘以对应的量化表内位置相同的系数,然后再将64个数据进行Z字型的重新排列,进行IDCT变换。IDCT的运算量很大,其中要进行大量的浮点乘法和加法运算,因而在解码过程中IDCT所占时间最多。采用行列分解法先将二维IDCT分解成一维8点的IDCT,对于一维8点IDCT采用Loeffler的快速算法[6]。图2为 Loeffler算法的流程图,Loeffler算法运算因子的解释如图3所示。

图2 Loeffler算法流程图

图3 Loeffler算法运算因子的解释

直接对旋转因子进行计算需要4次乘法和2次加法,这样1次8个点的一维IDCT变换总共需要14次乘法和26次加法[7]。可以对旋转因子进行变形如式(1)所示:

O0=2(sinnπ2N-cosnπ2N)·2cosnπ2N·(I0+I1)

O1=2(sinnπ2N+cosnπ2N)·2cosnπ2N·(I0+I1)

(1)

从而1次旋转因子计算只需要3次乘和3次加。进而进行1次一维IDCT只需11次乘和29次加。因为乘法运算的代价高于加法运算,所以这种变形是有益的。完成一次二维的IDCT运算总共要进行16次的8点一维IDCT运算。由于ATmega128在速度方面的限制,在IDCT运算过程中把浮点操作改进为整形运算,并且把2cosnπ16的值扩大211倍存储起来,为IDCT运算做准备。

2.3 图像的缩放

由于该设计所使用的显示屏为64×64个像素,所以对于JPEG格式的彩信需要先进行解码,然后再进行缩放,使其成为64×64的格式。一般情况下,图像缩放是采用目标图像到源图像“逆向映射”法。但是考虑到ATmega128 RAM容量的限制,如果先解出源图像,则会占用大量的RAM,因此采用源图像到目标图像的映射方法。当解出源图像一个像素的RGB值时,通过运算求出其在目标图像中的位置;先判断此位置是否为零,如果是,则直接存储;如果否,则求两数的平均值后存储。对于源图像中n个像素点对应目标图像1个像素点的情况,这个目标图像像素点的颜色分量I=I1/2n+…+I璶/2,其中:I1为对应源图像中第一个像素点的颜色分量,I璶为最后一个的颜色分量。

该设计所用方法得到的Xmp格式图像与最近邻域法所得图像的比较如图4所示。图4(a)为Lena原图,图4(b)为采用最近邻域法得到的Xmp格式图像,图4(c)为本文所用方法得到的Xmp格式图像。对比可知,这里所用的方法得到的图像像素点间过渡比较平滑,有比较好的显示效果。此方法是对最近邻域法的改进,既避免了在使用最近邻域法时源图像某些像素信息的丢失,又节省了系统的RAM资源。

图4 原图和两种方法处理后得到的Xmp图

3 硬件实现

该系统的硬件实现框图如图5所示:

图5 系统硬件框图

系统以ATmega128单片机为主要芯片,通过RS 232和TR800进行数据传输[8]。ATmega128通过命令读取TR800接收到的彩信图像,进行解码处理。然后通过RS 232把数据传输到全彩LED显示屏进行图像的更改。在ATmega128与外部SRAM之间使用了锁存器[9],该设计采用的是74AHC573。

TR-800模块是一个高性能、功耗小的GPRS模块[10],它内嵌了WAP协议栈、TCP/IP协议栈、MMS协议栈便于用户的二次开发以及固件的升级。由于以上特点,该设计选用此模块来实现对彩信收发处理功能。LED显示屏的传输协议遵守Xmodem通信协议,采用CRC校验。整个系统运行效果表明,ATmega128在采用16 MHz晶振的情况下解码167×173像素的JPEG图片大约需要1 s。

4 结 语

提出适合于全彩LED显示屏的远程图像传输设计,并给出关键问题的解决方法。由于利用单片机实现了图像的软件解码,这给工程上应用带来便利。该设计能广泛应用于车载,或者户外广告屏的图像数据的处理传输。将计算量庞大的JPEG解码算法成功地在ATmega128上进行移植,并由此实现全彩LED显示屏图像数据的远程更改,具有较强生产实用性。

设计完成的“基于GPRS的远程交互式多用户智能信息屏”在第十届“挑战杯”全国大学生课外学术科技作品竞赛中获二等奖。

参考文献

[1]刘洪楷.繁荣的LED市场展现出无限美好的前景[J].光机电信息,2000(10):35-36.

[2]SuperComm_SDK_Manual.pdf.http://www.lytec.com.cn,2007/2007.

[3]ATMEL.mega128 Datasheet.http://www.atmega.com,2007/2007.

[4]马潮.高档8位单片机ATmega128原理与开发应用指南(上)[M].北京:北京航空航天大学出版社,2004.

[5]吴嘉慧.JPEG图像解码方案[J].现代计算机,2007(3):49-53.

[6]Loeffler C,Ligtenberg A,Moschytz G.Practical Fast 1D DCT Algorithms with 11 Multiplications[A].ICASSP′89,Proceedings of IEEE International Conference on Acoustics,Speech and Signal Processing.1989,2 (5):988-991.

[7]罗天煦,邝继顺.一种基于Loeffler算法的快速实现2D DCT/IDCT的方法[J].计算机应用研究,2007(1):224-226.

[8]姜虎强,姜平,杜亚江,等.基于ATmega128的无线数据采集系统[J].微计算机信息,2007,23(9):129-131.

[9]王少卿,霍迎辉.ATmega128在开发应用中应注意的问题[J].微型机与应用,2004(2):15-17.

[10]Anon.TR-800MMSATC_Guidev1.0_270407.pdf.http://www.iwow.com.sg,2007/2007.

作者简介 杜小伟 男,1983年出生,湖北襄樊人,2007年获广东工业大学电子科学与技术学士学位,在读硕士研究生。研究方向为嵌入式系统的开发与应用。