基本维纳应用

信息处理 图像处理 过滤器 图片 维纳滤波器 图像恢复
2022-01-31 00:04:16

我正在尝试过滤添加的这个 WGNg(x,y)

图片在此处输入图像描述

我的维纳过滤器是:

H(u,v)=PfPf+Pn

其中图像功率谱密度估计为是 FFT,是其大小。Px|X(u,v|2N2XN2

由于图像和噪声不相关,因此Pg=Pf+Pn

H(u,v)=PgPnPg

噪声方差是已知的,噪声图像 PSD 的估计如上所示。过滤器的应用虽然产生了令人失望的结果:

在此处输入图像描述

关于我可能做错了什么的任何想法?

1个回答

为了获得理想的图像去噪效果,维纳滤波器只能使用点扩散函数(模糊滤波器)来实现,该函数通过对图像像素的某个邻域进行平均来滤除噪声。由于您没有透露您的程序文本,因此无法肯定地说,但您令人失望的结果很可能来自未能在每个像素附近应用平均。

傅里叶域中维纳滤波器的典型推导得到表达式 其中是与您的指定一致的维纳滤波器,是点扩展函数 (模糊过滤器),然后我将您的重命名为,以便为通用 PSD 保留字符为了与您对原始图像下标和添加 WGN 的图像使用是添加噪声之前原始图像的(假定未知)功率谱。

H(u,v)=B(u,v)Sff(u,v)|B(u,v)|2Sff(u,v)+Snn(u,v)
H(u,v)BPSPfgSff(u,v)

的 DFT 估计功率谱,可以写然后得出类似于您的表达式 : 具有因子的显着外观。X(u,v)Speriodogram=|X(u,v)|2/N2H(u,v)=(PgPn)/Pg

H(u,v)=1BSperiodogram(u,v)SnnSperiodogram(u,v)
1B

的逆可能会出现问题解决方案是使用矩阵pseudoinverseB(u,v)

回到您的问题:您未能重建去噪图像,因为您忽略了像素邻域的平均。使用 MATLAB 函数wiener2(I,[m n])对具有不同像素邻域大小的逐像素自适应低通 Wiener 滤波进行实验,将帮助您了解 Wiener 滤波器在噪声图像上的工作原理。您会看到最佳m,n值的选择如何取决于局部图像方差。