Недавно я использовал гауссову свертку для размытия изображения. Он работает хорошо, на самом деле он отлично работает. Однако теперь я пытаюсь изменить его, и мой инверсный фильтр продолжает сталкиваться с проблемами. Предполагается, что фильтр должен работать по следующему принципу:Обратный фильтр для гауссовского размытия
G (x, y)/H (x, y) = F (x, y), где G (x, y) - преобразование Фурье размытого изображения , H (x, y) - преобразование Фурье функции размытия, а F (x, y) - преобразование Фурье исходного изображения.
В настоящее время полученное изображение выглядит точно так же, как оригинал. Мой алгоритм выглядит следующим образом:
from PIL import Image
import math
import cmath
import numpy as np
def reverseGaussianBlur(picture, r):
rs = int(math.ceil(r * 2.57) # Calculate significant radius
w, h = picture.size
pixels = list(picture.getdata()) # Image's pixels as list
fft_pixels = runFourier(pixels, False) # Run FFT
temp_picture = []
for u in range(0, h):
for v in range(0, w):
val = [0] * 3
wsum = 0
for iy in range(u - rs, u + rs + 1):
y = min(h - 1, max(0, iy))
for ix in range(v - rs, v + rs + 1):
x = min(w - 1, max(0, ix))
weight = (2 * math.pi) ** 0.5 * cmath.exp(-r * r * ((ix - v) *
(ix - v) + (iy - u) * (iy - u))/2)
if (weight.real > 1e-5):
val = [n + p/weight for n, p in zip(val, fft_pixels[y * w + x])]
wsum += weight
temp_picture.append(tuple([v * wsum for v in val]))
return_picture = [tuple(int(round(p)) for p in pixel) for pixel in
runFourier(temp_picture, True)] # Run Inverse FFT
return return_picture
В любом случае, я не совсем уверен, что случилось, и любая помощь будет замечательной.
«На практике результаты часто весьма разочаровывают», согласно Ив Даусту в http://stackoverflow.com/questions/21791982/reverse-image-blur-filter-not-unsharp-mask. Он предлагает использовать фильтр Вайнера. –
Если бы речь шла об обратном размывании, вызванном каким-то естественным явлением, я бы принял его, но я вызвал размытие в первую очередь. Кажется, я мог бы его отменить, но опять же, может быть, слишком много информации было потеряно, когда я размыл изображение. – Woody1193