傅里叶变换和逆傅里叶变换numpy
理論基礎
時域:以時間為橫坐標
頻域:以頻率的倒數為橫坐標,可以看出,頻域更加簡單。
相位:與時間差有關的一個概念。
傅里葉說,任何連續周期信號,可以由一組適當的正弦曲線組合而成。我們知道,正弦曲線可以轉換為頻域信號,所以:任何連續周期信號,都可以轉換成頻域信號。并且這個過程是可逆的。
程序實現
1. 傅里葉變換
numpy.fft.fft2
1
實現傅里葉變換。
返回一個復數數組。
numpy.fft.fftshift?? ?效果如圖所示
將零頻率分量移到頻譜中心。?? ?
20*np.log( np.abs( fshift ) )
1
將傅里葉變換的計算結果映射到【0,255】這個區間內。
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)) ? ? ? ? ? #閾值轉換
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
實現逆傅里葉變換。
返回一個復數數組。
numpy.fft.ifftshift
1
fftshift的逆函數,將低頻從中心移到左上角。
iimg=np.abs( 逆傅里葉變換結果)
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
?
總結
以上是生活随笔為你收集整理的傅里叶变换和逆傅里叶变换numpy的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拜托!面试请不要再问我 Spring C
- 下一篇: 一维傅里叶变换后的复数怎样理解?