数字图像处理Word格式.docx
《数字图像处理Word格式.docx》由会员分享,可在线阅读,更多相关《数字图像处理Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
DFT的定义如下。
设有限长序列
,它的离散傅里叶变换DFT定义为
(1)
根据式
(1)可以推出公式
(2)
式
(2)称为离散傅里叶反变换(IDFT)。
式
(1)和式
(2)构成一DFT变换对。
注意不要把离散傅里叶变换DFT和离散时间傅里叶变换DTFT混淆了。
DTFT是对任意序列的傅里叶变换,它的频谱是一个连续函数,而DFT是对有限长序列的离散傅里叶变换,DFT的特点是无论在时域还是在频谱都是离散的,而且都是有限长的。
DFT提供了使用计算机或DSP芯片来分析信号与系统的一种方法,尤其是DFT的快速算法FFT,在许多科学技术中得到了广泛的应用,并推动了数字信号处理技术及相关学科的迅速发展,这些内容会在数字信号处理课程有详细介绍,这里就不再多述。
一般为复数,可以写成实部和虚部的形式为
(3)
或者是幅度和相位的形式
(4)
其中幅度
称为序列
的幅度谱,相位
的相位谱,它们分别为
(5)
(6)
由于DFT只是对有限长序列进行的,所以,要讨论DFT、DTFT和z变换之间的关系,必须假设在有限长序列的前提下。
把DFT、DTFT和z变换的定义重写一遍
(7)
(8)
(9)
由此可见,单位圆上的z变换就是序列的DTFT,而单位圆上DTFT的
点均匀取样就是DFT。
二DFT在MATLAB中的应用
(一)序列的移位和周期延拓运算。
已知
,利用MATLAB生成并图示序列
其中
解:
MATLAB程序清单如下:
N=24;
M=8;
m=3;
%设移位值为3
n=0:
N-1;
xn=0.8.^n.*(n>
=0&
n<
M);
%产生序列x(n)
subplot(3,1,1);
stem(n,xn,'
.'
);
grid;
axis([0length(xn),01]);
title('
序列x(n)'
xc=xn(mod(n,8)+1);
%产生序列x(n)的周期延拓,求余后加1是因为
%MATLAB矢量的下标从1开始
subplot(3,1,2);
stem(n,xc,'
axis([0length(xc),01]);
序列x(n)的周期延拓序列'
xm=[xn(m+1:
M)xn(1:
m)];
%产生圆周移位序列xm=x((n+m))NRN(n)
xm=[xmzeros(1,N-length(xm))];
subplot(3,1,3);
stem(n,xm,'
axis([0length(xm),01]);
圆周移位序列x(n+m)'
(二)利用MATLAB验证N点DFT的物理意义。
试绘制出
幅度频谱和相位频谱,并分别计算N=8和N=16时的DFT。
clf%清除所有的图形窗口
N1=8;
N2=16;
%设置两种DFT的长度
N1-1;
k1=n;
k2=0:
N2-1;
w=(0:
2047)*2*pi/2048;
Xw=(1-exp(-j*4*w))./(1-exp(-j*w));
%对x(n)的频谱采样2048点
xn=[n>
4];
Xk1=fft(xn,N1);
%计算序列x(n)的8点DFT
Xk2=fft(xn,N2);
%计算序列x(n)的16点DFT
plot(w/pi,abs(Xw));
%绘制序列x(n)的DTFT的幅频曲线
序列x(n)的幅频曲线|X(e^{j\omega})|'
stem(k1*2/N1,abs(Xk1),'
序列x(n)的8点DFT'
stem(k2,abs(Xk2),'
序列x(n)的16点DFT'
%也可以利用MATLAB中的hold命令,将上述3个图形绘制在一个图中,程序如下:
hold%保持当前的图形窗口
H1=stem(k1*2/N1,abs(Xk1),'
o'
set(H1,'
color'
'
r'
)
H2=stem(k2*2/N2,abs(Xk2),'
*'
set(H2,'
k'
%legend('
|X(e^{j\omega})|'
X_1(k)'
X_2(k)'
(三)验证DFT的共轭对称性
分别以
两个序列为例,验证序列的DFT的对称性质。
程序略。
(四)利用MATLAB验证两个序列的线性卷积和圆周卷积的关系
已知两个有限长序列:
编写一个计算两个任意有限长序列的圆周卷积matlab程序,计算这两个序列以下几种情况的圆周卷积,并与这两个序列的线性卷积结果相比较:
①
⑤
②
⑥
⑨
③
⑩
(五)利用快速卷积法计算两个序列的卷积
已知序列
试利用快速卷积法计算这两个序列的卷积
。
快速卷积法的计算框图如下所示:
Nx=15;
Nh=20;
n1=1:
Nx-1;
n2=0:
Nh-1;
xn=sin(0.4*n1).*(n1>
n1<
Nx);
hn=0.9.^n2.*(n2>
n2<
Nh);
%产生序列h(n)
L=pow2(nextpow2(Nx+Nh-1));
%计算对序列x(n)和h(n)卷积后得到序列yn的长度
Xk=fft(xn,L);
%对序列x(n)作L点DFT
Hk=fft(hn,L);
%对序列h(n)作L点DFT
yn=ifft(Xk.*Hk);
三DFT的应用
DFT在诸多多领域中有着重要应用,下面仅是颉取的几个例子。
需要指出的是,所有DFT的实际应用都依赖于计算离散傅里叶变换及其逆变换的快速算法,即快速傅里叶变换。
快速傅里叶变换
快速傅里叶变换(即FFT)是计算离散傅里叶变换及其逆变换的快速算法。
按照DFT的定义计算一个长为n的序列的DFT需要的计算复杂度达到了
,而同样长度FFT的计算复杂度仅为
由于DFT的逆变换可以由DFT表示,所以DFT逆变换的计算同样可以由FFT完成。
FFT算法的提出,使DFT得到了广泛的实际应用。
频谱分析
前面指出,DFT是连续傅里叶变换的近似。
因此可以对连续信号x(t)均匀采样并截断以得到有限长的离散序列
,对这一序列作离散傅里叶变换,可以分析连续信号x(t)频谱的性质。
前面还提到DFT应用于频谱分析需要注意的两个问题:
即采样可能导致信号混叠和截断信号引起的频谱泄漏。
可以通过选择适当的采样频率(见奈奎斯特频率)消减混叠。
选择适当的序列长度并加窗可以抑制频谱泄漏。
数据压缩
由于人类感官的分辨能力存在极限,因此很多有损压缩算法利用这一点将语音、音频、图像、视频等信号的高频部分除去。
高频信号对应于信号的细节,滤除高频信号可以在人类感官可以接受的范围内获得很高的压缩比。
这一去除高频分量的处理就是通过离散傅里叶变换完成的。
将时域或空域的信号转换到频域,仅储存或传输较低频率上的系数,在解压缩端采用逆变换即可重建信号。
解偏微分方程
离散傅里叶变换及其多维形式在偏微分方程的求解中也有应用。
此时DFT被看作傅里叶级数的近似。
傅里叶级数将函数在复指数einx上展开,这正是微分算子的特征方程:
d/dx
einx
=
in
einx。
因此,通过傅里叶级数的形式,线性常微分方程被转换为代数方程,而后者是很容易求解的。
此时得到的结果是偏微分方程解的级数表示,只要通过DFT逆变换即可得到其一般表示。
这种方法被称作谱方法或级数解法。
OFDM
OFDM(正交频分复用)在宽带无线通信中有重要的应用。
这种技术将带宽分为N个等间隔的子载波,可以证明这些子载波相互正交。
尤其重要的是,OFDM调制可以由IDFT实现,而解调可以由DFT实现。
OFDM还利用DFT的移位性质,在每个帧头部加上循环前缀(CyclicPrefix),使得只要信道延时小于循环前缀的长度,就能消除信道延时对传输的影响。
四.总结
离散傅里叶变换(DFT)是数字信号处理中重要的数学变换,DFT之所以重要,是因为其实质是有限长序列傅里叶变换的有限点离散采样,从而实现了频域离散化,使数字信号处理可以在频域采用数值运算的方法进行,这样就大大增加了数字信号处理的灵活性。
更重要的是,DFT有多种快速算法,统称为快速傅里叶变换,从而使信号的实时处理和设备的简化得以实现.DFT不仅在理论上有重要意义,而且在各种信号的处理中亦骑着核心作用。
任意一个信号都具有时域与频域特性,信号的频谱完全代表了信号,因而研究信号的频谱就等于研究信号本身。
通常从频域角度对信号进行分析与处理,容易对信号的特性获得深入的了解。
因此,信号的频谱分析是数字信号处理技术中的一种较为重要的工具,而且。
Matlab软件是目前全世界范围内非常流行的具有很强的科学计算和图形界面的软件系统。
利用Matlab的强大的算功能,可以解决数字信号处理过程中遇到的许多问题。
本文给出了基于Matlab软件实现信号DFT变换和FFT频谱分析的方法。
利用Matlab软件方法,使得设计方便、快捷,大大减轻了工作量。
并且,在信号DFT变换中可以清楚得看到DFT变换结果和截取长度之间的关系。
通过编程仿真可以得到序列的幅频特性曲线,便于对信号进行谱分析。
随着Matlab软件版本的不断提高,其功能越来越强大,在数字信号处理、数字图像处理、仿真、自动控制等领域的应用也会有越来越广阔的前景。