MATLAB 对图像进行正向和反向傅里叶变换

在MATLAB中对图像进行正向和反向傅里叶变换

在数学中,傅里叶变换是一种用于将函数或信号从时域转换到频域的数学工具。它广泛应用于信号处理、通信、图像处理和分析等领域。

在使用MATLAB找到图像的正向和反向傅里叶变换之前,让我们简要了解一下傅里叶变换及其逆变换。

正向傅里叶变换

傅里叶变换或正向傅里叶变换是一种数学运算,用于将信号从时域转换为频域。

因此,正向傅里叶变换以频率分量表示信号。当我们对信号进行正向傅里叶变换时,它会产生一个复值函数,该函数代表了输入信号在不同频率下的幅度和相位。

在数学上,时域信号”x(t)”的傅里叶变换被定义为

\mathrm{X(\omega)=\int_{−\infty}^{\infty}x(t)e^{−j\omega t}dt}

其中,X(ω)是x(t)的傅里叶变换。

现在,让我们讨论一下逆傅里叶变换。

逆傅里叶变换

逆傅里叶变换是正向傅里叶变换的逆操作。它被定义为一种数学操作,将频域信号转换为时域信号。

在信号处理中,它主要用于从变换后的信号中重建原始信号。

在数学上,频域信号的逆傅里叶变换可以定义为

\mathrm{x(t)=\frac{1}{2\pi} \int_{−\infty}^{\infty}X(\omega)e^{j\omega t}:d\omega}

这里,x(t)是从傅里叶变换版本重构的信号。

这就是正向傅里叶变换和逆正向傅里叶变换的一切内容。现在,让我们讨论如何使用MATLAB找到图像的正向和逆傅里叶变换。

使用MATLAB进行图像的正向傅里叶变换

在MATLAB中,我们可以使用’fft2’函数执行图像的正向傅里叶变换。下面解释了使用MATLAB找到图像的正向傅里叶变换的逐步过程:

步骤(1) - 读取原始输入图像并根据需要将其转换为灰度图像。

步骤(2) - 使用’fft2’函数对图像进行傅里叶变换。

步骤(3) - 使用’fftshift’函数将傅里叶变换从角落移至中心。

步骤(4) - 取移位后傅里叶变换的绝对值以计算其幅度谱。

步骤(5) - 显示傅里叶变换的幅度谱。

示例

现在,让我们考虑一个MATLAB的示例程序,以更好地理解这个概念。

% MATLAB code to find forward Fourier transform of an image
% Read the original input image
img = imread('https://www.tutorialspoint.com/assets/questions/media/14304-1687425236.jpg');

% Convert the input image to grayscale
gray_img = rgb2gray(img);

% Calculate Fourier Transform of the image
FT = fftshift(fft2(gray_img));

% Calculate the magnitude spectrum of Fourier transform
mag_spect = abs(FT);

% Take the log of magnitude spectrum 
mag_spect_log = log(1 + mag_spect); % Adding 1 to avoid log(0)

% Display the magnitude spectrum of the Fourier transform
figure;
subplot(1, 2, 1);
imshow(mag_spect, []);
title('Magnitude Spectrum of FT');

subplot(1, 2, 2);
imshow(mag_spect_log, []);
title('Log Magnitude Spectrum of FT');
colormap(gca, 'jet');
colorbar;

输出

在MATLAB中对图像进行正向和反向傅里叶变换

这是在MATLAB中找到图像的傅里叶正变换的方法。现在,让我们学习如何找到图像的逆傅里叶变换。

使用MATLAB进行图像的逆傅里叶变换

MATLAB提供了一个内置函数’ifft2’来找到函数或信号的逆傅里叶变换。

在这里,我们解释了使用MATLAB找到图像的逆傅里叶变换的逐步过程:

第一步 - 读取傅里叶变换后的图像。

第二步 - 应用’ifft2’函数来找到逆傅里叶变换后的图像。

第三步 - 取逆傅里叶变换后的图像的绝对值的对数。

第四步 - 显示逆傅里叶变换后的图像。

示例

以下示例程序演示了使用MATLAB找到图像的逆傅里叶变换的实际实现步骤。

% MATLAB code to perform Inverse Fourier Transform of an image
% Read the original input image
img = imread('https://www.tutorialspoint.com/assets/questions/media/14304-1687425236.jpg');

% Convert the input image to grayscale
gray_img = rgb2gray(img);

% Calculate Fourier Transform of the image
FT = fftshift(fft2(gray_img));

% Find inverse Fourier Transform of the Fourier transformed image 
inverse_FT_img = ifft2(ifftshift(FT));  % FT is the Fourier transformed image

% Take the log of the absolute value of the inverse transformed image
inverse_FT_img_log = log(abs(inverse_FT_img));

% Display the original, log-transformed, and inverse transformed images
subplot(2, 2, 1);
imshow(gray_img);
title('Original Image');

subplot(2, 2, 2);
imshow(inverse_FT_img_log, []);
title('Log Inverse Transformed Image');

subplot(2, 2, 3);
imshow(abs(inverse_FT_img), []);
title('Inverse Transformed Image');

输出

在MATLAB中对图像进行正向和反向傅里叶变换

这是我们可以通过以下简单步骤在MATLAB中找到图像的傅里叶逆变换的方法。

结论

在本教程中,我们解释了傅里叶变换(FT)和逆傅里叶变换(IFT)的概念。我们还解释了如何通过示例程序在MATLAB中找到正向傅里叶变换和逆傅里叶变换。您可以尝试使用自己的图像来运行上述代码,以找到它们的FT和IFT。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程