碼字不易,如果對您有所幫助,記着點贊哦!
一. 圖像傅里葉變換原理:
原理簡介請參考:https://www.cnblogs.com/wojianxin/p/12529809.html
對二維圖像進行傅里葉變換用如下公式進行:

對二維圖像進行傅里葉逆變換用如下公式進行:

二. python的numpy庫中的圖像傅里葉變換公式:
#計算一維傅里葉變換
numpy.fft.fft(a, n=None, axis=-1, norm=None)
#計算二維的傅里葉變換
numpy.fft.fft2(a, n=None, axis=-1, norm=None)
#計算n維的傅里葉變換
numpy.fft.fftn()
#計算n維實數的傅里葉變換
numpy.fft.rfftn()
#返回傅里葉變換的采樣頻率
numpy.fft.fftfreq()
#將FFT輸出中的直流分量移動到頻譜中央
numpy.fft.shift()
三. 實驗:python的numpy庫實現圖像傅里葉變換及反變換
1 # writer:wojianxinygcl@163.com 2 3 # date : 2020.3.30 4 5 import cv2 as cv 6 7 import numpy as np 8 9 from matplotlib import pyplot as plt 10 11 #讀取圖像 12 13 img = cv.imread('../head_g.jpg', 0) 14 15 #傅里葉變換 16 17 f = np.fft.fft2(img) 18 19 fshift = np.fft.fftshift(f) 20 21 res = np.log(np.abs(fshift)) 22 23 #傅里葉逆變換 24 25 ishift = np.fft.ifftshift(fshift) 26 27 iimg = np.fft.ifft2(ishift) 28 29 iimg = np.abs(iimg) 30 31 #展示結果 32 33 plt.subplot(131), plt.imshow(img, 'gray'), plt.title('Original Image') 34 35 plt.axis('off') 36 37 plt.subplot(132), plt.imshow(res, 'gray'), plt.title('Fourier Image') 38 39 plt.axis('off') 40 41 plt.subplot(133), plt.imshow(iimg, 'gray'), plt.title('Inverse Fourier Image') 42 43 plt.axis('off') 44 45 plt.show()
四. 實驗結果:

五. python的cv2庫中的圖像傅里葉變換公式:
# 傅里葉變換
dft = cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT)
# 傅里葉逆變換
iimg = cv2.idft(ishift)
# 返回傅里葉變換后iimg的幅值
res2 = cv2.magnitude(iimg[:,:,0], iimg[:,:,1])
六. 實驗:python的cv庫和numpy庫實現圖像傅里葉變換及反變換
1 # writer:wojianxinygcl@163.com 2 3 # date : 2020.3.30 4 5 import numpy as np 6 7 import cv2 8 9 from matplotlib import pyplot as plt 10 11 #讀取圖像 12 13 img = cv2.imread('../paojie_g.jpg', 0) 14 15 #傅里葉變換 16 17 dft = cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT) 18 19 dftshift = np.fft.fftshift(dft) 20 21 res1= 20*np.log(cv2.magnitude(dftshift[:,:,0], dftshift[:,:,1])) 22 23 #傅里葉逆變換 24 25 ishift = np.fft.ifftshift(dftshift) 26 27 iimg = cv2.idft(ishift) 28 29 res2 = cv2.magnitude(iimg[:,:,0], iimg[:,:,1]) 30 31 #顯示圖像 32 33 plt.subplot(131), plt.imshow(img, 'gray'), plt.title('Original Image') 34 35 plt.axis('off') 36 37 plt.subplot(132), plt.imshow(res1, 'gray'), plt.title('Fourier Image') 38 39 plt.axis('off') 40 41 plt.subplot(133), plt.imshow(res2, 'gray'), plt.title('Inverse Fourier Image') 42 43 plt.axis('off') 44 45 plt.show()
七. 實驗結果:

八. 參考內容:
https://www.jianshu.com/p/a00da3e03533
九. 版權聲明:
未經作者允許,請勿隨意轉載抄襲,抄襲情節嚴重者,作者將考慮追究其法律責任,創作不易,感謝您的理解和配合!