Восстановление исходного изображения с использованием фильтра Лапласа - PullRequest
1 голос
/ 25 марта 2020

Я применил к изображению фильтр Лапласа для определения краев изображения.

import matplotlib.pyplot as plt
from skimage import filters

output= filters.laplace(image)
plt.imshow(output, cmap = 'gray')
plt.title('Laplace', size=20)
plt.show()

Мне нужно восстановить исходное изображение, используя выходные данные, полученные из кода выше.

Я не уверен, работает ли filters.inverse или есть какой-либо другой доступный метод.

1 Ответ

1 голос
/ 25 марта 2020

То, что вы ищете, называется деконволюцией. Если вы ищете «деконволюция scikit-image», вы, вероятно, попадете в документацию для функции деконволюции Richardson-Lucy или в в этом примере используется . Примечание: теоретически не всегда возможно восстановить исходный сигнал (это немного похоже на несмешивание краски), но вы можете получить разумные приближения, особенно если ваша свертка точно известна.

Вы можете посмотреть на исходный код для фильтра Лапласа, где вы видите, что изображение свернуто с ядром лапласиана . Это ядро, которое нам нужно, чтобы разложить изображение. (Обратите внимание, что вы всегда можете регенерировать ядро, свернув изображение, содержащее только 1 в центре и 0 в других местах. Вот почему ядро ​​в деконволюции называется функцией разброса точек.)

Итак, чтобы восстановить ваш образ:

from skimage.restoration.uft import laplacian
from skimage.restoration import richardson_lucy

kernel_size = 3  # default for filters.laplace, increase if needed
kernel = laplacian(output.ndim, (kernel_size,) * output.ndim)
restored = richardson_lucy(output, kernel)
...