有谁知道如何计算二维滤波器的倒数?
假设我有一个 3x3 过滤器:
0 1 0
1 1 1
0 1 0
我想找到它的逆。
使用 DFT 很容易做到。
但是假设我想通过卷积来做到这一点。
现在,这就是问题所在,Matlab 符号不是我的专长。
假设有一个 3X3 逆滤波器,这意味着两者的卷积将导致:
0 0 0
0 1 0
0 0 0
问题是为此创建正确的方程组并解决它。
用符号做这件事很容易想到,但我做不到。
有任何想法吗?
谢谢。
附言
我不确定这个有没有逆滤波器,因为它的 DTFT 中有零。
此外,有人应该像 MathOverflow 那样在这个论坛中允许 Latex 。
最佳答案
设 h[n] 是一维滤波器的有限脉冲响应。这对它的逆滤波器意味着什么?逆不可能是FIR。
证明:对于所有的 omega,令 H(omega) G(omega) = 1,其中 H 是 h[n] 的 DTFT,G 是 g[n] 的 DTFT。如果 h[n] 是 FIR,则 g[n] 必须是 IIR。
当然,有一些方法可以使用 FIR 滤波器来逼近逆 IIR 滤波器。一种基本方法是自适应滤波,例如最小均方 (LMS) 算法。或者只是截断 IIR 滤波器。不过,您仍然需要担心稳定性。
出于实际目的,您的具体问题可能没有理想的解决方案。特别是如果,例如,这是在图像处理中,并且您尝试使用 FIR 锐化滤波器反转 FIR 模糊滤波器。最终的图像看起来不会那么好,除非您的锐化过滤器非常非常大。
编辑:让 y[n] = b0 x[n-0] + b1 x[n-1] + ... + bN x[n-N]。让这个方程表征正向系统,其中 y 是输出,x 是输入。根据定义,当输入为脉冲时,脉冲响应是输出:h[n] = b0 d[n-0] + b1 d[n-1] + ... + bN d[n-N]。该脉冲响应具有有限长度 N+1。
现在,考虑逆系统,其中 x 是输出,y 是输入。然后脉冲响应由递推方程 d[n] = b0 h[n] + b1 h[n-1] + ... + bN h[n-N] 描述。等效地,b0 h[n] = d[n] - b1 h[n-1] - ... - bN h[n-N]。
不失一般性,假设 b0 和 bN 都非零。对于任何 m,如果 h[m] 非零,则 h[m+N] 也非零。因为这个系统有反馈,它的脉冲响应是无限长的。 QED。
因果关系不重要。延迟的倒数是提前,反之亦然。延迟或提前都不会改变脉冲响应的有限性。向左或向右移动无限脉冲响应;它仍然是无限的。
编辑 2:为了澄清起见,此证明与我原来的“证明”无关。一个在频域,另一个在时域。
关于image-processing - 推导图像卷积核的逆滤波器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2080835/