Реконструкция исходного изображения с использованием выходных данных фильтра Лапласа.

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

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' или есть ли какой-либо другой доступный метод.


person Vijeth Dsouza    schedule 25.03.2020    source источник


Ответы (1)


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

Вы можете посмотреть источник код для фильтра Лапласа, где вы видите, что изображение свернуто с помощью .py#L408-L449" rel="nofollow noreferrer">ядро Лапласа. Это ядро, которое нам нужно для деконволюции изображения. (Обратите внимание, что вы всегда можете регенерировать ядро, свернув изображение, содержащее только 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)
person Juan    schedule 25.03.2020
comment
Большое спасибо за код и справочные документы. - person Vijeth Dsouza; 25.03.2020