直接逆滤波图像,在空间上与模糊函数进行卷积,没有任何噪声,不会返回我的原始图像吗?

信息处理 过滤器 图片
2022-02-14 17:31:10

我正在尝试了解图像的逆滤波,并在 MATLAB 中的测试图像上进行尝试。

测试图像是一个 8x8 棋盘格,具有 64x64 像素,由 MATLAB 代码生成:

g = checkerboard(8);

我正在使用 3x3 平均滤波器 h,并将其与测试图像进​​行卷积。

我没有添加噪声,我想查看对失真图像进行直接逆滤波的结果。

我通过以下方式在频域中应用反卷积函数:

1) 填充 3x3 平均掩码 h 以生成 64x64 掩码 hp。

2) 将 hp 的系数 (0.111...) 居中以保持对称。

3) 将 hp 乘以 (-1)^x+y (因为我希望掩码的 fft 给我一个居中的傅立叶变换,hpc.

4) 取填充的居中蒙版的 FFt 并乘以 (-1)^(u+v)(因为我在步骤 2 中将蒙版居中在空间域中)得到 H.

5) 将失真的频移测试图像除以 H,即 Y = G./H。(注意:我没有填充图像,因为遮罩被填充了,环绕在这里并不是一个大问题)

6) 获得逆滤波图像 inv = (-1)^x+y * real(ifft2(Y))

我的问题:为什么我不能获得原件(或非常接近的东西)?

1个回答

我想我找到了自己问题的答案。

由于我使用的是平均滤波器掩码(一些常数乘以一个矩阵),因此这种滤波器的傅里叶变换是零频率的脉冲。

当我在步骤 1 中填充遮罩过滤器以使遮罩的尺寸等于图像时,我正在“截断”过滤器,即。对掩码进行窗口化,这类似于将掩码的傅立叶变换与 sinc 函数相乘。

结果,我在步骤 5 中使用的频域滤波器,即。H,不是冲量,而是 sinc 函数。这就是为什么我的结果不理想的原因。

另一方面,如果我在步骤 5 中使用脉冲,则只保留零频率值,我的结果将是一个恒定的图像。

简而言之,这是一个双输的局面。