2

numpy 或 scipy 是否包含一个与 n 维“梯度”fn 相反的函数?

例如,如果“图像”包含一个 2D 矩阵,那么我想要一个行为如下的函数 inv_gradient:

(gx, gy) = numpy.gradient(image)
constant_vector_0 = image[0,:] - inv_gradient(gx, gy)[0,:]
constant_vector_1 = image[:,0] - inv_gradient(gx, gy)[:,0]
image == inv_gradient(gx, gy) + tile(constant_vector_0,(shape(image)[0],1)) + transpose(tile(constant_vector_1,(shape(image)[1],1)))
4

1 回答 1

3

您所描述的基本上是一个逆滤波器。这些存在,但有限。

理解这一点的一种方法是通过卷积定理,并将梯度视为卷积的特定核,在这种情况下,类似于 1D 中的 (-1, 0, 1)。那么问题是内核的傅里叶变换 (FT) 将有零,当内核的 FT 与信号相乘时,内核 FT 中的零会消除这部分原始数据中的任何数据频谱(当图像中添加噪声时,这会变得更加成问题)。特别是对于梯度,f=0 波段中的幂为 0,这就是人们在评论中所指的内容,但其他信息也丢失了。

尽管如此,您仍然可以从逆滤波器中获得很多,也许是您需要的。这是相当具体的情况。

是对该问题的非常基本和快速的描述,以及一个示例(尽管不是渐变)。

于 2012-04-23T05:40:56.513 回答