1.对图像作傅立叶变换,显示频域振幅图像。作傅立叶逆变换,显示图像,看是否与原图像相同
首先,要明白什么是傅里叶变换.傅里叶变换就是将一种信号从时域转换到频域的数学工具.那逆变换就很显而易见就是从频域信号转换回时域信号.
代码展示:
% 读取灰度图像
img = imread('C:/Users/86158/Desktop/matlab/by.jpeg');
img = rgb2gray(img);
% 显示原图像
subplot(1,3,1);
imshow(img);
title('原图');
% 进行傅立叶变换
f = fft2(img);
fshift = fftshift(f);
magnitude_spectrum = 20 * log(abs(fshift));
% 显示频域振幅图像
subplot(1,3,2);
imshow(magnitude_spectrum, []);
title('频域振幅');
% 进行傅立叶逆变换
f_ishift = ifftshift(fshift);
img_back = ifft2(f_ishift);
img_back = abs(img_back);
% 显示逆变换后的图像
subplot(1,3,3)
imshow(img_back, []);
title('逆变后图');
首先读取位于指定路径的图像文件,并将其存储在变量img
中。然后将彩色图像转换为灰度图像。创建一个1行3列的子图,选择第1个子图作为当前图像并显示原图像。接着对灰度图像进行二维傅立叶变换,得到一个复数矩阵f
,其中每个元素表示不同频率成分的振幅和相位.fshift = fftshift(f)
将傅立叶变换的结果进行频率移动,使得低频分量位于图像中心。magnitude_spectrum = 20 * log(abs(fshift))
计算频域振幅谱,并进行对数变换,可以更好的显示振幅的范围。然后对频域进行逆移动,使得低频分量回到原来的位置并对逆移动后的频域进行二维傅立叶逆变换,得到逆变换后的图像,取逆变换后的图像的绝对值,去除虚部并在当前子图中显示逆变换后的图像。
结果展示:
可以看出逆变换的图像和原图像基本相同,没什么区别,但好像逆变换之后的图像阴影更多了,稍微清晰了一点。
小结:
对傅立叶变换的结果进行频率移动是为了使得低频分量位于图像中心。这样做是可以更好地可视化频域信息,因为低频成分通常是对应图像的整体结构。
对图像做傅里叶变换可以方便我们更好的理解图像的频域特征。比如图像中的高频成分通常对应图像的边缘和细节,而低频成分对应图像的整体结构。