基于Stratix II EP2S60的改進中值濾波器設計
眾所周知,在復雜背景條件下,要對弱小目標進行準確有效地紅外跟蹤、探測是一個難題。這種情況下,由于目標與背景的對比度較小、信噪比較低,若直接進行跟蹤、探測往往比較困難,所以必須先對圖像信號進行濾波預處理,以達到抑制背景噪聲。增加目標強度,從而提高圖像信噪比的目的,為后續(xù)工作打下良好的基礎。
實時圖像處理器中,信號預處理包括對圖像的各種濾波、直方圖統(tǒng)計及均衡、圖像增強、灰度變換等,它們共同的特點是處理數(shù)據(jù)量大,如果用一般的軟件來實現(xiàn)勢必會比較慢。而對于一些實時性要求比較高的系統(tǒng),處理速度往往是要考慮的關鍵因素,一旦速度跟不上,實時性也無從談起。針對圖像預處理階段運算結構比較簡單的特點,用FPGA進行硬件實現(xiàn)無疑是理想的選擇,這樣同時兼顧了速度和靈活性,大大減輕了DSP的負擔。
本系統(tǒng)采用Verilog HDL語言。利用一種快速的中值濾波改進算法對電路進行設計,并以Altera公司生產(chǎn)的Stratix II EP2S60F67214型FPGA芯片為硬件平臺。該器件繼承了Altera公司Stratix II系列的共同優(yōu)點,由于引入了嶄新的自適應邏輯模塊(ALM),使得Stratix II有更高的性能和邏輯封裝、更少的邏輯和布線級數(shù)以及更強的DSP支持,而Stratix II EP2S60F67214更是比Xilinx公司的類似器件Virtex-4XC4VLX60多出18%的器件邏輯,其中包括51 182個寄存器位,2 544 129個存儲器位以及48 352個ALUT,該器件資源豐富,只需占用很小一部分實現(xiàn)中值濾波器,為后續(xù)設計的增長留有更多空間。
2 中值濾波的基本原理及改進算法
2.1中值濾波的基本原理
中值濾波是由Tukey發(fā)明的一種非線性信號處理技術,早期用于一維信號處理,后來很快被用到二維數(shù)字圖像平滑中,是一種有效抑制圖像噪聲,提高圖像信噪比的非線性濾波技術。它是一種鄰域運算,類似于卷積,但計算的不是加權求和,而是把鄰域中的像素按灰度級進行排序,然后選擇該組的中間值作為輸出像素值。與均值濾波器以及其他線性濾波器相比,中值濾波器的突出特點是在很好地濾除脈沖噪聲(Impulsive Noise)和椒鹽噪聲(Salt and Pepper Noise)的同時,還能夠保護目標圖像邊緣輪廓的細?。用?獎硎疚??br>
g(x,y)=median{f(x-i,y-i)},(i,j)∈S (1)
式中g(x,y),f(x,y)為像素灰度值,S為模板窗口。
而中值濾波的具體實現(xiàn)過程一般為:
(1)選擇一個(2n+1)×(2n+1)的滑動窗口(通常為3*3或者5*5),使其沿圖像數(shù)據(jù)的行或者列方向逐像素滑動(通常為從左至右,從上到下逐行移動)。
(2)每次滑動后,對窗口內(nèi)的像素灰度值進行排序,用排序所得的中間值代替窗口中心位置像素的灰度值。
2.2中指濾波的改進算法
中值濾波的算法很多,但通常數(shù)據(jù)排序量較大。需要消耗大量時間,不利于圖像處理的實時性。本文采用一種窗口大小為3*3的快速排序算法。大大降低了排序量。
為了便于說明。將3*3窗口內(nèi)的各個像素分別定義為M11,M12,M13,M21,M22,M23,M31,M32,M33。像素排列如表1。
首先分別對窗口中的每一行計算最大值、中值、最小值,這樣一共可以得到9個數(shù)值,分別包括3個最大值、3個中值、3個最小值:
第一行的最大值:Max1=max[M11,M12,M13];
第一行的中值:Med1=med[M11,M12,M13];
第一行的最小值:Min1=min[M11,M12,M13];
依此類推:
Max2=max[M21,M22,M23];Med2=med[M21,M22,M23];Min2=min[M21,M22,M23];
Max3=max[M31,M32,M33];Med3=med[M31,M32,M33];Min3=min[M31,M32,M33];
式中,max表示取最大值,med表示取中值,min表示取最小值。
不難判斷,9個數(shù)值中。3個最大值中的最大值和3個最小值中的最小值一定是9個像素中的最大值和最小值;3個中值中的最大值至少大于5個像素:即本行中的最小值、其他2行的中值及最小值:而3個中值中的最小值至少小于5個像素:即本行中的最大值、其他2行的中值及最小值。最后,比較3個最大值中的最小值Min_of_Max,3個中值中的中值Med_of_Med,3個最小值中的最大值Max_of_Min.得到的中間值即為濾波的最后結果Med_of_nine。具體過程表示如下:
Min_of_Max=min[Max1,Max2,Max3];
Med_of_Med=med[Med1,Med2,Med3];
Max_of_Min=max[Min1,Min2,Min3];
則最后濾波結果:
Med_of_nine=med[Min_of_Max,Med_of_Med,Max_of_Min];
利用這種排序法的中值濾波運算僅需17次比較,與傳統(tǒng)算法相比。比較次數(shù)減少了近2倍,且該算法十分適用于在FPGA上做并行處理,大大提高了濾波的速度。
3中值濾波器硬件電路設計
關鍵要完成2個模塊的設計,分別是:
3.1 3*3窗口模塊
用硬件實現(xiàn)二維中值濾波,很重要的一點是能可靠地存儲實時圖像數(shù)據(jù),并且使延時最短。為了滿足實時性的要求,對圖像進行全幀預處理,但這種全幀預處理并不是先將整幀圖像數(shù)據(jù)完全保存在存儲器中后再對全幀圖像數(shù)據(jù)進行處理,而是存儲n-1行圖像數(shù)據(jù)后便開始處理,其中n為窗口大小。在本設計中,選用3*3窗口的中值濾波器,即n=3。這樣設計的好處是,F(xiàn)PGA可以以串行流水方式實現(xiàn)該模塊,節(jié)省了許多時間,為實時處理創(chuàng)造了有利條件。圖1給出3*3窗口中值濾波硬件框圖。
由前面2.2節(jié)對中值濾波改進算法的說明不難看出,整個排序?qū)嶋H就是要進行7次3值比較:
1) 3*3窗口每一行的3個數(shù)進行比較.分別得出每行的最大值、中值、最小值,一共有3行,需3次3值比較;
2)3個最大值組、中值組、最小值組進行3值比較,3個組需3次3值比較;
3)最大值組中的最小值、中值組中的中值、最小值組中的最大值3個數(shù)再進行一次比較。需1次3值比較。
為了盡量節(jié)約資源,充分利用硬件設計中的"模塊復用"原則,只需先設計一個簡單的3值比較器模塊,7次調(diào)用該模塊即可以輕松完成中值濾波排序。
另外,在圖像的各個邊緣。由于無法用3*3窗口覆蓋(窗口的一部分要覆蓋到圖像的外部)。所以無法直接調(diào)用該中值濾波排序模塊。參考了大量基于領域的圖像硬件處理系統(tǒng)的做法。本文將圖像邊緣像素簡單地設成"0"。并不會影響整個中值濾波的效果。這樣只需再加一個判斷窗口位置的模塊,如果判斷結果是邊緣.則不調(diào)用排序模塊而把"0"直接賦到輸出端;反之。則調(diào)用該排序模塊。
4 基于FPGA的處理結果
整個電路的設計使用Verilog HDL語言編寫,以Altera公司的Stratix II EP2S60器件為硬件平臺,在Quartus II 5.1的軟件開發(fā)環(huán)境下實現(xiàn)320*256*16 bit灰度圖像的中值濾波。該圖像1場時間是20ms(其中場消隱時間約為6.35 ms),像素時鐘是6 MHz,算法占用資源如表2所示。
5 結束語
本設計方案采用了一種改進的快速中值濾波算法,成功地在Altera公司的高性能Stratix II EP2S60上實現(xiàn)整個數(shù)字紅外圖像濾波,在保證實時性的同時,使得硬件體積大為縮減,大大降低了成本,具有很強的實用價值。如果再結合其他濾波預處理方法,則可以進一步提高其濾除噪聲的能力,更好地改善圖像質(zhì)量。本設計方案只能運用于矩陣型3*3模板,對于其他類型的模板(如5*5模板、十字線型模板),需要重新進行系統(tǒng)設計。另外。在FPGA設計中,一定要嚴格控制時序,保證時鐘有足夠的建立時間和保持時間,并保證時序的嚴格同步,電路的延時應該盡可能小。