碼字不易哪雕,如果對您有所幫助钾麸,記著點贊哦更振!
一. 圖像傅里葉變換原理:
? ? 原理簡介請參考: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維實數(shù)的傅里葉變換
numpy.fft.rfftn()
#返回傅里葉變換的采樣頻率
numpy.fft.fftfreq()
#將FFT輸出中的直流分量移動到頻譜中央
numpy.fft.shift()
三. 實驗:python的numpy庫實現(xiàn)圖像傅里葉變換及反變換
# writer:wojianxinygcl@163.com
# date? : 2020.3.30
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
#讀取圖像
img = cv.imread('../head_g.jpg', 0)
#傅里葉變換
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
res = np.log(np.abs(fshift))
#傅里葉逆變換
ishift = np.fft.ifftshift(fshift)
iimg = np.fft.ifft2(ishift)
iimg = np.abs(iimg)
#展示結果
plt.subplot(131), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.axis('off')
plt.subplot(132), plt.imshow(res, 'gray'), plt.title('Fourier Image')
plt.axis('off')
plt.subplot(133), plt.imshow(iimg, 'gray'), plt.title('Inverse Fourier Image')
plt.axis('off')
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庫實現(xiàn)圖像傅里葉變換及反變換
# writer:wojianxinygcl@163.com
# date? : 2020.3.30
import numpy as np
import cv2
from matplotlib import pyplot as plt
#讀取圖像
img = cv2.imread('../paojie_g.jpg', 0)
#傅里葉變換
dft = cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT)
dftshift = np.fft.fftshift(dft)
res1= 20*np.log(cv2.magnitude(dftshift[:,:,0], dftshift[:,:,1]))
#傅里葉逆變換
ishift = np.fft.ifftshift(dftshift)
iimg = cv2.idft(ishift)
res2 = cv2.magnitude(iimg[:,:,0], iimg[:,:,1])
#顯示圖像
plt.subplot(131), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.axis('off')
plt.subplot(132), plt.imshow(res1, 'gray'), plt.title('Fourier Image')
plt.axis('off')
plt.subplot(133), plt.imshow(res2, 'gray'), plt.title('Inverse Fourier Image')
plt.axis('off')
plt.show()
七. 實驗結果:
八. 參考內容:
????????①?https://blog.csdn.net/Ibelievesunshine/article/details/104984775
????????②?https://www.cnblogs.com/wojianxin/p/12530172.html
九. 版權聲明:
????????未經(jīng)作者允許睡汹,請勿隨意轉載抄襲肴甸,抄襲情節(jié)嚴重者,作者將考慮追究其法律責任囚巴,創(chuàng)作不易原在,感謝您的理解和配合友扰!