В рамках класса обработки цифровых изображений нам был назначен обратный фильтр для восстановления изображений.Я использую NumPy.Приведенные ниже имена переменных пытаются следовать именам в Цифровая обработка изображений Гонсалес + Вудс, 3e.
Увеличение исходного изображения..
Гауссово ядро "zz.tif" того же размера, что и исходное изображение.
Увеличение сглаженного гауссовского изображения без добавления шума
f = imtools.load_image( sys.argv[1], mode="L", dtype="float" )
zz = imtools.load_image( "zz.tif", mode="L", dtype="float" )
F = np.fft.fft2( f )
F2 = np.fft.fftshift( F )
# normalize to [0,1]
H = zz/255.
# calculate the damaged image
G = H * F2
# Inverse Filter
F_hat = G / H
# cheat? replace division by zero (NaN) with zeroes
a = np.nan_to_num(F_hat)
f_hat = np.fft.ifft2( np.fft.ifftshift(a) )
imtools.save_image( np.abs(f_hat), "out.tif" )
imtools - это просто моя обертка, использующая PIL + numpy для загрузки / сохранения изображений.(Можно также опубликовать этот src.)
Увеличение изображения с обратной фильтрацией.
Правильно ли рассчитан обратный фильтр?Правильно ли я использую numpy?
Ожидается ли звонок на конечном изображении или я что-то не так делаю?