解卷积二维数组

时间:2013-10-09 08:13:46

标签: python scipy signal-processing

有一个表示图像a的2D数组和一个表示点扩散函数k的内核。 scipy.signal.deconvolve从内部调用的lfilter函数返回“对于所需数组来说太深的对象”。 1D阵列正在完美运行。如何解决这个问题?

import numpy as N
import scipy.signal as SS
# working
# taken from:
# http://stackoverflow.com/questions/17063775/convolution-and-deconvolution-in-python-using-scipy-signal
a = N.array([  0.5,   2.5,   6. ,   9.5,  11. ,  10. ,   9.5,  11.5,  10.5,
5.5,   2.5,   1. ])
k= N.array([0.5, 1.0, 0.5])
res1,res2 = SS.deconvolve(a, k)
# not working
a = N.ones((10,10))
k = N.array([[1,2],[2,1]])
res1, res2 = SS.deconvolve(a,k)

1 个答案:

答案 0 :(得分:3)

那么,那是因为scipy.signal.deconvolve()仅支持一维反卷积!不幸的是,文档并不清楚这一事实。

请查看this answer进行频域2D反卷积。