李 波,何 亮
(成都大學 電子信息工程學院,四川 成都 610106)
傳統的靜態圖像壓縮標準技術(如GIF、JPEG等圖像格式)應用于醫學成像、數據庫、多媒體、因特網及移動通信網等領域時,主觀質量下降明顯,已經難以滿足某些方面的需求[1].新一代圖像壓縮標準JPEG2000,以其優良的壓縮特性,適應于多個相關領域,但由于其算法實現復雜、耗時較長,其推廣和 應 用 受 到 一 定 影 響[2-7].對 此,本 研 究 在JPEG2000 圖像壓縮技術研究的基礎上,基于ADV212 設計了一種圖像壓縮編碼系統.
JPEG2000 生成的壓縮碼流同時具有分辨率可分級性和質量可分級性,支持圖像的漸進傳輸,且具有較好的抗誤碼性能,JPEG2000 對每幀視頻均采用JPEG2000 編碼.
JPEG2000 壓縮過程如圖1 所示,如果是多顏色分量的輸入圖像,則首先進行顏色分量間去相關變換,然后將圖像/圖像成分分割成大小相等(邊緣除外)、相互不重疊的矩形圖像片(Tile)[8],在進行DWT 變換前要進行直流電平位移操作,去除圖像的直流分量.JPEG2000 的DWT 變換中,浮點數9/7 濾波器主要用于高壓縮率有損壓縮,短整數5/3 濾波器用于實現可逆的無損壓縮[3].對小波變換產生的系數進行量化,小波子帶b 的每一個變換系數通過式(1)進行標量量化,

圖1 JPEG2000 原理框圖

其中,△b 為量化步長,量化會使系數的精度降低.若采用整數5/3 小波變換進行無損壓縮,量化步長為1.
量化后的系數被分割成碼塊(Code-blocks)進行第一層編碼(Tierl),主要包括產生上下文(Context)和待壓縮的位數據(Decision),以及用二進制算術編碼器MQ-Coder 進行算術編碼.產生的數據流又進入第二層編碼(Tier2),主要用于進行率失真優化和使用Tag Tree 對壓縮碼流進行打包.碼率控制模塊則用于對編碼過程產生預期碼率.
視頻采集壓縮系統的硬件結構如圖2 所示.視頻輸入和壓縮芯片分別使用了ADI 公司的ADV212以及FPGA-5CEFA7F27I7N 芯片,壓縮后的數據通過TMS320DM368 傳輸到本地計算機解碼播放.

圖2 視頻采集壓縮硬件原理圖
系統上電或復位之后,FPGA 通過Camera link接口獲得高清視頻輸入.FPGA 為了解決視頻輸入與輸出的速率匹配問題[5],通過外部DDR 存儲器緩存1 幀視頻來實現數據高速傳輸.FPGA 緩存1 幀完整的數據后,通過BT656 接口,傳輸到ADV212 數字編碼芯片壓縮,接口使用8 bits 并行數據線,54M像素時鐘,內嵌同步方式.
ADV212 是針對視頻和高帶寬圖像壓縮應用的一款JPEG2000 編解碼芯片,它提供了一個基于空間高效濾波SURF(Spatial Ultra-eltleient Recursive Filtering)技術的專用小波變換器,支持多達6 級的9/7 和5/3 小波變換.在3 分量4∶ 2∶ 2 隔行模式,能夠處理的圖像,片(Tile)寬度最大為2 048 像素.工作于可逆模式時,它的處理速率達到40 Mb/s,不可逆模式下可達65 Mb/s.
ADV212 芯片共有16 個直接寄存器、28 個可設置間接寄存器141.對ADV212 寄存器訪問是通過ADDR[3∶ 0]、HDATA[31∶ 0]、CS、RD、WE 和ACK管腳實現,間接寄存器起始地址為0xffff0000.在特定模式如用戶自定義模式下,需要通過IADDR、IDATA 寄存器訪問設置間接寄存器.ADV212 的初始化流程為:①初始化直接寄存器(0x00-0x0F),設PLLLO,PLLHI 和總線寬度為16 bits;②軟件重新啟動,將0x8A 寫到啟動直接寄存器;③通過HDATA總線上載(Upload)ADV212 固件,大小為32 Kbytes[間接地址(0x00050000)];④配置固件參數,間接地址(0x00057F00-0x00057FFF);⑤再次初始化直接寄存器(0x00-0x0F),設PLLLO,PLLHI 和總線寬度(Bus size)為16 bit;⑥軟件重啟(Reboot)設PLLLO,PLLHI 和總線寬度(Bus size)16 bits,將0x8D 寫到啟動直接寄存器;⑦使能ADV212 中斷并檢查應用ID寫0x0400 到外部中斷使能直接寄存器(EIRQIE register)(直接地址為0x05 的軟件中斷0 位)來使能軟件中斷;通過讀軟件標識直接寄存器(SWFLG register,其地址為0x07)來檢查應用ID 的正確性;⑧ADV212將如下值寫到軟件標識寄存器(SWFLG register):編碼等于0xFF82;通過讀取看這些值是否正確來判斷固件是否;⑨正確導入ADV212;⑩清ADV212 中斷;寫0xFFFF 到外部中斷標識直接寄存器(EIRQFLG register,地址為0x06)來清除所有的中斷標識.
通過設置合適的中斷使能位來使能外部中斷使能寄存器(IRQ IE register),例如0x0002.系統的固件程序ADV212.sea 從ADI 公司網站下載獲得[7],在本系統中通過USB 接口下載到ADV212 的間接存儲器中,其地址段為0x00050000 ~0x0005EFF,數據寬度32 bit.采用C 語言的ADV212 程序編碼流程如圖3.

圖3 ADV212 程序編碼流程
碼流加密及發送分模式由數字信號處理器DSP(lTI 公司TMS320DM368 型DSP)和SDARM 組成,主要完成對ADV212 輸出的標準JPEG2000 碼流加密、存儲、發送等操作.其硬件結構如圖4 所示.

圖4 壓縮流存儲及發送系統結構
ADV212 編碼后產生的JPEG2000 格式碼流首先送入DSP 進行算法加密,加密算法可以同接收端預先約定好[2].加密操作是必要的.對于碼流的安全發送具有重要意義.加密后的碼流存入圖4 所示的SDRAM 中等待接收“傳輸”指令.TMS320DM368 型DSP 具有強大的掛接外設能力.本系統總共配備了512 Mbytes 的SDRAM,可以存儲多幀圖像的碼流.
使用多線程及雙隊列緩存技術處理數據的接收與發送.接收線程查詢空隊列,當空隊列有buffer時,從EMIF 接口接收壓縮數據并存放在buffer 中,當接收完一幀新的壓縮數據,將該buffer 加入滿隊列中.發送任務查詢滿隊列,將滿隊列中的壓縮數據通過以太網組播方式發送給計算機,計算機接收后解碼播放顯示.
1)ADV212 壓縮碼流格式.

圖5 壓縮數據格式
ADV212 壓縮數據組織形式如圖5 所示,其中ADV212 數據頭包含以下信息:場標記(Field identification);場數;文件格式;視頻格式;數據頭版本信息(Header version);壓縮數據字數;屬性數據字數.
2)JPEG2000 數據頭包含整幅圖像主文件頭和圖像塊對應的頭標記(Head makers).
SOC,碼流開始 0xFF4F;EOC,碼流結尾OxFFD9;COD,編碼方式0xFF52;PLM,包長度,整幅圖像的數據頭0xFF57;PTL,包長度,每個圖像塊的頭0xFF58;PPM,打包數據的頭,整幅圖像的數據頭0xFF60;PPT,打包數據的頭,每個圖像塊的頭OxFF61;包數據(Packet data)即打包的數據流;碼流結尾(EOC),每個碼塊由0x00 來填補,以達到32 bits 長的隊列.
在實驗中,對比了2 種不同碼率下的效果.1.22 Mbps 碼率(28.3∶ 1 壓縮比)(見圖6),283 K 碼率(128∶ 1 壓縮比)(見圖7).

圖6 壓縮圖(1.22 M)

圖7 壓縮圖(283 K)
通過實驗測試發現,基于JPEG2000 的壓縮算法在128 K 碼率下圖像清晰、流暢、延遲小,具有良好的低比特率壓縮性能,視覺失真很小,壓縮率比較高.
測試驗證了本硬件系統的可用性和正確性.
本研究設計了一個能對高分辨力圖像進行實時壓縮的系統.該系統結合DSP 的高度靈活性以及ADV212 的高效壓縮特性,滿足了系統高效靈活編碼、碼率控制等一系列復雜要求,很好解決了圖像質量與實時性之間的矛盾.
[1]侯俊.Motion JPEG2000 視頻編碼技術研究[D].上海:上海交通大學,2007.
[2]路建方,王新賽,賀明,等.杜云基于ADV212 芯片的紅外視頻無損壓縮研究[J].紅外,2013,34(1):21-24.
[3]阮秋琦.數字圖像處理學[M].北京:電子工業出版社,2001.
[4]張曉林,姚遠.無人機載SAR 圖像壓縮傳輸中的關鍵技術研究[J].航空科學技術,2008,20(3):34-39.
[5]陳檸檬,劉雷波,張利.基于THJ2K 的JPEG2000 圖像壓縮系統[J].電視技術,2007,31(6):81-83.
[6]楊俊,魯新平,李吉成.基于ADV212 芯片的視頻壓縮系統應用設計技術[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.