文獻(xiàn)標(biāo)識碼: B
文章編號: 0258-7998(2011)06-0038-03
隨著計(jì)算機(jī)應(yīng)用越來越廣泛,,越來越多的重要信息需要由計(jì)算機(jī)屏幕顯示,,因此對計(jì)算機(jī)屏幕記錄的需求越來越迫切。同時(shí),, 伴隨著顯示器的高速發(fā)展,,計(jì)算機(jī)屏幕分辨率日益增大,需要記錄的圖像分辨率也逐漸增大,,因此,,對能夠記錄計(jì)算機(jī)屏幕信息的設(shè)備需要日益增長。目前的圖像壓縮存儲方案大都無法支持高分辨率圖像,,如ADI公司推出的圖像壓縮芯片ADV212[1],,該芯片支持的最大分辨率為1 024×1 024,無法滿足SXGA(1 280×1 024)或更高的圖像分辨率,。另外,,在一些DSP解決方案中,因?yàn)镈SP接口不靈活以及DSP本身處理能力的限制,,很難支持高分辨圖像壓縮,。
本設(shè)計(jì)開發(fā)出了一套基于雙FPGA+ARM架構(gòu)的高速計(jì)算機(jī)屏幕圖像壓縮系統(tǒng)。系統(tǒng)通過對圖像壓縮系統(tǒng)任務(wù)的劃分,,利用FPGA的并行計(jì)算能力和靈活的編程方式,,完成圖像壓縮算法。對于壓縮后的碼流,,系統(tǒng)采用ARM管理,,基于linux的嵌入式ARM系統(tǒng)能夠以文件的形式存儲碼流,另外,,ARM對網(wǎng)絡(luò)和音頻常用設(shè)備能方便地管理,。系統(tǒng)支持主流接口(VGA,DVI),,壓縮后的碼流可以存儲在本地硬盤,,也可以通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)端服務(wù)器。雙FPGA的設(shè)計(jì)對計(jì)算機(jī)屏幕圖像壓縮更為方便,,原始圖像經(jīng)過前端預(yù)處理FPGA進(jìn)行幀間檢測,,以決定該幀圖像進(jìn)入主FPGA的壓縮模式,主FPGA為核心壓縮引擎,,負(fù)責(zé)完成高速圖像壓縮算法,。
1 系統(tǒng)架構(gòu)與實(shí)現(xiàn)
系統(tǒng)整體架構(gòu)如圖1所示,采用雙FPGA+ARM架構(gòu),,主要包括圖像前端預(yù)處理,、圖像壓縮模塊和碼流管理部分,。
前面一塊FPGA完成前端預(yù)處理,如分辨率檢測,、色彩轉(zhuǎn)換和圖像分析等功能,;后面一塊FPGA用來實(shí)現(xiàn)圖像實(shí)時(shí)壓縮,其中ARM對系統(tǒng)進(jìn)行管理,,如壓縮后碼流管理,、網(wǎng)絡(luò)管理和音頻錄制等。
1.1 預(yù)處理模塊
本系統(tǒng)同時(shí)支持VGA,、DVI兩種主流顯卡接口,。采用AD9888[2]作為視頻模數(shù)轉(zhuǎn)換器,TI公司的TFP403[3]為DVI接收芯片,。Xilinx公司Virtex4[4](XC4VLX40)完成圖像預(yù)處理,,主要包括圖像數(shù)據(jù)的采集、色彩空間轉(zhuǎn)換和幀間檢測,。前端處理模塊如圖2所示,。
1.1.1 圖像數(shù)據(jù)采集
預(yù)處理FPGA接收到的圖像數(shù)據(jù)為接口芯片送來的圖像數(shù)據(jù),包括像素時(shí)鐘信號(PCLK),、場同步信號(VSYNC),、行同步信號(HSYNC)以及數(shù)據(jù)信號(R[7:0],G[7:0],,B[7:0]),。圖像數(shù)據(jù)的采集包括判斷圖像分辨率和提取圖像數(shù)據(jù)兩個(gè)步驟。
當(dāng)前的計(jì)算機(jī)屏幕分辨率很多,,工業(yè)VGA標(biāo)準(zhǔn)規(guī)定了各種分辨率的像素時(shí)鐘及場,、行同步信號時(shí)序,根據(jù)相鄰場同步信號(VSYNC)之間行同步信號(HSYNC)數(shù)目,,以及相鄰行同步信號(HSYNC)之間像素時(shí)鐘(PCLK)數(shù)目識別VGA信號分辨率,。根據(jù)場同步信號(VSYNC)和行同步信號(HSYNC)提出圖像數(shù)據(jù)。
1.1.2 色彩空間轉(zhuǎn)換
VGA輸出為RGB信號,,而人眼對圖像的亮度分量更為敏感,所以,,對圖像數(shù)據(jù)進(jìn)行色彩空間轉(zhuǎn)換,,將RGB信號轉(zhuǎn)換為YUV信號,轉(zhuǎn)換公式:
系統(tǒng)實(shí)現(xiàn)時(shí)采用4:2:2采樣模式,,F(xiàn)PGA采用定點(diǎn)化處理后,,得到亮度分量Y 和色度分量UV。
1.1.3 幀間檢測
幀間檢測的核心思想是對比相鄰兩幀圖像,,判斷每個(gè)像素點(diǎn)是否變化,。以3×3的塊為判斷單元,,如果有變化則將該像素位置和像素值都存起來;如果沒有變化則不傳輸這些信息,。當(dāng)?shù)玫搅艘粋€(gè)4×4的塊以后把這個(gè)16個(gè)點(diǎn)的信息作為一個(gè)整體傳給后面的模塊,,然后統(tǒng)計(jì)1幀圖像總的碼流大小。如果該值低于一個(gè)設(shè)定的閾值,,則認(rèn)為當(dāng)前幀沒有變化,,直接傳當(dāng)前幀變化部分的像素和位置信息到后面的碼流整理模塊;如果統(tǒng)計(jì)后碼流的大小大于設(shè)定的閾值,,則將當(dāng)前幀送入LX100中進(jìn)行壓縮,。
1.2 圖像壓縮模塊
圖像壓縮為系統(tǒng)核心模塊,該壓縮引擎包括小波變換和熵編碼,,算法全部由系統(tǒng)主FPGA完成,。該FPGA芯片選用Xilinx公司的Virtex4[4]系列FPGA(XC4VLX160)。圖像壓縮引擎結(jié)構(gòu)如圖3,。
在系統(tǒng)算法設(shè)計(jì)中,,圖像小波變換采用了基于離散小波變換的空間推舉算法(SCLA)[5]。不同于傳統(tǒng)的離散小波變換(DWT),,SCLA對行與列同時(shí)進(jìn)行變換,,其乘法次數(shù)是小波變換算法中最少的,而重建圖像質(zhì)量也很高,,PSNR值優(yōu)于JPEG,,接近JPEG2000。編碼算法采用了改進(jìn)的無鏈表零樹編碼算法(SLC),,該算法綜合了多層次零樹編碼算法(SPIHT[6])和無鏈表零樹編碼(LZC[7])的特點(diǎn),,在性能上優(yōu)于LZC,逼近SPIHT,,而且易于硬件實(shí)現(xiàn),。
系統(tǒng)的架構(gòu)由FPGA和兩片外部SDRAM實(shí)現(xiàn)。SDRAM用于緩存小波變換后的小波系數(shù),。FPGA完成小波變換算法SCLA和熵編碼算法SLC,。SCLA算法由5個(gè)流水線小波濾波器完成,每個(gè)濾波器完成一層小波分解,,而小波分解運(yùn)算需要乘法器,,在FPGA芯片選型時(shí),根據(jù)小波濾波器中需要乘法器的個(gè)數(shù)選擇FPGA,。在本系統(tǒng)中,,5個(gè)流水的小波濾波器包括36個(gè)乘法器,對于亮度分量Y和色度分量UV兩路數(shù)據(jù)并行處理,,則需要72個(gè)乘法器,,而在Virtex4系列FPGA(XC4VLX160)中有96個(gè)DSP單元,。由小波變換得到小波系數(shù),系統(tǒng)設(shè)計(jì)時(shí)采用2片外部SDRAM和FPGA片內(nèi)SRAM結(jié)合的方法緩存小波系數(shù),。對于亮度分量Y和色度分量UV兩路數(shù)據(jù)并行處理以提高系統(tǒng)吞吐量,,SDRAM1和SDRAM2分量用來緩存Y和UV的小波系數(shù)。熵編碼算法SLC負(fù)責(zé)對小波系數(shù)編碼,,該算法以一棵小波樹為基本處理單元,,即當(dāng)前端小波系數(shù)構(gòu)成一棵小波樹時(shí),熵編碼模塊便啟動編碼,,從而完成一幀圖像所有小波樹的編碼,。
1.3 碼流管理模塊
對于圖像經(jīng)過FPGA壓縮后的碼流,系統(tǒng)采用ARM芯片進(jìn)行管理,,該芯片為Cirrus Logic公司的工業(yè)級嵌入式處理器EP9315[8],。該處理器具有ARM920T核,最高主頻達(dá)200 MHz,,并具有豐富的外圍接口,,包括網(wǎng)絡(luò)、USB,、音頻等,。FPGA和ARM之間通信由I2C總線完成,當(dāng)FPGA完成一幀圖像壓縮后,,通過FPGA的GPIO發(fā)送一個(gè)終端信號給ARM,,并準(zhǔn)備好一幀碼流長度等信息。ARM中斷服務(wù)程序響應(yīng)該中斷,,通過I2C接口讀走碼流長度,,通過映射SRAM的方式從FPGA讀取壓縮碼流到ARM內(nèi)存,然后以文件的形式存儲碼流到本地硬盤,,或者通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)端服務(wù)器,。
2 實(shí)驗(yàn)結(jié)果與性能
2.1 算法性能驗(yàn)證
系統(tǒng)設(shè)計(jì)初期,用軟件對算法的性能進(jìn)行了驗(yàn)證,。在PC上對一組Lena等標(biāo)準(zhǔn)圖像進(jìn)行壓縮,,得到不同的重建圖像,對重建圖像求解PSNR值,,式(2)為PSNR計(jì)算公式,。其中Mean Square Error(MSE)表示原始圖像和重建圖像對應(yīng)像素的均方誤差值。
表1為本系統(tǒng)采用算法與JPEG及JPEG2000對標(biāo)準(zhǔn)圖像壓縮后重建圖像的PSNR比較,。從表中可以看出,本系統(tǒng)采用算法遠(yuǎn)優(yōu)于JPEG,,接近JPEG2000,。PSNR值的比較以壓縮比(對應(yīng)表中Bitrate)為基準(zhǔn),,即在相同壓縮比的情況下對比PSNR值。
2.2 硬件實(shí)現(xiàn)和硬件壓縮
硬件系統(tǒng)電路板采用10層板制作工藝,,電路板面積為30.8 cm×16.7 cm,,在100 MHz工作頻率下對系統(tǒng)測試,結(jié)果表明系統(tǒng)工作穩(wěn)定,。表2為系統(tǒng)對1 600×1 200,、1 280×1 024和1 024×768三種常見分辨率的計(jì)算機(jī)屏幕進(jìn)行的記錄,記錄的圖像源采用了各類計(jì)算機(jī)屏幕常見圖像,,如Word文檔,、PPT文件、動態(tài)雷達(dá)圖像和一段視頻,。其中,,PPT的平均翻頁速度為60 s。由表2可以看出,,系統(tǒng)對于Word文檔,、PPT文檔等只有局部變化的圖像能夠達(dá)到非常高的壓縮比,壓縮幀率約為60幀/s,。
本文結(jié)合應(yīng)用提出圖像壓縮算,,以FPGA為核心計(jì)算平臺,設(shè)計(jì)了一套計(jì)算機(jī)屏幕圖像記錄系統(tǒng),。系統(tǒng)實(shí)現(xiàn)了對1 280×1 024×24 bit圖像每秒記錄27幀,,對1 600×1 200×24 bit圖像每秒記錄17幀,對PPT,、Word文檔等只有局部變化的屏幕圖像每秒可記錄60幀,,且壓縮后重建圖像質(zhì)量優(yōu)于JPEG,與JPEG2000接近,。同時(shí),,對于壓縮后的碼流,系統(tǒng)采用ARM以文件的方式管理,,有利于碼流本地存儲以及通過網(wǎng)絡(luò)傳輸?shù)褥`活的應(yīng)用,。另外,系統(tǒng)支持多種輸入接口,,提高了硬件系統(tǒng)的靈活性,,具有廣闊的應(yīng)用前景。
參考文獻(xiàn)
[1] Analog Devices Corporation.JEPG2000 video codec ADV212 [EB/OL].[2010-02-26].http://www.analog.com/static/imported-files/data_sheets/ADV212.pdf.
[2] Analog Devices,,Inc.AD9888-100/140/170/205MSPS analog flat panel interface[EB/OL].[2010-02-26].http://data.eeworld.com.cn/pdf/68311_AD_AD9888.pdf.
[3] Texas Instruments,,Inc.TFP403-TI panelbus digital
receiver[EB/OL].[2010-02-26].http://focus.ti.com/lit/ds/ symlink/tfp403.pdf.
[4] Xilinx,Inc.Virtex-4 family overview[EB/OL].[2010-02-26].http://www.xilinx.com/support/documentation/data_sheets/ds112.pdf.
[5] MENG H,WANG Z.Fast spatial combinative lifting algorithm of wavelet transform using the 9/7 filter for image block compression.Electron.Lett.,,2000,,36(21).
[6] SAID A,PEARLMAN W A.A new,,fast,,and efficient
image codec based on set partitioning in hierarchical trees. IEEE Trans.CVST,1996,,6(3):243-250.
[7] LIN Wen Kuo,,BURGESS N.Listless zerotree coding for color images.Conference Record of the Asilomar Conference on Signals.Systems & Computers,,v1,,1998:231-235.
[8] Cirrus Logic,Inc.DS631UM1.EP9315 user’s guide[EB/OL]. [2010-02-26].http://www.cirrus.com/en/pubs/manual/EP93xx_Users_Guide_UM1.pdf.