我谈维纳(Wiener)去噪滤波器
Rafael Gonzalez的《数字图像处理》中,图像复原这章内容几乎全错。本篇只说去噪的问题。
关于图像去噪的滤波器,不考虑降质过程的滤波都不是逆问题。
-
Gonzalez将自适应中值滤波和自适应局部降噪滤波归并为自适应图像去噪滤波器。尽管它们都是滤波器,然而从本质上讲,自适应中值滤波属于图像增强,并不属于图像复原。而自适应局部降噪滤波器是在线性最小均方准则下推导的局部空域形式的维纳滤波器(我们的书中称为自适应维纳滤波器P159),因此,它属于图像复原。从严格意义上来讲,通过求逆的图像去噪不属于图像复原,本质上应归入图像重建,但是由于都是建立在降质模型基础上的逆问题,不严格来讲可以与图像复原合并。但是,不考虑降质模型的方法不能归入图像复原,这是因为图像增强和图像复原的处理方法和评价标准本质不同。
-
均值滤波器、统计排序滤波器和陷波滤波器都不属于图像复原。这相当于频域滤波器可分为经典滤波器和现代滤波器,尽管都称为滤波器,然而前者属于增强,后者属于复原。
Rafael Gonzalez介绍的这个自适应局部降噪滤波器,实际上是维纳(Wiener)去噪滤波器,有完整的推导和假设,不是拍脑袋想的,他这里的描述完全没get到点上,很离谱。
现在推导这个维纳(Wiener)去噪滤波器。这是在线性最小均方准则下推导的局部空域形式的维纳滤波器。维纳复原滤波器已经推导出了维纳一霍普夫方程式。见禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》P176
这里从维纳一霍普夫方程式开始:
W ( u , v ) = P f g ( u , v ) P g ( u , v ) W(u, v) = \frac{P_{fg}(u, v)}{P_g(u, v)} W(u,v)=Pg(u,v)Pfg(u,v)
维纳滤波器的假设条件是零均值、广义平稳随机过程,且该过程是遍历的,且 f f f, g g g不相关。
∵ \because ∵ f f f, η \eta η不相关
∴ \therefore ∴ Cov ( f , η ) = E ( f η ) − E ( f ) E ( η ) = 0 \operatorname{Cov}(f, \eta) = E(f\eta) - E(f)E(\eta) = 0 Cov(f,η)=E(fη)−E(f)E(η)=0
又 ∵ \because ∵ f f f是零均值,即 E ( f ) = 0 E(f) = 0 E(f)=0
∴ \therefore ∴ E ( f η ) = 0 E(f\eta) = 0 E(fη)=0
经过推导可得(证明略): P g ( u , v ) = P f ( u , v ) + P η ( u , v ) P_g(u, v) = P_f(u, v) + P_\eta(u, v) Pg(u,v)=Pf(u,v)+Pη(u,v)
P f g ( u , v ) = P f ( u , v ) P_{fg}(u, v) = P_f(u, v) Pfg(u,v)=Pf(u,v)
∴ \therefore ∴ W ( u , v ) = P f ( u , v ) P f ( u , v ) + P η ( u , v ) W(u, v) = \frac{P_f(u, v)}{P_f(u, v) + P_\eta(u, v)} W(u,v)=Pf(u,v)+Pη(u,v)Pf(u,v)
由于零均值广义平稳随机过程的平均功率等于方差,假设局部区域的均值、方差均为常数,则有 P f ( u , v ) = σ f 2 P_f(u,v) = \sigma_f^2 Pf(u,v)=σf2、 P g ( u , v ) = σ g 2 P_g(u,v) = \sigma_g^2 Pg(u,v)=σg2、 P η ( u , v ) = σ η 2 P_\eta(u,v) = \sigma_\eta^2 Pη(u,v)=ση2。其中, σ f 2 \sigma_f^2 σf2、 σ g 2 \sigma_g^2 σg2、 σ η 2 \sigma_\eta^2 ση2分别表示原图像、降质图像和噪声的方差。
∴ \therefore ∴
σ g 2 = σ f 2 + σ η 2 \sigma_g^2 = \sigma_f^2 + \sigma_\eta^2 σg2=σf2+ση2
W ( u , v ) = σ f 2 σ f 2 + σ η 2 = σ g 2 − σ η 2 σ g 2 W(u,v) = \frac{\sigma_f^2}{\sigma_f^2 + \sigma_\eta^2} = \frac{\sigma_g^2 - \sigma_\eta^2}{\sigma_g^2} W(u,v)=σf2+ση2σf2=σg2σg2−ση2
假设随机过程是遍历的,其时间平均值等于系综平均值,即可以通过对单个实现的长时间观察来估计其统计特性。因此,利用局部均值作为统计均值。零均值的过程先减去均值,处理完加回均值。
f ( x , y ) = u g + σ g 2 − σ η 2 σ g 2 ( g ( x , y ) − u g ) = u g + ( 1 − σ η 2 σ g 2 ) g − ( 1 − σ η 2 σ g 2 ) u g = g ( x , y ) − σ η 2 σ g 2 ( g ( x , y ) − u g ) \begin{aligned} f(x, y)& = u_g + \frac{\sigma_g^2 - \sigma_\eta^2}{\sigma_g^2} (g(x, y) - u_g)\\ &= u_g + (1 - \frac{\sigma_\eta^2}{\sigma_g^2}) g - (1-\frac{\sigma_\eta^2}{\sigma_g^2}) u_g \\ &= g(x, y) - \frac{\sigma_\eta^2}{\sigma_g^2} (g(x, y) - u_g) \end{aligned} f(x,y)=ug+σg2σg2−ση2(g(x,y)−ug)=ug+(1−σg2ση2)g−(1−σg2ση2)ug=g(x,y)−σg2ση2(g(x,y)−ug)
σ g 2 \sigma_g^2 σg2的计算可以用这个公式,下面MatLab的算法中使用的是这个。
σ g 2 = V a r ( g ) = E [ g 2 ] − [ E ( g ) ] 2 \sigma_g^2 = Var(g) = E[g^2] - [E(g)]^2 σg2=Var(g)=E[g2]−[E(g)]2
然后根据公式做解释:
Wiener 滤波器可自行适应图像局部方差。当方差 σ g 2 \sigma_g^2 σg2较大时,wiener2 几乎不执行平滑处理。当方差 σ g 2 \sigma_g^2 σg2较小时,wiener2 执行更多平滑处理,若 σ η 2 σ g 2 = 1 \frac{\sigma_\eta^2}{\sigma_g^2}=1 σg2ση2=1,返回的就是局部均值 u g u_g ug。
MatLab中给的函数是wiener2。因为是维纳滤波,所以是复原。但是自适应中值滤波、均值滤波器、统计排序滤波器和陷波滤波器这一堆都没有降质模型假设。
根据局部常数假设,当噪声是恒定功率(“白色”)加性噪声(如高斯噪声)时,wiener2 效果最佳。