维纳滤波原理与一般定义

       维纳滤波是一种对于平稳随机信号的均方误差最优的线性滤波器,即添加了平稳随机噪声(如高斯白噪声)的确定性信号经过维纳滤波系统后的输出与原始信号的均方误差最小。具体的维纳滤波推导方式有很多,因为维纳滤波本身并没有给出具体的滤波器形式,这篇文章主要翻译自文末的参考资料,从线性问题的最优化角度来对维纳滤波进行推导,在理解上会比较直观和简单,可以作为理解维纳滤波的一种参考,如果希望更加深入理解可以在网上查阅相关的文献或博客。维纳滤波一般会在频域中进行分析,因为时域或空域中的卷积在频域中可表示为乘积,为了方便推导一般将信号的频谱展开为一维的列向量,而频响函数则表示为对角矩阵,那么系数的输出就可表示为频响矩阵与信号向量的相乘。

       对于某个原始信号的频谱 s \bf{s} s,假设添加的噪声的频谱为 n \bf{n} n,因为线性变换满足线性叠加性质,所以添加了噪声的信号的频谱可表示为

f = s + n . (1.1) {\mathbf{f}} = {\mathbf{s}} + {\mathbf{n}}.\tag{1.1} f=s+n.(1.1)

实际上,在添加噪声之前,一般认为信号 s \bf{s} s 首先会经过一个退化系统,例如一个低通滤波器,或者图像中由于运动产生的动态模糊等等,这些可以表示为一个线性移不变(Linear Shift-Invariant, LSI)系统,记其频响函数为 H d \bf{H_d} Hd,那么信号 f \bf{f} f 可表示为

f = H d s + n . (1.2) {\mathbf{f}} = {{\mathbf{H}}_{\mathbf{d}}}{\mathbf{s}} + {\mathbf{n}}.\tag{1.2} f=Hds+n.(1.2)

这时,我们希望能找到一个 LSI 系统响应 H \bf{H} H,作为对信号 f \bf{f} f 的维纳滤波,并得到相应的最优估计

g = H f . (1.3) {\mathbf{g}} = {\mathbf{Hf}}.\tag{1.3} g=Hf.(1.3)

维纳滤波希望输出的信号 g \bf{g} g 与原始信号 s \bf{s} s 的均方误差最小,但是直接求解 H \bf{H} H 通常是比较困难的,因为随机噪声 n \bf{n} n 的存在使得原始信号 s \bf{s} s 的值难以得知,而且本身要推导 H \bf{H} H 的解析解也不是一件易事。所以,维纳滤波的基本分析方法是将系统输出 g \bf{g} g 作为需要优化的量,然后间接地求解出相应的系统响应 H \bf{H} H

       根据式 (1.2),我们可以得到噪声 n \bf{n} n 的能量为

∣ H d s − f ∣ 2 = ∣ n ∣ 2 . (1.4) {\left| {{{\mathbf{H}}_{\mathbf{d}}}{\mathbf{s}} - {\mathbf{f}}} \right|^2} = {\left| {\mathbf{n}} \right|^2}.\tag{1.4} Hdsf2=n2.(1.4)

因为我们希望系统的输出 g \bf{g} g 尽可能地与原始信号 s \bf{s} s 相同,所以可以认为其满足以下的噪声能量约束,即

∣ H d g − f ∣ 2 = ∣ n ∣ 2 . (1.5) {\left| {{{\mathbf{H}}_{\mathbf{d}}}{\mathbf{g}} - {\mathbf{f}}} \right|^2} = {\left| {\mathbf{n}} \right|^2}.\tag{1.5} Hdgf2=n2.(1.5)

如果噪声 n \bf{n} n 的能量很小,这时我们可以将问题简化为最小化式 (1.5) 的左边部分,也就是使得一阶导数为零,即

∂ ( H d g − f ) T ( H d g − f ) ∂ g = 2 H d T ( H d g − f ) = 0. (1.6) \frac{{\partial {{\left( {{{\mathbf{H}}_{\mathbf{d}}}{\mathbf{g}} - {\mathbf{f}}} \right)}^T}\left( {{{\mathbf{H}}_{\mathbf{d}}}{\mathbf{g}} - {\mathbf{f}}} \right)}}{{\partial {\mathbf{g}}}} = 2{\mathbf{H}}_{\mathbf{d}}^T\left( {{{\mathbf{H}}_{\mathbf{d}}}{\mathbf{g}} - {\mathbf{f}}} \right) = {\mathbf{0}}.\tag{1.6} g(Hdgf)T(Hdgf)=2HdT(Hdgf)=0.(1.6)

注意式中的转置应该为共轭转置,因为这里的值都为复数。那么可得

g = ( H d T H d ) − 1 H d T f = H d − 1 f . (1.7) {\mathbf{g}} = {\left( {{\mathbf{H}}_{\mathbf{d}}^T{{\mathbf{H}}_{\mathbf{d}}}} \right)^{ - 1}}{\mathbf{H}}_{\mathbf{d}}^T{\mathbf{f}} = {\mathbf{H}}_{\mathbf{d}}^{ - 1}{\mathbf{f}}.\tag{1.7} g=(HdTHd)1HdTf=Hd1f.(1.7)

注意,正如我们前面提到的,频率响应函数 H d \bf{H_d} Hd 为对角复数矩阵。所以,在不考虑噪声 n \bf{n} n 的情况下,为了使维纳滤波的输出 g \bf{g} g 与原始信号 f \bf{f} f 的均方误差最小,其频响函数刚好为退化系统响应 H d \bf{H_d} Hd 的逆。其实这也很容易理解,当不考虑噪声的影响时,信号的改变都来自于退化系统,而退化系统的响应函数是确定的,所以我们能够很容易地无失真地恢复到原始的信号。然而,很多时候噪声的能量都是不可忽略的,这时前面的假设就不再适合了。例如假设退化系统为低通滤波器,那么其高频响应幅值一般很小,信号 s \bf{s} s 相应的高频分量经过退化系统后也会变得很小,那么对于信号 g \bf{g} g 的功率谱,有

∣ g ( u ) ∣ 2 = ∣ H d − 1 ( u ) ⋅ f ( u ) ∣ 2 ≈ ∣ H d ( u ) ∣ − 2 ∣ n ( u ) ∣ 2 . (1.8) {\left| {g(u)} \right|^2} = {\left| {H_d^{ - 1}(u) \cdot f(u)} \right|^2} \approx {\left| {{H_d}(u)} \right|^{ - 2}}{\left| {n(u)} \right|^2}.\tag{1.8} g(u)2= Hd1(u)f(u) 2Hd(u)2n(u)2.(1.8)

所以,这时高频分量中噪声的能量将会被极大地放大。不过,如果不考虑退化系统,即 H d = I \bf{H_d=I} Hd=I,那么噪声的能量不会被放大,当然,也不会被缩小。

       通常来说,噪声的引入会导致信号的能量增加。所以,在滤波系统输出 g \bf{g} g 满足式 (1.5) 的噪声能量约束的同时,我们希望其本身的能量也是尽可能低的,或者说至少某些分量上的能量尽可能低。为了解决以上的问题,我们引入一个评价矩阵 Q \bf{Q} Q,用于赋予信号 g \bf{g} g 的不同分量以不同的权值。注意,评价矩阵 Q \bf{Q} Q 也是一个对角矩阵,虽然在变换域中每个对角元素只作用于信号 g \bf{g} g 的单个分量,但在时域或空域中由于卷积的缘故可能涉及多个时刻或位置的输入。那么,我们就可得到以下的最优化问题,即

min ⁡ J ( g ) = ∣ Q g ∣ 2 , s . t . ∣ H d g − f ∣ 2 = ∣ n ∣ 2 . (1.9) \begin{aligned} & \min \quad J\left( {\mathbf{g}} \right) = {\left| {{\mathbf{Qg}}} \right|^2}, \\ & s.t.\quad {\left| {{{\mathbf{H}}_{\mathbf{d}}}{\mathbf{g}} - {\mathbf{f}}} \right|^2} = {\left| {\mathbf{n}} \right|^2}. \\ \end{aligned} \tag{1.9} minJ(g)=Qg2,s.t.Hdgf2=n2.(1.9)

为了解决这个最优化问题,我们可以引入拉格朗日乘子 λ \lambda λ,根据有约束极值问题的拉格朗日一阶必要条件,有

∂ ∂ g [ J ( g ) + λ ( ∣ H d g − f ∣ 2 − ∣ n ∣ 2 ) ] = ∂ ∂ g { g T Q T Q g + λ [ ( H d g − f ) T ( H d g − f ) − n T n ] } = 2 Q T Q g + 2 λ H d T ( H d g − f ) = 0. (1.10) \begin{aligned} & \frac{\partial }{{\partial {\mathbf{g}}}}\left[ {J\left( g \right) + \lambda \left( {{{\left| {{{\mathbf{H}}_{\mathbf{d}}}{\mathbf{g}} - {\mathbf{f}}} \right|}^2} - {{\left| {\mathbf{n}} \right|}^2}} \right)} \right] \\ & = \frac{\partial }{{\partial {\mathbf{g}}}}\left\{ {{{\mathbf{g}}^T}{{\mathbf{Q}}^T}{\mathbf{Qg}} + \lambda \left[ {{{\left( {{{\mathbf{H}}_{\mathbf{d}}}{\mathbf{g}} - {\mathbf{f}}} \right)}^T}\left( {{{\mathbf{H}}_{\mathbf{d}}}{\mathbf{g}} - {\mathbf{f}}} \right) - {{\mathbf{n}}^T}{\mathbf{n}}} \right]} \right\} \\ & = 2{{\mathbf{Q}}^T}{\mathbf{Qg}} + 2\lambda {\mathbf{H}}_{\mathbf{d}}^T\left( {{{\mathbf{H}}_{\mathbf{d}}}{\mathbf{g}} - {\mathbf{f}}} \right) = {\mathbf{0}}. \\ \end{aligned} \tag{1.10} g[J(g)+λ(Hdgf2n2)]=g{gTQTQg+λ[(Hdgf)T(Hdgf)nTn]}=2QTQg+2λHdT(Hdgf)=0.(1.10)

那么可得

g = ( H d T H d + γ Q T Q ) − 1 H d T f , γ = 1 / λ . (1.11) {\mathbf{g}} = {\left( {{\mathbf{H}}_{\mathbf{d}}^T{{\mathbf{H}}_{\mathbf{d}}} + \gamma {{\mathbf{Q}}^T}{\mathbf{Q}}} \right)^{ - 1}}{\mathbf{H}}_{\mathbf{d}}^T{\mathbf{f}},\quad \gamma = 1/\lambda .\tag{1.11} g=(HdTHd+γQTQ)1HdTf,γ=1/λ.(1.11)

可以看到,通过这种方法,我们也可以间接得到从有噪声信号f到滤波输出 g \bf{g} g 的系统频率响应 H \bf{H} H。然而,我们很难得到拉格朗日乘子 λ \lambda λ 的解析解,虽然也可以通过迭代的方法来逐步接近期望的值,但在实际应用中一般都是直接按照经验来设置 γ \gamma γ 的值。因为式中的矩阵都为对角矩阵,我们可以按标量写为

H ( u ) = H d ∗ ( u ) ∣ H d ( u ) ∣ 2 + γ ∣ Q ( u ) ∣ 2 . (1.12)) H(u) = \frac{{H_d^ * (u)}}{{{{\left| {{H_d}(u)} \right|}^2} + \gamma {{\left| {Q(u)} \right|}^2}}}.\tag{1.12)} H(u)=Hd(u)2+γQ(u)2Hd(u).(1.12))

对于不同的 γ \gamma γ Q \bf{Q} Q,我们将得到具有不同频率响应特性的维纳滤波器。当两者至少其一接近零的时候,所得的频率响应函数与式 (1.7) 一致,也就是退化系统的逆,即我们只考虑退化系统对原始信号的影响,而不考虑噪声所带来的失真,所以这时的维纳滤波并不能去除信号中的噪声。除此以外常用的选择有以下三种:

     (1) Q = I \bf{Q=I} Q=I。这时,我们相当于在最小化输出信号 g \bf{g} g 的能量。前面也有提到,一般来说噪声会增加信号的总能量,所以在满足式 (1.5) 的噪声能量约束的前提下,尽可能降低输出信号的能量有助于减少噪声的影响,使得输出更加平滑。并且这种情况不需要任何关于原始信号 s \bf{s} s 和噪声 n \bf{n} n 的信息,适用于很多两者频谱难以获得的情况。类似于式 (1.8),同样考虑退化系统为一个低通滤波器,即高频响应幅值很小,那么对于高频分量来说,有

H ( u ) ≈ γ − 1 H d ∗ ( u ) . (1.13) H(u) \approx {\gamma ^{ - 1}}H_d^ * (u).\tag{1.13} H(u)γ1Hd(u).(1.13)

∣ g ( u ) ∣ 2 ≈ ∣ γ − 1 H d ∗ ( u ) ⋅ f ( u ) ∣ 2 ≈ γ − 2 ∣ H d ( u ) ∣ 2 ∣ n ( u ) ∣ 2 . (1.14) {\left| {g(u)} \right|^2} \approx {\left| {{\gamma ^{ - 1}}H_d^ * (u) \cdot f(u)} \right|^2} \approx {\gamma ^{ - 2}}{\left| {{H_d}(u)} \right|^2}{\left| {n(u)} \right|^2}.\tag{1.14} g(u)2 γ1Hd(u)f(u) 2γ2Hd(u)2n(u)2.(1.14)

所以,通过增加约束以及选择合适的 γ \gamma γ 值,我们并不会将信号f的高频分量中的噪声的能量放大,甚至还可以进行缩小。注意,这里的分析只适用于退化系统为低通滤波器等高频响应幅值很小的情况。

     (2)不同于类型 (1),类型 (2) 需要用到原始信号 s \bf{s} s 和噪声 n \bf{n} n 的频谱信息,并且评价矩阵 Q \bf{Q} Q 不再是单位矩阵,即有

γ ∣ Q ( u ) ∣ 2 = P n ( u ) P s ( u ) . (1.15) \gamma {\left| {Q(u)} \right|^2} = \frac{{{P_n}(u)}}{{{P_s}(u)}}.\tag{1.15} γQ(u)2=Ps(u)Pn(u).(1.15)

其中 P n ( u ) P_n(u) Pn(u) P s ( u ) P_s(u) Ps(u) 分别代表噪声 n \bf{n} n 和原始信号 s \bf{s} s 的功率谱,这时的滤波称之为维纳反卷积滤波(Wiener Deconvolution Filter),相应地式 (1.12) 可改写为

H ( u ) = H d ∗ ( u ) ∣ H d ( u ) ∣ 2 + P n ( u ) P s ( u ) . (1.16) H(u) = \frac{{H_d^ * (u)}}{{{{\left| {{H_d}(u)} \right|}^2} + \frac{{{P_n}(u)}}{{{P_s}(u)}}}}.\tag{1.16} H(u)=Hd(u)2+Ps(u)Pn(u)Hd(u).(1.16)

回顾式 (1.9),我们通过评价矩阵 Q \bf{Q} Q 来控制不同分量的权值,当噪声的强度相比于原始信号越高时,应该赋予该分量更高的权重,因为该分量的滤波结果更有可能包含更多的噪声。同样考虑退化系统为低通滤波器的情况,不同于式 (1.14),对于高频分量有

∣ g ( u ) ∣ 2 ≈ [ P s ( u ) P n ( u ) ] 2 ⋅ ∣ H d ( u ) ∣ 2 ⋅ ∣ n ( u ) ∣ 2 . (1.17) {\left| {g(u)} \right|^2} \approx {\left[ {\frac{{{P_s}(u)}}{{{P_n}(u)}}} \right]^2} \cdot {\left| {{H_d}(u)} \right|^2} \cdot {\left| {n(u)} \right|^2}.\tag{1.17} g(u)2[Pn(u)Ps(u)]2Hd(u)2n(u)2.(1.17)

当噪声能量越高,而原始信号能量越低时,输出信号 g \bf{g} g 的高频分量的噪声能量将会被衰减得越多,所以相比于类型 (1),类型 (2) 能够获得更加平滑的输出。但是,类型 (2) 的缺点也很明显,即需要知道噪声 n \bf{n} n 和原始信号 s \bf{s} s 的功率谱,但这两者通常是不可获得的,极大地限制了其应用范围。

     (3)不同于前两者直接最小化输出信号 g \bf{g} g 的能量,类型 (3) 实际上是最小化其时域或空域二阶微分的能量,即令

q ( n ) = [ − 1 2 − 1 ] , q(n) = \left[ {\begin{array}{c} { - 1}&2&{ - 1} \end{array}} \right], q(n)=[121],

而矩阵 Q \bf{Q} Q q ( n ) q(n) q(n) 的频谱对角化的结果。最小化二阶微分也就是说希望输出信号 g \bf{g} g 的一阶微分基本为常数,使得其变化相对平稳,例如图像中的渐变色。而且 q ( n ) q(n) q(n) 在频域中的幅值类似于二次曲线,随着频率的提升而接近二次方地增长。所以,相比于类型 (2),类型 (3) 甚至能够获得更加平滑的输出,并且不需要知道关于噪声和原始信号的任何信息。

       图 1 展示了一个例子,其中原始图像首先经过高斯低通滤波器模糊(即退化系统)后,再添加均值为零的加性高斯白噪声,从而获得相应的退化图像。右上角为类型 (1) 的维纳滤波结果,其中 γ = 0.02 \gamma = 0.02 γ=0.02,可以看到其平滑效果效果是最差的,但是能恢复较多的细节。左下角为类型 (3) 的滤波,其平滑效果最好,但是也抹去了很多细节。右下角为类型 (2) 的滤波,因为我们知道原始图像和噪声,所以在获得适中的平滑效果的同时能够恢复较多的细节。

维纳滤波原理与一般定义_第1张图片
图1 维纳滤波效果示例

参考资料:
[1] http://www.cs.tau.ac.il/~turkel/notes/wiener.pdf.

你可能感兴趣的:(算法,信号处理,算法)