傅里叶变换和逆傅里叶变换numpy
理論基礎
時域:以時間為橫坐標
頻域:以頻率的倒數(shù)為橫坐標,可以看出,頻域更加簡單。
相位:與時間差有關(guān)的一個概念。
傅里葉說,任何連續(xù)周期信號,可以由一組適當?shù)恼仪€組合而成。我們知道,正弦曲線可以轉(zhuǎn)換為頻域信號,所以:任何連續(xù)周期信號,都可以轉(zhuǎn)換成頻域信號。并且這個過程是可逆的。
程序?qū)崿F(xiàn)
1. 傅里葉變換
numpy.fft.fft2
1
實現(xiàn)傅里葉變換。
返回一個復數(shù)數(shù)組。
numpy.fft.fftshift?? ?效果如圖所示
將零頻率分量移到頻譜中心。?? ?
20*np.log( np.abs( fshift ) )
1
將傅里葉變換的計算結(jié)果映射到【0,255】這個區(qū)間內(nèi)。
import cv2
import numpy as np
import matplotlib.pyplot as plt
o=cv2.imread('image\\equ2.bmp',0)
f=np.fft.fft2(o) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#傅里葉變換
fshift=np.fft.fftshift(f) ? ? ? ? ? ? ? ? ? ? #零頻率移到中心
result= 20 * np.log(np.abs(fshift)) ? ? ? ? ? #閾值轉(zhuǎn)換
plt.subplot(121),plt.imshow(o,cmap='gray'),plt.title('original'),plt.axis('off')
plt.subplot(122),plt.imshow(result,cmap='gray'),plt.title('result'),plt.axis('off')
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
2. 逆傅里葉變換
numpy.fft.ifft2
1
實現(xiàn)逆傅里葉變換。
返回一個復數(shù)數(shù)組。
numpy.fft.ifftshift
1
fftshift的逆函數(shù),將低頻從中心移到左上角。
iimg=np.abs( 逆傅里葉變換結(jié)果)
1
設置值得范圍
將圖像進行傅里葉變換后,再進行逆傅里葉變換,與原圖片對比。
import cv2
import numpy as np
import matplotlib.pyplot as plt
o=cv2.imread('image\\boat.bmp',0)
f=np.fft.fft2(o)
fshift=np.fft.fftshift(f) ? ? ? ? ? ? ? ? ? ? #傅里葉變換
ishift=np.fft.ifftshift(fshift)
io=np.fft.ifft2(ishift)
io=np.abs(io) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #逆傅里葉變換
plt.subplot(121),plt.imshow(o,cmap='gray'),plt.title('original'),plt.axis('off')
plt.subplot(122),plt.imshow(io,cmap='gray'),plt.title('result'),plt.axis('off')
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
?
總結(jié)
以上是生活随笔為你收集整理的傅里叶变换和逆傅里叶变换numpy的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拜托!面试请不要再问我 Spring C
- 下一篇: 一维傅里叶变换后的复数怎样理解?