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



我正在尝试随机化下图频谱的幅度分量。我想用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)

但结果几乎是垃圾。

最新更新