14.2 Numpy实现傅里叶变换

本文详细介绍了如何利用Python的Numpy库执行傅里叶变换,包括一维和二维傅里叶变换的应用,以及如何通过傅里叶变换进行信号处理和图像分析。
摘要由CSDN通过智能技术生成

                                                                                                                    点击此处返回总目录

 

本次课介绍使用numpy实现傅里叶变换。

 

一、函数介绍

本次课介绍使用numpy实现傅里叶变换的几个函数。

 

1. numpy.fft.fft2()

这个函数用来实现傅里叶变换。

要注意的是,这个函数返回的是一个复数数组。

 

 


 

 

2. numpy.fft.fftshift()

这个函数是将0频率的分量移到频谱的中心。

我们可以这样理解:通过fft2()函数可以得到一个频谱图像,如左图所示,白色的低频是在左上角,为了更直观,我们一般会将它放置到中心点。移动就是使用这个函数。

 

 

 

在Python中,你可以使用NumPy库来进行数值计算,包括傅立叶变换(FFT),而OpenCV则可以方便地处理图像操作,包括傅立叶变换后的图像显示。以下是一个基本的示例,演示如何使用这两种库读取、处理和显示图像: ```python import numpy as np import cv2 from matplotlib import pyplot as plt # 读取图像 img = cv2.imread('train.bmp', 0) # 读取灰度图像,如果需要彩色,可以改为0 if img is None: print("Image not found.") else: # Numpy的傅立叶变换 dft_numpynp = np.fft.fft2(img) magnitude_numpynp = np.abs(dft_numpynp) # OpenCV的傅立叶变换 dft_opencv = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT) dft_shift = np.fft.fftshift(dft_opencv) magnitude_opencv = np.log(cv2.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1])) # 傅立叶逆变换 ifft_numpynp = np.fft.ifft2(magnitude_numpynp) ifft_opencv = cv2.idft(dft_shift) ifft_shift = np.fft.ifftshift(ifft_opencv) # 只保留实际部分并转换回原范围 ifft_numpynp = np.abs(ifft_numpynp) ifft_opencv = cv2.magnitude(ifft_shift[:, :, 0], ifft_shift[:, :, 1]) # 显示原始图像和处理后的图像 fig, axs = plt.subplots(2, 2, figsize=(8, 8)) axs[0, 0].imshow(img, cmap='gray') axs[0, 0].set_title('Original Image') axs[0, 1].imshow(magnitude_numpynp, cmap='gray') axs[0, 1].set_title('Magnitude (Numpy FFT)') axs[1, 0].imshow(magnitude_opencv, cmap='gray') axs[1, 0].set_title('Magnitude (OpenCV FFT)') axs[1, 1].imshow(ifft_numpynp, cmap='gray') axs[1, 1].set_title('Inverse FFT (Numpy)') for ax in axs.flat: ax.set(xticks=[], yticks=[]) plt.tight_layout() plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值