傅里叶变换对图像进行分析的代码
时间: 2023-10-01 08:08:27 浏览: 105
傅里叶变换在图像处理中广泛应用于频域分析和滤波等任务。下面是一个使用OpenCV库和NumPy库实现傅里叶变换对图像进行分析的代码示例:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图像
image = cv2.imread('image.jpg', 0)
# 执行傅里叶变换
f = np.fft.fft2(image)
f_shift = np.fft.fftshift(f)
# 计算频谱图像
magnitude_spectrum = 20 * np.log(np.abs(f_shift))
# 显示原始图像和频谱图像
plt.subplot(121), plt.imshow(image, cmap='gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum, cmap='gray')
***
相关问题
matlab对图像进行傅里叶变换的代码
下面是一个简单的例子,用MATLAB对图像进行傅里叶变换:
``` matlab
% 读取图像
img = imread('lena.jpg');
% 转为灰度图
gray = rgb2gray(img);
% 计算傅里叶变换
f = fft2(double(gray));
% 对结果进行移位,以便在中心显示低频分量
fshift = fftshift(f);
% 取绝对值,并用对数转换到可视范围
magnitude_spectrum = log(1+abs(fshift));
% 显示原始图像和傅里叶变换后的图像
subplot(1,2,1), imshow(gray), title('Original')
subplot(1,2,2), imshow(magnitude_spectrum,[]), title('Magnitude Spectrum')
```
这个例子读取了一个名为“lena.jpg”的图像文件,并将其转换为灰度图像。然后,它使用`fft2`函数计算图像的傅里叶变换。为了在中心显示低频分量,使用`fftshift`函数将傅里叶变换结果移位。最后,使用`abs`函数计算结果的绝对值,并使用`log`函数将其转换为可视范围。最后,使用`imshow`函数显示原始图像和傅里叶变换后的图像。
对给定图像进行傅里叶逆变换代码
下面是MATLAB中对给定图像进行傅里叶逆变换的示例代码:
```matlab
% 读入图像并进行傅里叶变换
img = imread('lena.png'); % 读入图像
img_fft = fft2(img); % 进行二维傅里叶变换
% 对傅里叶变换结果进行逆变换
img_recover = ifft2(img_fft);
% 显示原始图像和逆变换后的图像
subplot(1,2,1);
imshow(img);
title('原始图像');
subplot(1,2,2);
imshow(uint8(abs(img_recover)));
title('逆变换后的图像');
```
在这个示例代码中,我们首先使用MATLAB中的imread函数读入了一张图像,并使用fft2函数进行了二维傅里叶变换。然后,我们使用MATLAB中的ifft2函数进行二维傅里叶逆变换,并使用imshow函数显示原始图像和逆变换后的图像。需要注意的是,由于逆变换后的图像包含了实部和虚部,因此需要使用abs函数获取其幅值,并使用uint8函数将其转换为整数类型。