TIT 数字图像处理 原理与实践(MATLAB)入门教学 实验二 傅里叶变换

文章目录

  • 数字图像处理 原理与实践(MATLAB)入门教学 实验二 傅里叶变换
    • 实验要求
    • 知识点
    • 实验内容
      • 1、对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系
      • 2、对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系

数字图像处理 原理与实践(MATLAB)入门教学 实验二 傅里叶变换

实验要求

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]);  %对图像矩阵im中的数据进行移位操作
b=rgb2gray(b)
b=double(b)
c=fft2(b);                        %傅里叶变换     
e=fftshift(c);                  % 直流分量移到频谱中心
l=log(abs(e));                    %对数变换
f=fftshift(c);                     %直流分量移到频谱中心
WW=real(f);                        %取傅里叶变换的实部B
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('平移图像离散傅里叶频谱') 

频谱不随图像平移而改变

TIT 数字图像处理 原理与实践(MATLAB)入门教学 实验二 傅里叶变换_第1张图片

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);  %对图像矩阵im中的数据进行移位操作
b=rgb2gray(b)
b=double(b)
c=fft2(b);                        %傅里叶变换     
e=fftshift(c);                  % 直流分量移到频谱中心
l=log(abs(e));                    %对数变换
f=fftshift(c);                     %直流分量移到频谱中心
WW=real(f);                        %取傅里叶变换的实部B
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('平移图像离散傅里叶频谱') 

频谱随着矩形的旋转而旋转相同的角度
TIT 数字图像处理 原理与实践(MATLAB)入门教学 实验二 傅里叶变换_第2张图片

你可能感兴趣的:(数字图像MATLAB,计算机视觉,matlab,图像处理)