摘 要: 基于數(shù)字信號處理原理,,在分析數(shù)字濾波器設計理論和Matlab編程技術及其GUI圖形用戶界面設計的基礎上,,開發(fā)了具有交互式特點的數(shù)字濾波器軟件,界面操作簡單方便,,可以根據(jù)需要選擇濾波器類型,,輸入相關參數(shù),然后選擇相應的功能按鈕,就可以得到濾波器的特性參數(shù),并進行濾波器的性能分析,,打破了以往濾波器設計過程中大量繁瑣的數(shù)值計算問題,為數(shù)字濾波器的設計和應用提供了一個有效的輔助工具,。
關鍵詞: 數(shù)字信號處理,; 數(shù)字濾波器; Matlab GUI,; 圖像處理,; 語音信號處理
數(shù)字濾波器通常通過一定的運算關系改變輸入信號所含頻率成分的相對比例或者濾除某些頻率成分來實現(xiàn)濾波,其應用非常廣泛,。然而, 在傳統(tǒng)數(shù)字濾波器的設計過程中需要大量繁瑣的數(shù)值計算,如果手工計算則費時費力,。目前,數(shù)字濾波器的設計常借助計算機,利用Matlab軟件來實現(xiàn)。Matlab中的圖形界面編程環(huán)境GUIDE為用戶開發(fā)軟件界面提供了強有力的工具,。本文在Matlab GUI基礎上開發(fā)了數(shù)字濾波器的設計分析軟件,并設計開發(fā)了應用于圖像處理和語音信號處理模塊,。用戶在使用時只需輸入要設計的濾波器所需參數(shù)值,選擇要設計的濾波器類型,即在分析濾波器特性時選擇相應功能按鈕就能得出對應的特性,。該工具解決了用戶在設計數(shù)字濾波器時大量繁瑣的數(shù)值計算,不僅可以作為研究設計數(shù)字濾波器的輔助工具,還可以作為相關課程的輔助教學軟件。
1 Matlab GUI設計工具簡介
Matlab是一個面向科學與工程的計算軟件,,它將不同領域的計算用函數(shù)的形式提供給用戶,;用戶在使用時,只需調用這些函數(shù)并賦予實際參數(shù)就能解決實際問題[1],。它涉及數(shù)值分析,、自動控制、信號處理,、圖像處理,、小波分析及神經(jīng)網(wǎng)絡等幾十個領域的計算和圖形顯示。在Matlab中設計數(shù)字濾波器軟件的工具有GUI與FDATool,兩個工具都可以設計出數(shù)字濾波器,。FDATool工具可以快速設計各種類型的濾波器,,但是這個工具界面單一,用戶無法根據(jù)需要來設計滿意的界面,。而圖形用戶界面GUI(Graphical User Inter-face)的設計是非常靈活的,,它主要是一個界面設計工具集,Matlab將所有GUI支持的控件都集成在這個環(huán)境中,,并可進行各項屬性設置[2];用戶設計好的圖形用戶界面保存后生成一個.fig文件,同時自動生成包含圖形用戶界面初始化和組件界面布局控制代碼的M文件,為實現(xiàn)回調函數(shù)的編寫提供了一個參考框架,,包含GUI設計、控制函數(shù)及控件的回調函數(shù),主要用來控制GUI展開時的各種特征[3],。對于熟練編程者,,不需要GUI向導,直接編寫M程序即可生成人機交互的有效圖形用戶界面,。
2 數(shù)字濾波器的設計理論
2.1系統(tǒng)設計主流程及主界面
系統(tǒng)設計主流程如圖1所示,,系統(tǒng)主功能操作界面設計如圖2所示,。
2.2 數(shù)字濾波器的設計步驟
(1)確定指標:在設計一個濾波器之前,必須首先根據(jù)實際的工程需要確定濾波器的技術指標,。通常選擇數(shù)字濾波器實現(xiàn)選頻操作,。因此,指標的形式一般在頻域中給出幅度和相位響應,。幅度指標主要以兩種方式給出:①絕對指標,,它提供對幅度響應函數(shù)的要求,一般應用于FIR濾波器的設計;②相對指標,,它以分貝值的形式給出要求,在工程實際應用中,,這種指標最受歡迎。對于相位響應指標形式,,通常希望系統(tǒng)在通頻帶內有線性相位,。運用線性相位響應指標進行濾波器設計具有如下優(yōu)點:①只包含實數(shù)算法,不涉及復數(shù)運算,;②不存在延遲失真,,只有固定數(shù)量的延遲;③長度為N的濾波器(階數(shù)為N-1),,計算量為N/2數(shù)量級,。因此,本文中濾波器的設計就以線性相位FIR濾波器的設計為例,。
(2)逼近:確定了技術指標后,,就可以建立目標數(shù)字濾波器模型。通常采用理想的數(shù)字濾波器模型,。之后,,利用數(shù)字濾波器的設計方法,設計出一個實際濾波器模型來逼近給定的目標,。
(3)性能分析和計算機仿真:上兩步的結果是得到以差分,、系統(tǒng)函數(shù)或沖激響應描述的濾波器。根據(jù)這個描述就可以分析其頻率特性和相位特性,,以驗證設計結果是否滿足指標要求,;或者利用計算機仿真實現(xiàn)設計的濾波器,再分析濾波結果來判斷,。
2.3 IIR數(shù)字濾波器的Matlab設計
Matlab信號處理工具箱提供了幾個直接設計IIR數(shù)字濾波器的函數(shù),,這些函數(shù)把IIR數(shù)字濾波器典型設計中的復雜實現(xiàn)過程集成為一個整體,為設計IIR數(shù)字濾波器帶來了極大的方便[4],。主要函數(shù)有:(1)函數(shù)butter:設計Butterworth濾波器,,其特性是通帶內的幅度響應最大限度的平滑,但損失了截止頻率處的下降斜度,。(2)函數(shù)chebyl:設計Chebyshev I型濾波器,,其通帶內為等波紋,,阻帶內為單調。Chebyshev I型濾波器的下降斜度比II型大,,但其代價是通帶內波紋較大,。(3)函數(shù)cheby2:設計Chebyshev II型濾波器,其通帶內為單調,,阻帶內等波紋,。Chebyshev II型濾波器的下降斜度比I型小,但其阻帶內波紋較大,。(4)函數(shù)ellip:設計橢圓濾波器,,與前幾種濾波器相比,ellip函數(shù)可以得到下降斜度更大的濾波器,,得到通帶和阻帶均為等波紋,;一般情況下,橢圓濾波器能以最低的階實現(xiàn)指定的性能指標,。以上4種函數(shù)都可以設計低通,、高通、帶通和帶阻的數(shù)字和模擬濾波器,。
IIR數(shù)字濾波器在系統(tǒng)中界面設計如圖3所示,其中左方為濾波器類型,、通帶選擇及參數(shù)輸入?yún)^(qū),,可以根據(jù)需要在Butterworth型、Chebyshev I型,、Chebyshev II型和橢圓濾波器4種類型中選擇任意一種濾波器,,并且可以在低通、高通,、帶通和帶阻4種通帶中選擇任意一種,,然后輸入相關參數(shù),點擊“運行”按鈕,,就可以設計出相應的IIR數(shù)字濾波器,;右上方曲線為濾波器的幅頻響應圖,右下方曲線為濾波器的相頻響應圖,。圖3為Chebyshev I型帶通IIR數(shù)字濾波器在系統(tǒng)中的設計實現(xiàn),,其他類型IIR數(shù)字濾波器設計界面與之類似。
2.4 FIR數(shù)字濾波器的Matlab設計
FIR濾波器通常采用窗函數(shù)法設計,。窗函數(shù)法設計FIR濾波器的基本思想是:根據(jù)給定的濾波器技術指標,,選擇濾波器長度N和窗函數(shù)ω(n),使其具有最窄寬度的主瓣和最小的旁瓣,其核心是從給定的頻率特性,,通過加窗確定有限長單位脈沖響應序列h(n)[5],。工程中常用的窗函數(shù)共有7種,即矩形窗(Boxcar),、三角窗(Triang)、巴特利特(Bartlett)窗,、漢寧(Hanning)窗,、漢明(Hamming)窗、布萊克曼(Blackman)窗和凱塞(Kaiser)窗,。
FIR數(shù)字濾波器設計界面如圖4所示,,其中左邊為濾波器類型、通帶選擇及參數(shù)輸入?yún)^(qū),,可以根據(jù)需要在Boxcar,、Triang、Bartlett,、Hanning,、 Hamming、 Blackman和Kaiser等7種窗函數(shù)中選擇任意一種設計濾波器,,并且可以在低通,、高通、帶通和帶阻4種通帶中選擇任意一種,,然后輸入相關參數(shù),,點擊“運行”按鈕,就可以設計出相應的FIR數(shù)字濾波器,;右上方曲線為濾波器的幅頻響應圖,,右下方曲線為濾波器的相頻響應圖。圖4為Kaiser型高通FIR數(shù)字濾波器在系統(tǒng)中的設計實現(xiàn),,其他類型FIR數(shù)字濾波器設計界面與之類似,。
3 數(shù)字濾波器的應用設計
3.1數(shù)字濾波器在圖像處理中的應用
設圖像信號f(x,y)通過線性不變系統(tǒng)h(x,y)的結果是g(x,y),即g(x,y)=f(x,y)*h(x,y),根據(jù)卷積定理,,在頻域上應有G(u,v)=F(u,v)*H(u,v),。其中,G(u,v),、F(u,v),、H(u,v)分別是g(x,y)、f(x,y)和h(x,y)的傅里葉變換[6],。頻域增強的主要步驟是:(1)計算圖像的傅里葉變換,;(2)將其與一個根據(jù)要求設計的轉移函數(shù)相乘; (3)再將其結果進行傅里葉反變換得到增強的圖像,。實際上,,圖像的能量大部分集中在幅頻的低頻和中頻段,而圖像的邊緣和噪聲對應于高頻部分,。因此,,數(shù)字濾波器在圖像處理中主要應用于低通和高通濾波,低通濾波能降低高頻成分幅度,,過濾噪聲,以減弱噪聲的影響,以增強圖像,;而高通濾波使圖中各區(qū)域的邊界得到較顯著增強的同時濾掉了低頻分量,,使圖中原來較平滑區(qū)域內部的灰度動態(tài)范圍被壓縮,因而整幅圖像變得比較昏暗,,但圖像的輪廓卻十分明顯,。
數(shù)字濾波器在圖像處理中的應用設計界面,可以根據(jù)需要在低通,、高通濾波器之間選擇,,然后調入要處理圖像,點擊“處理圖像”按鈕,,即可看到圖像濾波效果,。圖5為數(shù)字濾波器在圖像處理方向的低通應用設計界面,右上圖為原始圖像,,右下圖為加入了噪聲后的圖像,,左下圖為經(jīng)過低通濾波后的圖像。從圖5可以看出,,低通濾波器能有效地過濾圖像中的高頻加性噪聲,,增強圖像。
3.2 數(shù)字濾波器在語音信號處理中的應用
在將數(shù)字濾波器用于語音信號處理時,,首先,,Matlab中,用wavread函數(shù)對語音信號進行采樣,,記住采樣頻率和采樣點數(shù);然后用隨機函數(shù)(rand或randn)產(chǎn)生噪聲加入到語音信號中,,模仿語音信號被污染,,并對其進行頻譜分析;再用所設計的各濾波器分別對加噪的語音信號進行濾波,,該模塊FIR濾波器默認的設計方法為窗函數(shù)法,IIR濾波器默認的設計方法為雙線性變換法,;最后,用函數(shù)sound對聲音進行回放,即可感覺濾波前后的聲音有所變化,。
數(shù)字濾波器在語音信號處理中的應用設計界面如圖6所示,,可以根據(jù)需要在窗函數(shù)法、雙線性變換法之間選擇一種設計方法,,然后在低通,、高通之間選擇一種濾波器類型,再調入要處理語音信號,,點擊相關功能按鈕,,即可得到處理結果,。圖6上部圖像為原語音信號的時域、頻域波形圖,,中部圖像為加噪后的語音信號的時域,、頻域波形圖,下部圖像為經(jīng)過低通濾波后的語音信號的時域,、頻域波形圖,。加噪后的語音信號回放時與原語音信號有明顯的不同,其伴隨較尖銳的干擾嘯叫聲。從加噪后的語音信號的頻譜圖中可以看出其頻譜在整個頻域范圍內分布均勻,這正是干擾所造成的,。通過濾波前后的對比,,低通濾波后的效果最好,高通濾波后的效果最差,。由此可見,,語音信號主要分布在低頻,而噪聲主要分布在高頻,。
本文在數(shù)字濾波器設計理論的基礎上,設計了基于Matlab GUI的數(shù)字濾波器設計及其在圖像和語音信號中應用的軟件,。在IIR數(shù)字濾波器的設計中,分別應用了Butterworth型、ChebysheveⅠ型,、ChebysheveⅡ型及橢圓型濾波器四種形式,,可分別對低通、高通,、帶通和帶阻4種濾波器形式進行仿真,;在FIR數(shù)字濾波器的設計中, 分別應用了Boxcar型、Triang型,、Bartlett型,、Hanning型、 Hamming型,、 Blackman型和Kaiser型濾波器,可分別對低通,、高通、帶通和帶阻4種濾波器形式進行仿真,??梢栽谲浖缑嫔想S時選擇濾波器設計類型、修改濾波器設計參數(shù),,得到其不同的仿真特性,。數(shù)字濾波器在圖像處理的應用設計中,可以根據(jù)需要在低通,、高通濾波器之間選擇,,然后調入要處理的圖像,點擊功能按鈕,即可看到圖像濾波效果,。數(shù)字濾波器在語音信號處理的應用設計中,,可以根據(jù)需要在窗函數(shù)法、雙線性變換法之間選擇一種設計方法,,然后在低通,、高通之間選擇一種濾波器類型,再調入要處理語音信號,,點擊相關功能按鈕,,即可得到處理結果。如何將該課題的研究與實際的數(shù)字濾波器設計及其應用整合在一起, 使該軟件具有更大的實用價值,,將是下一步面臨的重要工作,。
參考文獻
[1] 賈建科,韓團軍,朱寧洲.基于Matlab GUI的模擬帶通濾波器的設計[J].現(xiàn)代電子技術,2010,33(10):58-62.
[2] 李海濤,鄧櫻.Matlab程序設計教程[M].北京:高等教育出版社,2002.
[3] 施曉紅,周佳.精通GUI圖形界面編程[M]. 北京:北京大學出版社,2003.
[4] 唐向宏,岳恒立,,鄭雪峰.Matlab及在電子信息類課程中的應用[M].北京:電子工業(yè)出版社,2009.
[5] 鄭君里, 應啟珩, 楊為理. 信號與系統(tǒng)(下冊)[M]. 2版.北京:高等教育出版社,2000.
[6] 胡廣書.數(shù)字信號處理[M].北京:清華大學出版社,2003.