低通然后Python中的反向过滤器

时间:2014-04-10 14:21:38

标签: python inverse lowpass-filter

尝试在python中编写一个简单的低通滤波器来对抗lena。然后我想运行一个逆滤波器来对抗低通,并试图让原来的背部(好,接近原始)。我是python编程的新手,不太清楚从哪里开始。 我尝试重新排列高通滤波器代码,但它看起来并不正确。

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()

1 个答案:

答案 0 :(得分:1)

你应该先检查你的内核。它根本不像是低通(平均)内核。首先尝试像

这样的东西
kernel = np.ones((n,n))

如果你想用n做一个非常简单的低通滤波器(即模糊):

lowpass result