獨立式多分辨率VGA/DVI壓縮存儲系統(tǒng)
隨著計算機應(yīng)用的快速普及,視頻圖像的壓縮存儲在信息記錄和安防監(jiān)控等領(lǐng)域起著重要作用。但是,目前市場上的多數(shù)圖像壓縮系統(tǒng)很難支持多種分辨率或者高分辨率圖像的實時壓縮,如ADV212[1]難以滿足UXGA(1 600×1 200)或更高分辨率1080p等的應(yīng)用場合。此外,市場上也存在一些基于DSP的解決方案,它們多采用FPGA+DSP架構(gòu)對圖像進行壓縮。此類系統(tǒng)的最大缺點在于DSP的數(shù)據(jù)接口不夠靈活,加上DSP的并行度不高,因此大大限制了其在高分辨率圖像壓縮方面的應(yīng)用。所以,研究一套支持多種分辨率以及高分辨率的視頻圖像壓縮和存儲系統(tǒng)具有重要的現(xiàn)實意義。
基于上述需求,開發(fā)了一套基于雙FPGA+ARM架構(gòu)的獨立式多分辨率VGA/GVI壓縮和存儲系統(tǒng)。該系統(tǒng)支持DVI/VGA接口輸入,并支持SVGA、XGA、SXGA、UXGA、1080p等任意分辨率的圖像壓縮和存儲,同時能做到音視頻同步。另外,該系統(tǒng)采用了雙FPGA+ARM架構(gòu),提高了系統(tǒng)的靈活性及平臺可升級性,拓寬了其應(yīng)用場合。
本文主要介紹獨立式多分辨率VGA/DVI圖像壓縮存儲系統(tǒng)的核心架構(gòu),并給出系統(tǒng)的性能。
1 系統(tǒng)架構(gòu)與實現(xiàn)
該系統(tǒng)的整體架構(gòu)如圖1所示。系統(tǒng)采用了雙FPGA+ARM的架構(gòu),主要包括四部分:圖像前端接口電路、預(yù)處理模塊、圖像壓縮模塊和管理模塊。它同時支持VGA和DVI圖像源輸入,圖像源的緩存或部分運算的中間結(jié)果通過Flash和外部存儲器實現(xiàn)。這里主要介紹該系統(tǒng)中涉及到前端預(yù)處理模塊和圖像壓縮核心模塊。
圖1中左面一片F(xiàn)PGA主要完成前端預(yù)處理,如分辨率檢測、色彩轉(zhuǎn)換和圖像分析等功能;右面一片F(xiàn)PGA主要用來實現(xiàn)圖像實時壓縮;ARM對系統(tǒng)進行管理,如壓縮后碼流管理、網(wǎng)絡(luò)管理和音頻錄制等。
1.1 前端預(yù)處理模塊
前端接口電路采用AD9888作為前端的視頻模數(shù)轉(zhuǎn)換器,TI公司推出的TFP403作為DVI接收芯片。前端預(yù)處理模塊采用Xilinx公司的Virtex4[2]系列的FPGA(XC4VLX40) ,它主要完成的功能是分辨率的檢測和色彩空間轉(zhuǎn)換等,如圖2所示。
1.1.1 分辨率檢測
對于標(biāo)準(zhǔn)的VGA接口,不同分辨率下其HSYNC與VSYNC時序不同,系統(tǒng)設(shè)計時用一個單獨的模塊來檢測輸入端的分辨率。該模塊可以通過檢測兩個相鄰VSYNC上升沿間的HSYNC數(shù)目來識別VGA信號的分辨率,然后將檢測到的分辨率參數(shù)送給后端的圖像壓縮模塊,讓系統(tǒng)根據(jù)對應(yīng)參數(shù)來配置圖像采集和圖像壓縮。
1.1.2 色彩轉(zhuǎn)換
標(biāo)準(zhǔn)的VGA接口輸出為RGB信號,在進行壓縮之前,先對圖像進行色彩空間轉(zhuǎn)換,將RGB信號轉(zhuǎn)換為YUV信號。色彩空間轉(zhuǎn)換公式為:
系統(tǒng)實現(xiàn)時采用4:2:2采樣模式,F(xiàn)PGA采用定點化處理后,將得到的Y 和UV分量送給后端的編碼模塊進行編碼。
1.2 圖像壓縮部分
在系統(tǒng)設(shè)計時,考慮到不同分辨率的圖像壓縮和后續(xù)功能擴展,需要采用硬件資源豐富的FPGA,后端模塊采用Xilinx公司的Virtex4系列的FPGA(XC4VLX100)。圖像壓縮的核心架構(gòu)如圖3所示,它主要涉及圖像緩存、圖像壓縮和碼流緩存三部分。
1.2.1 圖像緩存模塊
為了提高系統(tǒng)的處理速度和數(shù)據(jù)吞吐效率,圖像采集模塊中采用圖4所示的“乒乓操作”緩存圖像,即把一幀圖像的Y和UV分量緩存到片外的SDRAM1中,同時,系統(tǒng)會從SDRAM2讀取另一幀已經(jīng)緩存的圖像到后端的圖像壓縮模塊。這樣圖像緩存和壓縮可以并行處理,提高系統(tǒng)的壓縮效率。
系統(tǒng)設(shè)計時采用Micron公司16 MB的SDRAM[3],它包含了4個bank。其中,bank0與bank1用來緩存Y分量,bank2與bank3用來緩存UV分量,為了提高讀寫SDRAM的效率,采用burst讀寫數(shù)據(jù)方式,可以減少仲裁操作。
1.2.2 圖像并行壓縮模塊
在系統(tǒng)算法設(shè)計時,圖像變換采用了基于離散小波變換的空間推舉算法(SCLA[4]),相對常見的離散小波變換(DWT),SCLA算法的行與列變換同時進行,乘法次數(shù)最少,且重建圖像的PSNR值更高。編碼算法采用改進的無鏈表零樹編碼算法(SLC),它融合了多層次零樹編碼算法(SPIHT[5])和無鏈表零樹編碼(LZC[6])的思想,在性能上逼近SPIHT,但更易于硬件實現(xiàn)。
系統(tǒng)在實現(xiàn)架構(gòu)上采用了圖3所示的雙通道并行壓縮架構(gòu),即Y和UV分量的小波變換和編碼并行進行,極大地提高了系統(tǒng)的并行度和壓縮效率。兼顧數(shù)據(jù)讀取效率和內(nèi)存考慮,本系統(tǒng)設(shè)計時采用了片外SDRAM和片內(nèi)SRAM結(jié)合的方法來緩存小波系數(shù),所以小波變換和編碼模塊主要由FPGA和2塊片外SDRAM協(xié)同完成。SCLA算法采用9/7小波的五層分解,其中SDRAM3用來緩存Y通道分解過程中產(chǎn)生的部分小波系數(shù),SDRAM4用來緩存UV通道分解過程中產(chǎn)生的部分小波系數(shù),向SDRAM中讀寫數(shù)據(jù)時仍然采用burst方式。SLC算法以一棵小波樹為基本單元,且壓縮比可自由控制,完成一幀圖像所有小波樹的編碼。
1.2.3 碼流緩存模塊
圖3中Y通道和UV通道編碼后的碼流,需要合理的碼流管理機制。在此,為了提高系統(tǒng)的吞吐效率,壓縮后的碼流緩存也采用2片SDRAM進行“乒乓操作”,即向SDRAM5寫一幀碼流時,從SDRAM6中讀取前一幀壓縮后的碼流;同理,向SDRAM6寫一幀碼流時,同時從SDRAM5中讀取前一幀緩存的碼流,原理與圖4類似。
2 實驗結(jié)果與性能
該系統(tǒng)的電路板采用10層板制作工藝,電路板大小30.8 cm×16.7 cm。測試結(jié)果表明,當(dāng)系統(tǒng)工作頻率為100 MHz時,可以對分辨率1 280×1 024的圖像進行實時壓縮(約25幀/s) ,對分辨率1 600×1 200的圖像壓縮速率為17幀/s,同時也支持其他更高分辨率的壓縮。
本系統(tǒng)對分辨率為1 600×1 200的計算機屏幕的PPT文檔界面操作過程進行了測試,實驗結(jié)果表明其壓縮比約為25倍,重建PSNR值約為38 dB,近年來, 視頻圖像的壓縮和存儲在信息處理和安防監(jiān)控等領(lǐng)域起著重要作用。鑒于市場上大多數(shù)圖像壓縮系統(tǒng)很難支持多種分辨率和高分辨率的實時壓縮,本文設(shè)計了一款雙FPGA+ARM架構(gòu)的獨立式多分辨率VGA/DVI圖像壓縮存儲系統(tǒng)。該系統(tǒng)能接收VGA/DVI接口輸入,支持SVGA、XGA、SXGA、UXGA、1080p等任意分辨率的連續(xù)壓縮和存儲,并能實現(xiàn)音視頻同步。在正常工作頻率100 MHz時,可以對SXGA(1 280×1 024)的圖像進行實時壓縮(25幀/s),對UXGA(1 600×1 200)的圖像壓縮為17幀/s,且圖像重建后的PSNR值要優(yōu)于JPEG標(biāo)準(zhǔn),壓縮性能與JPEG2000標(biāo)準(zhǔn)近似。另外,該系統(tǒng)設(shè)計時采用雙FPGA+ARM架構(gòu),提高了系統(tǒng)的靈活性和平臺可升級性,具有廣闊的應(yīng)用前景。
評論