尝试在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()
答案 0 :(得分:1)
你应该先检查你的内核。它根本不像是低通(平均)内核。首先尝试像
这样的东西kernel = np.ones((n,n))
如果你想用n做一个非常简单的低通滤波器(即模糊):