文章目录
一、傅里叶变换
1.2 傅里叶变换理论基础(略)
1.3 使用 numpy 实现傅里叶变换
1.3.1 numpy.fft.fft2():实现傅里叶变换,得到复数的二维数组
使用 fft2() 函数,用于实现傅里叶变换,得到复数的值
调用格式:
dst = numpy.fft.fft2(src)
函数说明:
① src:传入图像对象
② dst:得到未中心化的频率域傅里叶复数值
1.3.2 numpy.fft.fftshift():实现中心化的傅里叶变换
使用 fftshift() 函数,用于实现中心化的傅里叶变换,得到复数的值
调用格式:
dst = numpy.fft.fftshift(fft)
函数说明:
① fft:传入使用 numpy.fft.fft2(src) 得到的结果(为中心化的傅里叶函数)
② dst:得到中心化的频率域傅里叶复数值
1.3.3 20*np.log(np.abs(fshift)):将复数取模得到频谱(abs(fshift)),再使用对数公式将结果标定到 [0 255]的区间内
使用 20np.log(np.abs(fshift)) 函数,用于根据复频域的傅里叶函数得到其频谱
调用格式:
dst = 20np.log(np.abs(fshift))
函数说明:
① fshift:传入傅里叶变换后的函数,可以是中心化后的,也可以不是中心化后的
② dst:得到(未)中心化的频率域傅里叶频谱
import cv2
import matplotlib.pyplot as plt
import numpy as np
# 读入图像,并将图像作为灰度图像处理
img = cv2.imread('XXX',cv2.IMREAD_GRAYSCALE)
# 得到未中心化的傅里叶函数
f = np.fft.fft2(img)
# 得到中心化的傅里叶函数
fshift = np.fft.fftshift(f)
# 得到中心化的傅里叶函数的频谱
result = 20*np.log(np.abs(fshift))
plt.figure()
# 显示原图像
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.