如何在保持相位不变的情况下随机化图像的幅度谱?

How can I randomise the magnitude spectrum of an image whilst keeping the phase unchanged?

我正在尝试随机化以下 image 的频谱的幅度分量。我正在考虑使用 numpy.random.rand() 来生成随机值,但是我不确定如何去做。有人能够解释我如何继续吗? 下面是获取附图幅度谱的代码。

import numpy as np
import cv2
import matplotlib.pyplot as plt

img_tp = cv2.imread('testpattern.png', 0)
f_tp = np.fft.fft2(img_tp)
fshift_tp = np.fft.fftshift(f_tp)
mag_spectrum_tp = 20*np.log(np.abs(fshift_tp))
plt.imshow(mag_spectrum_tp)

我看不出这有什么用。没有幅度,相位信息就没有任何实际意义。从理论上讲,您可以通过执行以下操作来组合不相关的幅度和相位值:

f_mag = np.abs( fft_result1 )
f_phase = np.angle( fft_result2 )
combined = np.multiply(f_mag, np.exp(1j*f_phase))
img = np.fft.iff2(combined)

但结果几乎是垃圾。