基于FPGA器件的Sobel算法實現
0引言
本文引用地址:http://www.104case.com/article/192125.htm邊緣檢測技術是圖像處理的一項基本技術,在工業、航天、醫學、軍事等領域中有著廣泛的應用。邊緣檢測算法的實現涉及復雜的計算步驟,故對處理速度有較高要求。采用FPGA器件實現系統設計是一種純硬件的解決方案,該方案可以使系統具備較高的實時性,能比較好地解決軟件編程方式所導致的處理速度問題。
在眾多的圖像邊緣檢測算法中,Soble算法具有計算簡便、檢測效果好等優點,是一種被廣泛應用的算法。Sobel算法依據圖像邊緣的灰度值會產生突變的原理,來對像素的灰度值進行處理。在圖1所示的3×3像素窗中,中間像素[i,j]為待檢測像素,Sobel算法分別對此像素窗進行水平(H)、垂直(V)、左對角(L)、右對角(R)四個方向的灰度值濾波運算,公式如下:
c=2。這里的H,V,L,R是為了計算梯度的大小和方向。梯度大小可由下式得到普遍估計:
若此幅值大于給定的某閾值,則可判定像素點[i,j]為邊緣像素,否則為一般像素。梯度方向與四個濾波值中絕對值最大的方向一致。
2 系統設計
一個完整的圖像邊緣檢測系統主要包括以下三個功能模塊:像素窗生成模塊、邊緣檢測模塊以及輸出處理模塊,圖2所示是邊緣檢測系統示意圖。其中像素窗生成模塊主要負責生成供邊緣檢測模塊計算的3×3像素窗;邊緣檢測模塊采用Soble算法對此像素窗進行處理,以判斷中心像素是否為邊緣像素;輸出處理模塊負責后續處理任務(如生成完整的邊緣圖像)。
2.1 系統設計思路
本文主要討論邊緣檢測模塊的設計。這里使用行為域建模的方式對系統進行算法描述。該方法可以使系統行為與結構相分離,設計者只需對系統的功能進行算法描述而不必關心系統具體的硬件構成方式。這種設計方法在設計過程中借鑒了軟件設計的靈活性優點,而設計結果則是具有高運算速度的硬件電路。
這種設計思路不必依次設計加法器、寄存器、比較器等功能單元。由于Sobel算法中的邊緣檢測主要包含兩個步驟:一是對像素窗進行四個方向濾波;二是對濾波值進行決斷。因此,可采用狀態機方式來描述系統功能。但這里需要三個狀態:空閑態(IDLE)、濾波態(FILTER)和決斷態(JUDGE),圖3所示是其系統狀態圖。

圖3中的IDLE為邊緣檢測模塊默認的初始狀態,此狀態下不進行任何處理動作。如果模塊接收到有效的檢測啟動信號,則轉入FILTER狀態。在此狀態下,模塊對輸入的像素窗進行四個方向的濾波處理。下一時鐘周期到來后則轉入JUDGE狀態,此狀態下,模塊進行邊緣判斷,并輸出相應結果。經過這樣一個過程后,即可完成一個像素窗的處理,之后,如果檢測啟動信號繼續有效,則轉入FILTER狀態并處理下一個像素窗,否則轉入IDLE狀態待命。
評論