【matlab】图像傅里叶变换与反变换

实验原理:
傅里叶变换是一种函数在空间域和频域的变换,从空间域变到频域是傅里叶变换,从频域变到空间域是傅里叶反变换。在频域中,频率越大说明原始信号变化速度越快;频率越小说明原始信号变化越平缓。高频分量解释信号的突变部分,低频分量决定信号的整体形象。
在图像处理中,频域反应了图像在空域中灰度的变化速度,也就是图像的梯度大小。对图像而言,图像的边缘部分是突变部分,变化较快,因此反应在频域上是高频分量;图像的噪声大部分情况下是高频部分,图像变化平缓的部分则为低频分量。
采用快速傅里叶变换(FFT)算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点N越多,FFT算法计算量的节省就越显著。

代码实现:

clear;clc;close
%读入图片uint8类型 灰度图
img = imread('08.png');
%变换之后为complex double类型
imgfft = fft2(img);
%abs求模
imgfft2 = log(abs(imgfft));
%移中
imgfft3 = fftshift(imgfft);
imgfft4 = log(abs(imgfft3));
%反变换
imgfft5 = ifftshift(imgfft3);
imgfft6 = ifft2(imgfft5);
%画图
subplot(221)
imshow(img,[])
title('原图')
subplot(222)
imshow(imgfft2,[])
title('频谱图')
subplot(223)
imshow(imgfft4,[])
title('移中后的频谱图')
subplot(224)
imshow(imgfft6,[])
title('反变换')

注意:
1.变换前需要将图像转成灰度图
2.傅里叶变换后的结果为复数,需要用abs求其模,而模的值范围较大需要用log进行缩放
3.imshow(T,[])会根据灰度图的数值范围来显示图像

实验结果:
【matlab】图像傅里叶变换与反变换_第1张图片

你可能感兴趣的:(matlab,图像处理)