Деконволюция двумерного массива

Существует 2D массив, представляющий изображение a и ядро, представляющее функцию pointpread k, scipy.signal.deconvolve возвращает "объекты, слишком глубокие для нужного массива", из вызываемого изнутри lfilter функция. 1D массивы работают без нареканий. Как это можно исправить?

import numpy as N
import scipy.signal as SS
# working
# taken from:
# http://stackru.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 ответ

Решение

Ну, это было бы потому, что scipy.signal.deconvolve() поддерживает только 1D деконволюцию! К сожалению, документы не ясно по этому факту.

Взгляните на этот ответ для 2D деконволюции в частотной области.

Другие вопросы по тегам