国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ATmega128的LED屏圖像數(shù)據(jù)解碼設(shè)計(jì)

2009-05-12 03:14杜小偉謝桂泉周展懷潘永雄
現(xiàn)代電子技術(shù) 2009年2期

杜小偉 謝桂泉 周展懷 潘永雄

摘 要:針對(duì)目前對(duì)全彩LED顯示屏圖像數(shù)據(jù)的處理需依賴計(jì)算機(jī)的情況,提出利用ATmega128單片機(jī)實(shí)現(xiàn)JPEG圖像解碼的方法,并利用此方法實(shí)現(xiàn)了通過(guò)GPRS網(wǎng)絡(luò)對(duì)全彩LED顯示屏圖像數(shù)據(jù)的遠(yuǎn)程傳輸。針對(duì)ATmega128的資源和性能特點(diǎn),對(duì)JPEG解碼進(jìn)行了可行性分析。重點(diǎn)論述Huffman解碼、IDCT解碼和圖像縮放的優(yōu)化算法在ATmega128單片機(jī)上的實(shí)現(xiàn)。由于圖像的處理在單片機(jī)上實(shí)現(xiàn),降低了產(chǎn)品的成本,具有較強(qiáng)地生產(chǎn)實(shí)用性。

關(guān)鍵詞:ATmega128;JPEG解碼;Huffman解碼;IDCT解碼;全彩LED顯示屏

中圖分類號(hào):TP368文獻(xiàn)標(biāo)識(shí)碼:B

文章編號(hào):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的遠(yuǎn)程交互式多用戶智能信息屏設(shè)備(ZL200720052615.4)

隨著LED顯示屏的普及和成本的降低,LED顯示屏已經(jīng)成為公共場(chǎng)合信息宣傳的一種重要工具[1]。目前實(shí)現(xiàn)對(duì)LED顯示屏的文字圖像更改的方法主要有:顯示屏通過(guò)串口或網(wǎng)線與計(jì)算機(jī)連接實(shí)現(xiàn)更改;通過(guò)GPRS網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程傳輸,接收后在計(jì)算機(jī)上用特定軟件解碼后發(fā)送到LED顯示屏顯示。以上方法始終需要在計(jì)算機(jī)平臺(tái)上實(shí)現(xiàn),附加成本較高。

設(shè)計(jì)利用手機(jī)作為發(fā)送端,發(fā)送彩信至GPRS模塊,利用ATmega128單片機(jī)直接對(duì)彩信圖像進(jìn)行解碼然后發(fā)送到LED顯示屏上進(jìn)行顯示。

1 JPEG解碼可行性分析

該設(shè)計(jì)所用全彩LED屏接收的數(shù)據(jù)格式為Xmp格式[2],Xmp格式是簡(jiǎn)化的BMP格式。Xmp格式在圖像數(shù)據(jù)前有6個(gè)字節(jié)表示圖像的屬性,第1字節(jié)為1個(gè)點(diǎn)的字節(jié)數(shù);第2字節(jié)為XMP文件中包含的圖片個(gè)數(shù);第3,4字節(jié)為圖像的高;第5,6字節(jié)為圖像的寬,其后為圖像每點(diǎn)的顏色。每點(diǎn)的顏色用2個(gè)字節(jié)表示(16位色)。由于所用全彩LED屏只有64×64像素,所以JPEG解碼后還需進(jìn)行圖像的縮放。

JPEG解碼過(guò)程中所需要的緩存主要包括原始JPEG圖像數(shù)據(jù)的緩存、中間變量的緩存以及解出的Xmp數(shù)據(jù)的緩存。根據(jù)JPEG圖像的復(fù)雜度及壓縮比的不同,一般一幀320×240的彩色JPEG圖像的大小在2~20 KB。JPEG解碼緩存主要用于存儲(chǔ)Huffman表,量化表,IDCT解碼的臨時(shí)結(jié)果等。這些大約需要8 KB。解出的Xmp數(shù)據(jù)的緩存要求的RAM相對(duì)比較固定為9 KB。綜上JPEG解碼大致需25 KB的RAM。ATmega128內(nèi)部只有4 KB的SRAM[3],所以該系統(tǒng)外擴(kuò)了64 KB的外部RAM。

2 軟件實(shí)現(xiàn)

該設(shè)計(jì)采用avr-gcc作為編譯工具。avr-gcc默認(rèn)設(shè)置棧由內(nèi)部RAM的頂部向下生長(zhǎng)[4]。由于圖像處理過(guò)程中需要占用大量的RAM空間,所以應(yīng)該通過(guò)設(shè)置把所有數(shù)據(jù)區(qū)移到外部RAM,只留棧區(qū)在內(nèi)部RAM,避免數(shù)據(jù)的相互覆蓋。

JPEG解碼[5]過(guò)程主要包括Huffman解碼、反量化及IDCT變換、色彩變換等模塊。該文采用的LED顯示屏是64×64點(diǎn)像素,并且只能顯示Xmp格式的圖片。因此在JPEG解碼后需增加圖像的縮放模塊。其流程框圖如圖1所示。

圖1 JPEG圖像解碼為Xmp格式的流程圖

2.1 Huffman解碼的實(shí)現(xiàn)

Huffman解碼是解碼過(guò)程中重要的一環(huán)。傳統(tǒng)的哈夫曼解碼需要逐位查找哈夫曼表,進(jìn)行比較判斷,由于查找過(guò)程需要大量的移位及循環(huán)。這樣的解碼效率非常低。針對(duì)這種情況,充分考慮到ATmega128的存儲(chǔ)容量的限制,在讀文件頭時(shí),軟件事先構(gòu)造出不同碼長(zhǎng)下的哈夫曼碼字的最小值表和最大值表如表1所示,最小值在哈夫曼表中的索引以及哈夫曼樹各葉子結(jié)點(diǎn)對(duì)應(yīng)的編碼表。

表1 構(gòu)造的最小值表和最大值表

不同碼長(zhǎng)的首地址最小值表最大值表

碼長(zhǎng)為1的最小值的首地址碼長(zhǎng)為1的最小值碼長(zhǎng)為1的最大值

碼長(zhǎng)為n的最小值的首地址碼長(zhǎng)為n的最小值碼長(zhǎng)為n的最大值

碼長(zhǎng)為16的最小值的首地址碼長(zhǎng)為16的最小值碼長(zhǎng)為16的最大值

在解碼的時(shí)候,讀取1串二進(jìn)制數(shù)據(jù),分別與各碼長(zhǎng)下的最大值和最小值進(jìn)行比較,如果在哈夫曼表中沒有該碼長(zhǎng)的碼字,說(shuō)明該比特?cái)?shù)據(jù)不是完整的Huffman編碼,接著讀取下一個(gè)比特?cái)?shù)據(jù)加在前面的比特?cái)?shù)據(jù)組成的新的碼字,然后再在最小值表和最大值表中進(jìn)行查找,直至找到確切的碼字。最后把該碼字減去同一碼長(zhǎng)下最小值,加上此最小值在哈夫曼表中的索引即可得到該碼字在編碼表中的位置。

2.2 IDCT變換的實(shí)現(xiàn)

將8×8 塊中的顏色分量單元的64個(gè)值逐一乘以對(duì)應(yīng)的量化表內(nèi)位置相同的系數(shù),然后再將64個(gè)數(shù)據(jù)進(jìn)行Z字型的重新排列,進(jìn)行IDCT變換。IDCT的運(yùn)算量很大,其中要進(jìn)行大量的浮點(diǎn)乘法和加法運(yùn)算,因而在解碼過(guò)程中IDCT所占時(shí)間最多。采用行列分解法先將二維IDCT分解成一維8點(diǎn)的IDCT,對(duì)于一維8點(diǎn)IDCT采用Loeffler的快速算法[6]。圖2為 Loeffler算法的流程圖,Loeffler算法運(yùn)算因子的解釋如圖3所示。

圖2 Loeffler算法流程圖

圖3 Loeffler算法運(yùn)算因子的解釋

直接對(duì)旋轉(zhuǎn)因子進(jìn)行計(jì)算需要4次乘法和2次加法,這樣1次8個(gè)點(diǎn)的一維IDCT變換總共需要14次乘法和26次加法[7]??梢詫?duì)旋轉(zhuǎn)因子進(jìn)行變形如式(1)所示:

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

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

(1)

從而1次旋轉(zhuǎn)因子計(jì)算只需要3次乘和3次加。進(jìn)而進(jìn)行1次一維IDCT只需11次乘和29次加。因?yàn)槌朔ㄟ\(yùn)算的代價(jià)高于加法運(yùn)算,所以這種變形是有益的。完成一次二維的IDCT運(yùn)算總共要進(jìn)行16次的8點(diǎn)一維IDCT運(yùn)算。由于ATmega128在速度方面的限制,在IDCT運(yùn)算過(guò)程中把浮點(diǎn)操作改進(jìn)為整形運(yùn)算,并且把2cosnπ16的值擴(kuò)大211倍存儲(chǔ)起來(lái),為IDCT運(yùn)算做準(zhǔn)備。

2.3 圖像的縮放

由于該設(shè)計(jì)所使用的顯示屏為64×64個(gè)像素,所以對(duì)于JPEG格式的彩信需要先進(jìn)行解碼,然后再進(jìn)行縮放,使其成為64×64的格式。一般情況下,圖像縮放是采用目標(biāo)圖像到源圖像“逆向映射”法。但是考慮到ATmega128 RAM容量的限制,如果先解出源圖像,則會(huì)占用大量的RAM,因此采用源圖像到目標(biāo)圖像的映射方法。當(dāng)解出源圖像一個(gè)像素的RGB值時(shí),通過(guò)運(yùn)算求出其在目標(biāo)圖像中的位置;先判斷此位置是否為零,如果是,則直接存儲(chǔ);如果否,則求兩數(shù)的平均值后存儲(chǔ)。對(duì)于源圖像中n個(gè)像素點(diǎn)對(duì)應(yīng)目標(biāo)圖像1個(gè)像素點(diǎn)的情況,這個(gè)目標(biāo)圖像像素點(diǎn)的顏色分量I=I1/2n+…+I璶/2,其中:I1為對(duì)應(yīng)源圖像中第一個(gè)像素點(diǎn)的顏色分量,I璶為最后一個(gè)的顏色分量。

該設(shè)計(jì)所用方法得到的Xmp格式圖像與最近鄰域法所得圖像的比較如圖4所示。圖4(a)為L(zhǎng)ena原圖,圖4(b)為采用最近鄰域法得到的Xmp格式圖像,圖4(c)為本文所用方法得到的Xmp格式圖像。對(duì)比可知,這里所用的方法得到的圖像像素點(diǎn)間過(guò)渡比較平滑,有比較好的顯示效果。此方法是對(duì)最近鄰域法的改進(jìn),既避免了在使用最近鄰域法時(shí)源圖像某些像素信息的丟失,又節(jié)省了系統(tǒng)的RAM資源。

圖4 原圖和兩種方法處理后得到的Xmp圖

3 硬件實(shí)現(xiàn)

該系統(tǒng)的硬件實(shí)現(xiàn)框圖如圖5所示:

圖5 系統(tǒng)硬件框圖

系統(tǒng)以ATmega128單片機(jī)為主要芯片,通過(guò)RS 232和TR800進(jìn)行數(shù)據(jù)傳輸[8]。ATmega128通過(guò)命令讀取TR800接收到的彩信圖像,進(jìn)行解碼處理。然后通過(guò)RS 232把數(shù)據(jù)傳輸?shù)饺蔐ED顯示屏進(jìn)行圖像的更改。在ATmega128與外部SRAM之間使用了鎖存器[9],該設(shè)計(jì)采用的是74AHC573。

TR-800模塊是一個(gè)高性能、功耗小的GPRS模塊[10],它內(nèi)嵌了WAP協(xié)議棧、TCP/IP協(xié)議棧、MMS協(xié)議棧便于用戶的二次開發(fā)以及固件的升級(jí)。由于以上特點(diǎn),該設(shè)計(jì)選用此模塊來(lái)實(shí)現(xiàn)對(duì)彩信收發(fā)處理功能。LED顯示屏的傳輸協(xié)議遵守Xmodem通信協(xié)議,采用CRC校驗(yàn)。整個(gè)系統(tǒng)運(yùn)行效果表明,ATmega128在采用16 MHz晶振的情況下解碼167×173像素的JPEG圖片大約需要1 s。

4 結(jié) 語(yǔ)

提出適合于全彩LED顯示屏的遠(yuǎn)程圖像傳輸設(shè)計(jì),并給出關(guān)鍵問題的解決方法。由于利用單片機(jī)實(shí)現(xiàn)了圖像的軟件解碼,這給工程上應(yīng)用帶來(lái)便利。該設(shè)計(jì)能廣泛應(yīng)用于車載,或者戶外廣告屏的圖像數(shù)據(jù)的處理傳輸。將計(jì)算量龐大的JPEG解碼算法成功地在ATmega128上進(jìn)行移植,并由此實(shí)現(xiàn)全彩LED顯示屏圖像數(shù)據(jù)的遠(yuǎn)程更改,具有較強(qiáng)生產(chǎn)實(shí)用性。

設(shè)計(jì)完成的“基于GPRS的遠(yuǎn)程交互式多用戶智能信息屏”在第十屆“挑戰(zhàn)杯”全國(guó)大學(xué)生課外學(xué)術(shù)科技作品競(jìng)賽中獲二等獎(jiǎng)。

參考文獻(xiàn)

[1]劉洪楷.繁榮的LED市場(chǎng)展現(xiàn)出無(wú)限美好的前景[J].光機(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位單片機(jī)ATmega128原理與開發(fā)應(yīng)用指南(上)[M].北京:北京航空航天大學(xué)出版社,2004.

[5]吳嘉慧.JPEG圖像解碼方案[J].現(xiàn)代計(jì)算機(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算法的快速實(shí)現(xiàn)2D DCT/IDCT的方法[J].計(jì)算機(jī)應(yīng)用研究,2007(1):224-226.

[8]姜虎強(qiáng),姜平,杜亞江,等.基于ATmega128的無(wú)線數(shù)據(jù)采集系統(tǒng)[J].微計(jì)算機(jī)信息,2007,23(9):129-131.

[9]王少卿,霍迎輝.ATmega128在開發(fā)應(yīng)用中應(yīng)注意的問題[J].微型機(jī)與應(yīng)用,2004(2):15-17.

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

作者簡(jiǎn)介 杜小偉 男,1983年出生,湖北襄樊人,2007年獲廣東工業(yè)大學(xué)電子科學(xué)與技術(shù)學(xué)士學(xué)位,在讀碩士研究生。研究方向?yàn)榍度胧较到y(tǒng)的開發(fā)與應(yīng)用。