空域濾波算法是圖像增強技術的一種,直接對圖像的象素進行處理,不需要進行變換。常見的濾波算子如銳化算子、高通算子、平滑算子等,可以完成圖像的邊緣提取、噪聲去除等處理。這些濾波算子盡管功能不同,實現方法卻都是類似的,都是通過模板卷積的方法來實現的。
VLSI技術的迅猛發展為數字圖像實時處理技術提供了硬件基礎,其中fpga/" target="_blank">FPGA(現場可編程門陣列)的特點使其非常適用于數字圖像處理。本文研究的就是在FPGA設計平臺上設計硬件電路,實現數字圖像的空域濾波算法。
1 數字圖像空域濾波算法
數字圖像空域濾波算法的實現步驟如圖1所示,左邊的部分是要處理的圖像的某一部分,中間是對圖像進行處理的3×3模板。
具體的處理步驟是:
將模板在圖像上漫游,并將模板中心與圖中某個象素位置重合;
將模板上的系數與模板下對應的象素相乘;
將所有的乘積相加。
把和(模板的輸出響應)賦給圖像中對應模板中心位置的象素。圖1中所示是圖像的一部分,S0~S8是象素點的灰度值,K0~K8是3×3的模板系數。用這個3×3模板來進行空域濾波的過程是:將模板中心點,即模板系數為K0的點所在位置,與圖像中灰度值為S0的點重合,模板的輸出響應R為:
R=K0*S0+K1*S1+…+K8*S8 (1)
這樣增強后的圖像在原來位置為(x,y)處的象素點的灰度值就由S0變為R。如果對圖像中的每個象素點都這樣進行模板操作,就可以得到增強后的圖像在所有位置的新灰度值。如果在設計濾波器時給模板系數賦予不同的值,就可以得到不同的高通、低通效果。
本文采用的圖像是256×256大小的灰度圖像,濾波模板3×3大小。如何設計硬件電路來完成上述空域濾波算法,分析上述算法實現過程,可以得出結論,實現空域濾波算法可采用3個三階的FIR濾波器+延時單元來描述。
2 FIR數字濾波器的FPGA設計
在設計實現空域濾波算法的3個三階的FIR濾波器+延時單元的電路時,要考慮的主要問題是:如何縮短硬件電路設計時的關鍵路徑以及提高系統的數據吞吐率。為解決這些實際的FPGA設計中的關鍵問題,在具體設計電路時,主要從以下幾個方面進行考慮:
2.1 FIR數字濾波器與流水線結構
現代微處理器、數字信號處理器、高速數字系統設計中都廣泛應用了流水線(Pipelining)技術,其核心設計思想是把一個周期內執行的邏輯操作分成幾步較小的操作,在多個高速的時鐘周期內完成。每一次邏輯小操作的結果都存儲在寄存器中,被高速時鐘同步,在下一流水線單元使用,因而是速度優化中最常用的技術之一,可以大大地提高數字系統的總體運行速度。
下面分析一下三階的FIR濾波器的基本結構和采用了流水線技術后的FIR結構,以及FIR濾波器的數據廣播結構。
三階有限沖擊響應(FIR)數字濾波器可以表示如下:
y(n)=ax(n)+bx(n-1)+cx(n-2) (2)
這個三階的FIR濾波器實現的結構,如圖2所示。
圖2中,這種結構的FIR濾波器的關鍵路徑(處理一個新樣點的最小時間)由1個乘法器和2個加法器的時間來限定。如果采樣周期小于這個最小時間的話,那么這種結構的FIR濾波器就不能滿足要求。這時就要考慮流水技術。采用流水線技術可以縮短關鍵路徑,如圖3所示。
在流水線結構的FIR濾波器中,啟動當前的迭代計算時,節點2的加法器正在完成前次迭代結果的計算。因此,這時的關鍵路徑由1個乘法器和2個加法器的時間縮短為1個乘法器和1個加法器的時間。
采用在結構中適當插入流水線鎖存器來減小關鍵路徑長度的流水技術時,鎖存器的插入并不是隨意的。當把數據流圖切開時,數據方向要一致向前。這樣加入的流水線,才不會影響功能。圖3中,插入流水線鎖存器時,就是沿著結構中數據流的正向,在上下兩個路徑均加入了鎖存器,這樣FIR濾波器的邏輯才不會混亂。一種結構的速度(時鐘周期),通常由任意兩個鎖存器之間、一個輸入與一個鎖存器間、一個鎖存器與一個輸出間或輸入與輸出間路徑中最長的路徑限定。流水線鎖存器可以有效地縮短最長路徑。
除了以上兩種FIR濾波結構外,還有一種數據廣播結構的FIR數字濾波器,這種結構通過轉置結構來縮短關鍵路徑,同時不需要引入任何的流水線鎖存器。具體的改造方法是:改變輸入和輸出;顛倒信號流程的方向;由一個分支來取代加法器,反之亦然。數據廣播結構的FIR數字濾波器如圖4所示。
在這種結構中,數據不是存儲下來,而是同時廣播到所有的乘法器。這種結構的關鍵路徑和圖3中插人流水線鎖存器的FIR濾波器結構的關鍵路徑一樣。但是對輸入不需要額外的移位寄存器,對部分積的和也不需要額外的流水線就能達到很高的通過率。這就是FIR濾波器數據廣播結構的優點。