《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于DSP的JPEG圖像壓縮的設計與實現(xiàn)
基于DSP的JPEG圖像壓縮的設計與實現(xiàn)
摘要: [摘要]介紹一種用TI 公司的TMS320C6713高速DSP實現(xiàn)JPEG圖像壓縮,概述JPEG圖像編碼算法的基本原理以及在DSP上的實現(xiàn)過程,,重點討論圖像編碼中DCT變換的實現(xiàn)和優(yōu)化。
關鍵詞: DSP JPEG DCT變換
Abstract:
Key words :

一,、引言   

  JPEG算法是一種數字圖像壓縮編碼算法,具有壓縮比例高,、失真小的特點,,并已被確定為國際標準[1]。該標準被廣泛應用于數碼相機,、監(jiān)視系統(tǒng),、手機、可視電話等等諸多方面,。它的應用與實現(xiàn)不僅限于PC機,,更多的則是基于嵌入式系統(tǒng)。嵌入式系統(tǒng)有其體積小,、成本低,、可靠性高、速度快,、環(huán)境適應性強等優(yōu)點,。嵌入式編碼實現(xiàn)方式也比較多,有的采用專用集成芯片,,有的基于FPGA,,有的基于DSP,ARM,。采用專用芯片的方式實現(xiàn)簡單,,技術成熟可靠,但靈活性以及可擴展性差,?;贔PGA的方式,壓縮算法純硬件實現(xiàn),,并行處理速度高,,可實現(xiàn)高速處理,但由于JPEG壓縮算法比較復雜,,開發(fā)難度大些,,費時費力?;谕ㄓ肈SP實現(xiàn)方式優(yōu)點是:靈活性強,,能滿足特殊處理需求,具有很好的可擴展性,、可升級性和易維護性,。

二、系統(tǒng)硬件設計

        考慮到系統(tǒng)的二次開發(fā)性本系統(tǒng)采用DSP開發(fā)方案,,選用TMS320C6713芯片作為系統(tǒng)主處理器,,該嵌入式系統(tǒng)能完成視頻圖像信號的采集、處理,、壓縮,、編碼、顯示,、存儲等一系列功能,。

  本圖像處理系統(tǒng)由底板與子板兩部分組成,底板主要由DSP處理器TMS320C6713,、一片256K×16bit Flash,,四片4M×16bitSDRAM、外部存儲器接口EMIF(External Memory Interface)和其他通用外設接口如RS-232,,音頻接口等組成,。子板是在底板的EMIF上擴展出來的,,主要由視頻解碼A/D芯片、采集和顯示時序控制芯片CPLD等,。

 ?。ㄒ唬〤CD攝像頭用來采集模擬視頻圖像數據。

 ?。ǘ┮曨l解碼A/D芯片Philips SAA7113將模擬視頻電視信號(本系統(tǒng)PAL制)數字化,。輸出為符合CCIR.601標準的數字視頻碼流。

 ?。ㄈ〧IFOAL422B作為A/D與C6713DSP之間的數據緩沖,,使A/D的轉換速度與DSP讀取A/D數據的速度匹配。

 ?。ㄋ模㏕MS320C6713DSP為主處理器,,實現(xiàn)對視頻數據的壓縮編碼處理。在存儲FIFO,,存儲SDRAM和壓縮碼流輸出SDRAM采用DMA方式進行數據傳輸,,可以提高數據傳輸的速率。

   ?。ㄎ澹㏒DRAM作為DSP的片外擴展存儲器,,用于存儲A/D的圖像數據,中間過程的部分數據以及壓縮后的圖像數據,。選用了4片ISSI公司的4M×16bit SDRAM芯片IS42S16400,,構成了一個8M×32bit的外部存儲器。映射到DSP的CE0存儲空間,。

 ?。〧lash 采用芯片256K×16bit的AM29LV400B,用于DSP上電或復位后的程序加載,。

 ?。ㄆ撸〤PLD采用Laitiice公司的LC4821V,作為視頻A/D對FIFO進行寫操作,,DSP對FIFO進行讀操作的時序控制,。

圖像采集與存儲關鍵問題與解決方法:

  本設計中解碼CCD攝像頭的模擬視頻信號是采用專用的模擬視頻信號解碼器SAA71113, SAA71l13視頻解碼器是雙通道模擬預處理電路,、自動鉗位和增益控制電路,、時鐘產生電路、數字多標準解碼器,、亮度/對比度/飽和度控制電路,、彩色空間矩陣的組合,是一款功能完善的視頻處理器。SAA711l3只需要單一的3.3V電源供電,,與C6713的I/O電壓一致,。
SAA7113A接收CVBS(復合視頻)或S-video模擬視頻輸入,可以自動將PAL,、SECAM,、NTSC模式的彩色視頻信號解碼為CCIR-60l/656兼容的彩色數字分量值,器件功能通過I2C接口控制,。圖像采集過程可以全部在后臺完成,基本上不需要CPU的干預,,可以節(jié)約大量的CPU時間,。但是這樣設計有一個難點:由模擬視頻信號解碼得出的數字視頻信號數據量非常大,而且由于是實時視頻信號,,所以數據輸出速率也非常高,;但是相反,DSP外部存儲器接口的讀出速率卻比較慢,。為了解決這個問題,,本設計采取是高速FIFO,對數據進行暫存以緩解速度上的差異,,即采用FIFO來暫存10行圖像數據,,視頻解碼器直接向FIF0中寫入圖像數據。當FIFO中寫入了10行圖像數據后,,由CPLD向DSP發(fā)出中斷INT4請求,;同時,DSP接到中斷請求后,,啟動DMA方式將10行圖像數據從FIFO中讀入到其外部RAM中存放,。這樣在采集的同時,DSP就可以讀取已采集的10行數據,,而不必等待一幀圖像數據采集完成,。這樣提高DSP的處理效率。CPLD主要控制解碼器向FIFO中寫入數據以及DSP從FIFO中讀出數據,。 

        系統(tǒng)可以采集到一幀圖像的尺寸為320點/行*240行,,從SA71113輸出的是4:2:2的YcrCb數據格式,一個像素用2個字節(jié)表示,,一個字節(jié)表示Y,,另一個字節(jié)為Cb和Cr,那么總的數據量為320×240×2=150KB,。對于亮度信號,,每個像素Y占一個字節(jié),一行共320個字節(jié),用320個存儲單元存儲一行的Y數據,,對于色度信號Cb,,一行共320點,每兩個像素共用一個色度信號Cb,,占一個字節(jié),,共160個字節(jié),用160個字節(jié)單元存放一行的數據,,對于色度信號Cr,,存儲格式與Cb一樣。這樣一幀圖像數據需要的緩沖區(qū)大小為:320×240+160×240×2=150KB,。對此選用了8M×32bit的SDRAM,,而且選取用了具有3Mbit緩沖的FIFO。

三,、JPEG壓縮編碼算法原理與實現(xiàn)

         JPEG壓縮編碼主要由預處理,、DCT變換、量化,、Huffman編碼等流程構成,。

  JPEG壓縮編碼時,需先將原始YcbCr空間的二維圖像分成8×8的數據塊,,然后將各數據塊按從左到右,,從上到下的順序分別進行DCT變換、量化,、“之”字型(Zig-Zag)掃描和Huffman編碼(量化和Huffman編碼分別需要量化表和Huffman表的支持),。

  DCT優(yōu)化的實現(xiàn)

  DCT變換的快慢決定了整個JPEG算法的速度。因此,,采用了行列法來減少計算量,。將8×8數據塊的DCT轉換為16次一維8點DCT變換,只要提高一維DCT的速度就可以提高二維DCT的速度,。因此將DCT算法分成兩級運算,,即第一級蝶形運算,第二級乘法累加運算,,減少了運算級數,,這樣利用DSP的專用指令乘累加運算大大優(yōu)化了DCT算法。

四,、結束語

         本文以上述算法和流程為基礎,,設計以DSP的開發(fā)環(huán)境,實現(xiàn)JPEG的編碼算法,,并進行了優(yōu)化,。與基于ASIC的方法相比,,具有通用性強、靈活高效的特點,。圖3為在dsp的CCS調試環(huán)境下,,采用C和匯編混合編程,對采集的320*240*8位的灰度視頻圖像進行JPEG標準壓縮后復原的圖像,。

  從上面的結果可以看出,,整個壓縮系統(tǒng)基本上可以實現(xiàn)對視頻圖像壓縮編碼。對本算法進行適當修改,,可以應用到數碼相機,,手機等多種嵌入式系統(tǒng)中。同時,,該壓縮系統(tǒng)可以通過PCI總線控制,,將壓縮后的碼流通過JPEG文件的形式傳輸給PC機。另外,,該壓縮系統(tǒng)可以成為一個通用的視頻圖像采集壓縮平臺,在該平臺上可以實現(xiàn)JPEG2000,,H.263,,MPEG-2等多種多媒體壓縮標準。


參考文獻:
[1]G.K,,Wallace.“THE JPEG Still Picture Compression Standard”.IEEETransaction On Consumer Electronics Vol.38,,No.1, FeBruary 1992.
[2]TMS320C6000 Chip Support Library API User's Guide. Texas Instruments,, 2001[3]張益貞,,劉滔.Visual C++實現(xiàn)MPEG/JPEG編解碼技術[M].北京:人民郵電出版社,2002.
[4]胡越黎,,王俊,,等.基于TMS320C6711的圖像處理系統(tǒng)設計.電視技術,2005(6).
[5]許彬,,鄭鏈.基于DSK的圖像處理算法仿真系統(tǒng).計算機工程.2005(10).
[6]田金文,,李景奇.基于TMS320C6414的視頻采集處理硬件系統(tǒng)設計.2005(7).

此內容為AET網站原創(chuàng),未經授權禁止轉載,。