Python中的低通然后逆滤波器

Python中的低通然后逆滤波器,python,inverse,lowpass-filter,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

尝试用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()

你应该首先检查你的内核。它看起来根本不像一个低通(平均)内核。先试试类似的东西

kernel = np.ones((n,n))
如果要进行非常简单的低通滤波器n乘n(即模糊):


有什么问题?哪里出了问题?你有错误吗?如果是,它们是什么?当我运行它时,它看起来不像一个低通滤波器。不确定它是否真的正确。也不知道如何创建我创建的低通图像的反转。运行此代码时也没有错误,它可以工作。在这种情况下,这不是python问题,而是DSP问题。你一定要问我,我没有投反对票,所以我不能撤销,对不起。