基于FPGA的網(wǎng)絡圖像采集處理系統(tǒng)設計
摘要:介紹一種基于FPGA的網(wǎng)絡圖像采集處理系統(tǒng)設計,該系統(tǒng)采用單片F(xiàn)PGA,實現(xiàn)了圖像的采集、壓縮和網(wǎng)絡傳輸功能,具有體積小,集成度高,算法升級靈活方便的特點。詳述了模塊的圖像采集邏輯、RAM控制邏輯、壓縮算法邏輯和網(wǎng)絡傳輸功能的實現(xiàn)方法。測試結果表明,系統(tǒng)運行穩(wěn)定,性能滿足要求。
關鍵詞:FPGA;圖像壓縮;網(wǎng)絡傳輸;JPEG
0 引言
隨著網(wǎng)絡技術的發(fā)展,網(wǎng)絡化儀器以結構簡單,機動靈活,吞吐率高和成本低等優(yōu)點而越來越受到重視,并在軍用自動測試裝備中得到廣泛的應用。隨著武器裝備圖像制導技術的廣泛應用,需要對圖像質量等進行評價,因此研制基于網(wǎng)絡的圖像采集處理系統(tǒng),對提高自動測試裝備的綜合能力具有重要意義。由于FPGA在流水線并行處理數(shù)據(jù)上具有強大優(yōu)勢,具有集成度高,體積小,可靈活配置等優(yōu)點,在圖像處理領域得到廣泛應用。本文介紹一種基于單片F(xiàn)PGA實現(xiàn)圖像采集、處理和網(wǎng)絡傳輸?shù)脑O計方案。
1 總體設計
總體框圖如圖1所示,系統(tǒng)采用Altera公司推出的StratixⅡ系列EP2S60F484型號FPGA作為圖像采集處理和網(wǎng)絡傳輸?shù)暮诵?,視頻A/D采用ADV7181B芯片,支持PAL,NTSC和SECAM多種制式視頻輸入。圖像采集處理在FPGA內部實現(xiàn),主要有3部分,分別為圖像采集模塊、RAM控制模塊和JPEG編碼器。NiosⅡ處理器作為主處理器,主要是通過I2C模塊對ADV7181B進行配置,控制JPEG編碼器和實現(xiàn)圖像的網(wǎng)絡傳輸功能。
2 主要功能模塊設計
2.1 圖像采集模塊
圖像采集模塊主要實現(xiàn)圖像信號檢測和圖像裁剪的功能。
CCD攝像頭輸出的視頻信號經過ADV7181B芯片解碼,輸出符合ITU-R BT.601標準的數(shù)據(jù)流。圖2所示為ADV7181B輸出的行同步信號參數(shù)和YCrCb信號時序圖。當輸出“FF 00 00 XY”時,表示有效圖像數(shù)據(jù)的開始或者結束。其中XY[4]=0表示圖像數(shù)據(jù)開始信號(SAV信號);XY[4]=1表示圖像數(shù)據(jù)結束信號(EAV信號);XY[6]=0表示奇場信號;XY[6]=1表示偶場信號。通過檢測EAV和SAV信號,分奇偶場提取有效的圖像數(shù)據(jù)。
根據(jù)輸出圖像大小的不同要求,需要對圖像進行裁剪。構造一個裁剪檢測電路,如圖3所示。利用像素時鐘和水平同步信號、垂直同步信號進行計數(shù),根據(jù)圖像輸出大小要求,設定比較器數(shù)值,當行列有效計數(shù)的數(shù)值在比較器設定的范圍之內,檢測電路使RAM處于寫使能狀態(tài),把圖像數(shù)據(jù)存入RAM。系統(tǒng)默認的圖像輸出大小是720×576像素,如果圖像輸出大小為512×512像素,那么行有效計數(shù)中的比較器數(shù)值分別為52和308,提取奇場和偶場中的第53行到第308行數(shù)據(jù)。同理,列有效計數(shù)中比較器分別為16和272。[!--empirenews.page--]
2.2 RAM控制模塊
RAM控制模塊通過乒乓操作對圖像數(shù)據(jù)進行緩存和讀取,系統(tǒng)只存取圖像的亮度信號,即Y信號。乒乓操作的處理流程如下:在第1場時間,將圖像數(shù)據(jù)緩存到SRAM1;在第2場時間,將圖像數(shù)據(jù)緩存到SRAM2,同時將SRAM1的數(shù)據(jù)送到JPEG編碼器進行圖像壓縮;在第3場時間,將圖像數(shù)據(jù)緩存到SRAM1,同時將SRAM2的數(shù)據(jù)送到JPEG編碼器進行圖像壓縮,依此循環(huán)。將圖像數(shù)據(jù)保存到SRAM時,由視頻采集模塊的行有效計數(shù)器和場有效計數(shù)器產生RAM寫入地址。
由于圖像數(shù)據(jù)是按照奇偶場先后傳輸?shù)模瑸榱说玫揭桓蓖暾膱D像,需要將奇偶場數(shù)據(jù)合并。RAM控制模塊先將奇場數(shù)據(jù)寫入RAM奇數(shù)行中,即奇場第1行存在RAM的第1行,奇場第2行存在RAM的第3行,依此類推直到奇場288行數(shù)據(jù)全部存完為止;再將偶場數(shù)據(jù)寫入RAM的偶數(shù)行中,即偶場第1行存在RAM的第2行,奇場第2行存在RAM的第4行,依此類推直到偶場288行數(shù)據(jù)全部存完為止。
2.3 JPEG編碼器
JPEG編碼器是圖像壓縮算法實現(xiàn)的核心,JPEG編碼器主要有5部分,分別是二維離散余弦變換(2D-DCT)、量化、Z型掃描、游程/預測編碼、霍夫曼編碼。如圖4所示原理框圖。輸入是圖像原始的亮度Y數(shù)據(jù),最后經過霍夫曼編碼器輸出碼流。
2.3.1 2D-DCT實現(xiàn)
對于8×8圖像塊的二維DCT的變換公式為:
式中:0≤u≤7,0≤u≤7,f(x,y)為對應像素點的像素值;F(u,v)為變換后的DCT數(shù)值。根據(jù)余弦的正交性,可將上式分解為一維DCT變換。設:
式中:0≤u≤7,0≤v≤7。
因此二維DCT變換可以轉換為2個一維DCT變換。目前比較常用的變換方法有2種:一種是直接法,通過將8×8圖像數(shù)組進行多項式轉換或者三角分解進行二維變換;或者另一種是間接法,將8×8圖像數(shù)據(jù)先按行進行一維DCT變換,然后再對變換結果按列進行第2次一維DCT變換,進而可以得到二維DCT變換結果。前者需要的乘法器較多,而且實現(xiàn)步驟較繁瑣,后者在這兩方面上擁有很大的優(yōu)勢,能夠形成快速DCT變換,更適合FPGA硬件的實現(xiàn),因此采用后者方法實現(xiàn)。
目前比較成熟的一維DCT算法主要有Chen算法、Loeffler算法、Lee-Huang算法、ANN算法等,每種算法所需要的乘法次數(shù)和加法次數(shù)各不相同,表1所示為幾種常用算法的比較。根據(jù)算法的復雜度和硬件計算速度,本文采用Loeffler算法。
Loeffler是一種基于行列分解的快速一維DCT算法,適合FPGA硬件實現(xiàn)。采用Loeffler算法實現(xiàn)一個8點的一維DCT變換,只需要11次乘法運算和29次加法運算。硬件實現(xiàn)算法的結構圖如圖5和圖6所示。[!--empirenews.page--]
2.3.2 量化和編碼
量化是將經過DCT變化后的系數(shù)值除以量化表中的量化值,其結果四舍五入得到。系統(tǒng)采用推薦的亮度量化表對圖像數(shù)據(jù)進行量化,該表存在FPGA的片上RAM中。由于硬件除法是通過迭代減法完成的,速度慢,因此先計算量化表中數(shù)值的倒數(shù)值,把DCT變化系數(shù)乘以量化表對應的倒數(shù)值,即可將除法轉換成速度較快的乘法運算。
量化后系數(shù)經過Z型掃描器轉換成一維ZIG-ZAG序列,序列的第1個數(shù)值表示直流(DC)分量,其后的63個數(shù)值表示交流(AC)分量。對DC分量采用一維差分前值預測編碼,即將DC分量減去上一個8×8子快的DC分量。對AC分量采用游程編碼,并且用一個字節(jié)的高四位來表示AC分量連續(xù)0值個數(shù),低四位表示下一個非零系數(shù)所需位數(shù),這樣能夠表示的最大0值個數(shù)為15個,如果AC分量中0值個數(shù)多于15個,采用(15,0)來表示。(0,0)表示EOB,說明后面分量值全為0。這樣游程/預測編碼對系數(shù)0的值進行壓縮。最后霍夫曼編碼器利用霍夫曼表分別對DC和AC系數(shù)進行霍夫曼編碼,輸出JPEG圖像碼流。
2.4 網(wǎng)絡傳輸
通過在NiosⅡ處理器上移植支持TCP/IP協(xié)議棧的μC/OS-Ⅱ操作系統(tǒng)來實現(xiàn)圖像的網(wǎng)絡傳輸功能。軟件流程圖如圖7所示。
首先將NiosⅡ作為網(wǎng)絡通信服務器,創(chuàng)建一個網(wǎng)絡監(jiān)聽套接字,將該套接字同NiosⅡ處理器的本機的IP地址和端口號進行綁定,調用Listen監(jiān)聽函數(shù)使系統(tǒng)處于監(jiān)聽狀態(tài),監(jiān)聽客戶端(PC機)請求,一旦監(jiān)聽到客戶端的連接請求,服務器端置圖像壓縮使能端有效,開始圖像的壓縮,并接收硬件邏輯完成壓縮的圖像數(shù)據(jù),然后服務器端向客戶端發(fā)送圖像的幀頭和圖像數(shù)據(jù),一幀圖像發(fā)送完成后會接著發(fā)送下一幀圖像,直到收到停止圖像發(fā)送指令,進入下一個監(jiān)聽的等待狀態(tài)為止??蛻舳酥饕窍蚍掌鞫税l(fā)出連接請求,一旦連接成功,即開始接收服務器端傳送的圖像幀頭和圖像數(shù)據(jù),并將圖像進行顯示。客戶端在停止接收圖像前,會不斷重復接收圖像數(shù)據(jù)的工作過程。
3 測試結果
AD采集一副大小為720×576的圖像,經過硬件邏輯裁剪成如圖8(a)所示的512×512大小的圖像,由JPEG編碼器進行圖像壓縮,在PC機上解壓縮后的圖像如圖8(b)所示。將原始圖像和解壓縮后的圖像進行對比,計算圖像的峰值信噪比:
式中:MSE為原始圖像和壓縮圖像的均方誤差。從圖中可看到,PSNR>30時,圖像視覺失真度比較低。
4 結語
本文介紹了一種基于FPGA的網(wǎng)絡圖像處理系統(tǒng)設計和實現(xiàn)方法。系統(tǒng)主要包括圖像采集模塊、RAM控制模塊、JPEG編碼器3部分邏輯。在單片FPGA上實現(xiàn)圖像的采集、裁剪、緩存和JPEG編碼,構建NiosⅡ處理器實現(xiàn)圖像的網(wǎng)絡傳輸功能。測試表明,系統(tǒng)的體積小,功耗低,算法升級靈活方便。此外系統(tǒng)運行穩(wěn)定,性能也滿足要求。