维纳滤波器的实现:一种估计自相关函数的方法
维纳滤波器的实现:一种估计自相关函数的方法
频域复原公式
假设一个平移不变的模糊模型,其中包含独立的加性噪声,可以表示为:
$$
y(m,n) = h(m,n) * x(m,n) + \eta(m,n)
$$
其中,$*$表示二维卷积,$h(m,n)$是点扩散函数(PSF),$f(m,n)$是原始图像,$\eta(m,n)$是噪声。
维纳滤波器在频域中更容易理解。假设我们设计一个频域滤波器$W(k,l)$,使得恢复的图像可以表示为:
$$
\hat{X}(k,l) = W(k,l) Y(k,l)
$$
我们可以选择$W(k,l)$以最小化:
$$
E[|X(k,l) - W(k,l) Y(k,l)|^2]
$$
其中$E[\cdot]$表示表达式的期望值。假设信号和噪声都是随机过程,并且彼此独立。这个表达式的最小化解为:
$$
W(k,l) = \frac{H(k,l)}{|H(k,l)|^2 + S_u(k,l)/S_x(k,l)}
$$
其中:
- $S_x(k,l) = \text{信号功率谱}$
- $S_\eta(k,l) = \text{噪声功率谱}$
这个滤波器给出了$X(k,l)$的最小均方误差估计。但是,当我们意识到必须提供信号和噪声的功率谱时,问题就变得复杂了。
通常假设噪声是白噪声,这使得噪声功率谱成为一个常数。如果:
$$
\sigma_\eta^2 = \text{每个像素的方差}
$$
那么噪声功率谱可以表示为:
$$
S_\eta(k,l) = MN\sigma_\eta^2
$$
对于一个$M \times N$的图像。这个噪声方差可能基于图像采集过程的知识,或者可以从图像的平滑区域的局部方差中估计出来。
信号功率谱在原则上更具挑战性,因为它不是平坦的。然而,我们有两个有利因素:1)大多数图像具有相当相似的功率谱;2)维纳滤波器对信号功率谱的小变化不敏感。
Rafael Gonzalez提出的简化公式被很多人采用,但这种假设实际上已经偏离了维纳滤波的初衷。局部区域图像的功率谱密度可以假设为常数,但整幅图像怎么可能?这种简化实际上是TK正则化的频域解。
图像的频谱未知,而图像正是我们需要求取的变量,如果频谱已知,也就不用这么费劲了。这就是Rafael Gonzalez这里概念不清的地方。
但是信号处理中有很多谱密度估计的方法。这里给出一个估计自相关函数的方法,用于维纳滤波,并与上述简化公式的结果比较。
估计自相关函数
图像自相关函数的一个常见模型是:
$$
r_x(m,n) = \sigma_x^2\rho^{-\sqrt{m^2 + n^2}} + \bar{X}^2
$$
其中:
- $\bar{X} = \text{图像的平均值}$
- $\rho = \text{相邻像素之间的相关系数}$
实验结果:
- mse1 = 2.5497e-03
- mse2 = 2.9065e-02
- mse3 = 9.8835e-03
当然,谱密度估计得越准确,复原的结果越好。