王香云
(山西大學(xué) 軟件工程學(xué)院,山西 太原 030013)
基于信號(hào)去噪的小波算法研究
王香云
(山西大學(xué) 軟件工程學(xué)院,山西 太原 030013)
小波作為一種數(shù)學(xué)函數(shù),被應(yīng)用在很多領(lǐng)域,從信號(hào)去噪的角度對(duì)小波進(jìn)行分析研究。首先給出小波的理論介紹,接著在matlab中通過(guò)實(shí)驗(yàn)對(duì)前面的理論進(jìn)行進(jìn)一步的闡釋?zhuān)詈箬b于FPGA的查找表的特點(diǎn)和DA算法的思想,硬件實(shí)現(xiàn)小波算法。
小波;信號(hào)去噪;查找表
噪聲在現(xiàn)實(shí)中無(wú)處不在,噪聲通常認(rèn)為是夾雜在有用信號(hào)中的無(wú)用成分,而噪聲的存在對(duì)信號(hào)的檢測(cè)、特征提取、信號(hào)的分析與處理都有很大的影響,所以能否對(duì)信號(hào)進(jìn)行很好的去噪對(duì)后續(xù)的信號(hào)處理起著關(guān)鍵的作用。傳統(tǒng)的去噪都是基于頻域的,即把信號(hào)從現(xiàn)實(shí)當(dāng)中的時(shí)域空間變換到方便處理數(shù)據(jù)的頻域空間,然后根據(jù)噪聲和有用信號(hào)在頻域空間中表現(xiàn)出的不同特性,分別給予不同的處理,從而濾除噪聲[1]。但是,傳統(tǒng)去噪法不能同時(shí)具備頻率和時(shí)間分辨率的特性,雖然通過(guò)加不同的窗函數(shù),具有了時(shí)頻特性,但是因?yàn)榇昂瘮?shù)的關(guān)系,部分頻率分辨率會(huì)損失,同時(shí)窗的大小也制約著時(shí)間分辨率。而小波變換是科恩類(lèi)變換,變換時(shí)通過(guò)核函數(shù)將信號(hào)函數(shù)展開(kāi),因?yàn)楹撕瘮?shù)具有時(shí)頻特性,所以小波也就具備了時(shí)間和頻率分辨率的特征。本文以信號(hào)處理為基礎(chǔ),研究了小波算法在信號(hào)去噪中的應(yīng)用。
小波簡(jiǎn)單的說(shuō)是一種數(shù)學(xué)函數(shù),并且這種函數(shù)不像傅里葉函數(shù)只有正弦、余弦,而小波函數(shù)不具有唯一性,只要這種函數(shù)滿足小波基的數(shù)學(xué)特性,緊支性、對(duì)稱(chēng)性、正則性等,這種函數(shù)就可以作為一個(gè)小波基。圖1為正弦波與小波示意圖。除了自己定義小波基函數(shù)外,在MATLAB中,小波基函數(shù)也有很多,那么在處理特定問(wèn)題時(shí),到底應(yīng)該選用那一種小波基函數(shù),目前沒(méi)有一個(gè)標(biāo)準(zhǔn)性的定論。對(duì)于同一個(gè)問(wèn)題,選用不同的小波基,得到的信號(hào)特征,分析的結(jié)果也不一樣,所以在小波應(yīng)用中,最優(yōu)小波基的選取是很關(guān)鍵的一步。要清楚待處理信號(hào)的類(lèi)型、特征,然后通過(guò)反復(fù)的實(shí)驗(yàn)或經(jīng)驗(yàn)來(lái)選擇最優(yōu)小波基。
圖1 正弦波與小波示意圖
從數(shù)學(xué)的角度看,小波去噪是函數(shù)逼近的問(wèn)題,也就是根據(jù)一定的準(zhǔn)則,在父小波和母小波平移和伸縮所形成的函數(shù)空間中,找出對(duì)原信號(hào)的最佳近似。信號(hào)去噪的過(guò)程也是實(shí)際信號(hào)空間變換到小波函數(shù)空間尋找最佳映射的過(guò)程。
從信號(hào)處理的角度看[2],小波去噪是信號(hào)濾波,類(lèi)似于低通濾波,但是小波和低通濾波相比較而言,它的優(yōu)勢(shì)在于去噪后能很好地保留信號(hào)的細(xì)節(jié),所以又優(yōu)于傳統(tǒng)的低通濾波。因此,小波去噪實(shí)質(zhì)上是低通濾波和特征提取的綜合應(yīng)用,其流程框圖如圖2所示。
圖2 小波去噪流程框圖
小波是建立在多分辨率、多尺度分析基礎(chǔ)上的新興算法,小波去噪的基本原理[3]如圖3所示,即根據(jù)噪聲與信號(hào)在小波域空間形成的小波分解系數(shù)具有不同強(qiáng)度分布,然后將噪聲對(duì)應(yīng)的小波系數(shù)按照一定的算法進(jìn)行處理,有用信號(hào)的小波分解系數(shù)保留下來(lái),然后將所有小波系數(shù)通過(guò)小波重構(gòu)的方式,得到有用信號(hào)。小波去噪的方法有很多種,有模極大值去噪、閾值去噪、去相關(guān)性去噪等。本文采用的是閾值去噪。閾值去噪理論認(rèn)為:信號(hào)經(jīng)小波分解后,有用信號(hào)的能量集中在有限的幅值比較大的系數(shù)中,而噪聲一般分散在幅值較小的系數(shù)當(dāng)中,所以通過(guò)選取合適得閾值而對(duì)噪聲系數(shù)進(jìn)行萎縮,從而達(dá)到濾除噪聲的目的。
圖3 小波去噪基本原理圖
3.1 噪聲信號(hào)的生成
在MATLAB 7.0中通過(guò)LOAD函數(shù)裝載了一個(gè)攜帶高斯白噪聲的信號(hào),信號(hào)如圖4所示。在圖中,橫坐標(biāo)是點(diǎn)數(shù),共有1 024個(gè)點(diǎn),縱坐標(biāo)是信號(hào)的幅值強(qiáng)度大小,圖5是噪聲信號(hào)的頻譜圖,由圖可知,頻率變化主要集中在0~50 Hz。
圖4 含有高斯白噪聲的信號(hào)
圖5 噪聲信號(hào)的頻譜圖
3.2 信號(hào)的去噪
分別設(shè)計(jì)了低通濾波器和小波變換對(duì)圖4中的信號(hào)去噪,去噪效果如圖6、圖7所示。由圖6可看出,低通濾波器在濾波時(shí)把所有的高頻信號(hào)都過(guò)濾了,不僅包括高頻的噪聲信號(hào),同時(shí)把信號(hào)前面的部分有用高頻信號(hào)也濾掉了。圖7是用不同的小波基對(duì)噪聲信號(hào)進(jìn)行閾值去噪處理后的結(jié)果,分別運(yùn)用sym4和db4兩種小波基都對(duì)噪聲信號(hào)進(jìn)行了4層分解,并且每層用不同的閾值對(duì)小波系數(shù)進(jìn)行削切,閾值函數(shù)采用了軟閾值的方式。由圖7可看出小波在去掉噪聲的同時(shí),能很好的保留原始信號(hào)的高頻信息,這就是小波的優(yōu)勢(shì)。小波能對(duì)信號(hào)進(jìn)行多尺度分解,能對(duì)信號(hào)的細(xì)節(jié)部分進(jìn)行很好的處理,被稱(chēng)為數(shù)學(xué)上的“顯微鏡”,并且去噪后信號(hào)的光滑性和相似性都比傳統(tǒng)的濾波效果要好。仔細(xì)觀察圖7中的兩幅圖,可以看出采用不同的小波基對(duì)同一信號(hào)進(jìn)行處理,去噪后的效果不一樣,采用sym4小波基對(duì)信號(hào)進(jìn)行去噪后,能很好的逼近原始信號(hào)。所以,最優(yōu)小波基的選擇在小波應(yīng)用中是很重要的一步。
圖6 低通濾波器濾波后信號(hào)信號(hào)
圖7 小波去噪后信號(hào)
4.1 FPGA的查找表結(jié)構(gòu)
FPGA是基于查找表結(jié)構(gòu)的PLD器件,稱(chēng)為現(xiàn)場(chǎng)可編程門(mén)陣列,和專(zhuān)用集成電路(ASIC)相比,它是一種半定制電路,既克服了專(zhuān)用定制電路的局限性,又在門(mén)電路數(shù)目上超越了原有可編程器件.FPGA通過(guò)燒寫(xiě)文件,改變查找表的內(nèi)容,實(shí)現(xiàn)對(duì)FPGA的重復(fù)配置.比如電路中有n個(gè)輸入,無(wú)論執(zhí)行什么運(yùn)算,最多有2n種情況,事先把所有的真值表放進(jìn)LUT中,然后輸入一個(gè)信號(hào)就相當(dāng)于輸入一個(gè)地址進(jìn)行查表,根據(jù)地址找出對(duì)應(yīng)的內(nèi)容,然后輸出即可.就相當(dāng)于計(jì)算機(jī)在執(zhí)行程序時(shí),無(wú)論是取指令還是數(shù)據(jù),都是根據(jù)程序計(jì)數(shù)器中的地址在對(duì)應(yīng)的存儲(chǔ)空間中找到對(duì)應(yīng)的內(nèi)容.
4.2 分布式算法
分布式算法首次提出是在30多年前,但一直沒(méi)有受到重視,直到FPGA的查找表結(jié)構(gòu)發(fā)明后,才被有效地應(yīng)用在濾波器的設(shè)計(jì)中.
設(shè)一個(gè)內(nèi)積,將x[n]按機(jī)器數(shù)展開(kāi)成,設(shè)M為每次抽樣的數(shù)量化位寬,x[n]的第m位用xm[n]表示,x的第n次采樣用xm[n]表示,則內(nèi)積y可以表示為:
把c[n]·xm[n]寫(xiě)成函數(shù)的形式,y表示成:
函數(shù)實(shí)現(xiàn)就是利用一個(gè)LUT實(shí)現(xiàn)映射.即字寬為2N,設(shè)定程序的LUT接收一個(gè)N位輸入向量],輸出為.由相應(yīng)的二次冪加權(quán)并累加得到各個(gè)映射.利用如圖8所示的移位加法器就能夠有效地實(shí)現(xiàn)累加[1].當(dāng)N太大時(shí),可以考慮用多個(gè)ROM表,以并行的方式進(jìn)行查詢(xún),提高速度,如圖9所示.
4.3 小波的快速算法——Mallat分解重構(gòu)算法[4]
Mallat算法是小波變換的快速算法,就相當(dāng)于傅立葉變換中的FFT,Mallat分解算法公式為:
算法公式為:
(1)
Aj,k,Bj,k分別是逼近信號(hào)和細(xì)節(jié)信號(hào)的向量形式,即低頻信號(hào)和高頻信號(hào)部分.j表示分解的層數(shù),h,g是分解濾波器組抽頭系數(shù)序列.將上式轉(zhuǎn)換成下面表達(dá)式:
(2)
Mallat重構(gòu)算法公式為:
h′(n)和g′(n)是h(n)和g(n)的倒序序列.
將Mallat算法的公式根據(jù)DA算法的思想計(jì)算便可以得到一個(gè)ROM表格,這個(gè)表格以輸入點(diǎn)數(shù)的bit位值為位地址,然后根據(jù)地址來(lái)查詢(xún)?nèi)?shù).
小波的快速算法就是將信號(hào)通過(guò)濾波器組分解成低頻部分和高頻部分,然后將每層的低頻部分進(jìn)行分解,分解成下一層的低頻和高頻部分,小波閾值去噪認(rèn)為噪聲信息是在高頻部分,所以通過(guò)對(duì)高頻部分進(jìn)行小波的閾值去噪處理,再通過(guò)重構(gòu),將低頻信息和處理后的高頻信息經(jīng)過(guò)一層一層的重構(gòu)得到去噪后的原始信號(hào)[2].
圖8 低通濾波器濾波后信號(hào)信號(hào)
圖9 小波去噪后信號(hào)
4.4 FPGA實(shí)現(xiàn)
在Matlab中,經(jīng)過(guò)多次試驗(yàn)得出用sym4小波基得到的信號(hào)去噪信噪比最大,因此這里采用sym4小波基對(duì)信號(hào)作了4層分解,通過(guò)wfilters函數(shù)得到濾波器系數(shù)組,系數(shù)集放大后如表1所示.并用Matlab生成對(duì)應(yīng)的DA查詢(xún)ROM表,生成.coe文件,在.coe文件中,采用了十六進(jìn)制數(shù)據(jù),在ISE10.1中將其加載到FPGA的內(nèi)部ROM中,通過(guò)數(shù)據(jù)的位值來(lái)查詢(xún)?nèi)?shù).
表1 分解重構(gòu)系數(shù)表
在FPGA中通過(guò)DDS,ISE10.1中自帶的IP核生成一個(gè)帶有噪聲的方波信號(hào),如圖10所示,將噪聲信號(hào)數(shù)據(jù)運(yùn)用小波分解模塊,得到各層的高低頻分解系數(shù),然后存到對(duì)應(yīng)的ROM中,對(duì)高頻系數(shù)通過(guò)閾值函數(shù)處理,這里的閾值函數(shù)采用了軟閾值函數(shù),閾值的選取采用通用閾值的方法.得到去噪后的系數(shù)后,再通過(guò)小波重構(gòu),得到去噪后的信號(hào)如圖11所示.圖中橫坐標(biāo)是點(diǎn)數(shù),綜坐標(biāo)是信號(hào)的強(qiáng)度大小.由圖11可以看出,經(jīng)過(guò)小波去噪后,去噪效果良好.
圖10 噪聲信號(hào)
圖11 小波去噪后信號(hào)
小波變換是一種新型的變換方法,能對(duì)數(shù)據(jù)進(jìn)行多層次的分解,對(duì)數(shù)據(jù)的細(xì)節(jié)部分進(jìn)行更好的處理,鑒于它的時(shí)頻特性,以及多分辨率性,在很多應(yīng)用領(lǐng)域都有著廣泛的應(yīng)用.
[1] 劉明珍.基于DDS的DPSK調(diào)制解調(diào)軟件無(wú)線電實(shí)現(xiàn)[D].上海:復(fù)旦大學(xué),2008
[2] 鮑 文,周 瑞,李 寧,等.采用非降采樣第二代小波變換的信號(hào)降噪方法[J].中國(guó)電機(jī)工程學(xué)報(bào),2008(20):82-87
Study on Wavelet Algorithm Based on the Signal Denoising
Wang Xiangyun
(Software Engineering College of Shanxi University,Taiyuan 030013, China)
As a mathematical function,wavelet is applied in many fields.Wavelet is analyzed from the signal denoisingin this article.Firstlythe theory of wavelet is introduced, and then throughexperimentin the MATLAB the previous theoryis furtherexplained.In the end,in view of the lookup table characteristicsof FPGA and the DA algorithm,wavelet is realized by hardware.
wavelet;Signal denoising; lUT
2014-09-25
2013年科技廳基金資助研究項(xiàng)目(2013091002-0108).
王香云(1979-),女,山西懷仁人,碩士,山西大學(xué)軟件工程學(xué)院講師,主要從事嵌入式研究.
1672-2027(2015)01-0033-05
TN911
A