李 波,何 亮
(成都大學(xué) 電子信息工程學(xué)院,四川 成都 610106)
傳統(tǒng)的靜態(tài)圖像壓縮標(biāo)準(zhǔn)技術(shù)(如GIF、JPEG等圖像格式)應(yīng)用于醫(yī)學(xué)成像、數(shù)據(jù)庫(kù)、多媒體、因特網(wǎng)及移動(dòng)通信網(wǎng)等領(lǐng)域時(shí),主觀質(zhì)量下降明顯,已經(jīng)難以滿足某些方面的需求[1].新一代圖像壓縮標(biāo)準(zhǔn)JPEG2000,以其優(yōu)良的壓縮特性,適應(yīng)于多個(gè)相關(guān)領(lǐng)域,但由于其算法實(shí)現(xiàn)復(fù)雜、耗時(shí)較長(zhǎng),其推廣和 應(yīng) 用 受 到 一 定 影 響[2-7].對(duì) 此,本 研 究 在JPEG2000 圖像壓縮技術(shù)研究的基礎(chǔ)上,基于ADV212 設(shè)計(jì)了一種圖像壓縮編碼系統(tǒng).
JPEG2000 生成的壓縮碼流同時(shí)具有分辨率可分級(jí)性和質(zhì)量可分級(jí)性,支持圖像的漸進(jìn)傳輸,且具有較好的抗誤碼性能,JPEG2000 對(duì)每幀視頻均采用JPEG2000 編碼.
JPEG2000 壓縮過(guò)程如圖1 所示,如果是多顏色分量的輸入圖像,則首先進(jìn)行顏色分量間去相關(guān)變換,然后將圖像/圖像成分分割成大小相等(邊緣除外)、相互不重疊的矩形圖像片(Tile)[8],在進(jìn)行DWT 變換前要進(jìn)行直流電平位移操作,去除圖像的直流分量.JPEG2000 的DWT 變換中,浮點(diǎn)數(shù)9/7 濾波器主要用于高壓縮率有損壓縮,短整數(shù)5/3 濾波器用于實(shí)現(xiàn)可逆的無(wú)損壓縮[3].對(duì)小波變換產(chǎn)生的系數(shù)進(jìn)行量化,小波子帶b 的每一個(gè)變換系數(shù)通過(guò)式(1)進(jìn)行標(biāo)量量化,
圖1 JPEG2000 原理框圖
其中,△b 為量化步長(zhǎng),量化會(huì)使系數(shù)的精度降低.若采用整數(shù)5/3 小波變換進(jìn)行無(wú)損壓縮,量化步長(zhǎng)為1.
量化后的系數(shù)被分割成碼塊(Code-blocks)進(jìn)行第一層編碼(Tierl),主要包括產(chǎn)生上下文(Context)和待壓縮的位數(shù)據(jù)(Decision),以及用二進(jìn)制算術(shù)編碼器MQ-Coder 進(jìn)行算術(shù)編碼.產(chǎn)生的數(shù)據(jù)流又進(jìn)入第二層編碼(Tier2),主要用于進(jìn)行率失真優(yōu)化和使用Tag Tree 對(duì)壓縮碼流進(jìn)行打包.碼率控制模塊則用于對(duì)編碼過(guò)程產(chǎn)生預(yù)期碼率.
視頻采集壓縮系統(tǒng)的硬件結(jié)構(gòu)如圖2 所示.視頻輸入和壓縮芯片分別使用了ADI 公司的ADV212以及FPGA-5CEFA7F27I7N 芯片,壓縮后的數(shù)據(jù)通過(guò)TMS320DM368 傳輸?shù)奖镜赜?jì)算機(jī)解碼播放.
圖2 視頻采集壓縮硬件原理圖
系統(tǒng)上電或復(fù)位之后,F(xiàn)PGA 通過(guò)Camera link接口獲得高清視頻輸入.FPGA 為了解決視頻輸入與輸出的速率匹配問(wèn)題[5],通過(guò)外部DDR 存儲(chǔ)器緩存1 幀視頻來(lái)實(shí)現(xiàn)數(shù)據(jù)高速傳輸.FPGA 緩存1 幀完整的數(shù)據(jù)后,通過(guò)BT656 接口,傳輸?shù)紸DV212 數(shù)字編碼芯片壓縮,接口使用8 bits 并行數(shù)據(jù)線,54M像素時(shí)鐘,內(nèi)嵌同步方式.
ADV212 是針對(duì)視頻和高帶寬圖像壓縮應(yīng)用的一款JPEG2000 編解碼芯片,它提供了一個(gè)基于空間高效濾波SURF(Spatial Ultra-eltleient Recursive Filtering)技術(shù)的專用小波變換器,支持多達(dá)6 級(jí)的9/7 和5/3 小波變換.在3 分量4∶ 2∶ 2 隔行模式,能夠處理的圖像,片(Tile)寬度最大為2 048 像素.工作于可逆模式時(shí),它的處理速率達(dá)到40 Mb/s,不可逆模式下可達(dá)65 Mb/s.
ADV212 芯片共有16 個(gè)直接寄存器、28 個(gè)可設(shè)置間接寄存器141.對(duì)ADV212 寄存器訪問(wèn)是通過(guò)ADDR[3∶ 0]、HDATA[31∶ 0]、CS、RD、WE 和ACK管腳實(shí)現(xiàn),間接寄存器起始地址為0xffff0000.在特定模式如用戶自定義模式下,需要通過(guò)IADDR、IDATA 寄存器訪問(wèn)設(shè)置間接寄存器.ADV212 的初始化流程為:①初始化直接寄存器(0x00-0x0F),設(shè)PLLLO,PLLHI 和總線寬度為16 bits;②軟件重新啟動(dòng),將0x8A 寫(xiě)到啟動(dòng)直接寄存器;③通過(guò)HDATA總線上載(Upload)ADV212 固件,大小為32 Kbytes[間接地址(0x00050000)];④配置固件參數(shù),間接地址(0x00057F00-0x00057FFF);⑤再次初始化直接寄存器(0x00-0x0F),設(shè)PLLLO,PLLHI 和總線寬度(Bus size)為16 bit;⑥軟件重啟(Reboot)設(shè)PLLLO,PLLHI 和總線寬度(Bus size)16 bits,將0x8D 寫(xiě)到啟動(dòng)直接寄存器;⑦使能ADV212 中斷并檢查應(yīng)用ID寫(xiě)0x0400 到外部中斷使能直接寄存器(EIRQIE register)(直接地址為0x05 的軟件中斷0 位)來(lái)使能軟件中斷;通過(guò)讀軟件標(biāo)識(shí)直接寄存器(SWFLG register,其地址為0x07)來(lái)檢查應(yīng)用ID 的正確性;⑧ADV212將如下值寫(xiě)到軟件標(biāo)識(shí)寄存器(SWFLG register):編碼等于0xFF82;通過(guò)讀取看這些值是否正確來(lái)判斷固件是否;⑨正確導(dǎo)入ADV212;⑩清ADV212 中斷;寫(xiě)0xFFFF 到外部中斷標(biāo)識(shí)直接寄存器(EIRQFLG register,地址為0x06)來(lái)清除所有的中斷標(biāo)識(shí).
通過(guò)設(shè)置合適的中斷使能位來(lái)使能外部中斷使能寄存器(IRQ IE register),例如0x0002.系統(tǒng)的固件程序ADV212.sea 從ADI 公司網(wǎng)站下載獲得[7],在本系統(tǒng)中通過(guò)USB 接口下載到ADV212 的間接存儲(chǔ)器中,其地址段為0x00050000 ~0x0005EFF,數(shù)據(jù)寬度32 bit.采用C 語(yǔ)言的ADV212 程序編碼流程如圖3.
圖3 ADV212 程序編碼流程
碼流加密及發(fā)送分模式由數(shù)字信號(hào)處理器DSP(lTI 公司TMS320DM368 型DSP)和SDARM 組成,主要完成對(duì)ADV212 輸出的標(biāo)準(zhǔn)JPEG2000 碼流加密、存儲(chǔ)、發(fā)送等操作.其硬件結(jié)構(gòu)如圖4 所示.
圖4 壓縮流存儲(chǔ)及發(fā)送系統(tǒng)結(jié)構(gòu)
ADV212 編碼后產(chǎn)生的JPEG2000 格式碼流首先送入DSP 進(jìn)行算法加密,加密算法可以同接收端預(yù)先約定好[2].加密操作是必要的.對(duì)于碼流的安全發(fā)送具有重要意義.加密后的碼流存入圖4 所示的SDRAM 中等待接收“傳輸”指令.TMS320DM368 型DSP 具有強(qiáng)大的掛接外設(shè)能力.本系統(tǒng)總共配備了512 Mbytes 的SDRAM,可以存儲(chǔ)多幀圖像的碼流.
使用多線程及雙隊(duì)列緩存技術(shù)處理數(shù)據(jù)的接收與發(fā)送.接收線程查詢空隊(duì)列,當(dāng)空隊(duì)列有buffer時(shí),從EMIF 接口接收壓縮數(shù)據(jù)并存放在buffer 中,當(dāng)接收完一幀新的壓縮數(shù)據(jù),將該buffer 加入滿隊(duì)列中.發(fā)送任務(wù)查詢滿隊(duì)列,將滿隊(duì)列中的壓縮數(shù)據(jù)通過(guò)以太網(wǎng)組播方式發(fā)送給計(jì)算機(jī),計(jì)算機(jī)接收后解碼播放顯示.
1)ADV212 壓縮碼流格式.
圖5 壓縮數(shù)據(jù)格式
ADV212 壓縮數(shù)據(jù)組織形式如圖5 所示,其中ADV212 數(shù)據(jù)頭包含以下信息:場(chǎng)標(biāo)記(Field identification);場(chǎng)數(shù);文件格式;視頻格式;數(shù)據(jù)頭版本信息(Header version);壓縮數(shù)據(jù)字?jǐn)?shù);屬性數(shù)據(jù)字?jǐn)?shù).
2)JPEG2000 數(shù)據(jù)頭包含整幅圖像主文件頭和圖像塊對(duì)應(yīng)的頭標(biāo)記(Head makers).
SOC,碼流開(kāi)始 0xFF4F;EOC,碼流結(jié)尾OxFFD9;COD,編碼方式0xFF52;PLM,包長(zhǎng)度,整幅圖像的數(shù)據(jù)頭0xFF57;PTL,包長(zhǎng)度,每個(gè)圖像塊的頭0xFF58;PPM,打包數(shù)據(jù)的頭,整幅圖像的數(shù)據(jù)頭0xFF60;PPT,打包數(shù)據(jù)的頭,每個(gè)圖像塊的頭OxFF61;包數(shù)據(jù)(Packet data)即打包的數(shù)據(jù)流;碼流結(jié)尾(EOC),每個(gè)碼塊由0x00 來(lái)填補(bǔ),以達(dá)到32 bits 長(zhǎng)的隊(duì)列.
在實(shí)驗(yàn)中,對(duì)比了2 種不同碼率下的效果.1.22 Mbps 碼率(28.3∶ 1 壓縮比)(見(jiàn)圖6),283 K 碼率(128∶ 1 壓縮比)(見(jiàn)圖7).
圖6 壓縮圖(1.22 M)
圖7 壓縮圖(283 K)
通過(guò)實(shí)驗(yàn)測(cè)試發(fā)現(xiàn),基于JPEG2000 的壓縮算法在128 K 碼率下圖像清晰、流暢、延遲小,具有良好的低比特率壓縮性能,視覺(jué)失真很小,壓縮率比較高.
測(cè)試驗(yàn)證了本硬件系統(tǒng)的可用性和正確性.
本研究設(shè)計(jì)了一個(gè)能對(duì)高分辨力圖像進(jìn)行實(shí)時(shí)壓縮的系統(tǒng).該系統(tǒng)結(jié)合DSP 的高度靈活性以及ADV212 的高效壓縮特性,滿足了系統(tǒng)高效靈活編碼、碼率控制等一系列復(fù)雜要求,很好解決了圖像質(zhì)量與實(shí)時(shí)性之間的矛盾.
[1]侯俊.Motion JPEG2000 視頻編碼技術(shù)研究[D].上海:上海交通大學(xué),2007.
[2]路建方,王新賽,賀明,等.杜云基于ADV212 芯片的紅外視頻無(wú)損壓縮研究[J].紅外,2013,34(1):21-24.
[3]阮秋琦.數(shù)字圖像處理學(xué)[M].北京:電子工業(yè)出版社,2001.
[4]張曉林,姚遠(yuǎn).無(wú)人機(jī)載SAR 圖像壓縮傳輸中的關(guān)鍵技術(shù)研究[J].航空科學(xué)技術(shù),2008,20(3):34-39.
[5]陳檸檬,劉雷波,張利.基于THJ2K 的JPEG2000 圖像壓縮系統(tǒng)[J].電視技術(shù),2007,31(6):81-83.
[6]楊俊,魯新平,李吉成.基于ADV212 芯片的視頻壓縮系統(tǒng)應(yīng)用設(shè)計(jì)技術(shù)[J].微處理機(jī),2010,31(4):119-122.
[7]Analog Devices Inc.ADV212 JPEG2000 video processor user's guide(revision 1.1)[S].Norwood,MA,USA:Analog Devices Inc.,2006.
[8]Taubman D S,Marcellin M W.JPEG2000 image compression fundamentals,standards and practice[M].MA:Kluwer Academic Publishers,2002.