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