📅  最后修改于: 2023-12-03 15:17:34.199000             🧑  作者: Mango
傅里叶变换是数字图像处理中常用的操作,可以将一个空间域中的图像转换为频率域中的图像,以便于对图像进行一些处理操作(如滤波等)。
在MATLAB中,可以使用内置函数对图像进行傅里叶变换和反向傅里叶变换。
正向傅里叶变换将一个空间域中的图像转换为频率域中的图像。在MATLAB中,可以使用fft2
函数进行正向傅里叶变换。
下面是一段示例代码:
img = imread('example.jpg'); % 读取图像
img_gray = rgb2gray(img); % 转换为灰度图像
% 进行傅里叶变换
img_fft = fft2(img_gray);
% 可视化频率域图像
img_fft_shift = fftshift(img_fft);
img_fft_abs = abs(img_fft_shift);
img_fft_log = log(img_fft_abs + 1);
img_fft_normalized = mat2gray(img_fft_log);
imshow(img_fft_normalized);
上述代码中,我们首先读取了一张彩色图像,并将其转换为灰度图像。然后,使用fft2
函数对灰度图像进行傅里叶变换,得到频率域图像。
为了方便观察,我们对频率域图像进行了以下几个操作:
fftshift
函数将变换后的图像的中心移到图像的中心。fftshift
之后的图像进行了绝对值计算,得到了幅度图像。下面是正向傅里叶变换之后的频率域图像:
反向傅里叶变换将一个频率域中的图像转换为空间域中的图像。在MATLAB中,可以使用ifft2
函数进行反向傅里叶变换。实现代码如下:
% 进行反向傅里叶变换
img_ifft = ifft2(img_fft);
% 可视化反向变换后的图像
img_ifft_abs = abs(img_ifft);
img_ifft_normalized = mat2gray(img_ifft_abs);
imshow(img_ifft_normalized);
上述代码中,我们使用ifft2
函数对之前傅里叶变换之后得到的频率域图像进行反向傅里叶变换,得到空间域图像。
为了方便展示,我们对反向变换后的图像进行了以下操作:
下面是反向傅里叶变换之后的空间域图像:
本文介绍了MATLAB中图像的正向和反向傅里叶变换,对于理解数字图像处理中傅里叶变换的原理有一定的帮助。同时,我们在展示结果时也介绍了一些可视化技巧,可以让我们方便地观察变换后的图像。