数字图像的频域转化

数字图像的频域转换
实验目的:
1.掌握MATLAB工具箱实现图像的傅里叶变换
2.掌握频谱图的逆变换方法,观察逆变换后的图像。

实验内容和要求:
建立一个名为“xxxxx实验10”的解决方案(xxxxx为自己的学号)
1.编程实现二维图像的离散傅立叶变换及傅立叶反变换
2.利用fft2 ()函数实现一幅图像的傅里叶正变换,并使用subplot()函数及subimage()函数实现原图像及频谱图的对比显示;
3.利用ifft2 ()函数实现频谱图像的傅里叶反变换,并使用subplot()函数及subimage()函数实现频谱图及原图像的对比显示;
4.对比自定义实现的傅立叶变换函数与Matlab函数fft2 ()对同一图像转换的结果以及执行时间。
5.对比自定义实现的傅立叶反变换函数与Matlab函数ifft2 ()对同一图像转换的结果以及执行时间。
6.掌握fftshift()、ifftshift()等函数的使用。
7.掌握傅立叶频谱得到幅度谱和相位谱的处理方法。
8.对不同频率的正弦光栅化图像进行频域转换,对比正弦光栅化图像与幅度谱及相位谱之间的属性关系。

运行结果(写清题号)
描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果和源代码,并进行必要的讨论,必须包括原始图像及其计算/处理后的图像以及相应的解释。
编程实现二维图像的离散傅立叶变换及傅立叶反变换
代码原理和运行图:
离散傅里叶变换:
clc; clear;
data = imread(‘rice.tif’);
data = im2double(data);
%data = rgb2gray(data);
subplot(1,3,1);
imshow(data);
title(‘原始图像’)
zidai = fft2(data); % matlab自带函数
subplot(1,3,2);
imshow(real(zidai));
title(‘软件端的fft2函数生成的"频域"图像’);
size_data = size(data);
M = size_data(1);
N = size_data(2);
Wm = exp(-j2pi/M);
Wn = exp(-j2pi/N);
Em = zeros(M);
En = zeros(N);
Gm = zeros(M)+Wm;
Gn = zeros(N)+Wn;
F = zeros(M,N);
fprintf(‘二维离散傅里叶变换开始:\n’);
for row = 0:M-1
for col = 0:M-1
Em(row+1,col+1) = row * col;
Gm(row+1,col+1) = Gm(row+1,col+1)^Em(row+1,col+1);
end
end
for row = 0:N-1
for col = 0:N-1
En(row+1,col+1) = row * col;
Gn(row+1,col+1) = Gn(row+1,col+1)^En(row+1,col+1);
end
end
F = real(GmdataGn);
subplot(1,3,3);
imshow(F);
title(‘自编的myfft2函数生成的"频域"图像’);
运行图:在这里插入图片描述

傅里叶反变换:
代码原理:
F = fft2(data);
size_data = size(F);
M = size_data(1);
N = size_data(2);
Wm = exp(-j2pi/M);
Wn = exp(-j2pi/N);
Em = zeros(M);
En = zeros(N);
Gm = zeros(M)+Wm;
Gn = zeros(N)+Wn;
f = zeros(M,N);
for row = 0:M-1
for col = 0:M-1
Em(row+1,col+1) = -row * col;
Gm(row+1,col+1) = Gm(row+1,col+1)^Em(row+1,col+1);
end
end
Gm = Gm/M;
for row = 0:N-1
for col = 0:N-1
En(row+1,col+1) = -row * col;
Gn(row+1,col+1) = Gn(row+1,col+1)^En(row+1,col+1);
end
end
Gn = Gn/N;
f = real(GmFGn);
subplot(144);imshow(f);title(‘自编的myifft2函数生成的图像’);
运行图:在这里插入图片描述

利用fft2 ()函数实现一幅图像的傅里叶正变换,并使用subplot()函数及subimage()函数实现原图像及频谱图的对比显示;
代码实现与运行图:
i=imread(‘you.jpg’);
size(i);
f=fft2(i);
subplot(221);imshow(i);title(‘原图像’);
subplot(222);imshow(f);title(‘傅里叶变换–频谱图’);

在这里插入图片描述

利用ifft2 ()函数实现频谱图像的傅里叶反变换,并使用subplot()函数及subimage()函数实现频谱图及原图像的对比显示;
代码实现与运行图:
i=imread(‘you.jpg’);
size(i);
f=fft2(i);
subplot(221);imshow(i);title(‘原图像’);
subplot(222);imshow(f);title(‘傅里叶变换–频谱图’);
%subplot(223);subimage(i);title(‘原图像’);
%subplot(224);subimage(f);title(‘傅里叶变换图像’);
F=ifft(f);
subplot(223);imshow(i);title(‘傅里叶反变换’);
k=ifft(F)/255;
subplot(224);imshow(k);title(‘傅里叶反变换–频谱图’);
在这里插入图片描述

对比自定义实现的傅立叶变换函数与Matlab函数fft2 ()对同一图像转换的结果以及执行时间。
系统自带傅里叶函数变换时间:
时间已过 0.010026 秒。
自定义二维离散傅里叶变换开始:
时间已过 0.411661 秒。

对比自定义实现的傅立叶反变换函数与Matlab函数ifft2 ()对同一图像转换的结果以及执行时间。
系统自带的傅里叶反变换函数运行时间:
时间已过 0.115148 秒。
自编的傅里叶反变换函数运行时间:
时间已过 0.367504 秒。

掌握fftshift()、ifftshift()等函数的使用。
代码实现与运行图:
%fftshift()原点移动到频率矩形的中心
fftl=fft2(i);
sfftl=fftshift(fftl);
A=abs(sfftl);
B=(A-min(min(A)))/(max(max(A))-min(min(A)))*255;
ifc=ifftshift(fc);
subplot(425);imshow(B);title(‘原点居中处理’);
%ifftshift()
lsfftl=ifftshift(sfftl);
A1=abs(lsfftl);
B1=(A1-min(min(A1)))/(max(max(A1))-min(min(A1)))*255;
subplot(426);imshow(B1);title(‘原点四角分散处理’);
二维图像:
在这里插入图片描述
三维图像:(报错)维度冲突
在这里插入图片描述

掌握傅立叶频谱得到幅度谱和相位谱的处理方法。
i=imread(‘rice.tif’);
subplot(221);imshow(i);title(‘原图像’);
fi=i(:,:,1);
fi=fft2(i);%傅里叶变换
fi=fftshift(fi);%对图像频谱进行移动,是0频率点在中心
si=log(abs(fi));
phi=log(angle(fi)*180/pi);
subplot(222);imshow(fi);title(‘图像的傅里叶变换频谱’);
subplot(223);imshow(si,[]);title(‘图像的傅里叶变换的幅度谱’);
subplot(224);imshow(phi,[]);title(‘图像的傅里叶变换的相位谱’);
在这里插入图片描述

对不同频率的正弦光栅化图像进行频域转换,对比正弦光栅化图像与幅度谱及相位谱之间的属性关系。
代码实现:
imA=imread(‘low.png’);
imB=imread(‘middle.png’);
imC=imread(‘high.png’);
FA = imA(:,:,1);
FB = imB(:,:,1);
FC = imC(:,:,1);
FA=fft2(FA);
FB=fft2(FB);
FC=fft2(FC);
fA=fftshift(FA);
fB=fftshift(FB);
fC=fftshift(FC);
sA=log(abs(fA));
sB=log(abs(fB));
sC=log(abs(fC));
phA=log(angle(fA)*180/pi);
phB=log(angle(fB)*180/pi);
phC=log(angle(fC)*180/pi);
figure(1);
subplot(3,3,1);imshow(imA);title(‘原图像A’);
subplot(3,3,2);imshow(imB);title(‘原图像B’);
subplot(3,3,3);imshow(imC);title(‘原图像C’);
subplot(3,3,4);imshow(sA,[]); title(‘低频图像幅度谱’);
subplot(3,3,5);imshow(phA,[]);title(‘低频图像相位谱’);
subplot(3,3,6);imshow(sB,[]);title(‘中频图像幅度谱’);
subplot(3,3,7);imshow(phB,[]);title(‘中频图像相位谱’);
subplot(3,3,8);imshow(sC,[]);title(‘高频图像幅度谱’);
subplot(3,3,9);imshow(phC,[]);title(‘高频图像相位谱’);
运行图:
在这里插入图片描述

实验的体会与思考题:
1.通过实验深化理解频域图像与时域图像的对应变化。
频域就是频率域,平常我们用的是时域,和时间有关,频域只和频率有关,是时间域的倒数。时域中,X轴是时间,频率中是频率,频域就是分析它的频率特性。无论是傅立叶变换还是小波变换,其实质都是一样的,既:将信号在时间域和频率域之间相互转换,从看似复杂的数据中找出一些直观的信息,再对它进行分析。由于信号往往在频域比有在时域更加简单和直观的特性,所以,大部分信号分析的工作是在频域中进行的。音乐——其实就是时/频分析的一个极好例子,乐谱 就是音乐在频域的信号分布,而音乐就是将乐谱变换到时域之后的函数。从音乐到乐谱,是一次傅立叶或小波变换;从乐谱到音乐,就是一次傅立叶或小波逆变换。
2.谈谈你所理解的频域。
频域:自变量是频率,即横轴是频率,纵轴是该频率信号的幅度,也就是频谱图,频谱图描述了信号的频率结构及频率与该频率信号幅度的关系。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值