22傅里叶变换原理及实现

原文https://blog.csdn.net/Eastmount/article/details/89474405

一.图像傅里叶变换原理

# 任何连续周期信号都可以表示成(或者无限逼近)一系列正弦信号的叠加
# 时域(连续)变频域(离散)

二.Numpy实现傅里叶变换

# -*- coding: utf-8 -*-
import cv2
import numpy as np
from matplotlib import pyplot as plt

#读取图像
img = cv2.imread('C:/Users/31035/Desktop/yifei/01.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#快速傅里叶变换算法得到频率分布
f = np.fft.fft2(img)

#默认结果中心点位置是在左上角,
#调用fftshift()函数转移到中间位置
fshift = np.fft.fftshift(f)       

#fft结果是复数, 其绝对值结果是振幅
fimg = np.log(np.abs(fshift))

#展示结果
plt.subplot(121), plt.imshow(img, 'gray'), plt.title('Original Fourier')
plt.axis('off')
plt.subplot(122), plt.imshow(fimg, 'gray'), plt.title('Fourier Fourier')
plt.axis('off')
plt.show()

22傅里叶变换原理及实现_第1张图片

三.Numpy实现傅里叶逆变换

#读取图像
img = cv2.imread('C:/Users/31035/Desktop/yifei/01.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#傅里叶变换
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
res = np.log(np.abs(fshift))

#傅里叶逆变换
ishift = np.fft.ifftshift(fshift)
iimg = np.fft.ifft2(ishift)
iimg = np.abs(iimg)

#展示结果
plt.subplot(131), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.axis('off')
plt.subplot(132), plt.imshow(res, 'gray'), plt.title('Fourier Image')
plt.axis('off')
plt.subplot(133), plt.imshow(iimg, 'gray'), plt.title('Inverse Fourier Image')
plt.axis('off')
plt.show()

22傅里叶变换原理及实现_第2张图片

OpenCV实现傅里叶(逆)变换

你可能感兴趣的:(22傅里叶变换原理及实现)