任何连续的周期信号,可以由一组适当的正弦曲线组合而成 ——傅里叶
傅里叶变换
函数 numpy.fft
- numpy.fft.fft2
- 实现傅里叶变换。
- 返回一个复数数组。
- numpy.fft.fftshift
- 将零频率分量移到频谱中心。
- 20*np.log(np.abs(fshift))
- 设置频谱的范围
示例
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('./hanser.jpg',0) #0代表灰度模式
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
result = 20*np.log(np.abs(fshift))
plt.subplot(121),plt.imshow(img,cmap='gray')
plt.title('original'),plt.axis('off')
plt.subplot(122),plt.imshow(result,cmap='gray')
plt.title('result'),plt.axis('off')
plt.show()
逆傅里叶变换
函数numpy.fft.ifft2
- numpy.fft.ifft2
- 实现逆傅里叶变换,返回一个复数数组。
- numpy.fft.ifftshift
- fftshift 函数的逆函数。
- numpy.abs(iimg)
- 将复数数组转换为图像。
示例
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('./hanser.jpg',0)
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
ishift = np.fft.ifftshift(fshift)
iimg = np.abs(np.fft.ifft2(ishift))
plt.subplot(121),plt.imshow(img,cmap='gray')
plt.title('original'),plt.axis('off')
plt.subplot(122),plt.imshow(iimg,cmap='gray')
plt.title('iimg'),plt.axis('off')
plt.show()