杜翠蘭



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