我正在阅读一篇文本,该文本显示可以丢弃 66% 的系数并获得仍然可以接受的图像。
我尝试使用 python 复制它(最后一个示例)并有选择地丢弃一些系数,但我无法获得出色的图像,我的看起来像一个幽灵。
我怎样才能丢弃对图像不那么重要的东西?
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
from scipy import signal
# loading the image
img = mpimg.imread('i/super_mario_head.png')
# image in frequency domain
fft_original = np.fft.rfft2(img)
# discarding some coefficients (except initial square 80x80)
for x in range(300):
for y in range(300):
discard_x = x > 80
discard_y = y > 80
if discard_x and discard_y:
fft_original[x,y] = 0
# reverse from frequency to spatial
i_fft_original = np.fft.irfft2(fft_original)
f, (plt1, plt2) = plt.subplots(1, 2, figsize=(15,15))
plt1.axis('off');plt1.set_title('Original');plt1.imshow(img[:,:,0], cmap='gray');
plt2.axis('off');plt2.set_title('Reversed');plt2.imshow(i_fft_original[:,:,0], cmap='gray');