當將周期性二維信號從影像空間轉換到傅立葉空間并回傳時,重建信號的頻率是原始信號的兩倍(見下圖)。我嘗試使用來自 NumPy 和 OpenCV 的離散傅立葉變換,結果相同。使用一維 DFT 和 IDFT 時不會出現此問題。
你有什么想法這個問題的根源可能是什么以及如何解決它?

以下是演示該問題的 Python 示例代碼:
import matplotlib.pyplot as plt
import numpy as np
# image width and height
w = 320
h = 320
# frequency of cosine wave w.r.t. the image width
frequency = 1
# function to create a horizontal 2D cosine wave
def create_cos_horizontal(frequency, w, h):
img = np.zeros((h,w),np.float32)
base_period = w/(2*np.pi)
print(frequency)
for x in range(0, w):
img[0:, x] = np.cos(x*frequency/base_period)
return img
img = create_cos_horizontal(frequency, w, h)
# transform from image space to fourier space
dft = np.fft.fft2(img)
# transform back from fourier space to image space
im_back = np.fft.ifft2(dft)
# show original and reconstructed image side by side
ax1 = plt.subplot(1,2,1)
ax1.imshow(img, cmap='gray')
ax1.set_title("original signal")
ax2 = plt.subplot(1,2,2)
ax2.imshow(np.abs(im_back), cmap='gray')
ax2.set_title("signal after DFT and IDFT")
非常感謝你提前。
uj5u.com熱心網友回復:
abs()第二個圖中的呼叫是校正余弦,反轉曲線的負部分。如果您將其替換為real(im_back)符合預期的圖。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379039.html
上一篇:指標其實也沒有那么難
下一篇:C/C++語言結構體指標的使用
