傅里叶变换和逆傅里叶变换numpy
理論基礎(chǔ)
時(shí)域:以時(shí)間為橫坐標(biāo)
頻域:以頻率的倒數(shù)為橫坐標(biāo),可以看出,頻域更加簡(jiǎn)單。
相位:與時(shí)間差有關(guān)的一個(gè)概念。
傅里葉說(shuō),任何連續(xù)周期信號(hào),可以由一組適當(dāng)?shù)恼仪€組合而成。我們知道,正弦曲線可以轉(zhuǎn)換為頻域信號(hào),所以:任何連續(xù)周期信號(hào),都可以轉(zhuǎn)換成頻域信號(hào)。并且這個(gè)過(guò)程是可逆的。
程序?qū)崿F(xiàn)
1. 傅里葉變換
numpy.fft.fft2
1
實(shí)現(xiàn)傅里葉變換。
返回一個(gè)復(fù)數(shù)數(shù)組。
numpy.fft.fftshift?? ?效果如圖所示
將零頻率分量移到頻譜中心。?? ?
20*np.log( np.abs( fshift ) )
1
將傅里葉變換的計(jì)算結(jié)果映射到【0,255】這個(gè)區(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
實(shí)現(xiàn)逆傅里葉變換。
返回一個(gè)復(fù)數(shù)數(shù)組。
numpy.fft.ifftshift
1
fftshift的逆函數(shù),將低頻從中心移到左上角。
iimg=np.abs( 逆傅里葉變換結(jié)果)
1
設(shè)置值得范圍
將圖像進(jìn)行傅里葉變換后,再進(jìn)行逆傅里葉變換,與原圖片對(duì)比。
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的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 拜托!面试请不要再问我 Spring C
- 下一篇: 一维傅里叶变换后的复数怎样理解?