数字图像处理原理与实践:MATLAB入门教学 实验二 探索傅里叶变换
最编程
2024-08-14 13:39:41
...
本文已参与「新人创作礼」活动,一起开启掘金创作之路。
数字图像处理 原理与实践(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('平移图像离散傅里叶频谱')
频谱不随图像平移而改变
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('平移图像离散傅里叶频谱')
频谱随着矩形的旋转而旋转相同的角度