- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《信号处理原理》实验指导书
《信号处理原理》实验指导
【实验数据】
实验数据为一图像数据文件,文件格式是纯文本格式。文件正文的第一行的值表示矩阵的大小,即N值。后面的N行是点阵图像,每行有N个数据。N最大为256。在图像点阵中,‘.’代表0(即没有点), ‘o’代表1(即有点)。
具体内容见附件[Data.txt],这是一个“国”字的点阵文件。
【实验要求】
对输入图象文件内容进行2D-FFT变换,再对所得频谱数据进行2D-IFFT,将结果重新转换成字符文件保存起来。
对输入图象文件内容进行2D-FFT变换,再将频谱的大小压缩为(N/2)*(N/2),然后对所得频谱数据进行2D-IFFT,将结果重新转换成字符,保存成(N/2)*(N/2)的汉字图像。
对输入图象文件内容进行2D-FFT变换,再将频谱的大小压缩为(N/2)*(N/2),然后对频谱补入一些零,再对频谱进行2D-IFFT,将结果重新转换成字符,保存成(N/2)*(N/2)的汉字图像。
【实验原理】
一幅二维数字图像可以用矩阵[g(m,n)]来表示,g(m,n)是图像在坐标(m,n)处的灰度级(或彩色RGB值)。也可以把g(m,n)视为一个二元函数,它的自变量为m和n,则可以用它来表示数字图像在平面上的亮度分布。矩阵可以写成下面的形式:
在上面的基础上,我们可以定义下面的二维DFT:
定义1:二维矩阵向量[g(m,n)]的2D-DFT
,
从上面的定义我们可以看出:2D-DFT可以用两次1D-DFT来实现。一次是对g(m,n)的各行(即m相同而n不同)进行1D-DFT---如上式中的红色部分所示;再对变换后的结果,再按列进行1D-DFT---如上式中的蓝色部分所示。
上面这个公式是我们实现2D-DFT的算法基础。
定义2:二维矩阵谱向量[G(p,q)]的2D-IDFT
,
根据相同的想法,上面的2D-IDFT公式也可以用两次1D-IDFT来实现。
【2D-FFT算法实现】
二维FFT相当于对行和列分别进行一维FFT运算。具体的实现办法如下:
先对各行逐一进行一维FFT,然后再对变换后的新矩阵的各列逐一进行一维FFT。相应的伪代码如下所示:
for (int i=0; iM; i++)
FFT_1D(ROW[i],N);
for (int j=0; jN; j++)
FFT_1D(COL[j],M);
其中,ROW[i]表示矩阵的第i行。注意这只是一个简单的记法,并不能完全照抄。还需要通过一些语句来生成各行的数据。同理,COL[i]是对矩阵的第i列的一种简单表示方法。
所以,关键是一维FFT算法的实现。下面讨论一维FFT的算法原理。
【1D-FFT的算法实现】
设序列h(n)长度为N,将其按下标的奇偶性分成两组,即he和ho序列,它们的长度都是N/2。这样,可以将h(n)的FFT计算公式改写如下 :
………………… (A)
由于
所以,(A)式可以改写成下面的形式:
按照FFT的定义,上面的式子实际上是:
其中,k的取值范围是 0~N-1。
我们注意到He(k)和Ho(k)是N/2点的DFT,其周期是N/2。因此,H(k)DFT的前N/2点和后N/2点都可以用He(k)和Ho(k)来表示
而且
于是,N点H(k)用N/2点的He(k)和Ho(k)来计算的公式为:
(
【1D-FFT的算法流程】
根据上面推导的公式,我们可以用递归程序来实现1D-FFT。下面是一个示例:
void FFT_1D (Comp in[ ], Comp out[ ], int N)
{
Comp he[256], ho[256];
Comp He[256], Ho[256];
// 如果DFT点数为1,则根据DFT公式,可以直接返回原值
// 这是递归的退出条件
if (N==1)
{
out[0] = in[0];
}
else { // 如果N不是1,则…
// 按下标将数据分成两组
for (int i=0; iN/2; i++)
{
he[i] = in[2*i]; // 偶数下标分组
ho[i] = in[2*i+1]; // 奇数下标分组
}
// 计算偶数下标部分的N/2点DFT
FFT_1D(he, He, N/2);
// 计算奇数下标部分的N/2点DFT
FFT_1D(ho, Ho, N/2);
// 计算当前所有数据的N点DFT
for (int k=0; kN/2; k++)
{ // 下面计算式中的W[k]是旋转因子,可以事先计算好。
// 当前数据的前一半,N/2点
out[k] = He[k] + W[k]*Ho[k];
您可能关注的文档
- TBENS在印刷车间[,078MB]图尔克.PDF
- TamperEvidence确必威体育官网网址封纸盒,保障最高产品安全-Baumerhhs.PDF
- TGuide S32 自动核酸提取仪使用手册 - 天根生化科技.PDF
- Thermo Scientific μDrop Plate 对微升量的核酸进行浓度测定.PDF
- Thermo Scientific特殊应用色谱柱 - Thermo Fisher Scientific.PDF
- TG- DTA - FTIR 技术对煤氧化过程的规律性研究 - 煤炭学报.PDF
- TE模式增强型高效率同轴虚阴极振荡器-强激光与粒子束.PDF
- TilburgUniversity所在国家荷兰交换时间2016-2017学年秋季学期.PDF
- TiO2和Cr2O3作晶核剂对尾矿微晶玻璃析晶的影响-Journalof.PDF
- TL431与PC817应用开关电源的稳压反馈通常都使用TL431和PC817.PDF
文档评论(0)