如何从其过滤器输出中恢复图像?

信息处理 图像处理 过滤器 信号分析 反卷积
2022-02-14 20:33:15

我想知道是否有一种方法可以重建图像,给定从具有特定滤波器的卷积获得的输出向量。

例如,我将图像与 MR8 过滤器库中的过滤器进行卷积,所以我得到了一个特征向量 v。它是:

v = img ** filter

v那么我可以定义一个将和filter作为输入的函数,并img以一定的错误恢复 吗?

img_restored = reconstruct(filter,v);

我试过什么

我搜索了反卷积,我发现了两件事:

  1. 维纳反卷积:但它只适用于去模糊(我猜)
  2. deconv()MATLAB 的函数,但它需要两个向量作为输入,并给出一个复数作为输出。

编辑

另一种方法是存储像素的所有特征向量(滑动窗口的中心)并尝试仅恢复单个像素,然后通过连接这些像素来获得图像。

谢谢你的帮助 !

2个回答

这种类型的问题称为反卷积

有几种方法可以解决它,包括维纳滤波(维纳反卷积的另一个名称),但其中有很多。维纳滤波不保留去模糊:它是取消线性退化算子。

正如Aaron所说,这通常是一个不适定问题,需要额外的知识才能找到一个好的解决方案。今天非常流行的经典方法是使用正则化逆问题方法。

问题被表述为两项之和E(x)=d(Ax,y)+λr(x)

  1. x是变量;
  2. A是退化算子(前向卷积);
  3. d(Ax,y)的退化之间的距离(例如,欧几里得距离)它被称为数据项y
  4. r(x)是一个先验项或正则化项,用于惩罚形状不良的解 x(通常不够正则的解 x)xx
  5. λ是平衡两个约束的影响的权重。

然后,通过最小化泛函找到一个好的解xE(x)

例如,请参阅Sparse Approximation via Iterative Thresholding,了解这种方法在稀疏近似中的应用。

考虑序列 [2 0 2 0 2 0 2 0] 和 [1 1 1 1 1 1 1 1]。当您使用过滤器 [1/2 1/2] 过滤它们时,它们都会变为 [1 1 1 1 1 1 1 1]。

通常,有许多输入序列都过滤到相同的输出。如果你想反转它,你需要某种方式来选择这些输入中的哪一个是你想要的。