Фильтрация по Винеру в изображении RGB

#python #scipy #wiener-filter

#python #scipy #wiener-filter

Вопрос:

Я пытаюсь реализовать фильтр Винера в наборе данных CIFAR10, который состоит из изображений RGB.

Но этот фильтр можно использовать только для изображений с серым оттенком.

Я попытался реализовать это на каждом канале R / G / B, а затем объединить их, но результирующее изображение RGB даже близко не соответствовало исходному изображению.

Есть идеи?

(Я использую scipy.signal.signaltools.wiener)

Заранее спасибо

Ответ №1:

Хорошо, как насчет skimage (scikit-image)? Взгляните сюда: https://scikit-image.org/docs/dev/api/skimage.restoration.html#skimage.restoration .wiener

Пример, приведенный на изображении rgb, следующий:

 from skimage import color, data, restoration
img = color.rgb2gray(data.astronaut())
from scipy.signal import convolve2d
psf = np.ones((5, 5)) / 25
img = convolve2d(img, psf, 'same')
img  = 0.1 * img.std() * np.random.standard_normal(img.shape)
deconvolved_img = restoration.wiener(img, psf, 1100)