2013-10-09 69 views
2

存在表示图像a的2D阵列和表示点扩展函数k的内核。 scipy.signal.deconvolve从内部调用lfilter函数返回“对于所需数组太深的对象”。 1D阵列工作完美无瑕。这怎么解决?解卷积2D阵列

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) 

回答

3

那么,那将是因为scipy.signal.deconvolve()只支持1D去卷积!不幸的是,文件不清楚这个事实。

查看频域2D反卷积的this answer

+0

谢谢,我确实没有意识到这一点。我将玩弄其他线程的代码。 – Faultier