赞
踩
维纳滤波,认为系统是一个卷积系统,带噪信号是输入,经过系统后,得到干净信号,即去噪信号。主要原理是解卷积,可以说是得到系统的脉冲响应,即滤波器的系统响应。即,维纳滤波认为经过系统的卷积运算即是去噪过程。只要解出卷积对应的脉冲响应,则将带噪信号和此脉冲响应做卷积,即可进行去噪。
由于是卷积系统,需要知道输入信号和输出信号,其中输入信号包含信号和噪声,即采集到的信号。一般认为,信号和噪声是加性的,切互不相关的。
那么,要得到脉冲响应,即做解卷积运算,还需要一个输出信号,维纳滤波里,这个叫参考信号,或者叫期望信号。就是根据这个参考信号和输入信号,做解卷积运算即得到脉冲响应。
说关键就是在这个参考信号,怎么得到呢?其实也就是去噪后的信号,或者很接近输入信号的信号。因为很明显,去噪后的信号就是要求的,如果知道了,那还滤波干嘛?所以只能是一个很接近去噪后信号的信号——但是,问题依然存在,这个信号怎么来?是否知道这个信号也不需要再做滤波了呢??
先假设这个不是问题哈,说下维纳滤波的原理。其实就是解卷积,但是因为是均方误差最小原则,因而变为自相关及互相关,简单讲,输出信号的自相关矩阵(托普利兹矩阵)和系统脉冲响应做矩阵运算,其实是自相关序列和脉冲响应做卷积,得到的是输出信号和期望信号的互相关序列(也可以叫矩阵,是一维的)。解卷积即是在互相关序列这边适当乘以一个自相关矩阵的逆。这里涉及到一个矩阵求逆的过程,当信号量比较大且在一些算力有限的嵌入式系统上,是比较难实现或者不能实现的。具体原理讲解见下面文章:
webRTC中语音降噪模块ANS细节详解(一) - davidtym - 博客园 (cnblogs.com)
然后,如果是在频域,因为卷积直接是变为相乘(序列点乘),然后解卷积即变为除法,就容易计算多了!上述webrtc的ANS算法其实即是在频域实现。其首先计算频域信噪比,其实就是频域信号点除,然后计算出滤波器的频域脉冲响应,即系统函数,最后将频域带噪信号和系统函数做点乘,得到频域的去噪信号,即干净信号。
继续讲参考信号,在一些例子中,系统先空载,或者前一段时间空载,认为输入是高斯随机噪声,或者均匀白噪声,然后对输出信号做维纳滤波。那么参考信号就认为是和输出信号等长的高斯白噪声或者均匀白噪声。得到维纳滤波器的脉冲响应或系统函数后,再对后续的输出信号做滤波。在另外一些系统中,可以先输入一些已知的信号,作为参考信号。
所以,维纳滤波器实际上是认为系统是稳定的,先输入已知信号得到输出信号,然后将已知信号作为参考信号求出滤波器的脉冲响应,然后再对后续的未知输入信号的输出信号进行滤波,或者叫预测。这种原理可见以下文章:
自适应滤波器中的期望信号是什么?(引用维纳滤波)--ChinaUnix博客
维纳滤波仿真应用的例子还可见:
https://www.cnblogs.com/znhung/p/16769439.html 维纳(wiener)滤波器以及维纳滤波器的语音增强
比较好的视频,也是上面例子的参考资料:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。