gpt4 book ai didi

python - 我是否使用 Numpy 正确计算逆滤波器?

转载 作者:太空宇宙 更新时间:2023-11-04 09:17:08 51 4
gpt4 key购买 nike

作为数字图像处理类(class)的一部分,我们被分配了用于图像恢复的逆滤波器。我正在使用 NumPy 。下面的变量名称尝试遵循数字图像处理 Gonzalez+Woods, 3e 中的名称。

原始图像的缩放。 A zoom of the original image .

高斯内核“zz.tif”与原始图像大小相同。 Gaussian kernel "zz.tif" same size as original image

未添加噪声的高斯平滑图像的缩放 Zoom of the gaussian smoothed image with no noise added

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

逆滤波图像的缩放。 Zoom of the inverse filtered image.

我是否正确计算了逆滤波器?我是否正确使用了 numpy?

最终图像中的振铃是预期的还是我做错了什么?

最佳答案

总的来说,是的,据我所知,您做事似乎是正确的。

振铃是由于高通滤波器过于“尖锐”,但这正是您使用的方法所造成的。

但是,您可以考虑使用 numpy.fft.rfft2(“真正的 fft”)和 numpy.fft.irfft2 而不是 numpy.fft.fft2 numpy.fft.ifft2 因为你纯粹是在处理真实的值(value)。应该稍微快点。

关于python - 我是否使用 Numpy 正确计算逆滤波器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7894094/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com