系統(tǒng)結(jié)構(gòu)
整個(gè)系統(tǒng)主要由n臺(tái)PC基站、m×n臺(tái)手持移動(dòng)終端(每臺(tái)PC基站負(fù)責(zé)m臺(tái)手持移動(dòng)終端)組成,。其中PC基站以USB2.0為核心,通過藍(lán)牙無線傳輸協(xié)議實(shí)現(xiàn)手持移動(dòng)終端與基站的高速通信,。手持移動(dòng)終端以TMS320VC5402為核心實(shí)現(xiàn)系統(tǒng)控制,,以TMS320C6713為處理器實(shí)現(xiàn)JPEG2000圖像編碼算法。
系統(tǒng)硬件設(shè)計(jì)
硬件結(jié)構(gòu)
如圖1所示,,整個(gè)系統(tǒng)采用類似于PC104的棧式結(jié)構(gòu),,主要由LM9627攝像頭、圖像處理子板和系統(tǒng)控制主板三個(gè)部分組成,。LM9627模塊設(shè)計(jì)為了提高系統(tǒng)的可擴(kuò)展性,,本系統(tǒng)把攝像頭作為單獨(dú)的一個(gè)模塊設(shè)計(jì),主要包括模擬部分,、數(shù)據(jù)接口和控制接口三個(gè)部分,。其中J2為數(shù)據(jù)接口,連接到圖像處理子板的FPGA上
,;J1為控制接口,,連接到系統(tǒng)控制主板上。圖像處理子板圖像處理子板由采集控制協(xié)處理器FPGA,、C6713和兩片“乒乓”工作的SRAM組成。兩片視頻采集FPGA芯片EP1C6Q240分別采集奇數(shù)幀和偶數(shù)幀(每幀包含奇數(shù)場(chǎng)和偶數(shù)場(chǎng))圖像,,每個(gè)FPGA對(duì)LM9627的視頻流進(jìn)行格式分析,,將相應(yīng)的RGB分量轉(zhuǎn)換為YUV分量,并以4:1:1的格式存儲(chǔ)在SRAM內(nèi),。兩片SRAM以“乒乓”的方式工作,,即同一時(shí)刻一片用于采集視頻圖像,另一片用做DSP的圖像緩沖區(qū),。兩片C6713實(shí)現(xiàn)復(fù)雜的JPEG2000壓縮算法,。為了后續(xù)的擴(kuò)展,,使得C6713能夠處理更大尺寸的圖像,每片DSP擴(kuò)展16MB的SDRAM,,SDRAM以100MHz的頻率工作,,滿足圖像壓縮過程中大量數(shù)據(jù)交換的要求。
圖1 系統(tǒng)硬件框圖
系統(tǒng)控制主板
系統(tǒng)控制主板以DSP C5402為核心處理器,,主要負(fù)責(zé)三個(gè)任務(wù):通過 控制LM9627攝像頭,;讓多塊圖像處理子板協(xié)調(diào)工作,通過MailBox—FIFO讀取它們的壓縮結(jié)果,;將讀取的壓縮結(jié)果按照藍(lán)牙協(xié)議發(fā)送到PC基站,。為了滿足高的數(shù)據(jù)交換速度,主處理器TMS320VC5402以100MHz工作,,一邊通過MailBox—FIFO讀取壓縮結(jié)果,,一邊將讀取的壓縮結(jié)果按照藍(lán)牙協(xié)議發(fā)送到PC基站,從而實(shí)現(xiàn)JPEG2000的實(shí)時(shí)壓縮與解碼顯示,。
系統(tǒng)軟件設(shè)計(jì)
圖像采集軟件設(shè)計(jì)為了讓系統(tǒng)做到實(shí)時(shí),,可通過LM9627的I2C控制總線讓它工作在隔行掃描方式,則輸出640×480分辨率的圖像數(shù)據(jù),。而場(chǎng)頻,,則:幀頻 (隔行掃描),行頻,。本文采用Verilog HDL語言,,實(shí)現(xiàn)了LM9627的實(shí)時(shí)圖像采集。C6713上JPEG2000算法設(shè)計(jì)本系統(tǒng)的JPEG2000編碼算法在C6713上的開發(fā)包括兩個(gè)階段,。
算法實(shí)現(xiàn)第一階段:
用C語言模擬DSP的JPEG2000算法,,以判斷代碼的正確性,驗(yàn)證JPEG2000算法的復(fù)雜度,、可靠性,,以及JPEG2000自身的壓縮性能。本系統(tǒng)的JPEG2000編碼器包括小波變換(wavelet),、熵編碼(MQenc),、碼率控制和打包(rateallocation)三個(gè)主要模塊。LM9627輸出為RGB,,把它轉(zhuǎn)化為Y:U:V=4:1:1的視頻數(shù)據(jù)流,,分別對(duì)三個(gè)分量進(jìn)行DC位移、小波變換,、熵編碼,,然后將三個(gè)分量所有碼塊的編碼流根據(jù)碼率控制要求進(jìn)行分層組織,其中包括碼流截?cái)嗖僮?,編碼器的輸出即是打包后的分層位流,。進(jìn)行DC電平位移(預(yù)處理)的目的是為了在解碼時(shí)能夠從有符號(hào)的數(shù)值中正確恢復(fù)重構(gòu)無符號(hào)采樣值,。傳統(tǒng)小波變換的運(yùn)算量相當(dāng)大,而且往往將8位圖像數(shù)據(jù)變換為浮點(diǎn)型,,在編碼中引入量化失真,,不利于圖像數(shù)據(jù)的無損壓縮,因此JPEG2000主要采用基于UMDFB(抽2取1濾波器組)提升小波算法,。其優(yōu)點(diǎn)在于速度快,、運(yùn)算復(fù)雜度低、所需的存儲(chǔ)空間少,,而且得到的小波系數(shù)與使用傳統(tǒng)小波變換得到的結(jié)果相同,。
JPEG2000選用兩種濾波器:LeGall5/3濾波器和Daubechies9/7濾波器??紤]到本系統(tǒng)的實(shí)時(shí)性要求以及無損壓縮需求,,選用5/3小波運(yùn)算。當(dāng)小波分解級(jí)數(shù)提高的時(shí)候分解系數(shù)的能量更為集中,,但小波分解級(jí)數(shù)的提高會(huì)使編碼效率有所下降,,對(duì)于本系統(tǒng),4CIF(704×576)分辨率采樣圖像進(jìn)行5級(jí)小波分解,,CIF(352×288)圖像進(jìn)行4級(jí)小波分解就足夠
了,。由于采用整型模式運(yùn)算,所有的量化步長(zhǎng)均被置為1,,即量化過程可以忽略,。多分辨率支持可通過小波變換來實(shí)現(xiàn),多失真度支持則可通過熵編碼來解決,。
傳統(tǒng)Huffman編碼采取依次對(duì)每個(gè)系數(shù)進(jìn)行熵編碼的方式,;JPEG2000編碼系統(tǒng)則是將小波變換后的子帶劃分成小的碼塊,并將碼塊中的小波系數(shù)組織成若干位平面進(jìn)行編碼,。以“位平面”為編碼元,,有兩點(diǎn)好處:可以更好地利用圖像局部的統(tǒng)計(jì)特性,為隨機(jī)獲取圖像壓縮位流提供支持,;有助于提高壓縮碼流的抗誤碼性能,。在進(jìn)行塊編碼時(shí),JPEG2000強(qiáng)調(diào)多截?cái)帱c(diǎn)的支持,,截?cái)帱c(diǎn)越多,,表明圖像可提供更多的質(zhì)量選擇。如果對(duì)每個(gè)碼塊僅進(jìn)行位平面編碼,,那么對(duì)于數(shù)據(jù)最高位數(shù)為N的塊,最多可得到N個(gè)截?cái)帱c(diǎn),。很多時(shí)候這種截?cái)嗍谴植诘亩医財(cái)帱c(diǎn)數(shù)目過少,。為了獲得更多的截?cái)帱c(diǎn),,EBCOT引入“編碼通道”的概念,將每個(gè)位平面進(jìn)一步分成子位平面(編碼通道),。在JPEG2000編碼系統(tǒng)中使用三個(gè)編碼通道:有效性通道,、幅度細(xì)化通道和清除通道。這樣對(duì)某個(gè)碼塊Bi來說,,可能的截?cái)帱c(diǎn)可以有3N個(gè),。進(jìn)行位平面編碼時(shí),JPEG2000采用的是快速自適應(yīng)二進(jìn)制算術(shù)編碼,。
算法實(shí)現(xiàn)第二階段
編寫JPEG2000匯編代碼,,并抽出對(duì)性能影響比較大的代碼段進(jìn)一步優(yōu)化。TMS320C67l3基于TI的VLIW技術(shù),,利用VLIW結(jié)構(gòu)設(shè)計(jì)程序可以充分利用DSP多個(gè)功能單元并行工作的特性,。DSP的每一個(gè)通道都有四個(gè)功能單元(L、S,、M,、D),每個(gè)功能單元負(fù)責(zé)完成一定的邏輯或者算術(shù)運(yùn)算,,另外A,、B兩個(gè)通道的互訪可以通過交叉單元1x、2x完成,。TM320C6713的大部分指令都可在單周期內(nèi)完成,,可以直接對(duì)8/16/32位數(shù)據(jù)進(jìn)行操作。同時(shí),,它最多可以有8條指令并行執(zhí)行,;所有指令均可條件執(zhí)行。
以上所有特點(diǎn)提高了指令的執(zhí)行效率,、減小了代碼長(zhǎng)度,、提高了編碼效率。C6713只有兩個(gè)D單元負(fù)責(zé)數(shù)據(jù)存取,,在一個(gè)時(shí)鐘周期中最多有兩條數(shù)據(jù)存取指令并行執(zhí)行,,并且從存儲(chǔ)區(qū)取數(shù)據(jù)的LDB/LDH/LDW指令有4個(gè)時(shí)鐘周期的延時(shí),嚴(yán)重影響了CPU的效率,。為此在編碼時(shí)應(yīng)盡量減少?gòu)拇鎯?chǔ)區(qū)中取數(shù)據(jù)的次數(shù),。 例如在小波變換中,我們?cè)趯?duì)SRAM里的8位采樣值數(shù)據(jù)進(jìn)行取操作(LDB)時(shí),,可以充分利用C6713的32位寄存器,,一次從存儲(chǔ)區(qū)中取地址相鄰的4個(gè)8位數(shù)(用32位操作指令LDW),然后分別進(jìn)行運(yùn)算,,這樣就充分利用了CPU的資源,,減少了4倍的數(shù)據(jù)存取量,。流水線操作是DSP實(shí)現(xiàn)高速度、高效率的關(guān)鍵技術(shù)之一,。當(dāng)一條指令的處理已經(jīng)準(zhǔn)備好后到流水線的下一級(jí),,但是那一級(jí)卻還沒有準(zhǔn)備接收新的輸入時(shí),流水線沖突就不可避免,。
流水線沖突可以分為三大類:跳轉(zhuǎn)沖突,、寄存器沖突和存儲(chǔ)器沖突。為解決流水線沖突問題,,在使用匯編語言時(shí)需要特別注意C6000指令的延遲情況,,有些指令并不是立刻就能得到結(jié)果。此外,,為了保證代碼效率,,必須提前知道每一條指令的運(yùn)行周期數(shù),并提前安排該指令或重新調(diào)整指令順序,。只有盡量將這些指令的前后指令放在它們所需的延遲間隙內(nèi)并行執(zhí)行,,才能達(dá)到減少等待周期、提高程序效率的效果,。經(jīng)過C語言模擬算法到全匯編實(shí)現(xiàn)的優(yōu)化,,然后再對(duì)匯編代碼進(jìn)行優(yōu)化,使得系統(tǒng)的性能大大提高,。
基站的設(shè)計(jì)
PC基站主要由藍(lán)牙接收和上位機(jī)JPEG2000解碼兩個(gè)部分組成,,其原理如圖2所示。而上位機(jī)解壓軟件主要包括LM9627傳感器設(shè)置和圖像采集控制,,前者主要發(fā)送從地址和設(shè)置值給終端,,終端通過 設(shè)置LM9627;后者控制系統(tǒng)的圖像采集分辨率和壓縮比,。
&n
bsp; 圖2 基站設(shè)計(jì)
測(cè)試結(jié)果主觀圖像質(zhì)量比較由于采取了上述技術(shù),,理論上JPEG2000應(yīng)提供更好的性能和更多的功能,下面通過幾組對(duì)比數(shù)據(jù)加以驗(yàn)證,。用作參考的JPEG算法是當(dāng)前業(yè)界硬件平臺(tái)上使用最廣泛的壓縮算法,,測(cè)試圖片為24位真彩色lenna圖。
實(shí)驗(yàn)采用的壓縮性能度量是峰值信噪比(PSNR):PSNR反映的是圖像信噪比變化情況的統(tǒng)計(jì)平均,,它是目前廣泛應(yīng)用的衡量圖像主觀質(zhì)量的方法,。由表1的數(shù)據(jù)可以得出以下結(jié)論:在較高壓縮比率情況下,JPEG2000的信噪比均高出JPEG 6~9dB,;在高分辨率情況下,,JPEG2000的信噪比值下降度低于碼率下降度,這意味著,分辨率越高,,越能體現(xiàn)JPEG2000的高壓縮比性能,。當(dāng)信噪比低于26dB時(shí),JPEG的重構(gòu)圖由于嚴(yán)重的馬賽克效應(yīng)已經(jīng)無法分辨,,而此時(shí)的JPEG2000重構(gòu)圖像雖然在細(xì)節(jié)部分已經(jīng)有所損失,但是圖像輪廓仍舊比較明晰,。表中“—”表示此時(shí)圖像質(zhì)量已經(jīng)很低,,計(jì)算的PSNR值不再具有實(shí)際意義。系統(tǒng)處理速度本系統(tǒng)在系統(tǒng)控制主板DSP—VC5402的控制下,,讓兩塊圖像處理子板穩(wěn)定可靠地并行工作,,具體測(cè)試結(jié)果如表2所示。
結(jié)語
本系統(tǒng)以低成本實(shí)現(xiàn)了高質(zhì)量的圖像壓縮功能,,具有廣泛的應(yīng)用價(jià)值,。主要應(yīng)用領(lǐng)域可概略分成兩部分:一為傳統(tǒng)的JPEG市場(chǎng),像打印機(jī),、掃描儀和數(shù)碼相機(jī)等,,一為新興的應(yīng)用領(lǐng)域,像網(wǎng)絡(luò)傳輸,、無線通信和醫(yī)療圖像等,。由于早先的Motion JPEG不提供無損模式,未能廣泛應(yīng)用到視頻編碼領(lǐng)域,。而本系統(tǒng)所采用的JPEG2000算法結(jié)合DSP系統(tǒng)的高效率處理性能,,能夠很好地把靜態(tài)圖像壓縮技術(shù)引入視頻編碼領(lǐng)域。