numpy或scipy是否包含一个与n维“渐变”fn相反的函数?
E.g。如果“image”包含一个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)))
答案 0 :(得分:3)
您所描述的基本上是一个逆滤波器。这些存在但有限。
理解这一点的一种方法是通过convolution theorem,并将渐变视为卷积的特定内核,在这种情况下,如1D中的(-1,0,1)。那么问题是,内核的傅立叶变换(FT)将具有零,并且当内核的FT与信号相乘时,内核的FT中的零会清除此部分中的原始数据中的任何数据。频谱(当噪声添加到图像时,这会产生更多问题)。特别是对于渐变,f = 0频段有0个幂,这是人们在评论中所指的,但其他信息也会丢失。
尽管如此,你可以从逆滤波器中获得很多,也许你需要的东西。这是相当具体的案例。