杜翠蘭
摘要:本文提出了圖像處理并行快速統(tǒng)計排序濾波算法。該算法基于FPGA進(jìn)行設(shè)計,首先采用全并行比較方式實現(xiàn)濾波窗內(nèi)數(shù)據(jù)排序,然后通過流水線方式實現(xiàn)濾波輸出。根據(jù)此算法可進(jìn)行最大值濾波、中值濾波等統(tǒng)計排序濾波處理,提高了處理速度。經(jīng)過仿真試驗,與傳統(tǒng)的統(tǒng)計排序濾波相比,該快速統(tǒng)計排序濾波算法的實時性好,可實現(xiàn)性強。
關(guān)鍵詞:圖像處理 排序 濾波 FPGA
中圖分類號:TP911.73 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2016)06-0171-03
1 引言
由于圖像采集、傳輸?shù)冗^程中產(chǎn)生了各種噪聲,圖像的質(zhì)量變差。要消除這些圖像噪聲,首先需要對圖像進(jìn)行預(yù)處理,為后續(xù)圖像處理、運動目標(biāo)檢測、運動目標(biāo)跟蹤等奠定良好的基礎(chǔ)。但是傳統(tǒng)硬件處理速度慢,難以滿足系統(tǒng)的實時性要求,采用大規(guī)??删幊踢壿嬈骷﨔PGA,可實現(xiàn)復(fù)雜的數(shù)字邏輯系統(tǒng)設(shè)計,在實時性處理要求高的場合具有獨特優(yōu)勢。
統(tǒng)計排序濾波(OSF)在圖像預(yù)處理過程中一種非線性空間濾波方式,既可以消除隨機(jī)噪聲和脈沖干擾,又可以很大程度的保留圖像的邊緣信息,在圖像平滑和數(shù)據(jù)分析處理等多個領(lǐng)域中得到廣泛的應(yīng)用。統(tǒng)計排序濾波中最常見的例子是中值濾波,另外常用的還有最大值濾波和最小值濾波等。
2 圖像統(tǒng)計排序濾波原理
2.1 傳統(tǒng)的統(tǒng)計排序濾波算法
統(tǒng)計排序濾波器響應(yīng)基于圖像濾波器包圍的圖像區(qū)域中像素的排序,然后用統(tǒng)計排序結(jié)果決定的值代替中心像素的值。以統(tǒng)計排序濾波器中最常見的中值濾波為例,它是將某像素鄰域內(nèi)的像素灰度從大到小排序的中間值代替該像素的值。傳統(tǒng)的中值濾波定義如下:
G(x,y)=median{F(s,t)}
其中,G(x,y) 為輸出像素灰度值,F(xiàn)(s,t)為鄰域內(nèi)像素的灰度值。傳統(tǒng)的中值濾波算法需要對鄰域內(nèi)的所有像素進(jìn)行排序,跟據(jù)排序結(jié)果輸出相應(yīng)灰度值。例如,像素值為34的5×5鄰域內(nèi)有一系列像素值(10,11,12,13,14,20,21,22,23,24,31,30,34,33,32,40,41,42,43,44,50,51,52,53,54),對這些值排序后為(10,11,12,13,14,20,21,22,23,24,30,31,32,33,34,40,41,42,43,44,50,51,52,53,54),那么其中值就是32,中值濾波后就用32代替原像素值34。
傳統(tǒng)的統(tǒng)計排序濾波多采用軟件方式通過冒泡法實現(xiàn)數(shù)據(jù)排序,時間復(fù)雜度為n(n-1)/2,算法執(zhí)行過程需要大量的處理時間,很難滿足實時性要求。
2.2 快速排序濾波算法
冒泡排序是以兩兩之間的串行比較為基礎(chǔ),進(jìn)行數(shù)據(jù)排序。本方案也是以兩兩之間的比較為基礎(chǔ),但采用同時并行比較得出排序結(jié)果的方式進(jìn)行排序。這種數(shù)據(jù)同時比較的排序方法可稱為并行全比較排序法。
進(jìn)行全比較排序時,待排序的數(shù)據(jù),每兩個數(shù)進(jìn)行比較后,都會得到一個比較結(jié)果??蓪⒈容^的結(jié)果定義輸出為0或1。然后對比較結(jié)果進(jìn)行相加,即可得到該數(shù)在序列中的排序值。由于所有數(shù)的兩兩之間的比較都在硬件內(nèi)同時進(jìn)行,因此只需一個FPGA時鐘的時間即可得到兩個相鄰數(shù)據(jù)的比較結(jié)果,再加上各數(shù)比較結(jié)果的和的計算時間和排序的處理時間,即4個FPGA時鐘實現(xiàn)了數(shù)字序列的排序。
3 統(tǒng)計排序濾波器設(shè)計實現(xiàn)
圖像快速統(tǒng)計排序濾波器主要有2部分組成:濾波窗口生成模塊、統(tǒng)計算法模塊。
3.1 濾波窗口生成模塊設(shè)計
對圖像的中值濾波首先要生成5×5的濾波窗口,為了使5×5模板中的5行5列共25個數(shù)據(jù)能夠在同一時刻同時輸出,便于后續(xù)算法進(jìn)行流水線處理。5×5窗口模板由五組寄存器和四個FIFO組成,濾波窗口生成模塊實現(xiàn)了數(shù)據(jù)的串入并出,在FPGA中定義五組25個寄存器,寄存器中存儲的數(shù)據(jù)分別為dat11、dat12、dat13、dat14、dat15,dat21、dat22、dat23、dat24、dat25,dat31、dat32、dat33、dat34、dat35,dat41、dat42、dat43、dat44、dat 45,dat 51、dat52、dat53、dat54、dat55。其硬件實現(xiàn)結(jié)構(gòu)如圖1所示:在進(jìn)行統(tǒng)計濾波時,先從數(shù)據(jù)端口讀入四行圖像數(shù)據(jù)保存在寄存器和FIFO中,在第五行數(shù)據(jù)到來后,從第五個數(shù)據(jù)開始濾波,從數(shù)據(jù)端口不斷讀入數(shù)據(jù),第一個作統(tǒng)計濾波的像素數(shù)據(jù)為第三行的第三個數(shù)據(jù),此時圖像輸入端到來的數(shù)據(jù)為第五行的第五個數(shù)據(jù)。
3.2 統(tǒng)計濾波算法模塊設(shè)計
本文采用5×5濾波窗口,一次采集5×5鄰域內(nèi)25個數(shù)。對這25個數(shù)進(jìn)行并行排序處理,并行排序采用基于FPGA的全比較排序方式,在4個時鐘周期內(nèi)即可實現(xiàn)排序結(jié)果,其中包括三個過程,第一個時鐘周期內(nèi),實現(xiàn)所有數(shù)據(jù)的并行比較結(jié)果,第二個周期,實現(xiàn)數(shù)據(jù)排序;第三個周期,實現(xiàn)濾波算法。在并行排序處理結(jié)束后,根據(jù)得出排序結(jié)果,把所需要的值輸出。若為中值濾波,則把25個數(shù)的排序第13的值輸出;若為最大值濾波,則把排序第1的值輸出。如圖2所示。
4 基于FPGA實現(xiàn)及實際效果
排序算法在FPGA內(nèi)進(jìn)行,采用ALTERA公司CycloneIII系列FPGA,內(nèi)部時鐘周期為20ns。
在QUARTUS II平臺環(huán)境下,原理圖設(shè)計文件作為主文件,內(nèi)部模塊采用Verilog語言設(shè)計,內(nèi)部主要模塊包括濾波窗口生成模塊和統(tǒng)計濾波算法模塊。
工程編譯完成后,對工程文件進(jìn)行仿真,觀察仿真結(jié)果,與實際值對照,確認(rèn)算法的正確性。圖3為設(shè)計仿真效果圖。
圖3中,in13為某點的像素值,in0~in24(包括本像素值)為該點鄰域內(nèi)的25個數(shù)據(jù),采用的時鐘頻率50M,時鐘延時約三個周期后,輸出濾波結(jié)果,out2和outm分別為該像素5×5鄰域內(nèi)的第三大值和中值。
圖4為云的原始圖像和在FPGA內(nèi)經(jīng)過5×5中值濾波處理后的圖像,前一幅為原始圖像,后一幅為處理后的圖像。
5 結(jié)語
本文主要介紹了圖像統(tǒng)計濾波排序算法,先介紹了傳統(tǒng)的統(tǒng)計濾波,在此基礎(chǔ)上提出基于FPGA實現(xiàn)的圖像統(tǒng)計排序濾波算法,采用并行全比較方式,對于5×5的濾波窗口,進(jìn)行了仿真驗證,在4個時鐘周期即求出統(tǒng)計排序要求值,采用流水線方式,滿足圖像統(tǒng)計排序濾波處理的實時性要求。
參考文獻(xiàn)
[1]侯發(fā)柱,彭楚武.圖像中值濾波算法及其FPGA的實現(xiàn).嵌入式與SOC,2011(1),69-71.
[2]胡斌,殷瑞祥.數(shù)字圖像中值濾波算法的FPGA實現(xiàn).微計算機(jī),2010(4),10-11.