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