韓劍輝++葛++威
摘 要:為降低硬件資源占用提高濾波速度,介紹了一種改進的位級中值濾波設計,并且運用改進的位級中值濾波設計構造一個3x3模板改進型位級中值濾波器,應用于降低灰度圖像的椒鹽噪聲.著重介紹改進后位級中值濾波的中間值計算邏輯電路的簡化設計及相應求大多值計算模塊的改進.整個設計均在FPGA和Modelsim SE 10. la軟件仿真的基礎上實現驗證.實驗數據比較證明改進型位級中值濾波大幅度降低硬件資源占用,且在一個時鐘周期內快速的完成一次位級中值濾波并輸出結果.
關鍵詞:中值濾波;椒鹽噪聲;FPGA;Modelsim
DOI:IO.15938/j.jhust.2015.03.007
中圖分類號:TP39
文獻標志碼:A
文章編號:1007-2683 (2015)03-0035-05
O 引 言
在圖像采集和生成的過程中被引入噪聲,而中值濾波依靠本身的非線性特點在圖像預處理方面被廣泛運用.但是大多數中值濾波算法如加權中值濾波等,在軟件實現時需要運用多次的排序,使得程序很繁雜,不僅在硬件實現時需要占用大量的硬件資源,而且消耗較長的時間影響濾波速度.而位級中值濾波充分發揮Verilog HDL硬件描述語言優點,構造特定的邏輯電路占用相對較少的硬件資源,在極短的時間內快速完成濾波,不論是硬件資源占用,還是濾波速度,位級中值濾波都優于需要排序的中值濾波算法.文已提出了一種位級中值濾波的電路結構,但該電路結構仍有改進的空間,為此,本文給出一種改進型位級中值濾波的電路設計.
1 位級中值濾波原理
整個位級中值濾波由中間值計算模塊和求大多值模塊組成,
輸入進來的圖像數據以二進制數形式,按最高位到最低位的順序,對各圖像數據相同位上的數值觀察比較,如果數值為l的個數多于或等于數值為0的個數,那么濾波結果將會在相應位的數值為1的圖像數據集合中產生,該集合記作A,并且將A集合中各圖像數據的標志位M置1,而相應位數值為O的數據集合記作B,B集合中各數據的標志位M置0,其中標志位M為是否允許進入下一位中間值計算的標志;如果數值為1的個數少于數值為0的個數,則相應位的數值為0的圖像數據集合記作A,相應位的數值為1的圖像數據集合記作B.只有標志位M置1的圖像數據才可以進入下一位的中間值計算,如果M被置0,則該圖像數據不能進入下一位的中間值計算并且不會再出現在A集合中,即M不能再被置為1直至濾波結束,從次高位開始,每執行完一位數值計算,A集合中的元素就減少一些,直至A集合中只有最后一個數據,該數據便是位級中值濾波的輸出結果.值得說明的是,在上述過程中還需保持數據的階數順序,以確保濾波結果的精確.
2 改進型位級中值濾波電路設計
2.1 中間值計算模塊的改進設計
中間值計算模塊由單個位的中間值計算電路作為基礎單元組成,因此,著重介紹單個位的中間值計算電路的改進,文提供了單個位的中間值計算電路設計,設計中為了保持數據的階數順序需要有si[j]和sri[j -1]兩個輸入信號,從而增大了單個位的中間值計算的電路結構,隨著位寬的增大,所需的單個位的中間值計算電路的數量在增多,使得硬件資源占用迅速增多;例如:對于3x3濾波窗口的位寬輸入,就需要3x3x8 =72個單個位的中間值計算電路單元,很明顯如果單個位的中間值計算電路單元結構相對復雜,硬件資源占用就會大大增多.為了緩解已有位級中值濾波設計的硬件資源占用隨著位寬增加而迅速增多的壓力,本論文對單個位的中間值計算電路單元做了改進:將保持數據階數順序的功能轉移到求大多值模塊中,去除原有…的si[j]和sri[j-1]兩個輸入信號,只保留數據相應位數值Sr、大多值Sout、標志位M的比較判斷的功能,簡化了單個位的中間值計算電路單元.簡化前后的電路比較如圖l(a)為文[1]提供的中間計算電路,圖1(b)為本文簡化后的電路.
2.2 求大多值計算模塊改進設計
求大多值模塊也做出相應改進,為增加保持數據階數順序的功能,運用了一種新的計算方法求一組數值的大多值:先計算出該組數值中數值為1的個數h,如果該組數值的總個數為Z,則該組數值中數值為0的個數w=Z-h,如果h≥w,那么大多值為1;如果h 為保持數據的階數順序,首先必須了解為什么需要保持數據的階數順序,位權的概念在二進制數值運算中最為關鍵,即某一位上的“1”所表示的數值的大小.而構成位級中值濾波的邏輯電路只是對數字信號“0”和“1”做單純的邏輯變換,不能與一般中值濾波的程序一樣,理解每一位的位權意義并依據數據的數值大小對數據進行排序.因此,如果不保持數據的階數順序,位級中值濾波的結果是不精確的.以表1內的數據為例,表1中黑色填充部分是位級中值濾波在沒有保持數據階數順序的情況下產生的濾波結果,而正確的中間值是81,很明顯濾波結果錯誤,為保持數據的階數順序,假設某組數值為第i組數值,其中O 2.2.1 求大多值模塊改進設計的硬件實現 整個電路以計算數字信號“1”的個數為主要方法,這便于邏輯判斷,易于硬件實現.通過一個n位的減法器sl和一個n位的加法器al來實現保持數據階數順序的功能,通過一個Q位輸入、n位輸出的運算器v來計算M=1且數字信號為“1”的數值的個數.最終經過一個n位的加法器a2將v的輸出與al的輸出求和后輸出給一個2n位輸入的比較器求出大多值.其中Q為位寬,n滿足2n≥Q.通過Quar-tus II 11.0生成改進的3x3濾波窗口位寬輸入的求大多值RTL級電路如圖2.式中變量d(t)為第i組數值中的第t個數值;變量M(t)為第i組數值中的第t個數值的標志位M.
3 構造3x3模板改進型位級中值濾波器
3x3模板改進型位級中值濾波器由3x3模板生成模塊和3 x3濾波窗口位寬輸入的改進型位級中值濾波模塊組成,其RTL級模塊如圖3.
3.1 3x3模板生成模塊
該模塊由7個移位寄存器(SR)、2個FIFO緩存器構成,3x3模板生成模塊結構如圖4.模板生成模塊利用FPCA的并行特性,將移位寄存器與FIFO緩存器構造成串行流水結構,以提高處理速度.2個FIFO緩存器由FPGA的IP核生成,深度均為(G-2),其中G為圖像的一行所含像素點的個數,1個FIFO和2個移位寄存器正好存儲圖像的一行數據,以圖像的第1、2、3行為例,隨著數據的不斷左移,當SR一11、SR一12存儲第1行的前兩個圖像數據時,SR_21、SR _22和SR一31、SR一32、SR_33正好分別存儲第2行的前2個圖像數據、第3行的前3個圖像數據,于是D11、D12、D13、D21、D22、D23、D31、D32、D33構成3x3模板,再隨著下一個圖像數據的左移,3x3模板便整體右移一個數據寬度,值得說明的是:兩個FIFO緩存器的讀寫時序必須控制好,在第4個時鐘周期時FIFOI的寫有效;在第(G+4)個時鐘周期時FIF02的寫有效;在第G個時鐘周期時FIF01的讀有效;在第(Gx2)個時鐘周期時FIF02的讀有效.通過QuartusⅡ11.0生成的3 x3模板生成模塊的RTL級主要電路如圖5.
3.2 3x3濾波窗口位寬輸入的改進型位級中值濾
波模塊
第2節介紹了改進型位級中值濾波處理單組數值的電路設計,其功能結構如圖6.但這只是處理一組數值,因此對于一個8位字長的圖像數據則需要8組這樣的結構,值得說明的是:在濾波開始時,所有標志位M的初始值均為1.通過QuartusⅡ11.0生成的3x3濾波窗口位寬輸入的改進型位級中值濾波處理單組數值的RTL級電路如圖7.
4 FPGA硬件實驗結果及比較
為驗證3x3模板改進型位級中值濾波器模塊對受污染的灰度圖像的處理效果,本文通過Model-sim SE 10. la軟件對模塊進行時序仿真,并且將一幅256×256像素由Matlab生成的加入椒鹽噪聲的灰度圖像作為輸入數據.圖8為3x3模板改進型位級中值濾波器的時序仿真.最后,通過Matlab將時序仿真產生的數據矩陣轉換成灰度圖像,直觀的顯示3x3模板改進型位級中值濾波器模塊的圖像處理效果,圖9為處理效果比較,3x3模板改進型位級中值濾波器的圖像處理效果良好.根據Quar-tus 11 11.0生成的資源占用報表,表2為資源占用結果比較,數據顯示本文3x3模板改進型位級中值濾波器所占用的寄存器資源遠少于文提供的3×3模板中值濾波算法所占用的寄存器資源.
本文介紹的改進型位級中值濾波,簡化原有位級中值濾波的邏輯電路結構.實驗數據說明:3×3模板改進型位級中值濾波器所占用的寄存器資源遠少于文的中值濾波器,同時依據Modelsim SE10. la的時序仿真結果,3x3模板改進型位級中值濾波器能夠在1.32 ms內處理完一副256×256像素的圖像且圖像處理效果良好.