韓團(tuán)軍
(陜西理工學(xué)院,陜西 漢中 723000)
快速中值濾波算法研究及其FPGA硬件實(shí)現(xiàn)*
韓團(tuán)軍*
(陜西理工學(xué)院,陜西 漢中 723000)
針對(duì)圖像噪聲大和對(duì)比度差特點(diǎn),提出了一種水下圖像快速中值濾波算法及FPGA硬件實(shí)現(xiàn)。通過(guò)分析中值濾波算法,以3×3窗口為數(shù)學(xué)模型,以CycloneⅢEP3C40F324I7為核心處理芯片,用VHDL語(yǔ)言實(shí)現(xiàn)模型中所需要的模塊,實(shí)現(xiàn)了快速中值濾波算法對(duì)圖像的處理。通過(guò)硬件實(shí)驗(yàn)結(jié)果對(duì)比,系統(tǒng)達(dá)到了抑制噪聲保持原圖像的目的。該設(shè)計(jì)在水下圖像處理中具有一定的工程參考及應(yīng)用價(jià)值。
中值濾波;FPGA;模塊;圖像處理
水下圖像處理技術(shù)已被廣泛應(yīng)用,選取適當(dāng)?shù)乃聢D像處理技術(shù),將會(huì)使整個(gè)系統(tǒng)的圖像質(zhì)量大幅度提升。水下圖像快速中值濾波算法及FPGA硬件實(shí)現(xiàn),其可以在保留原圖像的基礎(chǔ)上很大程度的消除噪聲提高圖像的對(duì)比度[1-3]。其對(duì)水下圖像處理和應(yīng)用有著重要的意義。
本文研究了基于FPGA快速中值濾波算法的硬件實(shí)現(xiàn),在分析中值濾波算法的基礎(chǔ)上,以CycloneⅢEP3C40F324I7為核心處理芯片,用VHDL設(shè)計(jì)了系統(tǒng)中的各個(gè)模塊,最后通過(guò)硬件平臺(tái)進(jìn)行了測(cè)試驗(yàn)證,設(shè)計(jì)比較理想。
快速中值濾波算法是將一個(gè)本來(lái)含有M×M像素的二維陣列,先進(jìn)行一次列排序運(yùn)算,再進(jìn)行一次行排序運(yùn)算,最后再將對(duì)角線的像素取中值輸出。
設(shè)計(jì)中以3×3窗口為例,首先將3×3窗口內(nèi)各像素分別定義為H0L0,H0L1,H0L2,H1L0,H1L1,H1L2,H2L0,H2L1,H2L2像素排列如表1所示

表1 3×3窗口內(nèi)各像素的位置定義
首先對(duì)窗口內(nèi)的每一列分別計(jì)算最大值,中值和最小值,這樣就得到3組數(shù)據(jù),分別為最大值組,中值組和最小值組,原理分析如下:
最大值組:
中值組:
最小值組:
式中:Max表示取最大值,Med表示取中值,Min表示取最小值。
由上述分析可以看出,最大值組中的最大值與最小值中的最小值一定是9個(gè)像素中的最大值和最小值。除此,中值組中的最大值至少大于5個(gè)像素:本列中的最小值和其他兩列中的中值和最小值;中值組中的最小值至少小于5個(gè)像素:本行中的最大值和其他兩列中的最大值和中值。同樣,最大組中的中值至少大于5個(gè)像素,最小值組的中值至少小于5個(gè)像素[4-6]。則濾波結(jié)果的輸出像素值MedOfNine應(yīng)該為最大組中的最小值MinOfMax、中值組中的中值MedOfMed、最小值組中的最大值MaxOfMin三者中的中值,這一計(jì)算過(guò)程表示如下:
MinOfMax=Min[Max0,Max1,Max2]
MedOfMed=Med[Med0,Med1,Med2]
MaxOfMin=Min[Min0,Min1,Min2]
MedOfNine=Med[MinOfMax,MedOfMed,MaxOfMin]
按照上面的理論可以得到快速中值濾波算法的原理和實(shí)現(xiàn)流程如圖1和圖2所示。

圖1 快速中值濾波算法原理

圖2 快速中值濾波算法實(shí)現(xiàn)過(guò)程
在圖1中,對(duì)3×3窗中的9個(gè)像素值H0L0,H0L1,H0L2,H1L0,H1L1,H1L2,H2L0,H2L1,H2L2先進(jìn)行列排序(降序),分別得到三行數(shù)據(jù)Maxi,Medi,Mini,i=(0,1,2)。其中,Max表示取最大值,Med表示取中值,Min表示取最小值;然后按照行排序(降序),分別得到Ai,Bi,Ci,i=(0,1,2);最后取對(duì)角線上的3個(gè)像素值A(chǔ)2,B1,C0的中值輸出。
一級(jí)列排序后,可以得到Maxi>Medi>Mini,i=(0,1,2)。第2級(jí)行排序后,可以得到A0=Max[Max0,Max1,Max2],即A0為Maxi3個(gè)像素值的最大值。容易看出,經(jīng)過(guò)兩級(jí)排序后,其實(shí)A0也就是9個(gè)像素值的最大值。而由于A1=Med[Max0,Max1,Max2],A2=Min[Max0,Max1,Max2],A1,A2都屬于Maxi,因此A1大于一級(jí)排列時(shí)的同列的兩個(gè)數(shù)值,A2也一樣,同時(shí)又A1>A2,因此得出A1至少大于5個(gè)像素值,所以A1不為中值,其像素值范圍為9個(gè)像素中的第2大到第4大的像素值。
同理,按照對(duì)稱性,可以很容易分析出C0,C1,C2的性質(zhì):C2為9個(gè)像素中的最小值,C1至少小于5個(gè)像素值,C1不為中值,其像素值范圍為9個(gè)像素中第2小到第4小的像素值。因?yàn)镃1,C0均小于一級(jí)排列時(shí)同列的2個(gè)數(shù)值,同時(shí)二級(jí)排列后又C0>C1,所以C1至少小于5個(gè)像素值,C1不為中值。
B0=Max[Med0,Med1,Med2],B1=Med[Med0,Med1,Med2],B2=Min[Med0,Med1,Med2],因此B0至少大于5個(gè)像素值,其范圍為第2大到第4大的像素值;同理,B2至少小于5個(gè)像素值,其范圍為第2小第4小的像素值,所以B0和B2都不可能為中值。因此,出去最大值A(chǔ)0,最小值C2,以及A1,B0(像素范圍為第2大到第4大值),B2,C1(第2小第4小的像素值),中值只能為對(duì)角線上3個(gè)像素A2,B1,C0中的一個(gè)。Max[C0,B1,A2]將和A1,B0一起組成第2大到第4大值的3個(gè)像素值;Min[C0,B1,A2]將和B2,C1一起組成第2小第4小的3個(gè)像素值,因此Med[C0,B1,A2]就是最終的中值輸出,在所有的9個(gè)像素值中,它是第5大得像素值,同時(shí)也是第5小的像素值。

圖4 3×3模板生成模塊
為了完成中值濾波的功能,可以將系統(tǒng)化分為4個(gè)模塊,分別是:行、列計(jì)數(shù)器的生成模塊、3×3模板生成模塊、中值濾波模塊和閾值比較模塊[7-8]。
2.1 行、列計(jì)數(shù)器的產(chǎn)生
在場(chǎng)標(biāo)志field_flag信號(hào)有效期間內(nèi),以像素時(shí)鐘pixelclk為時(shí)鐘信號(hào)對(duì)當(dāng)前像素所處的行數(shù)和列數(shù)進(jìn)行標(biāo)識(shí)。首先對(duì)列計(jì)數(shù),設(shè)信號(hào)line_cnt,row_cnt為8位的寄存器變量,初始值為1,line_cnt從1開(kāi)始計(jì)數(shù),當(dāng)計(jì)數(shù)到 160時(shí)重設(shè)為1;row_cnt從1開(kāi)始,每當(dāng)line_cnt等于159累加 1,直到field_flag翻轉(zhuǎn)高電平為止。在數(shù)據(jù)無(wú)效期間對(duì)line_cnt,row_cnt重新置為1。

圖3 行列計(jì)數(shù)器模塊
2.2 3×3模板的生成
使用嵌入式存儲(chǔ)器來(lái)實(shí)現(xiàn)移位寄存器塊,它能節(jié)省邏輯單元LE和布線資源,提供了更加有效的實(shí)現(xiàn)方法。由于QuartusⅡ軟件中的altshift_taps宏模塊沒(méi)有正好等于158的FIFO,可以選用移位寄存器實(shí)現(xiàn)FIFO的功能。1個(gè)w×m×n移位寄存器,由輸入數(shù)據(jù)寬度w,抽頭長(zhǎng)度m和抽頭數(shù)n來(lái)決定,移位寄存器的抽頭長(zhǎng)度m最大值是256,當(dāng)需要更大容量的移位寄存器塊可以級(jí)聯(lián)。由于w 沒(méi)有正好14位,可以選16位移位寄存器。運(yùn)用圖中的移位寄存器組成一個(gè)深度為158的FIFO,抽頭數(shù)n都為1,組成的3×3模板框圖如圖4所示。shiftin[9..0]為圖像數(shù)據(jù)輸入端,clock為時(shí)鐘信號(hào)shiftin[9..0]為經(jīng)過(guò)158 個(gè)時(shí)鐘延時(shí)后的數(shù)據(jù)輸出端。最終的3×3模板構(gòu)成如圖4所示,包括7個(gè)由上升沿觸發(fā)的D觸發(fā)器,每個(gè)D觸發(fā)器延時(shí)一個(gè)時(shí)鐘,兩個(gè)移位寄存器模塊,每個(gè)寄存器模塊延時(shí)158個(gè)時(shí)鐘。仿真采用640×480像素這種大數(shù)據(jù)量對(duì)所設(shè)計(jì)的模板進(jìn)行測(cè)試,時(shí)序仿真模擬真實(shí)時(shí)鐘周期,選擇輸入時(shí)鐘周期50ns,輸入數(shù)據(jù)是以50ns為周期的從1 開(kāi)始累加。仿真結(jié)果見(jiàn)圖5顯示:產(chǎn)生的9 個(gè)數(shù)可以分3行,第1行的1 、2 、3 與第2行641、642、643及第3行的1 281、1 282、1 283相對(duì)應(yīng),每?jī)尚杏?40個(gè)數(shù)的差值。

圖5 3×3模板序仿真結(jié)果
2.3 中值算法實(shí)現(xiàn)
搭建一個(gè)如圖6的中值濾波結(jié)構(gòu),求9個(gè)數(shù)中間值的算法需要10個(gè)3輸入比較器,2個(gè)2輸入比較器。2輸入比較器判決出2個(gè)輸入數(shù)值的大小,一個(gè)時(shí)鐘可以實(shí)現(xiàn)。3輸入比較器比較產(chǎn)生最大值、最小值及中值。考慮在FPGA上應(yīng)用,要盡可能并行處理。

圖6 中值濾波模塊
2.4 閾值比較模塊
為了使算法更好地保護(hù)圖像的細(xì)節(jié),同時(shí)把噪音像素點(diǎn)用中值來(lái)替代,需要將最終結(jié)果做一個(gè)判斷,首先是需要將圖像的四邊2行和2列用原始值替代。通過(guò)前面設(shè)置的行、列計(jì)數(shù)器判斷l(xiāng)ine_cnt,row_cnt,如果line_cnt等于1或640時(shí)候輸出值為原始值,如果row_cnt 等于1或512時(shí)候輸出值為原始值。當(dāng)輸出數(shù)據(jù)不在圖像最外一行(列)時(shí),判斷當(dāng)前像素值是否等于9個(gè)像素中的最大值或最小值,如果等于則直接輸出中值,否則輸出當(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個(gè)像素值,輸出結(jié)果正好就是9個(gè)數(shù)的中值mid_value=5。仿真結(jié)果表明上述閾值比較代碼邏輯正確。通過(guò)以上軟件設(shè)計(jì)和仿真表明設(shè)計(jì)結(jié)果正確。

圖7 閾值比較模塊仿真圖

圖10 中值濾波后圖像
實(shí)驗(yàn)終端調(diào)試及測(cè)試,通過(guò)給一幅未經(jīng)處理的原始紅外圖像加入了孤立的噪聲點(diǎn),輸入到FPGA中值濾波系統(tǒng)中,可以得到濾波后的圖像,試驗(yàn)結(jié)果可以看出,原始圖像中孤立的噪聲點(diǎn)得到了有效的濾除,利用FPGA實(shí)現(xiàn)的中值濾波得到了預(yù)想的效果。終端和測(cè)試如圖8~圖10所示。

圖8 測(cè)試終端

圖9 中值濾波前原始圖像
本文利用3×3窗口為數(shù)學(xué)模型,對(duì)其進(jìn)行理論分析,通過(guò)模塊化設(shè)計(jì)思想進(jìn)行硬件設(shè)計(jì),應(yīng)用CycloneⅢEP3C40F324I7芯片為核心處理器,實(shí)現(xiàn)了水下圖像去噪處理和增強(qiáng)對(duì)比度[9]。通過(guò)硬件測(cè)試,驗(yàn)證了理論結(jié)果的正確性。該系統(tǒng)具有一定的應(yīng)用價(jià)值。
[1] 沈?qū)W利,王肅國(guó). 基于FPGA的改進(jìn)型中值濾波算法研究[J]. 微電子學(xué)與計(jì)算機(jī),2014(1):21-26.
[2] 李新春,趙 璐. 基于中值濾波算法濾波器的FPGA實(shí)現(xiàn)[J]. 計(jì)算系統(tǒng)應(yīng)用,2011(9):81-85.
[3] 李國(guó)燕,侯向丹,顧軍華,等. 快速中值濾波算法的改進(jìn)及其FPGA實(shí)現(xiàn)[J]. 計(jì)算機(jī)技術(shù)及應(yīng)用,2013(2):136-141.
[4] 徐大鵬,李從善. 基于FPGA的數(shù)字圖像中值濾波器設(shè)計(jì)[J]. 電子器件,2006,29(12):1115-1118.
[5] 李飛飛,劉偉寧,王艷華,等. 改進(jìn)的中值濾波算法及其FPGA快速實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程,2009(7):175-180.
[6] 何康,裘溯,金偉其,等. 水下距離選通圖像雙平臺(tái)直方圖增強(qiáng)及FPGA實(shí)時(shí)處理[J]. 紅外技術(shù),2014(12)976-981.
[7] 王蘇,鐘云海. POD海圖技術(shù)應(yīng)用[J]. 航海技術(shù),2015(2):46-47.
[8] 尚媛園,楊新華,徐達(dá)維,等. 基于SOPC技術(shù)的高速圖像采集控制系統(tǒng)的設(shè)計(jì)與研究[J]. 傳感技術(shù)學(xué)報(bào),2011,24(6):863-867.
[9] 馮偉昌,林玉池,何冬,等. 基于FPGA的雙通道實(shí)時(shí)圖像處理系統(tǒng)[J]. 傳感技術(shù)學(xué)報(bào) 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

項(xiàng)目來(lái)源:國(guó)家自然科學(xué)基金項(xiàng)目(61401262);院士工作站項(xiàng)目(fckt201503);陜西理工學(xué)院2014年科研基金項(xiàng)目(SLGKY14-06);陜西理工學(xué)院2015年科研基金項(xiàng)目(SLGKY15-25);陜西省教育廳基金項(xiàng)目(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