1. 程式人生 > >自適應濾波:維納濾波器——FIR及IIR設計

自適應濾波:維納濾波器——FIR及IIR設計

作者:桂。

時間:2017-03-23  06:28:45

 【讀書筆記02】

前言

仍然是西蒙.赫金的《自適應濾波器原理》第四版,距離上次看這本書已經過去半個月,要抓點緊了。本文主要包括:

  1)何為維納濾波器(Wiener Filter);

  2)Wiener濾波器的推導;

  3)應用例項;

  4)Wiener變體;

內容為自己的學習總結,內容多有參考他人,最後一併給出連結。

一、維納濾波器簡介

  A-基本概念

對於濾波器的具體實現,都依賴兩個選擇:

1)Filter的impulse選擇(FIR / IIR)

2)統計優化準則的選擇

維納濾波器

:由數學家維納(Rorbert Wiener)提出的一種以最小平方(統計準則)為最優準則的線性濾波器。何為線性濾波器?文中圖:

  B-幾個問題

在具體討論之前,先來說說自己看的時候,想到的幾個問題:

問題1:維納濾波器與自適應濾波是什麼關係,與LMS呢?

個人觀點:常用的hamming、taylor都是固定的濾波器,濾波器引數需要根據訊號進行計算調整的,這一類濾波器都是自適應濾波器,跟自己有關嘛,自適應理所當然,維納濾波器是利用統計引數,實際應用中可能無法得到,需要藉助迭代實現,這樣就成了一個新框架→自適應濾波器。引數估計呢可以利用梯度下降法迭代逼近,例如常說的LMS就是迭代逼近的一種方式,LMS本身不同於weiner-filter,但迭代結果可以作為wiener-filter的近似。

問題2:維納濾波器是有限長(FIR-Finite Impulse Response)還是無限長濾波器(IIR-Infinite Impulse Response)?

個人觀點:維納濾波器是大的理論框架,而FIR/IIR只是實現理論的不同途徑,故二者均可,下文會一一介紹。

問題3:基於維納濾波器這個理論框架的應用有哪些?

個人觀點:1)自適應是一種解決工程問題的途徑,故很多自適應濾波本質都是維納濾波(不是全部);2)MVDR譜估計(Minimum variance distortionless response)、廣義旁瓣相消GSC(Generalized Sidelobe Canceller )等都是維納框架下的應用。

問題4:卡爾曼濾波(Kalman)是維納濾波的一種嗎?

個人觀點:應該不是,維納濾波器是線性濾波器,而卡爾曼濾波器據說是非線性,具體區別等看到卡爾曼再回頭總結。

二、維納濾波器理論分析

  A-有限長維納濾波(FIR)

1-基本定義

下圖是使用M抽頭FIR濾波器的結構圖:

輸出為:

$\hat d\left( n \right) = \sum\limits_{k = 0}^{M - 1} {{h_k}y\left( {n - k} \right)} $

其中$h_k$為FIR濾波器係數,M為係數個數。

以下推導基於寬平穩假設,首先計算估計誤差:

$e\left( n \right) = d\left( n \right) - \hat d\left( n \right) = d\left( n \right) - {{\bf{h}}^T}{\bf{y}}$

其中${{\bf{h}}^T} = \left[ {{h_0},{h_1},{h_2},...,{h_{M - 1}}} \right]$,${{\bf{y}}^T} = \left[ {y\left( n \right),y\left( {n - 1} \right),y\left( {n - 2} \right),...,y\left( {n - M + 1} \right)} \right]$是包括過去M個樣本的輸入向量。

Wiener Filter基於最小均方誤差準則,給出均方誤差定義:

其中,${\bf{r}}_{yd}^{ - 1} = E\left[ {{\bf{y}}d\left( n \right)} \right]$為輸入訊號與期望訊號的互相關。

2-維納濾波器求解

最小化估計誤差,對其中某個抽頭係數求偏導:

$\frac{{\partial J}}{{\partial {h_k}}} = 0\;\;\; \Rightarrow \;\;\; - 2E\left[ {e\left( n \right)y\left( {n - k} \right)} \right] = 0$

這就是正交定理(Orthogonality Principle):估計誤差$e(n)$需要正交與輸入訊號$y(n)$。這也容易理解,在輸入訊號$y(n)$張成的子空間中,更加高維的資訊無法被表達,故成了誤差。如$(x_1,y_1,z_1)$用$x 、 y$兩個單位向量表達,最小均方誤差時$z_1$就成了估計誤差。

不失一般性,將偏導寫成向量/矩陣形式:

$\frac{{\partial J}}{{\partial {\bf{h}}}} = 0\;\;\; \Rightarrow \;\;\; - 2{\bf{r}}_{yd}^{ - 1} + 2{{\bf{h}}^T}{{\bf{R}}_{yy}} = 0$

上式${{\bf{h}}^T}{{\bf{R}}_{yy}} = {\bf{r}}_{yd}^{ - 1}$就是Wiener Hopf方程

得到Wiener Filter最優解${{{\bf{h}}_{opt}}}$:

${{\bf{h}}_{opt}}{\rm{ = }}{\bf{R}}_{_{yy}}^{{\rm{ - 1}}}{\bf{r}}_{yd}^{ - 1}$

上式就是Wiener-Hopf的解,也就是對應Wiener Filter的解。求解需要矩陣求逆,又相關矩陣為對稱且為Toeplitz形式,故可藉助數學手段對R高效求逆——Levinson-Durbin演算法。

因為在時域分析,此時FIR的解也叫時域維納濾波器。

  B-無限長維納濾波(IIR)

1-基本定義

濾波器為無限長時,$\hat d\left( n \right) = \sum\limits_{k = 0}^{M - 1} {{h_k}y\left( {n - k} \right)}$改寫為:

$\hat d\left( n \right) = \sum\limits_{k =  - \infty }^\infty  {{h_k}y\left( {n - k} \right)}  = h\left( n \right) * y\left( n \right)$

$*$表示卷積。易證:時域有限長對應頻域無限長,時域無限長對應頻域有限長,因此對於IIR情形,更希望在頻域進行分析。

2-維納濾波器求解

計算均方誤差:

其中${E\left( {{\omega _k}} \right)}$為$e\left( n \right)$的頻域變換,${P_{yd}}\left( {{\omega _k}} \right) = E\left[ {Y\left( {{\omega _k}} \right){D^*}\left( {{\omega _k}} \right)} \right]$, ${P_{yy}}\left( {{\omega _k}} \right) = E\left[ {{{\left| {Y\left( {{\omega _k}} \right)} \right|}^2}} \right]$。

針對J求解復導數:

$\frac{{\partial J}}{{\partial H\left( {{\omega _k}} \right)}} = 0\;\;\; \Rightarrow \;\;\;{H^*}\left( {{\omega _k}} \right){P_{yy}}\left( {{\omega _k}} \right) - {P_{yd}}\left( {{\omega _k}} \right) = 0$

得到頻域維納濾波最優解:

${H_{opt}}\left( {{\omega _k}} \right) = \frac{{{P_{dy}}\left( {{\omega _k}} \right)}}{{{P_{yy}}\left( {{\omega _k}} \right)}}$

因為在頻域分析,此時IIR的解也叫頻域維納濾波器。

三、應用例項

已知

含有噪聲的正弦波:$y(n) = s(n) + w(n) = \sin (2\pi fn + \theta ) + w(n)$.

其中$f = 0.2$為歸一化頻率[-1/2, 1/2],$\theta$為正弦波相位,服從[0,2$\pi$]的均勻分佈,$w(n)$為具有零均值和方差$\sigma^2 = 2$的高斯白噪聲。

時域以及頻域維納濾波器。假設濾波器為時域濾波器時$M=2$.

  A-對於時域維納濾波器:

首先求解相關矩陣:

$x(n)$為廣義平穩隨機過程,可以計算其自相關函式:

${r_{xx}}\left( m \right) = \cos (2\pi fn)$

利用上面推導的Wiener-Hopf最優解公式:

當然也可以求解準則函式$J$,求極值點:

  B-對於頻域維納濾波器:

白噪聲與訊號不相關,直接呼叫上文推導的公式:

$H\left( {{\omega _k}} \right) = \frac{{{P_{xy}}\left( {{\omega _k}} \right)}}{{{P_{yy}}\left( {{\omega _k}} \right)}} = \frac{{{P_{xx}}\left( {{\omega _k}} \right)}}{{{P_{xx}}\left( {{\omega _k}} \right) + {P_{nn}}\left( {{\omega _k}} \right)}} = \frac{{{P_{xx}}\left( {{\omega _k}} \right)}}{{{P_{xx}}\left( {{\omega _k}} \right) + 2}}$

時域相關函式與頻域功率譜互為傅立葉變換,而時域相關函式在求時域維納濾波時已寫出,得出功率譜公式:

當$L -> \infty $,將$P_{xx}$代入上式,即使頻域維納濾波器的解。

  C-閒話時域、頻域維納濾波器

時域求解維納濾波器,但時域對應的都有頻域的變換結果,如$L = 2$的頻域解就是時域維納解的傅立葉變換。畫出$L$不同取值對應的頻域幅度響應:

可以觀察到:$L$趨近∞時,頻域響應接近$\sigma(.)$衝激響應,這與理論:相關函式為時域餘弦對應頻域衝激響應是一致的。

這個例子只是理想情況,理一理求解的思路,事實上認為訊號的自相關為已知,這是不符合實際的。實際應用中如何近似求解呢?給出一個簡單例子。

  D-基於頻域維納濾波的語音增強

還是利用上面的模型:

$y(n) = x(n) + w(n)$

這裡$y(n)$是麥克風接收的帶噪語音,$x(n)$是乾淨語音訊號,$w(n)$為白噪聲。顯然相關函式我們無法得知。

利用一種近似的處理思路:利用前面幾個分幀不帶語音,估計噪聲,從而得到噪聲的功率譜近似,利用帶噪語音功率減去噪聲功率,得到

$H\left( {{\omega _k}} \right) = \frac{{{P_{xy}}\left( {{\omega _k}} \right)}}{{{P_{yy}}\left( {{\omega _k}} \right)}} = \frac{{{P_{xx}}\left( {{\omega _k}} \right)}}{{{P_{xx}}\left( {{\omega _k}} \right) + {P_{nn}}\left( {{\omega _k}} \right)}} = \frac{{{P_{yy}}\left( {{\omega _k}} \right) - {P_{nn}}\left( {{\omega _k}} \right)}}{{{P_{yy}}\left( {{\omega _k}} \right)}}$

利用估計出的維納濾波器,即可實現訊號的頻域濾波。這裡只是想到的一個實際例子,至於引數估計、迭代方式則是百花齊放了。

附上主要程式碼:

nw = 512; ni = 64;
NIS = 100;
Y = fft(enframe(y,hamming(nw),ni)');
Yab = abs(Y);
Nest = mean(Yab(:,1:NIS),2);
Yest = zeros(size(Y));
for i = 1:size(Y,2)
    Yest(:,i) = Yab(:,i).*((Yab(:,i)-Nest)./Yab(:,i));
end
Ye = Yest.*exp(1j*angle(Y));
result = zeros(1,length(y));%estimation
for i =1:size(Y,2);
    pos = ((i-1)*ni+1):((i-1)*ni+nw);
   result(pos) = result(pos)+real(ifft(Ye(:,i))).'; 
end
result = result/max(abs(result));

上面思路處理結果:

可以看出維納降噪多少還是有些效果的,$H\left( {{\omega _k}} \right) = \frac{{{P_{xy}}\left( {{\omega _k}} \right)}}{{{P_{yy}}\left( {{\omega _k}} \right)}} = \frac{{{P_{xx}}\left( {{\omega _k}} \right)}}{{{P_{xx}}\left( {{\omega _k}} \right) + {P_{nn}}\left( {{\omega _k}} \right)}} = \frac{1}{{1 + 1/SNR}}$可以看出SNR越小,維納濾波器衰減越大。

四、Wiener Filter變體

  A-平方根維納濾波

使用維納濾波器的平方根,則濾波器在頻域的濾波結果為:

$\hat X\left( {{\omega _k}} \right) = \sqrt {H\left( {{\omega _k}} \right)} Y\left( {{\omega _k}} \right)$

仍然基於噪聲與訊號不相關的假設,分析濾波後訊號的功率譜:

$E{\left| {\hat X\left( {{\omega _k}} \right)} \right|^2} = {P_{\hat x\hat x}} = H\left( {{\omega _k}} \right)E{\left| {Y\left( {{\omega _k}} \right)} \right|^2} = H\left( {{\omega _k}} \right){P_{yy}}\left( {{\omega _k}} \right) = {P_{xx}}\left( {{\omega _k}} \right)$

可見採用平方根維納濾波,濾波器輸出訊號的功率譜與純淨訊號的功率譜相等。

  B-參變維納濾波器

以頻域Wiener Filter為例:

$H\left( {{\omega _k}} \right) = \frac{{{P_{xy}}\left( {{\omega _k}} \right)}}{{{P_{yy}}\left( {{\omega _k}} \right)}} = \frac{{{P_{xx}}\left( {{\omega _k}} \right)}}{{{P_{xx}}\left( {{\omega _k}} \right) + {P_{nn}}\left( {{\omega _k}} \right)}}$

很自然地,可以將其擴充套件為廣義Wiener Filter形式:

$H\left( {{\omega _k}} \right) = {\left( {\frac{{{P_{xx}}\left( {{\omega _k}} \right)}}{{{P_{xx}}\left( {{\omega _k}} \right) + \alpha {P_{nn}}\left( {{\omega _k}} \right)}}} \right)^\beta }$

這樣通過調節($\alpha$,$\beta $ )即可對濾波器進行微調。

參考:

Philipos C.Loizou《speech enhancement theory and practice》.

Simon Haykin 《Adaptive Filter Theory Fourth Edition》.

相關推薦

適應濾波濾波器——FIRIIR設計

作者:桂。 時間:2017-03-23  06:28:45  【讀書筆記02】 前言 仍然是西蒙.赫金的《自適應濾波器原理》第四版,距離上次看這本書已經過去半個月,要抓點緊了。本文主要包括:   1)何為維納濾波器(Wiener Filter);   2)Wiener濾波器的推導;

適應濾波最小均方誤差濾波器(LMS、NLMS)

作者:桂。 時間:2017-04-02  08:08:31 宣告:歡迎被轉載,不過記得註明出處哦~  【讀書筆記08】 前言 西蒙.赫金的《自適應濾波器原理》第四版第五、六章:最小均方自適應濾波器(LMS,Least Mean Square)以及歸一化最小均方自適應濾波器(NLMS,

適應濾波LMS/NLMS

前言 西蒙.赫金的《自適應濾波器原理》第四版第五、六章:最小均方自適應濾波器(LMS,Least Mean Square)以及歸一化最小均方自適應濾波器(NLMS,Normalized Least Mean Square)。全文包括:   1)LMS與維納濾波器(Wiener Filter

適應濾波梯度下降演算法

作者:桂。 時間:2017-04-01  06:39:15 宣告:歡迎被轉載,不過記得註明出處哦~ 【學習筆記07】 前言 西蒙.赫金的《自適應濾波器原理》第四版第四章:最速下降演算法。優化求解按照有/無約束分類:如投影梯度下降演算法((Gradient projection)便是有

濾波器設計(3)(Wiener)濾波器設計

引言通訊領域中,當然完全不止通訊領域,一個很常見的需求就是,從含有噪聲,或是已經畸變的訊號中,提取出或恢復出原始的、有用的訊號。怎麼做?可以用濾波器(Filter)。濾波器的變數(輸入)是訊號,訊號又是時間or空間or時間空間or…的函式。於是,函式的函式——泛函。至今,我沒

音訊噪聲抑制(2)(Wiener)濾波器

之前的文章講了使用經典濾波器來抑制噪聲。裡面提到,“用經典濾波器抑制噪聲,非常簡單。如果噪聲的功率譜PSD和有用訊號功率譜PSD沒有重疊的話,那可以實現非常好的效果。但是,如果有重疊,去噪的效果就不是特別理想了。因為在復指數訊號空間裡面,沒辦法把有用訊號和噪聲訊號分離啊。”正

適應濾波-----LMS(Least Mean Square)演算法

自適應濾波的意義所在 自適應濾波器解決非平穩的過程,因為實際訊號的統計特性可能是非平穩的或者是未知的。 自適應濾波器的特點:                                          1.沒有關於待提取資訊的先驗統計知識    

Opencv Canny邊緣提取,閾值適應基於一熵最大值

Canny 邊緣提取的最大最小值設定很麻煩,合理的高低閾值選擇是一個很重要的問題,一般做法對不同影象採取相同的預設值,但會導致對某一類影象的處理效果好,對另一些影象處理效果不好。 一維最大熵的程式碼來自連線11,感謝博主的分享。 幫助理解下面是一維最大熵公式:

適應學習最好的定位是輔助工具

自適應學習拼的不是簡單的程式碼或者幾個演算法,而是收集、分析、運用和維護海量的學習資料,涉及到大資料的沉澱、檢測和推薦演算法的精準性。這需要有一個頂尖的研發團隊來做,而在這其中,資料科學團隊是最重要的。資料科學團隊需要懂得貝葉斯理論、資訊理論等高階的演算法和資料分析技術,而且還要不斷地對

濾波器---看完必懂(不懂再看一遍就懂)

首先我們討論一下什麼叫濾波器,一個濾波器就是一段含有噪聲的訊號,經過這個濾波器之後,變成了另一個訊號,只不過,這個訊號比較特殊,它和原來的訊號有聯絡,這個聯絡就是現在的訊號是原來訊號的+噪聲訊號。這就是輸出訊號,和輸入訊號的相關性。 既然濾波器就是這麼一個東西h(n),我們

濾波器(一)

很久沒有靜下心來整理一下了,我很早之前就想做一個從Wiener 濾波器了開始講的部落格了,現在終於有了安靜坐下來總結一下的理由。從這裡開始入手我感覺是對這一年多時間的尊敬,我會從模型開始講起,會把我從論文和書中的理解呈現出來,如果有時間,我會把我的程式碼放到我的git上,有興

卡爾曼濾波濾波

--總覺得網上其他部落格上寫的都不太適合自己理解,百般翻閱書籍理解了一下,供自己日後複習之用。 本文的程式整理可到此處下載:http://download.csdn.net/download/sillykog/10123483 用過去的觀測值來估計當前或者

三列適應佈局左右定寬,中間適應

一個不定寬度的容器被分為左中右三列,左右兩列定寬100px,中間列自適應剩餘寬度,且三列之間間距為10px。 1.float+margin+fix HTML結構如下 <div class="parent"> <div class="left"&

圖象恢復——(逆濾波濾波

目的:對獲取影象在頻域用高斯函式進行退化併疊加白噪聲,對退化影象進行逆濾波和維納濾波恢復,比較原始影象和恢復影象,對利用逆濾波和維納濾波恢復方法恢復影象進行比較。一、基本原理      影象復原是一種客觀的操作,通過使用退化現象的先驗知識重建或恢復一副退化的影象;影象在形成、

影象處理適應濾波

本文主要介紹了自適應的中值濾波器,並基於OpenCV實現了該濾波器,並且將自適應的中值濾波器和常規的中值濾波器對不同概率的椒鹽噪聲的過濾效果進行了對比。最後,對中值濾波器的優缺點了進行了總結。 空間濾波器 一個空間濾波器包括兩個部分: 一個鄰域,濾波器進行操作的畫素集合,通常是一個矩

實現div的背景圖片在各個瀏覽器上適應顯示即backgroun-size屬性不支援低版本ie的解決方案

筆者在進行div下的背景圖片顯示時,發現一個問題:圖片在div中自適應 background-size:cover顯示時,使用backgroun-size屬性可以很好的在其它瀏覽器上顯示,但低於IE8的瀏覽器不支援!!比較鬱悶的搞了大半天,先把解決方案陳列如下:      

隱馬爾科夫模型(HMMs)之五特比演算法前向後向演算法

維特比演算法(Viterbi Algorithm) 找到可能性最大的隱藏序列 通常我們都有一個特定的HMM,然後根據一個可觀察序列去找到最可能生成這個可觀察序列的隱藏序列。 1.窮舉搜尋 我們可以在下圖中看到每個狀態和觀察的關係。 通過計算所有可能的隱藏序列的概率,

鄭曙光“雲環境下的適應防禦體系” – 運

由工業和資訊化部指導,中國資訊通訊研究院主辦,業界知名組織雲端計算開源產業聯盟(OSCAR)承辦的2017全球雲端計算開源大會於4月19日-20日在北京國家會議中心順利召開。本文為本屆大會嘉賓分享的大會演講速記內容,敬請瀏覽。 嘉賓介紹:鄭曙光 公司職務:上元雲安全CEO 大會演講速記 大家好

0512日重點淘寶的H5手機端適應解決方案Flexible

自動獲取 手機端 issue 解決方案 target 解決 flex get bsp 參考文檔: https://github.com/amfe/lib-flexible https://github.com/amfe/article/issues/17 自我總結:F

濾波實現

wid proc 灰度 auto sig play png size and 參考鏈接:Matlab Wiener2函數 一、算法原理及公式: 二、算法實現: 步驟一:計算局部均值圖localMean與局部方差圖localVar,可采用積分圖加速;