实验二 傅里叶变换
实验要求
1.熟悉及掌握图像的变换原理及性质,实现图像的傅里叶变换
知识点
图像的变换
1.fft2
fft2函数用于数字图像的二维傅立叶变换,如:
i=imread(‘e:\w01.tif’);
j=fft2(i);
由于MATLAB无法显示复数图像,因此变换后的结果还需进行求模运算,即调用abs函数。
之后常常还进行对数变换,即调用log函数,以减缓傅里叶谱的快速衰减,更好地显示高频信息。
2.ifft2
ifft2函数用于数字图像的二维傅立叶反变换,如:
i=imread(‘e:\w01.tif’);
j=fft2(i);
k=ifft2(j);
3.fftshift
用于将变换后图像频谱中心从矩阵的原点移动到矩阵的中心
B=fftshift(i)
4.利用fft2计算二维卷积
利用fft2函数可以计算二维卷积,如:
a=[8,1,6;3,5,7;4,9,2];
b=[1,1,1;1,1,1;1,1,1];
a(8,8)=0;
b(8,8)=0;
c=ifft2(fft2(a).*fft2(b));
c=c(1:5,1:5);
利用conv2(二维卷积函数)校验, 如:
a=[8,1,6;3,5,7;4,9,2];
b=[1,1,1;1,1,1;1,1,1];
c=conv2(a,b);
实验内容
1、对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系
close all; clear all; clc; s=imread('屏保.jpg'); i=rgb2gray(s) i=double(i) j=fft2(i); k=fftshift(j); l=log(abs(k)); m=fftshift(j); RR=real(m); II=imag(m); A=sqrt(RR.^2+II.^2); A=(A-min(min(A)))/(max(max(A)))*255; b=circshift(s,[800 450]); b=rgb2gray(b) b=double(b) c=fft2(b); e=fftshift(c); l=log(abs(e)); f=fftshift(c); WW=real(f); ZZ=imag(f); B=sqrt(WW.^2+ZZ.^2); B=(B-min(min(B)))/(max(max(B)))*255; subplot(2,2,1);imshow(s);title('原图像') subplot(2,2,2);imshow(uint8(b));;title('平移图像') subplot(2,2,3);imshow(A);title('离散傅里叶频谱'); subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱')
|
频谱不随图像平移而改变

2、对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系
close all; clear all; clc; s=imread('屏保.jpg'); i=rgb2gray(s) i=double(i) j=fft2(i); k=fftshift(j); l=log(abs(k)); m=fftshift(j); RR=real(m); II=imag(m); A=sqrt(RR.^2+II.^2); A=(A-min(min(A)))/(max(max(A)))*255; b=imrotate(s, -90); b=rgb2gray(b) b=double(b) c=fft2(b); e=fftshift(c); l=log(abs(e)); f=fftshift(c); WW=real(f); ZZ=imag(f); B=sqrt(WW.^2+ZZ.^2); B=(B-min(min(B)))/(max(max(B)))*255; subplot(2,2,1);imshow(s);title('原图像') subplot(2,2,2);imshow(uint8(b));;title('平移图像') subplot(2,2,3);imshow(A);title('离散傅里叶频谱'); subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱')
|
频谱随着矩形的旋转而旋转相同的角度
