数字图像处理_旋转与幅度谱(含MATLAB代码)
数字图像处理与应用(MATLAB版)课后题答案
第一章
1. 什么是图像?如何区分数字图像和模拟图像?模拟图像和数字图像如何相互转换?
答:图像是当光辐射能量照在物体上,经过反射或透射,或由发光物体本身发出的光能量,在人的视觉器官中所重现出的物体的视觉信息。数字图像将图像看成是许多大小相同、形状一致的像素组成。这样,数字图像可以用二维矩阵表示。将自然界的图像通过光学系统成像并由电子器件或系统转化为模拟图像(连续图像)信号,再由模拟/数字转化器(ADC)得到原始的数字图像信号。图像的数字化包括离散和量化两个主要步骤。在空间将连续坐标过程称为离散化,而进一步将图像的幅度值(可能是灰度或色彩)整数化的过程称为量化。
2. 什么是数字图像处理?
答:数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。
3. 数字图像处理系统有哪几部分组成?各部分的主要功能和常见设备有哪些?答:一个基本的数字图像处理系统由图像输入、图像存储、图像输出、图像通信、图像处理和分析5个模块组成,如下图所示。
各个模块的作用分别为:
图像输入模块:图像输入也称图像采集或图像数字化,它是利用图像采集设备(如数码照相机、数码摄像机等)来获取数字图像,或通过数字化设备(如图
像扫描仪)将要处理的连续图像转换成适于计算机处理的数字图像。
图像存储模块:主要用来存储图像信息。
图像输出模块:将处理前后的图像显示出来或将处理结果永久保存。
图像通信模块:对图像信息进行传输或通信。
图像处理与分析模块:数字图像处理与分析模块包括处理算法、实现软件和数字计算机,以完成图像信息处理的所有功能。
matlab 信号的幅频
在MATLAB中,可以使用傅里叶变换对信号进行频谱分析,从而得到信号的幅频特性。
首先,需要对信号进行傅里叶变换,可以使用MATLAB内置的fft 函数进行快速傅里叶变换。然后,对得到的频谱进行幅度谱的计算,幅度谱是各个频率分量的幅度随频率的变化情况。
在MATLAB中,可以使用Spectrum.m函数生成单边频谱图和双边频谱图,从而观察信号的幅频特性。具体实现过程可以参考以下代码示例:
```matlab
生成一个简单的正弦波信号
fs = 1000; 采样频率
t = 0:1/fs:1-1/fs; 时间向量
f = 50; 信号频率
y = sin(2*pi*f*t); 信号表达式
对信号进行傅里叶变换
N = length(y); 信号长度
Xf = fft(y)/N; 快速傅里叶变换
计算幅度谱
Xf_amp = abs(Xf)/N; 绝对值幅度谱
绘制单边频谱图
figure; 建立窗口放频谱
subplot(3,1,1); 建立空图形
plot(t,y); 输出原波形
title('波形图'); 设置标题
xlabel('时间'); 设置x轴标签
ylabel('幅值'); 设置y轴标签
f = [0:N/2]*fs/N; 横坐标范围[0:fs/2]
subplot(3,1,2); 建立空图形
plot(f,Xf_amp(1:N/2)); 输出单边频谱,取一半数据绘图
title('单边频谱图'); 设置标题
xlabel('频率'); 设置x轴标签
ylabel('幅度'); 设置y轴标签
```
以上代码生成了一个简单的正弦波信号,并对其进行了傅里叶变换和幅度谱的计算。然后,绘制了单边频谱图和波形图,可以观察到信号的幅频特性。
数字图像处理上机作业
数字图像处理上机实验题
一、产生右图所示图像f1(m,n),其中图像大小为256×256,中间亮条为128×32,暗处
=0,亮处=100。对其进行FFT:
1、屏显示原图f1(m,n)和FFT(f1)的幅度谱图;
2、令f2(m,n)=(-1)^(m+n)*f1(m,n),重复以上过程,比较二者幅度谱的异同,简述理由;
3、若将f2(m,n)顺时针旋转90 度得到f3(m,n),试显示FFT(f3)的幅度谱,并与FFT(f2)
的幅度谱进行比较;
4、若将f1(m,n) 顺时针旋转90 度得到f4(m,n),令f5(m,n)=f1(m,n)+f4(m,n),试显示FFT(f5) 的幅度谱,并指出其与FFT(f1)和FFT(f4)的关系;
5、若令f6(m,n)=f2(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与FFT(f 2)和FFT(f3) 的关系,比较FFT(f6)和FFT(f5)的幅度谱。
代码
f1=zeros(256,256);
for i =64:1:191
for j = 112:1:143
f1(i,j) = 100;
end
end
f2 = fft2(f1);
%f2(m,n) = f3
f3 = ((-1)^(i+j))*f1;
f4 = fft2(f3);
%f3(m,n) = f5
f5 = imrotate(f3,90,'bilinear');
f6 = fft2(f5);
%f4(m,n) = f7
f7 = imrotate(f1,90,'bilinear');
f8 = fft2(f7);
数字图像处理实验报告
《数字图像处理》
实验报告
目录
第一章实验一数字图像的基本操作和灰度变换 (3)
1.1实验目的 (3)
1.2实验原理与方法 (3)
1.3实验内容与结果分析 (4)
1.4思考问题 (8)
第二章实验二图像的空间域增强 (9)
2.1实验目的 (9)
2.2实验原理与方法 (9)
2.3实验内容与结果分析 (10)
2.4思考问题 (16)
第三章实验三图像的傅里叶变换和频域处理 (17)
3.1实验目的 (17)
3.2实验原理与方法 (17)
3.3实验内容与结果分析 (18)
附录:实验代码 (23)
第一章
实验一数字图像的基本操作和灰度变换
1.1实验目的
①了解数字图像的基本数据结构
②熟悉Matlab中数字图像处理的基本函数和基本使用方法
③掌握图像灰度变换的基本理论和实现方法
④掌握直方图均衡化增强的基本理论和实现方法
1.2实验原理与方法
1.2.1图像灰度的线性变换
灰度的线性变换可以突出图像中的重要信息。通常情况下,处理前后的图像灰度级是相同的,即处理前后的图像灰度级都为[0,255]。那么,从原理上讲,我们就只能通过抑制非重要信息的对比度来腾出空间给重要信息进行对比度展宽。
设原图像的灰度为),(j i f ,处理后的图像的灰度为),(j i g ,对比度线性展宽的原理示意图如图1.1所示。假设原图像中我们关心的景物的灰度分布在[a f ,b f ]区间内,处理后的图像中,我们关心的景物的灰度分布在[a g ,b g ]区间内。在这里)(a b g g g -=∆()b a f f f >∆=-,也就是说我们所关心的景物的灰度级得到了展宽。根据图中所示的映射关系中分段直线的斜率我们可以得出线性对比度展宽的计算公式:
基于MATLAB的信号的频谱分析
基于MATLAB的信号的频谱分析
信号频谱分析是一种将时域信号转换为频域信号的方法。频谱分析可以帮助我们了解信号的频率成分、频率特性以及频率分布情况。MATLAB 是一种强大的信号处理工具,提供了丰富的函数和工具用于频谱分析。
在MATLAB中,频谱分析主要通过使用FFT(快速傅里叶变换)来实现。FFT可以将时域信号转换为频率域信号,它是一种高效的计算算法,可以快速计算信号的频谱。
首先,我们需要先读取信号数据并将其转换为MATLAB中的矩阵数据形式。可以使用`load`函数读取信号数据,然后将其存储为一个向量或矩阵。
```matlab
data = load('signal_data.txt');
```
接下来,我们可以使用`fft`函数对信号进行频谱分析。`fft`函数会返回一个复数向量,表示信号在频率域的频率分量。
```matlab
fs = 1000; % 采样频率
N = length(data); % 信号长度
frequencies = (0:N-1)*(fs/N); % 计算频率坐标轴
spectrum = fft(data); % 进行FFT变换
```
在以上代码中,我们先计算了信号的采样频率`fs`和信号的长度`N`。然后使用这些参数计算频率坐标轴`frequencies`。最后使用`fft`函数对
信号进行FFT变换,得到信号的频谱`spectrum`。
为了得到信号的幅度谱图,我们可以使用`abs`函数计算复数向量的
绝对值。
```matlab
amplitude_spectrum = abs(spectrum);
matlab做出傅里叶变换的幅度谱
在进行傅里叶变换的幅度谱时,Matlab是一个非常强大的工具。通过Matlab,我们可以方便地进行信号处理、频谱分析和图像处理,从而
深入理解信号的频谱特性和频域表现。
让我们来解释一下什么是傅里叶变换的幅度谱。傅里叶变换是将一个
函数从时域转换到频域的过程,它可以将一个信号分解成不同频率的
正弦和余弦分量。而幅度谱则表示了信号在不同频率下的幅度大小,
可以帮助我们分析信号的频率成分和特性。在Matlab中,我们可以
通过简单的几行代码就能够实现傅里叶变换和幅度谱的计算,使我们
能够更直观地理解信号的频谱特性。
接下来,让我们来看一下如何在Matlab中实现傅里叶变换的幅度谱。我们需要使用Matlab中的fft函数来进行傅里叶变换,然后再通过ifftshift函数将零频率移到频谱的中心位置,最后再通过abs函数来获取频谱的幅度值。通过这样的一系列操作,我们就可以得到信号的幅
度谱,从而更好地理解信号在频域中的特性。
在实际的工程应用中,傅里叶变换的幅度谱可以帮助我们分析信号的
频率成分、寻找频率特征、进行滤波处理等。通过Matlab,我们可以精确地计算出信号的幅度谱,并进行后续的频谱分析和处理,从而更
好地理解信号的特性和频域表现。
Matlab是一个非常强大的工具,可以帮助我们方便地进行傅里叶变换
和幅度谱的计算。通过Matlab,我们可以更好地理解信号的频域特性,进行频谱分析和处理,从而更好地应用于实际工程中。希望通过本文
的介绍,你能对Matlab中傅里叶变换的幅度谱有更深入的理解和应用。
希望本篇文章对你有所帮助,谢谢阅读!
数字图像处理实验
目录
实验1 数字图像处理的MATLAB基础................. 错误!未定义书签。实验2 灰度图像增强.. (2)
实验3 空域滤波 (4)
实验4 图像的二维傅里叶变换和频谱 (6)
实验5 图像频域增强 (8)
实验6 图像复原.................................. 错误!未定义书签。实验7 彩色图像变换. (11)
实验8 彩色图像滤波 (13)
实验9 图像边缘检测 (15)
附录一图像数据文件格式 (17)
附录二实验报告格式 (20)
实验2 灰度图像增强
一、实验目的
通过本实验使学生掌握使用MATLAB对灰度图像进行空域增强的目的,加深对空域图像增强的理解。
二、实验原理
本实验是基于数字图像处理课程中的图像变换和增强理论来设计的。
本实验的准备知识:教材第三章,空域图像增强方法。重点如下:
1、直方图和直方图均衡
通过实验领悟图像的直方图的含义,加深对图像直方图概念的理解,并且能够掌握直方图均衡的方法和效果。
画图像的直方图命令, imhist(A)
直方图均衡命令, Aeq=histeq(A)
2、基本灰度变换
3、同屏显示图像的函数
图形窗口分区的命令为 subplot, 例如subplot (2,2,1) 是将图形窗分为2×2的4个区,在第1个区画图。示例
figure
subplot(1,2,1) imshow(A);
subplot(1,2,2) imshow(Aeq);
将图形窗口分为两个区,分别显示图像A和Aeq。
三、实验内容
(一)直方图均衡
1、读入lena_gray.tif图像文件,画出其直方图,并解释之;
数字图像处理-旋转与幅度谱(含MATLAB代码)
数字图像处理实验一
15生医
一、实验内容
产生右图所示图像 f1(m,n),其中图像大小为256
×256,中间亮条为128×32,暗处=0,亮处=100。
对其进行FFT:
①同屏显示原图f1(m,n)和FFT(f1)的幅度谱图;
②若令f2(m,n)=(-1)^(m+n)f1(m,n),重复
以上过程,比较二者幅度谱的异同,简述理由;
③若将f2(m,n)顺时针旋转90度得到f3(m,n),试显示FFT(f3)的
幅度谱,并与FFT(f2)的幅度谱进行比较;
④若将f1(m,n) 顺时针旋转90度得到f4(m,n),令f5(m,n) = f1(m,n) + f4(m,n),试显示FFT(f5)的幅度谱,指出其与 FFT(f1)和FFT(f4)的关系;
⑤若令f6(m,n)=f2(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与 FFT(f2)和FFT(f3)的关系,比较FFT(f6)和FFT(f5)的幅度谱。
二、运行环境
MATLAB R2014a
三、运行结果及分析
1.同屏显示原图f1(m,n)和FFT(f1)的幅度谱图:
2.令f2(m,n)=(-1)^(m+n )f1(m,n),对其进行FFT ,比较f2与f1幅度谱的异同,简述理由:
异同及理由:①空域:f2由于前边乘了系数(-1)^(m+n ),导致灰度值有正有负,而在MATLAB 的imshow 函数中默认把负值变为0(有些情况是取反),所以形成了如左图所示的黑白花纹。②频域:
50100150200250
50100150200250
数字图像处理第二版MatLab代码大全
3.8.2 Radon 变换的 MATLAB 实现 例 3.8 真彩图像的 Radon 变换 MATLAB 程序如下: RGB=imread('image2.jpg'); %装入真彩图像 GRAY=rgb2gray(RGB); %将真彩图像转换为灰度图像 figure(2); imshow(GRAY); %显示灰度图像如图 3.16(a) [R,xp] = radon(GRAY,[0 45]); %计算变换角度为 0° 和 45° 的 Radon 变换 figure; plot(xp,R(:,1)); title('R_{0^o} (x\prime)') %显示 0° 方向上的 Radon 变换如图 3.16(b) figure; plot(xp,R(:,2)); title('R_{45^o} (x\prime)') %显示 45° 方向上的 Radon 变换如图 3.16(c)
9
xlabel(‘\theta (degrees)’); ylabel(‘X\prime’); set(gca,’Xtick’,0:20:180); colormap(hot); colorbar;
“ )” %显示 x 坐标 (degrees
%显示 y 坐标 x' %设置 x 坐标刻度 %设置调色板 %显示当前图像的调色板
“ ”
第4章
数字图像处理实验图像频谱分析
姓名:朱慧娟班级:电子二班学号:410109060325
实验2 图像频谱分析
一、实验目的
1、了解图像变换的意义和手段。
2、熟悉及掌握图像的变换原理及性质,实现图像的傅里叶变换。
二、实验内容
1、分别显示图像Bridge.bmp、cameraman.tif(自带图像)、blood.tif及其频谱,观察图像频谱的特点。
2、生成一幅图像,图像中背景黑色,目标为一亮条;平移亮条,观察其频谱的变化。
3、对lena.bmp图像进行旋转,显示原始图像与旋转后图像,及其傅里叶频谱,分析旋转前、后傅里叶频谱的对应关系。
三、实验程序及结果
1.1 实验程序
clear; %清除以前实验变量
a=imread('e:\ZHJ\Bridge.bmp'); %读入图像Bridge.bmp,并记为a
b=imread('cameraman.tif'); %读入图像cameraman.tif,并记为b
c=imread('e:\ZHJ\blood.tif'); %读入图像blood.tif,并记为c
d=fft2(a); %对图像a进行傅里叶变换,并记为d
e=fftshift(d); %将变换后图像频谱中心从矩阵的原点移动到矩阵的中心,并记为e A=abs(e); %对e取绝对值,及得到图像a的幅度谱,并记为A
B=log(1+A); %对幅度谱A取对数,并记为B
f=fft2(b); %对图像b进行傅里叶变换,并记为f
g=fftshift(f); %将变换后图像频谱中心从矩阵的原点移动到矩阵的中心,并记为g C=abs(g); %对g取绝对值,及得到图像b的幅度谱,并记为C
DIP作业
数字图像处理上机作业
上机实验一:
1>同屏显示原图f1(t)与FFT(t)的幅度谱,得到matlab 图形如下:
f1的时域图
5010015020025050100150200
250
f1的幅度谱
5010015020025050100150200
250
f1的幅度谱放大
50
100150200
250
100
150
2> f2的幅度谱分布在图像的上下边沿,而f1 的幅度谱分布在图像中心部分。
f2(m,n)=n
m +-)(1f1(m,n),在频域F(u-
2
N ,v-
2
N ),故而可以使f(m,n)的频谱从
原点移到中心点(
2
N ,
2
N ),即频谱中心化。
f2的时域图
50100150200250
50100150200
250
f2的幅度谱
5010015020025050100150200
250
f2的幅度谱放大
3>在90°旋转之前f2的幅度谱分布在图像的上下两个边沿,在x 轴方向分布,
经过旋转,得到的f3的幅度谱在y 轴方向分布,与旋转前得幅度谱呈90°。
f3的幅度谱
5010015020025050100150200
250
f2的幅度谱
5010015020025050100150200
250
f3的幅度谱放大
0500
50
100
150
200
250
f5的幅度谱
5010015020025050100150200
250
f1的幅度谱
5010015020025050100150200
250
f4的幅度谱
5010015020025050100150200
250
f5的幅度谱放大100150050100150200
250f4的幅度谱放大
matlab幅度谱
在MATLAB中,幅度谱通常可以通过对信号进行傅里叶变换并取其模平方来计算。以下是一个简单的示例,说明如何计算信号的幅度谱:
matlab复制代码
% 生成一个简单的正弦波信号
Fs = 1000; % 采样频率
t = 0:1/Fs:1-1/Fs; % 时间向量
f = 50; % 频率
x = sin(2*pi*f*t); % 正弦波信号
% 对信号进行傅里叶变换
n = length(x); % 信号长度
X = fft(x, n); % 进行FFT运算
% 计算幅度谱
P2 = abs(X).^2/n; % 幅度谱
% 绘制幅度谱
figure;
plot(f*Fs/2, P2); % 绘制幅度谱
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Magnitude Spectrum');
在这个示例中,我们首先生成了一个频率为50Hz的正弦波信号。然后,我们对信号进行傅里叶变换,并计算其幅度谱。最后,我们绘制了幅度谱的图像。
请注意,这只是一个简单的示例,并且可能不适用于所有情况。在实际应用中,您可能需要对信号进行更复杂的处理和分析。
matlab中幅度频谱和相位频谱
幅度频谱和相位频谱是数字信号处理中常用的概念,在MATLAB中,我们经常会用到这两个频谱来分析信号的特性。本文将介绍在MATLAB中如何计算和绘制幅度频谱和相位频谱,并探讨它们在信号处理中的应用。
一、幅度频谱的计算与绘制
在MATLAB中,可以使用fft函数来计算时域信号的频谱。假设有一个长度为N的时域信号x(n),使用fft函数对其进行傅里叶变换可以得到其频谱X(k),其中k为频率索引。幅度频谱可以通过X(k)的幅度来表示,即abs(X(k))。下面是一个简单的示例代码:
```matlab
N = 1024;
fs = 1000;
t = 0:1/fs:(N-1)/fs;
x = cos(2*pi*100*t) + 0.5*cos(2*pi*200*t);
X = fft(x, N);
f = (0:N-1)*(fs/N);
amplitude_spectrum = abs(X);
plot(f, amplitude_spectrum);
xlabel('Frequency (Hz)');
ylabel('Amplitude');
在这个示例中,我们首先生成了一个包含两个不同频率成分的信号
x(n),然后使用fft函数计算了其频谱X(k),最后绘制了幅度频谱。可以看到,通过这段简单的代码我们就可以很容易地计算和绘制信号的幅度频谱了。
二、相位频谱的计算与绘制
与幅度频谱类似,相位频谱在MATLAB中同样可以通过fft函数来计算。相位频谱可以通过X(k)的相位来表示,即angle(X(k))。下面是一个示例代码:
matlab频谱的代码
matlab频谱的代码
频谱是一种用于分析信号在不同频率上的能量分布的工具。在MATLAB中,可以使用多种函数来计算和绘制频谱,其中最常用的是FFT (快速傅里叶变换)。
1.准备信号数据
首先,我们需要准备待分析的信号数据。假设我们有一个包含音频信号的音频文件,可以使用MATLAB的`audioread`函数将音频文件读取为一个向量。
```matlab
filename = 'audio.wav';
[data, Fs] = audioread(filename);
```
这里,`data`是存储音频数据的向量,`Fs`是采样率(每秒采样点数)。
2.计算信号的频谱
接下来,我们使用MATLAB的`fft`函数对信号进行傅里叶变换,然后计算信号的幅度谱。
```matlab
N = length(data);
Y = fft(data);
P2 = abs(Y/N);
P1=P2(1:N/2+1);
P1(2:end-1) = 2某P1(2:end-1);
freq = 0:Fs/N:Fs/2;
```
这里,`N`是信号数据的长度,`Y`是信号的傅里叶变换结果,`P2`是傅里叶变换结果的幅度谱,`P1`是幅度谱的前一半(对称性质),`freq`是频率向量。
3.绘制频谱图
最后,我们使用MATLAB的`plot`函数将频谱绘制出来。
```matlab
plot(freq, P1);
title('频谱图');
某label('频率(Hz)');
ylabel('幅度');
```
这样就完成了频谱的计算和绘制。可以通过调整信号数据的长度、窗口函数等参数来进一步优化频谱的分析效果。
matlab幅度频谱
matlab幅度频谱
答:在MATLAB中,幅度频谱可以使用FFT(Fast Fourier Transform)算法来计算。具体步骤如下:
1. 首先,确定信号的采样率和信号长度,可以用Fs和N来表示。
2. 其次,对信号进行FFT计算,可以用Y来表示计算结果。
3. 最后,计算幅度谱,可以用P来表示。具体来说,幅度谱是各个分量的幅度随频率的变化情况。
在MATLAB中,可以使用内置的fft函数来进行FFT分析。具体代码如下:
Fs = 1000; % 采样率为1000 Hz
N = length(y); % 信号长度为N
Y = fft(y); % 计算FFT
f = Fs*(0:(N/2))/N; % 获取频率向量
P = abs(Y/N); % 计算幅值
plot(f,P); % 绘制幅度-频率图
title('Single-Sided Amplitude Spectrum of y(t)'); % 添加标题
xlabel('Frequency (Hz)'); % 添加x轴标签
ylabel('|Y(f)|'); % 添加y轴标签
在上述代码中,y是输入信号,Fs是采样率,N是信号长度,Y是通过FFT计算得到的频域数据,f是频率向量,P是幅值数据。最后使用plot函数就可以绘制出数据的幅度谱(单侧频谱图)。
fft2绘制图像的对数幅度谱,比较图像旋转、平移和缩放后的频谱
数字图像处理实验报告
姓名: 学号: 日期:
一、实验要求
(1)熟悉fft2绘制图像的对数幅度谱,比较图像旋转、平移和缩放后的频谱
(2)用matlab读取和显示
二、实验代码
sina=imread('E:\数字图像处理\exp2\伊伽贝拉.jpg' ); %输入图像
if isrgb(sina)
sina=rgb2gray(sina); %如果图像为RGB则转换为灰度图end
subplot(3,2,1)
imshow(uint8(sina)) %显示图像
title('原图');
I1=fft2(sina); %对图像进行傅里叶变换
I1=fftshift(I1);
d1=log10(1+3*I1); %进行对数运算
subplot(3,2,2)
imshow(d1,[0,10])
sina1=imrotate(sina,30); %旋转图
subplot(3,2,3)
imshow(uint8(sina1))
title('旋转图');
I2=fft2(sina1);
I2=fftshift(I2);
d2=log10(1+3*I2);
subplot(3,2,4)
imshow(d2,[0,10])
sina2=imresize(sina,5); %缩放图
subplot(3,2,5)
imshow(uint8(sina2))
title('缩放图');
I3=fft2(sina2);
I3=fftshift(I3);
d3=log10(1+3*I3);
subplot(3,2,6)
imshow(d3,[0,10])
[m,n]=size(sina);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理实验一
15生医
一、实验内容
产生右图所示图像 f1(m,n),其中图像大小为256
×256,中间亮条为128×32,暗处=0,亮处=100。
对其进行FFT:
①同屏显示原图f1(m,n)和FFT(f1)的幅度谱图;
②若令f2(m,n)=(-1)^(m+n)f1(m,n),重复
以上过程,比较二者幅度谱的异同,简述理由;
③若将f2(m,n)顺时针旋转90度得到f3(m,n),试显示FFT(f3)的
幅度谱,并与FFT(f2)的幅度谱进行比较;
④若将f1(m,n) 顺时针旋转90度得到f4(m,n),令f5(m,n) = f1(m,n) + f4(m,n),试显示FFT(f5)的幅度谱,指出其与 FFT(f1)和FFT(f4)的关系;
⑤若令f6(m,n)=f2(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与 FFT(f2)和FFT(f3)的关系,比较FFT(f6)和FFT(f5)的幅度谱。
二、运行环境
MATLAB R2014a
三、运行结果及分析
1.同屏显示原图f1(m,n)和FFT(f1)的幅度谱图:
50100150200250
100150200250
50100150200250
100150200250
2.令f2(m,n)=(-1)^(m+n )f1(m,n),对其进行FFT ,比较f2与f1幅度谱的异同,简述理由:
50100150200250
100150200250
50100150200250
100150200250
异同及理由:①空域:f2由于前边乘了系数(-1)^(m+n ),导致灰度值有正有负,而在MATLAB 的imshow 函数中默认把负值变为0(有些情况是取反),所以形成了如左图所示的黑白花纹。②频域:FFT(2)
为FFT(1)中心化后的图像。空域进行乘以(-1)^(m+n )的操作,即相当于频域里的位移,实现频谱的中心化。
3.将f2(m,n)顺时针旋转90度得到f3(m,n),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较:
50100150200250
100150200250
50100150200250
100150200250
比较:空域图像旋转90度后,频域幅度谱也旋转90度。
4.将f1(m,n) 顺时针旋转90度得到f4(m,n),令f5(m,n) = f1(m,n) + f4(m,n),试显示FFT(f5)的幅度谱,指出其与 FFT(f1)和FFT(f4)
(a)亮块图像f1(m,n)50100150200250100150200250
(b) FFT(f1)幅度谱5010015020025050100150200250
旋转图像f4(m,n)5010015020025050100150200250
50100150200250100150200250
5010015020025050100150200250
5010015020025050100150200250
关系:空域里原图与其旋转90度后的图像进行叠加,在频域里也体现为相应幅度谱的叠加,即FFT(f5)=FFT(f1)+FFT(f4)。
5.令f6(m,n)=f2(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与 FFT(f2)和FFT(f3)的关系,比较FFT(f6)和FFT(f5)的幅度谱:
50100150200250100150200250
5010015020025050100150200250
5010015020025050100150200250
50100150200250100150200250
50100150200250100150200250
5010015020025050100150200250
100
150
200
250
50100150200250
关系:空域里原图与其旋转90度后的图像进行叠加,在频域里也体现为相应幅度谱的叠加,即FFT(f6)=FFT(f2)+FFT(f3)。
比较:FFT(6)为FFT(5)中心化后的图像。
四、心得体会
通过MATLAB编程更加熟练了课上的知识点,比如空域旋转频域也旋转,空域叠加频域也满足叠加关系。同时,对MATLAB实现傅里叶变换及其显示的机理也有所掌握,比如后边附的程序中会提到的
Note1-Note5的思考。
Note1:复数取绝对值后才可以二维图示;Note2:为什么这里要划分255个灰度级为什么是在频域里操作(可能的解释:用灰度来表示值的大小,越白值越大);Note3:空域进行此操作频域位移;Note4:双线性插值法;Note5:旋转坐标计算式:256*(1+0)
五、具体程序
(复制于matlab notebook)
% 产生亮块图像 0暗100亮
f1=zeros(256,256);
for m=64:192
for n=112:144
f1(m,n)=100;
end
end
figure(1);
subplot(1,2,1);
imshow(f1);
xlabel('(a)亮块图像f1(m,n)');
axis on;
% 求f1(m,n)的傅里叶变换
FFT_f1=fft2(f1);
% 求f1(m,n)的频谱
FFT_f1=abs(FFT_f1); % Note1:复数取绝对值后才可以二维图示tmax=FFT_f1(1,1);
tmin=FFT_f1(1,1);
for m=1:256
for n=1:256
if tmax tmax= FFT_f1(m,n); end if tmin> FFT_f1(m,n)