Lowpass, затем обратный фильтр в Python

Пытаюсь написать простой фильтр нижних частот на питоне для работы с lena. Затем я хотел бы запустить обратный фильтр, чтобы запустить фильтр нижних частот и попытаться вернуть оригинал (ну, как можно ближе к оригиналу). Я новичок в программировании на питоне и не совсем уверен, с чего начать. Я попытался изменить код фильтра верхних частот, но это выглядит неправильно.

import matplotlib.pyplot as plt
import numpy as np
import scipy.misc
from scipy import ndimage
import Image 

#lowpass
def plot(data, title):
    plot.i += 1
    plt.subplot(2,2,plot.i)
    plt.imshow(data)
    plt.gray()
    plt.title(title)
plot.i = 0

 # Load the data...
img = scipy.misc.lena()
data = np.array(img, dtype=float)
plot(data, 'Original')

#narrow lowpass filter
kernel = np.array([[1, 1, 1],
               [1,  -8, 1],
               [1, 1, 1]])
lp_3 = ndimage.convolve(data, kernel)
plot(lp_3, '3x3 Lowpass')

# A slightly "wider" lowpass filter 
kernel = np.array([[1, 1, 1, 1, 1],
               [1,  -1,  -2,  -1, 1],
               [1,  -2,  -4,  -2, 1],
               [1,  -1,  -2,  -1, 1],
               [1, 1, 1, 1, 1]])
lp_5 = ndimage.convolve(data, kernel)
plot(lp_5, '5x5 Lowpass')
plt.show()

person user3433572    schedule 10.04.2014    source источник
comment
В чем проблема? Где это пошло не так? Вы получаете какие-либо ошибки? Если да, то какие?   -  person bosnjak    schedule 10.04.2014
comment
Когда я запустил его, он не был похож на фильтр нижних частот. не уверен, что это действительно правильно. Также не уверен, как создать инверсию изображения нижних частот, которое я создал. Также нет никаких ошибок при запуске этого кода, он работает.   -  person user3433572    schedule 10.04.2014
comment
В этом случае это не проблема Python, а проблема DSP. Вам обязательно следует задать этот вопрос на dsp.stackexchange.com.   -  person bosnjak    schedule 10.04.2014
comment
Я не ставил вам отрицательный голос, поэтому я не могу его отменить, извините.   -  person bosnjak    schedule 10.04.2014


Ответы (1)


Вы обязательно должны сначала проверить свое ядро. Совсем не похоже на низкочастотное (усредняющее) ядро. Попробуйте сначала что-то вроде

kernel = np.ones((n,n))

если вы хотите сделать очень простой фильтр нижних частот n на n (т.е. размытие):

результат низкого прохода

person ThR37    schedule 10.04.2014