韓團軍
(陜西理工學(xué)院,陜西 漢中 723000)
快速中值濾波算法研究及其FPGA硬件實現(xiàn)*
韓團軍*
(陜西理工學(xué)院,陜西 漢中 723000)
針對圖像噪聲大和對比度差特點,提出了一種水下圖像快速中值濾波算法及FPGA硬件實現(xiàn)。通過分析中值濾波算法,以3×3窗口為數(shù)學(xué)模型,以CycloneⅢEP3C40F324I7為核心處理芯片,用VHDL語言實現(xiàn)模型中所需要的模塊,實現(xiàn)了快速中值濾波算法對圖像的處理。通過硬件實驗結(jié)果對比,系統(tǒng)達到了抑制噪聲保持原圖像的目的。該設(shè)計在水下圖像處理中具有一定的工程參考及應(yīng)用價值。
中值濾波;FPGA;模塊;圖像處理
水下圖像處理技術(shù)已被廣泛應(yīng)用,選取適當(dāng)?shù)乃聢D像處理技術(shù),將會使整個系統(tǒng)的圖像質(zhì)量大幅度提升。水下圖像快速中值濾波算法及FPGA硬件實現(xiàn),其可以在保留原圖像的基礎(chǔ)上很大程度的消除噪聲提高圖像的對比度[1-3]。其對水下圖像處理和應(yīng)用有著重要的意義。
本文研究了基于FPGA快速中值濾波算法的硬件實現(xiàn),在分析中值濾波算法的基礎(chǔ)上,以CycloneⅢEP3C40F324I7為核心處理芯片,用VHDL設(shè)計了系統(tǒng)中的各個模塊,最后通過硬件平臺進行了測試驗證,設(shè)計比較理想。
快速中值濾波算法是將一個本來含有M×M像素的二維陣列,先進行一次列排序運算,再進行一次行排序運算,最后再將對角線的像素取中值輸出。
設(shè)計中以3×3窗口為例,首先將3×3窗口內(nèi)各像素分別定義為H0L0,H0L1,H0L2,H1L0,H1L1,H1L2,H2L0,H2L1,H2L2像素排列如表1所示
表1 3×3窗口內(nèi)各像素的位置定義
首先對窗口內(nèi)的每一列分別計算最大值,中值和最小值,這樣就得到3組數(shù)據(jù),分別為最大值組,中值組和最小值組,原理分析如下:
最大值組:
中值組:
最小值組:
式中:Max表示取最大值,Med表示取中值,Min表示取最小值。
由上述分析可以看出,最大值組中的最大值與最小值中的最小值一定是9個像素中的最大值和最小值。除此,中值組中的最大值至少大于5個像素:本列中的最小值和其他兩列中的中值和最小值;中值組中的最小值至少小于5個像素:本行中的最大值和其他兩列中的最大值和中值。同樣,最大組中的中值至少大于5個像素,最小值組的中值至少小于5個像素[4-6]。則濾波結(jié)果的輸出像素值MedOfNine應(yīng)該為最大組中的最小值MinOfMax、中值組中的中值MedOfMed、最小值組中的最大值MaxOfMin三者中的中值,這一計算過程表示如下:
MinOfMax=Min[Max0,Max1,Max2]
MedOfMed=Med[Med0,Med1,Med2]
MaxOfMin=Min[Min0,Min1,Min2]
MedOfNine=Med[MinOfMax,MedOfMed,MaxOfMin]
按照上面的理論可以得到快速中值濾波算法的原理和實現(xiàn)流程如圖1和圖2所示。
圖1 快速中值濾波算法原理
圖2 快速中值濾波算法實現(xiàn)過程
在圖1中,對3×3窗中的9個像素值H0L0,H0L1,H0L2,H1L0,H1L1,H1L2,H2L0,H2L1,H2L2先進行列排序(降序),分別得到三行數(shù)據(jù)Maxi,Medi,Mini,i=(0,1,2)。其中,Max表示取最大值,Med表示取中值,Min表示取最小值;然后按照行排序(降序),分別得到Ai,Bi,Ci,i=(0,1,2);最后取對角線上的3個像素值A(chǔ)2,B1,C0的中值輸出。
一級列排序后,可以得到Maxi>Medi>Mini,i=(0,1,2)。第2級行排序后,可以得到A0=Max[Max0,Max1,Max2],即A0為Maxi3個像素值的最大值。容易看出,經(jīng)過兩級排序后,其實A0也就是9個像素值的最大值。而由于A1=Med[Max0,Max1,Max2],A2=Min[Max0,Max1,Max2],A1,A2都屬于Maxi,因此A1大于一級排列時的同列的兩個數(shù)值,A2也一樣,同時又A1>A2,因此得出A1至少大于5個像素值,所以A1不為中值,其像素值范圍為9個像素中的第2大到第4大的像素值。
同理,按照對稱性,可以很容易分析出C0,C1,C2的性質(zhì):C2為9個像素中的最小值,C1至少小于5個像素值,C1不為中值,其像素值范圍為9個像素中第2小到第4小的像素值。因為C1,C0均小于一級排列時同列的2個數(shù)值,同時二級排列后又C0>C1,所以C1至少小于5個像素值,C1不為中值。
B0=Max[Med0,Med1,Med2],B1=Med[Med0,Med1,Med2],B2=Min[Med0,Med1,Med2],因此B0至少大于5個像素值,其范圍為第2大到第4大的像素值;同理,B2至少小于5個像素值,其范圍為第2小第4小的像素值,所以B0和B2都不可能為中值。因此,出去最大值A(chǔ)0,最小值C2,以及A1,B0(像素范圍為第2大到第4大值),B2,C1(第2小第4小的像素值),中值只能為對角線上3個像素A2,B1,C0中的一個。Max[C0,B1,A2]將和A1,B0一起組成第2大到第4大值的3個像素值;Min[C0,B1,A2]將和B2,C1一起組成第2小第4小的3個像素值,因此Med[C0,B1,A2]就是最終的中值輸出,在所有的9個像素值中,它是第5大得像素值,同時也是第5小的像素值。
圖4 3×3模板生成模塊
為了完成中值濾波的功能,可以將系統(tǒng)化分為4個模塊,分別是:行、列計數(shù)器的生成模塊、3×3模板生成模塊、中值濾波模塊和閾值比較模塊[7-8]。
2.1 行、列計數(shù)器的產(chǎn)生
在場標(biāo)志field_flag信號有效期間內(nèi),以像素時鐘pixelclk為時鐘信號對當(dāng)前像素所處的行數(shù)和列數(shù)進行標(biāo)識。首先對列計數(shù),設(shè)信號line_cnt,row_cnt為8位的寄存器變量,初始值為1,line_cnt從1開始計數(shù),當(dāng)計數(shù)到 160時重設(shè)為1;row_cnt從1開始,每當(dāng)line_cnt等于159累加 1,直到field_flag翻轉(zhuǎn)高電平為止。在數(shù)據(jù)無效期間對line_cnt,row_cnt重新置為1。
圖3 行列計數(shù)器模塊
2.2 3×3模板的生成
使用嵌入式存儲器來實現(xiàn)移位寄存器塊,它能節(jié)省邏輯單元LE和布線資源,提供了更加有效的實現(xiàn)方法。由于QuartusⅡ軟件中的altshift_taps宏模塊沒有正好等于158的FIFO,可以選用移位寄存器實現(xiàn)FIFO的功能。1個w×m×n移位寄存器,由輸入數(shù)據(jù)寬度w,抽頭長度m和抽頭數(shù)n來決定,移位寄存器的抽頭長度m最大值是256,當(dāng)需要更大容量的移位寄存器塊可以級聯(lián)。由于w 沒有正好14位,可以選16位移位寄存器。運用圖中的移位寄存器組成一個深度為158的FIFO,抽頭數(shù)n都為1,組成的3×3模板框圖如圖4所示。shiftin[9..0]為圖像數(shù)據(jù)輸入端,clock為時鐘信號shiftin[9..0]為經(jīng)過158 個時鐘延時后的數(shù)據(jù)輸出端。最終的3×3模板構(gòu)成如圖4所示,包括7個由上升沿觸發(fā)的D觸發(fā)器,每個D觸發(fā)器延時一個時鐘,兩個移位寄存器模塊,每個寄存器模塊延時158個時鐘。仿真采用640×480像素這種大數(shù)據(jù)量對所設(shè)計的模板進行測試,時序仿真模擬真實時鐘周期,選擇輸入時鐘周期50ns,輸入數(shù)據(jù)是以50ns為周期的從1 開始累加。仿真結(jié)果見圖5顯示:產(chǎn)生的9 個數(shù)可以分3行,第1行的1 、2 、3 與第2行641、642、643及第3行的1 281、1 282、1 283相對應(yīng),每兩行有640個數(shù)的差值。
圖5 3×3模板序仿真結(jié)果
2.3 中值算法實現(xiàn)
搭建一個如圖6的中值濾波結(jié)構(gòu),求9個數(shù)中間值的算法需要10個3輸入比較器,2個2輸入比較器。2輸入比較器判決出2個輸入數(shù)值的大小,一個時鐘可以實現(xiàn)。3輸入比較器比較產(chǎn)生最大值、最小值及中值??紤]在FPGA上應(yīng)用,要盡可能并行處理。
圖6 中值濾波模塊
2.4 閾值比較模塊
為了使算法更好地保護圖像的細節(jié),同時把噪音像素點用中值來替代,需要將最終結(jié)果做一個判斷,首先是需要將圖像的四邊2行和2列用原始值替代。通過前面設(shè)置的行、列計數(shù)器判斷l(xiāng)ine_cnt,row_cnt,如果line_cnt等于1或640時候輸出值為原始值,如果row_cnt 等于1或512時候輸出值為原始值。當(dāng)輸出數(shù)據(jù)不在圖像最外一行(列)時,判斷當(dāng)前像素值是否等于9個像素中的最大值或最小值,如果等于則直接輸出中值,否則輸出當(dāng)前值。閾值比較模塊的VHDL描述為:
Judge:PROCESS(clk,maxmax,midmid,minmin,data_now)
BEGIN
IF clk'EVENT AND clk='1' THEN
IF(data_now=maxmax)OR(data_now=minmin)THEN
mid_value<=midmid;
ELSE
mid_value<=data_now;
END IF;
END IF;
END PROCESS;
圖7為閾值比較模塊仿真圖,由圖7可以看出輸入為1到9的9個像素值,輸出結(jié)果正好就是9個數(shù)的中值mid_value=5。仿真結(jié)果表明上述閾值比較代碼邏輯正確。通過以上軟件設(shè)計和仿真表明設(shè)計結(jié)果正確。
圖7 閾值比較模塊仿真圖
圖10 中值濾波后圖像
實驗終端調(diào)試及測試,通過給一幅未經(jīng)處理的原始紅外圖像加入了孤立的噪聲點,輸入到FPGA中值濾波系統(tǒng)中,可以得到濾波后的圖像,試驗結(jié)果可以看出,原始圖像中孤立的噪聲點得到了有效的濾除,利用FPGA實現(xiàn)的中值濾波得到了預(yù)想的效果。終端和測試如圖8~圖10所示。
圖8 測試終端
圖9 中值濾波前原始圖像
本文利用3×3窗口為數(shù)學(xué)模型,對其進行理論分析,通過模塊化設(shè)計思想進行硬件設(shè)計,應(yīng)用CycloneⅢEP3C40F324I7芯片為核心處理器,實現(xiàn)了水下圖像去噪處理和增強對比度[9]。通過硬件測試,驗證了理論結(jié)果的正確性。該系統(tǒng)具有一定的應(yīng)用價值。
[1] 沈?qū)W利,王肅國. 基于FPGA的改進型中值濾波算法研究[J]. 微電子學(xué)與計算機,2014(1):21-26.
[2] 李新春,趙 璐. 基于中值濾波算法濾波器的FPGA實現(xiàn)[J]. 計算系統(tǒng)應(yīng)用,2011(9):81-85.
[3] 李國燕,侯向丹,顧軍華,等. 快速中值濾波算法的改進及其FPGA實現(xiàn)[J]. 計算機技術(shù)及應(yīng)用,2013(2):136-141.
[4] 徐大鵬,李從善. 基于FPGA的數(shù)字圖像中值濾波器設(shè)計[J]. 電子器件,2006,29(12):1115-1118.
[5] 李飛飛,劉偉寧,王艷華,等. 改進的中值濾波算法及其FPGA快速實現(xiàn)[J]. 計算機工程,2009(7):175-180.
[6] 何康,裘溯,金偉其,等. 水下距離選通圖像雙平臺直方圖增強及FPGA實時處理[J]. 紅外技術(shù),2014(12)976-981.
[7] 王蘇,鐘云海. POD海圖技術(shù)應(yīng)用[J]. 航海技術(shù),2015(2):46-47.
[8] 尚媛園,楊新華,徐達維,等. 基于SOPC技術(shù)的高速圖像采集控制系統(tǒng)的設(shè)計與研究[J]. 傳感技術(shù)學(xué)報,2011,24(6):863-867.
[9] 馮偉昌,林玉池,何冬,等. 基于FPGA的雙通道實時圖像處理系統(tǒng)[J]. 傳感技術(shù)學(xué)報 2011,24(8):1119-1121.
Research of Fast Median Filtering Algorithm and Hardware Implementation Based on FPGA*
HANTuanjun*
(Shaanxi University of Technology,Hanzhong Shaanxi 723000,China)
For noise and contrast poor characteristics,a underwater image research of fast median filtering algorithm and hardware implementation was proposed based on FPGA. Through analysis median filter algorithm,the mathematical model of 3×3 template as an example,and CycloneⅢEP3C40F324I7 as the core processing chip.The design of every needed models using VHDL realized the image processing as fast median filtering algorithm. Through the hardware experimental results show that the purposed system reduces the noise and maintains the original image. The design has a certain reference and application value.
median filter;FPGA;model;image processing
項目來源:國家自然科學(xué)基金項目(61401262);院士工作站項目(fckt201503);陜西理工學(xué)院2014年科研基金項目(SLGKY14-06);陜西理工學(xué)院2015年科研基金項目(SLGKY15-25);陜西省教育廳基金項目(No16Jk1151)
2016-04-29 修改日期:2016-05-15
TN911.73
A
1005-9490(2017)03-0697-05
C:1270
10.3969/j.issn.1005-9490.2017.03.036