梯度域重建 - 缩放问题

信息处理 图像处理 图片 转换 重建 梯度域
2022-02-22 14:38:45

我正在实现从梯度域重建图像。这需要在二维网格上求解以下偏微分方程(泊松方程):

2I=divG

divG是梯度场的散度,它只是应用了拉普拉斯算子的图像(二阶导数):

在此处输入图像描述

原始图像的值范围为 0 到 255(8 位图像)。散度图像的值范围为 -341 到 +318,这是预期的。

但是,当我解决上述等式时I,结果规模很小。重建图像的值范围从 -0.000038 到 +0.000029。

我知道梯度域将信息存储到一个常数。然而,在这种情况下,规模发生了很大变化。

当我将重建图像拉伸到 0-255 区间时,得到正确的结果:

在此处输入图像描述

我正在使用基于完全多重网格方法 (FMG) 的泊松求解器,该求解器在不同的应用程序(HDR 图像)中表现出色。无论如何,这里的值都被拉伸了,所以我从来没有注意到规模的巨大变化。

这种尺度变化对于梯度域重建是正常的还是可能存在

我的想法:

  1. 数值解中的一些小故障。
  2. divG图像用零填充,因此其大小符合求解器 - 这会影响比例吗?
3个回答

如果边界条件不足以产生问题的唯一解,则泊松方程可能会出现不适定性。最常用的边界条件是狄利克雷边界条件,其中I(x,y)为这些点指定(x,y)在的边界上I.

就您而言,在将解决方案扩展到另一个规模之后,您得到了正确的解决方案。您的泊松方程的解可能不是唯一的,并且您的算法只是根据优化中的某些受限部分(例如最小二乘的最小范数)找到了正确的解。更有可能的是,它已经足以确定I(x,y)至任意加性常数,该常数由拉普拉斯方程的解确定:

2I^=0

这个:http ://web.media.mit.edu/~raskar/photo/code.pdf有一个用于从图像梯度重建泊松图像的 Matlab 代码。也许它可以帮助你。

我猜你的输出上有减号,这会阻止结果正确显示。剪辑您的输出,使结果介于 [0, 255] 之间。

数值求解器以浮点精度工作,不遵守字节图像约束。因此,您必须对数值结果进行后处理。