2013-10-09 6 views
2

이미지를 표현하는 2D 배열 a과 포인트 스프레드 기능을 나타내는 커널 k이 있습니다. scipy.signal.deconvolve은 내부적으로 lfilter 함수라고 불리는 "원하는 배열에 너무 깊은 개체"를 반환합니다. 1D 배열은 완벽하게 작동합니다. 이 문제를 어떻게 해결할 수 있습니까?deconvolve 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 deconvolution 만 지원합니다. 불행히도이 사실에 대해서는 문서가 명확하지 않습니다.

주파수 도메인 2D 디컨 볼 루션을 보려면 this answer을보십시오.

+0

감사합니다. 나는 정말로 그것을 깨닫지 못했습니다. 다른 스레드의 코드를 가지고 놀아 보겠습니다. – Faultier