对图像进行二维离散Fourier变换
Posted fpga&matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对图像进行二维离散Fourier变换相关的知识,希望对你有一定的参考价值。
用函数fft2对图像进行二维离散Fourier变换。用图像的形式分别显示清晰的频谱幅度和相位。对图像用窗函数加权,观察其Fourier变换,解释加窗前后的变化。对图像作Fourier变换和反变换。将图像频谱的幅度和相位部分分离。分别对幅度部分和相位部分求Fourier反变换,观察得到的空域结果并解释所观察到的现象。
close all;clear all
%-------------------------------------------------------------------------%
%实验要求:用函数fft2对图像进行二维离散Fourier变换。用图像的形式分别显示清晰的
%频谱幅度和相位。对图像用窗函数加权,观察其Fourier变换,解释加窗前后的变化。
%对图像作Fourier变换和反变换。将图像频谱的幅度和相位部分分离。分别对幅度部分和
%相位部分求Fourier反变换,观察得到的空域结果并解释所观察到的现象。
%-------------------------------------------------------------------------%
f=imread('test.jpg');
imshow(f);
title('原始图像');
f=double(f);
F=fft2(f);
fd=abs(fftshift(F));
fdf=ifft2(fd);%对幅度傅里叶反变换
xw=angle(F);
xwf=ifft2(exp(j*xw));
figure;
subplot(2,2,1);
imshow(log(abs(fftshift(F))),[])%显示频谱幅度
title('图像频谱幅度');
subplot(2,2,2);
imshow(angle(fftshift(F)),[])
title('图像相位');
%---------------------------
subplot(2,2,3);
imshow(log(1+abs(fdf)),[]);
title('图像频谱幅度的逆变换');
subplot(2,2,4);
imshow(xwf,[]);
title('图像相位的逆变换');
%-----------------------------------
[M,N]=size(f);
H1=hamming(M);
H2=hamming(N);
HH=H1*H2';
figure,
subplot(2,2,1);
imshow(HH,[]);
title('生成一个圆形的汉明窗');
g=f.*HH;
subplot(2,2,2);
imshow(uint8(g));
title('加汉明窗后的图像');
G=fft2(g);
subplot(2,2,3);
imshow(log(abs(fftshift(G))),[])%显示加窗后的频谱幅度
title('加窗后的频谱幅度');
subplot(2,2,4);
imshow(angle(fftshift(G)),[])%显示频谱幅度
title('加窗后的图像相位');
%----------------------------------------------------
D172
以上是关于对图像进行二维离散Fourier变换的主要内容,如果未能解决你的问题,请参考以下文章
python图像音频处理-通过图像傅里叶变换判断相位和幅度的重要性