張 科,徐書文,葛 珊
(中國電子科技集團公司第三研究所,北京 100015)
直方圖可以提供圖像灰度分布的統計特征,是圖像處理的基本方法之一。直方圖統計方法常應用于圖像增強、圖像壓縮和圖像分割等圖像處理基礎理論分析和應用中,也廣泛應用于遙感、遙測、成像跟蹤與制導等軍事領域中。
隨著DSP[1]應用技術的發展,利用DSP完成實時直方圖統計的方法主要有3種:1)專用DSP芯片;2)DSP+片內DRAM結構;3)DSP+片外DRAM結構。
第一種專用DSP芯片是指通過簡單外圍控制設置完成固定直方圖統計功能的電路;第二種DSP+片內DRAM結構是指DSP芯片自身具有大容量片內DRAM,并有專用的視頻接口,通過DSP編程實現直方圖統計功能,如圖1所示;第三種DSP+片外DRAM結構是用片外DRAM做幀存,采用乒乓切換控制數據存儲。當1個幀存寫數據時,DSP對另一幀存進行讀操作,通過DSP編程實現直方圖統計功能[2-4],如圖2 所示。

圖1 DSP+片內DRAM結構

圖2 DSP+片外DRAM結構
使用專用DSP芯片實現直方圖統計時,速度快、實時性好,可以達到像素時鐘的速度。但是這種專用DSP芯片只能用于直方圖統計,不能改作其他用途,而且體積大,不利于小型化。對于DSP+片內DRAM結構和DSP+片外DRAM結構,是通過DSP編程實現直方圖統計的,實時性稍差,并且實現直方圖統計功能占用了DSP運行時間和資源。但是,這2種結構靈活性很好,通過改變DSP程序就可以改作其他用途。
本文介紹了一種采用基于FPGA[5]實現實時直方圖統計功能的設計方案,該設計方案不占用DSP資源,實時性可以達到像素時鐘的速度;通過改變程序,可以改作其他用途。這就是說,采用FPGA實現實時直方圖統計設計方案既繼承了上述3種結構的優點,同時又克服了上述3種結構的缺點。
對于灰度級為[0,L-1]范圍的數字圖像,其直方圖是離散函數h(rk)=nk,這里rk是第k級灰度,rk∈[0,L-1],nk是圖像中灰度級為rk的像素個數。直方圖直觀地反映了1幅圖像灰度的分布情況,是圖像分割算法中常用的方法。灰度直方圖的特點是橫坐標為灰度值rk,縱坐標為像素數nk。在FPGA設計中實現直方圖統計,首先要考慮圖像灰度值和統計值的映射關系,在這里采用了雙RAM結構,用圖像灰度rk作為RAM的地址,RAM中的數據對應像素數nk,從而實現在存儲器中灰度和像素數的對應關系,基于FPGA的實時直方圖統計原理如圖3所示。在圖3中,CLK為像素時鐘;START#為直方圖統計起始信號;PIN 0-9為10位的像素灰度數據輸入;DIO[23..0]為灰度對應像素數的統計結果。圖中RAM_A用于完成直方圖統計像素數的讀取、累加和回寫,RAM_B通過外部CPU配置讀使能和讀地址,用于讀取直方圖統計最終結果。

圖3 基于FPGA的實時直方圖統計原理框圖
FPGA的軟件編程采用VHDL語言,在QuartusII9.0集成開發環境綜合,FPGA軟件設計采用mealy型有限狀態機。為了實現1個像素灰度值的直方圖統計在相應的像素周期內完成,需要在1個像素時鐘周期內分別實現RAM數據的讀出、累加、寫入,因此,這里選用4倍頻像素時鐘作為直方圖統計的同步時鐘。從設計的邏輯完備性考慮,需要考慮各種狀態轉換的情況,防止出現由于外部信號時序沖突導致的未知狀態而不能跳轉。直方圖實現過程中可能出現的各種狀態及跳轉關系如圖4所示。

圖4 直方圖統計狀態轉換圖
從圖4中可以看到,整個設計有4個狀態,即清零、等待、直方圖統計、讀出統計結果,各狀態轉換由外部控制信號觸發。其中,清零信號的優先級最高,其次是統計使能信號,讀信號在統計結束后有效,等待狀態為中間空閑態。直方圖統計狀態中還有4個子狀態,即空閑(等待)、讀取灰度統計原值、累加統計值、回寫相應灰度統計值,這4個子狀態以4倍頻像素時鐘為同步時鐘進行流水操作,如圖5所示。

圖5 灰度統計值累加時序
該設計中像素灰度位寬為10 bit,因此RAM地址需要1024個;直方圖統計模塊像素灰度統計數值位寬為24 bit,即1幅圖像的像素數最大可以達到16 Mbit,RAM需要的緩存空間為1024×24 bit=24576 bit,滿足一般實時圖像分辨力的要求。依據上述直方圖設計分析,FPGA芯片選用Altera公司CycloneⅡ系列器件EP2C5Q208I8N芯片,該芯片屬于Altera公司低成本的FPGA系列,容量中等。EP2C5Q208I8N的主要資源包含:1)內部邏輯單元多達4608個,最大系統門數約合9萬門以上;2)RAM資源共計119808 bit,可以由用戶配置為FIFO,DPRAM等模塊;3)2個鎖相環;4)13個18×18的嵌入式乘法器;5)IO管腳數為142。
針對該設計,該款FPGA芯片資源有較多冗余,具有可擴展性。如果需要處理更高分辨力的圖像,可依據該設計提供的方法選用資源更豐富的FPGA芯片。
該設計采用Modelsim軟件進行功能仿真,為了便于驗證,仿真時選取連續相同灰度進行統計,仿真結果如圖6所示。圖6中rst為清零脈沖信號;clk為像素時鐘;start_n為直方圖統計起始信號;pin為像素灰度值;data為回寫雙RAM的灰度統計值;rd_n為微處理器讀取統計結果的讀信號;add為微處理器讀取統計值的相應灰度值;data_out為微處理器讀出的統計數據。start_n選通了1000個像素時鐘周期,因此,像素統計結果為1000個。
該設計還在某設備的閾值分割電路中得到應用,閾值分割電路采用目標灰度直方圖實時統計進行分割門限的實時計算,從而實現目標的實時分割,如圖7所示。在圖7中,波門內十字線下部的白色標記為分割出的目標部分。


本文提出了一種基于FPGA的實時直方圖統計設計原理和方法,并經過軟件仿真和實際應用硬件電路的驗證,實驗結果證明該設計不僅實時性強,占用系統資源少,滿足設計需求,而且,采用VHDL語言編程,程序的可移植性強,可以方便地移植到更大規模的FPGA芯片中,為數字圖像的直方圖實時統計處理提供了1種實用的方法。
[1]韓文俊,張艷艷,任國強,等.基于雙DSP的實時高清H.264視頻編碼器實現[J]. 電視技術,2010,34(5):33-35.
[2]李弼程,彭天強,彭波.智能圖象處理技術[M].北京:電子工業出版社,2004.
[3]阿森頓.VHDL設計指南[M].葛紅,黃河,吳繼明,譯.北京:機械工業出版社,2005.
[4]Harris Semiconductor.HSP 48410 datasheet[EB/OL].[2011-10-10].http://www.datasheets.org.uk/HSP48410/Datasheet-028/DSA00501738.html.
[5]王德勝,康令州.基于FPGA的實時圖像采集與預處理[J].電視技術,2011,35(3):32-35.