摘要:介紹了一種采用SoPC技術,適用于光照度不夠均勻造成圖像灰度過于集中環境下的視頻處理與顯示設計。該系統基于FPGA技術,通過將NiosⅡ軟核處理器、用戶自定義邏輯模塊、存儲器、I/O等集成到單塊低成本的FPGA上,實現對解碼芯片SAA7113H的初始化及配置、視頻圖像灰度信號直方圖統計以及灰度均衡化的實時處理與顯示。其設計靈活、可靠性高,并且降低了成本和功耗。
當前基于軟核處理器的圖像系統已成為研究的熱點,使用FPGA來構建基于片上可編程系統(SoPC)的圖像處理系統,已成為一種趨勢[1]。因此,本文采用SoPC技術,在Altera公司單片Cyclone系列FPGA上使用IP資源復用技術集成了NiosII軟核處理器及各種輸入輸出接口,完成了對視頻圖像的采集、預處理、存儲和顯示幾大功能。本系統對圖像進行了灰度均衡化處理,使系統應用更廣。由于直方圖均衡能直接從已知的圖像中提取信息,不需要額外的參數說明,所以在軍用、航空、商業等領域,特別是紅外圖像增強領域[2]有實際的意義。SoPC是Altera公司提出來的一種靈活、高效的柔性設計,不需要修改硬件[3],就可方便地擴展和修改嵌入式視頻采集功能。同時,由于融入眾多的IP核,保證了設計的高效、快速。
1 系統總體結構及工作原理
系統框圖如圖1所示。系統上電后,Nios II軟核中的I2C控制總線對視頻采集模塊SAA7113H進行配置,FPGA依靠像素時鐘和行、場信號同步采集SAA7113H芯片輸出的視頻信號中的灰度視頻數據,把采集到的灰度數據進行灰度直方圖統計和灰度分布均衡化處理。Nios II軟核外部加一個延遲模塊,與灰度轉換模塊輸出的信號同步之后,視頻輸入模塊開始工作,通過存儲控制、DMA控制器傳輸視頻信號,LCD顯示控制等模塊顯示所采集的信號。所有處理都采用流水線操作,大大節省了系統的處理時間。

2 系統硬件設計
2.1 視頻解碼芯片SAA7113H初始化
本系統中視頻解碼器的初始化配置由Nios II軟核處理器通過I2C總線完成,主要包括對視頻解碼器的工作模式,輸出行、場同步參考信號的時序關系以及輸出數字信號的格式等進行設置。I2C總線是由Philips公司開發的一種兩線制總線,由一條串行數據線SDA和一條串行時鐘線SCL組成,可以實現數據通信,完成芯片配置。首先,I2C總線控制器發出一個數據傳輸的起始條件:SCL信號保持高電平、而SDA信號由高電平變為低電平時,開始傳輸地址數據流。起始條件滿足后,發出一個8bit的設備從地址,所有的外圍設備開始響應起始條件并轉換下一個8bit寄存器地址(7bit地址+1bit讀寫位),由高位到低位依次傳輸。外圍設備識別出傳輸地址后,在第9個時鐘脈沖(確認位)把數據線變為低電平,然后開始將8bit數據寫入或者讀出寄存器(讀寫位決定了數據的傳輸方向)。當時鐘線SCLK為高電平、而數據線SDA由低電平變為高電平時,表示一次數據傳輸完成,停止I2C總線,等待下一次的傳輸開始。圖2為I2C總線的數據傳輸時序圖。

從SAA7113H的4個模擬輸入端AI11、AI12、AI21、AI22輸入的視頻圖像信號,經A/D轉換后產生數字色度信號和亮度信號,分別進行亮度信號處理和色度信號處理。亮度信號處理的結果送到色度信號處理器,進行綜合處理,產生YUV信號,經格式轉化后從VPO(8位)輸出。所有這些功能均是在I2C總線控制下完成。SAA7113的寄存器配置通過I2C總線來進行,遵從I2C總線協議。表1是SAA7113H寄存器的“寫”操作格式。

其中,S為起始位,條件是SCL為高電平、SDA有下降沿、ACK-s為從動設備應答位,P為終止位。在初始化過程中要注意:SAA7113H的節點地址(Slave Address)上電、RTS0為高電平時,其I2C寫地址為48H,讀地址為49H;RTS0為低電平時,其I2C寫地址為4AH,讀地址為4BH。
2.2 灰度直方圖統計及其均衡化
通過輸入系統獲取的圖像信息中含有各種各樣的噪聲與畸變,例如,光照度不夠均勻會造成圖像灰度過于集中,由CCD獲得的圖像經過A/D轉換、線路傳送都會產生噪聲污染等,不可避免地會影響系統圖像的清晰程度,降低圖像質量。但通過圖像增強可以改善圖像質量。直方圖均衡化算法是空域圖像增強技術的重要算法,是圖像壓縮、圖像分割和圖像識別等后續圖像處理的基礎[2,4],在圖像預處理技術中有廣泛的應用。
2.2.1 直方圖均衡化原理
直方圖均衡是以概率論為基礎,運用灰度點運算來實現直方圖變換。原始圖像的直方圖包含了豐富的圖像信息,描述了圖像的灰度級內容,反映了圖像的灰度分布情況。直方圖統計及均衡化的基本思想是對在圖像中像素個數多的灰度級進行展寬,而對像素個數少的灰度級進行縮減,從而達到清晰圖像的目的[5]。通過點運算使輸入圖像轉換為在每一灰度級上都有相同的像素點的數目。在圖像增強處理中運用如下公式:

(3)用累積分布函數作變換函數進行圖像灰度變換。
2.2.2 基于FPGA的算法優化及實現
算法的關鍵是在FPGA中實現直方圖統計和均衡后的映射關系表,本設計采用FPGA器件提供的Block RAM來存放直方圖和均衡后映射關系表。以雙端口RAM的數組結構為核心,把整個算法分為兩個部分執行:(1)統計原始圖像的各級灰度值,并存入灰度計數表RAM中;(2)對得到的灰度值做灰度映射,把映射后的結果存入到映射表RAM中,即生成均衡映射表。根據映射表就可以知道原始圖像某一灰度級經過變換后的灰度級。經過這樣的處理,就可以把原始圖像中密集分布的灰度值映射到經過直方圖均衡化后的新的灰度級上。圖3為該算法的邏輯框圖。

考慮到FPGA的硬件特點,在接收圖像數據、計算此場的直方圖時,在FPGA內實現浮點型數據運算相對復雜且消耗較多邏輯資源,因此在對圖像進行直方圖統計時將各灰度級像素點的個數作為直方圖數據:pu(uk)=nk,以避免使用浮點型數據運算。對直方圖進行均衡化處理,得到原灰度到均衡化后灰度映射關系表。本設計中的直方圖均衡化的算法具體的狀態轉移圖如圖4所示。其具體的轉移條件:啟動信號有效時,由st1轉向st2;當計數器1計數到255時,跳轉到st3;當計數器1沒有計數到圖像高度減1或者計數器2沒有計數到圖像寬度減1時,跳轉到st3;當計數器1計數到圖像高度減1且計數器2計數到圖像寬度減1時,跳轉到st5;當計數器1沒有計數到255時,跳轉到st6;當計數器計數到255時,跳轉到st7;當計數器1計數到圖像高度減1且計數器2計數到圖像寬度減1時,跳轉到st1狀態;當計數器1沒有計數到圖像高度減1或者計數器2沒有計數到圖像寬度減1時,跳轉到st6。在進行計數統計時,計數器在檢測得到一個像素點的灰度之后,不僅要相應地將計數器加1,而且對應灰度值大于當前灰度值的所有計數器都加1,這樣就能同時完成原始圖像各像素灰度值的統計和累積,減少了統計時間。

因為在灰度均衡處理過程中是以場為單位進行的,在灰度均衡化處理完之后,要將場合并為幀。其操作是由Nios II軟核中的SDRAM控制器來完成奇偶場的合并;叶染饣姆抡娼Y果圖如圖5所示。

3 視頻輸入模塊
視頻輸入模塊的結構示意圖如圖6所示。經過灰度變換YcrCb4:2:2格式視頻信號在像素時鐘控制下輸入FIFO緩沖器。彩條測試信號模塊在系統測試時,給出一個非常簡單的測試信號,可以模擬為信號源,以方便系統的調試。色度轉換模塊將YCrCb格式轉換為RGB格式,并把其值寫到FIFO緩沖器中。Avalon DMA把圖像數據寫到系統存儲器(SDRAM)中,當完成一幀圖像需寫操作時,給Nios II處理器一個中斷信號。

在色度空間的轉換模塊中,采用FPGA片內的資源,利用MegaCore構造一個乘加器件完成運算。根據轉換矩陣中YUV的比例關系,將信號放大一定的倍數,使其接近一個整數值。YUV信號的最大值為255,但是10bit DATA可以接收1 023亮度等級的調節,所以這個比例可以放大4倍左右(如果超出1023就按1023的等級計算)。根據反復實驗最后得出,按照如下的運算規則最接近轉換矩陣:

4 Nios II系統的生成
用SoPC Builder可以進行系統模塊硬件設計和底層軟件生成。進行硬件模塊設計時,SoPC Builder提供了圖形化配置界面,備有一些常用外設的IP模塊,如SDRAM、Flash RAM、UART、Interval timer、Parallel I/O等。Nios II軟核所含的組件如圖7所示。

在SoPC Builder自帶的IP核庫中并沒有I2C配置模塊、視頻輸入模塊和LCD controller模塊的IP核,這些模塊是根據寄存器特點以及功能要求自行設計的,并以IP核的形式通過Avalon總線連接到SoPC系統上。在建立了基于Nios II處理器的SoPC系統后,需要進行一些系統設置才能生成最終的Nios II系統。因此,系統配置除了對外設設置外,還包括啟動程序、中斷向量表、系統啟動地址等的設置。
本文介紹了基于SoPC技術的視頻采集方案以及對視頻信號進行灰度直方圖統計及灰度均衡化的實現。該方案結合SoPC技術在軟硬件可裁剪、可升級、可擴充等優點,大大縮短了系統整體設計周期,有很好的應用前景和科研價值。
參考文獻
[1] 王剛,張瀲.基于FPGA的SoPC嵌入式系統設計與典型實例[M].北京:電子工業出版社,2009.
[2] 劉延,任永杰,李群偉,等.基于FPGA的直方圖均衡實時并行算法及新架構實現[J].紅外技術,2010(3).
[3] 李蘭英.NiosII嵌入式軟核SOPC設計原理及應用[M].北京:北京航空航天大學出版社,2006.
[4] 唐崇武,李會方,何俊婷,等.改進的直方圖均衡圖像增強算法及實現[J].信息安全與通信保密,2009(12).
[5] 魯恒.基于FPGA的實時圖像直方圖均衡增強設計[J].電子應用技術,2006,32(11).