摘 要: 在Altera公司的Stratix EP1S10器件中設計了以Prewitt圖像邊緣檢測為基礎的圖像處理和顯示系統(tǒng),包括二維濾波器模塊、圖像VGA顯示控制器、ROM存儲器、FIFO緩沖器及相應的讀寫控制器。整個系統(tǒng)集成在一個芯片上,實驗證明此設計方法工作效率高,處理速度快,性能穩(wěn)定,可移植性好。
關鍵詞: FPGA" title="FPGA">FPGA Prewitt算子" title="Prewitt算子">Prewitt算子 VGA QuartusII
在嵌入式圖形系統(tǒng)處理領域,圖像的邊緣圖作為圖像的一種基本特征,經(jīng)常被應用到較高層次的特征描述。如圖像識別、圖像分割、圖像增強以及圖像壓縮等圖像處理和分析的技術中,從而可以對圖像作進一步的分析和理解[1]。但是圖像處理的速度問題一直是很難突破的設計瓶頸。一般情況下,控制領域及數(shù)據(jù)處理領域幾乎是單片機和數(shù)字信號處理器的天下,但是在數(shù)據(jù)處理量大、實時性要求更為苛刻的場合,傳統(tǒng)的MCU無法適應。而DSP雖然具備指令流水線和很高的處理速度,但是由于其本質(zhì)仍然是依靠串行執(zhí)行指令來完成相應的圖像處理算法,所以其處理速度依然很受限制。因而基于速度、系統(tǒng)集成和產(chǎn)品升級等角度考慮,采用現(xiàn)代電子設計的最新EDA技術,使用高速可編程邏輯器件CPLD/FPGA自行開發(fā)有關處理芯片成了一種全新的解決方案[2]。
利用EDA技術自頂向下的思想設計SoC(片上系統(tǒng))電路,能在一塊FPGA芯片中完成圖像存儲器、時鐘管理、圖像處理模塊、VGA顯示控制器以及地址發(fā)生器等多個電路模塊。使用Altera公司的Stratix EP1S10 FPGA芯片和Matlab軟件、QuartusII軟件等完成電路設計。其電路結構如圖1所示。
其中,ROM模塊用來存儲圖像,地址發(fā)生器將ROM中的數(shù)據(jù)傳遞給邊緣檢測處理模塊,F(xiàn)IFO為處理后數(shù)據(jù)的緩沖存儲模塊,VGA控制器用來產(chǎn)生外部VGA顯示器的控制時序及輸出圖像信號。
1 邊緣檢測模塊的設計
1.1 Prewitt邊緣檢測算法[3]
圖像邊緣具有方向和幅度兩個特性,通常沿邊緣走向像素的灰度變化平緩,垂直于邊緣走向的像素灰度變換劇烈。對于連續(xù)圖像f(x,y),其方向?qū)?shù)在邊緣(法線)方向上有局部最大值,因此,邊緣檢測就是求f(x,y)梯度的局部最大值和方向。對于離散圖像來說,就是利用邊緣檢測算子來逼近梯度算子求得局部最大值,即:
▽f=(f(x,y)-f(x-1,y),f(x,y)-f(x,y-1) (1)
因此,檢測數(shù)字圖像邊緣最簡單的方法就是對每個像素計算▽f,然后求絕對值,最后進行閾值操作就可以實現(xiàn)。
Prewitt算子:
以上兩個矩陣分別代表圖像的水平梯度和垂直梯度。如果用Prewitt算子檢測圖像M的邊緣,一般先用水平算子和垂直算子對圖像進行卷積,得到兩個矩陣M1和M2。在不考慮邊界因素的時候,它們與原圖像有相同的大小,分別表示圖像M中相同位置對于X和Y的偏導數(shù)。然后求M1和M2對應位置的兩個數(shù)的絕對值之和,得到一個新矩陣G,G是M中像素灰度梯度的近似值,然后經(jīng)過閾值操作得到邊緣。即:
在硬件實現(xiàn)過程中,由于Prewitt算子具有對稱性并且濾波系數(shù)只有0和±1,所以卷積只用加法器和減法器就可以實現(xiàn),不需要乘法器,這會大大減少FPGA資源消耗并降低二維卷積操作的復雜度。
1.2 DSPBuilder建模
Altera公司提供了DSPBuilder建模工具,可以利用它實現(xiàn)算法的建模和系統(tǒng)仿真工作;再利用QuartusII軟件進行分析和綜合,最后下載到FPGA器件中完成模塊的構建。現(xiàn)以處理256×256像素的256灰度圖像為例說明邊緣檢測模塊的實現(xiàn)過程,如圖2所示,像素運算方法如式(4)和式(5)。
1.3 圖像處理模塊的Matlab仿真
DSPBuilder運行在Matlab環(huán)境下,可以利用Simulink對設計結果進行仿真。處理前后的對比閾值為50,仿真結束時間為65536個時鐘周期。圖3為Matlab仿真圖。
由圖3可以看出,圖像在經(jīng)過邊緣檢測處理后較真實地反映了實物的邊緣輪廓。說明設計方法正確。
2 VGA控制器的設計
對于普通的VGA顯示器其引出線共含有5個信號:R、G、B三基色信號;HS行同步信號;VS場同步信號。VGA工業(yè)標準要求的時鐘頻率為25.175MHz(像素輸出頻率),行頻31.496Hz,場頻59.94Hz(每秒圖像刷新頻率)。HS、VS時序輸出圖和電路原理圖如圖4所示。其中T1包含96個時鐘周期,T2包含704個時鐘周期,T3包含2個行周期,T4包含523個行周期。時序驅(qū)動嚴格遵循VGA工作標準,即640×480×60Hz模式[4][5]。
HS設計VHDL進程:
process(clk) begin
if (rising_edge(clk)) then
if((hcnt>= 640+8+8) and (hcnt<640+8+8+96 )) then
hs<=′0′;
else
hs<=′1′;
end if;
end if;
end process;
VS設計VHDL進程:
process(vcnt) begin
if ((vcnt>=480+8+2) and (vcnt<480+8+2+2)) then
vs<=′0′;
else
vs<=′1′;
end if;
end process;
3 存儲器和地址發(fā)生器的設計
Stratix器件內(nèi)帶有TriMatrix存儲器,這些存儲器由三種類型的RAM模塊組成,其中有512bit的M512模塊94個,4Kbit的M4K模塊60個,512Kbit的M-RAM模塊1個,共有920 448bit的存儲容量。每一種都能配制成不同存儲類型的存儲器,例如可以利用M512 配置成FIFO功能存儲器;M4K模塊配制成中規(guī)模的存儲器,就像ROM和ATM(同步傳輸模式)單元處理;M-RAM模塊適合于大容量的緩沖存儲器設計,例如網(wǎng)絡協(xié)議包緩沖和系統(tǒng)緩存等,大大增強了可編程邏輯器件的存儲能力[6]。
本設計利用M4K模塊設計存儲圖像信息的ROM單元,共需要64KB和32個M4K單元。通過QuartusII中的Megawizard plug-in manager進行配置,圖像初始化由*.mif完成。利用M512模塊設計FIFO單元用來緩存處理完畢的數(shù)據(jù),設計方法同ROM。
控制單元主要完成地址生成時序和復位信號產(chǎn)生,其過程比較簡單,這里不再詳述。
4 頂層模塊的設計與仿真
將前面設計的各個模塊例化成整個系統(tǒng)的各個組成部分,并設為頂層功能電路,進行分析、綜合,然后進行電路的功能仿真,仿真結果如圖5所示。
圖5中clk5是輸入的25MHz時鐘信號;HS是行掃描信號,高電平表示可以輸出像素,低電平表示行消隱;VS是場掃描信號,高電平表示場掃描過程,由于周期比較長及仿真參數(shù)的限制沒有顯示出低電平的消隱過程。r、g、b表示輸出的像素電平,因為試驗平臺的限制,輸出信號沒有經(jīng)過模擬轉換而是直接從FPGA管腳輸出,這對于輸出是二值化信號的處理結果并沒有影響,可以看出在行掃描期間有處理完的像素數(shù)據(jù)輸出。
整個電路設計遵循EDA自頂向下的設計思想,針對各功能電路分別設計,最后組成完整系統(tǒng)。整個系統(tǒng)共用FPGA邏輯單元320個、存儲器資源65Kbit、管腳7個、DLL資源1個。完全由硬件電路實現(xiàn)DSP算法是FPGA的優(yōu)勢所在,所實現(xiàn)的系統(tǒng)性能穩(wěn)定、噪聲小、易于移植、靈活性高、處理速度快、易于實時處理。本設計可以作為更高層圖像處理技術的前期處理部分,也可以在視頻處理技術中得到應用。
參考文獻
[1] 宋芳莉.圖像邊緣檢測中的方法研究[D].西北大學碩士論文,2002,6.
[2] 譚會生,桂衛(wèi)華,劉展良.基于EDA技術的圖像邊緣檢測協(xié)處理器的設計[J].包裝工程,2004,25(6):102.
[3] 羅軍輝,馮平,哈力坦·A.MAtlab7.0在圖像處理中的應用[M].北京:機械工業(yè)出版社,2005:206-207.
[4] 潘松,黃繼業(yè),曾毓.SOPC技術實用教程[M].北京:清華大學出版社,2005,3.
[5] 潘松,黃繼業(yè).EDA技術與VHDL[M].北京:清華大學出版社,2005,7.
[6] Altera Co.stratix_section_2_vol_2.pdf[Z].http://www.altera.com.cn/literature/hb/stx/stratix_section_2_vol_2.pdf.