信号处理原理实验指导精

上传人:博****1 文档编号:464393367 上传时间:2023-05-10 格式:DOC 页数:8 大小:56KB
返回 下载 相关 举报
信号处理原理实验指导精_第1页
第1页 / 共8页
信号处理原理实验指导精_第2页
第2页 / 共8页
信号处理原理实验指导精_第3页
第3页 / 共8页
信号处理原理实验指导精_第4页
第4页 / 共8页
信号处理原理实验指导精_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《信号处理原理实验指导精》由会员分享,可在线阅读,更多相关《信号处理原理实验指导精(8页珍藏版)》请在金锄头文库上搜索。

1、信号处理原理实验指导实验数据】实验数据为一图像数据文件,文件格式是纯文本格式。文件正文的第一 行的值表示矩阵的大小, 即 N 值。后面的 N 行是点阵图像, 每行有 N 个 数据。N最大为256。在图像点阵中,.代表0 (即没有点), o 代表 1(即有点)。实验要求】(1) 对输入图象文件内容进行 2DFFT 变换,再对所得频谱数据进行2D IFFT ,将结果重新转换成字符文件保存起来。(2) 对输入图象文件内容进行 2DFFT 变换,再将频谱的大小压缩为(N/2 ) *(N/2 ),然后对所得频谱数据进行 2DIFFT ,将结果重 新转换成字符,保存成( N/2 ) *(N/2 )的汉字图

2、像。(3) 对输入图象文件内容进行 2DFFT 变换,再将频谱的大小压缩为(N/2 )*(N/2 ),然后对频谱补入一些零, 再对频谱进行 2DIFFT , 将结果重新转换成字符,保存成( N/2 ) *(N/2 )的汉字图像。实验原理】一幅二维数字图像可以用矩阵 g(m,n) 来表示, g(m,n) 是图像在坐标(m,n) 处的灰度级(或彩色 RGB 值)。也可以把 g(m,n) 视为一个二元函数,它的自变量为m和n,则可以用它来表示数字图像在平面上的亮度分布。矩阵可以写成下面的形式:g(o,o) g(o,i) III g(0,Ni)X g(i,0) g(i,i) III g(i,N-i)g

3、 = g(m,n)=Fr.g(M -1,0) g(M -1,1) | g(M -1,N-1)_在上面的基础上,我们可以定义下面的二维DFT :定义1 :二维矩阵向量g(m,n)的2D-DFT-| 1G(p,q) = Fg(m,n)】=瓦丨产 g(m,n)WrNiq Wm=0 - _ n=0-0- p-M - 1, 0-q-N-1从上面的定义我们可以看出:2D-DFT可以用两次1D-DFT来实现。一 次是对g(m,n)的各行(即m相同而n不同)进行1D-DFT-如上式中 的红色部分所示;再对变换后的结果,再按列进行 1D-DFT-如上式中 的蓝色部分所示。上面这个公式是我们实现2D-DFT的算法

4、基础。定义2 :二维矩阵谱向量G(p,q)的2D-IDFT1 M -1 1 N 1g(m,n)= FFGgq);1G(p,q)W;nqWMmpM p=0 N q=00 咗 m 乞 M 一 1,0 乞 n N 一 1根据相同的想法,上面的2D-IDFT公式也可以用两次1D-IDFT来实现。【2D-FFT算法实现】二维FFT相当于对行和列分别进行一维FFT运算。具体的实现办法如下:先对各行逐一进行一维FFT,然后再对变换后的新矩阵的各列逐一进行 一维FFT。相应的伪代码如下所示:for (i nt i=0; iM; i+)FFT_1D(R0Wi ,N);for (i nt j=0; jN; j+)

5、FFT_1D(COLj ,M);其中,ROWi表示矩阵的第i行。注意这只是一个简单的记法,并不能完全照抄。还需要通过一些语句来生成各行的数据。同理,COLi是对矩阵的第i列的一种简单表示方法。所以,关键是一维FFT算法的实现。下面讨论一维 FFT的算法原理。【1D-FFT的算法实现】设序列h(n)长度为N,将其按下标的奇偶性分成两组,即 he和h0序列, 它们的长度都是N/2。这样,可以将h(n)的FFT计算公式改写如下:H(k)八 h(n)WN1h(n)W?k偶数n奇数n号4N J2 rkk 22 rk八 h(2r) WnWn h(2r 1) Wn (A)r =0r =0由于2Wn =Wn/

6、2所以,(A)式可以改写成下面的形式:N i2 一1八 he(r)WNrk W,、 ho(r)WNrk2 2 r =0r =0按照FFT的定义,上面的式子实际上是:二 He(k) W,Ho(k)其中,k的取值范围是0N-1。我们注意到He(k)和Ho(k)是N/2点的DFT,其周期是N/2。因此,H(k)DFT的前N/2点和后N/2点都可以用He(k)和Ho(k)来表示He(-2 kHe(k)Ho(号 k) = Ho(k)而且WN4 k)二 Wn2 Wb -W,于是,N点H(k)用N/2点的He(k)和Ho(k)来计算的公式为:H(k)= He(k) WHo(k)H(齐 k)=He住 k) W

7、* k)H。(号 k)(NkH + k = He(k)-W,H(k)2 丿k 二 0,1,|,霁 1【1D-FFT的算法流程】根据上面推导的公式,我们可以用递归程序来实现1D-FFT。下面是一个示例:void FFT_1D (Comp in , Comp out , int N)Comp he256, ho256;Comp He256, Ho256;/ 如果 DFT 点数为 1 ,则根据 DFT 公式,可以直接返回原值 / 这是递归的退出条件if (N=1)out0 = in0;else / 如果N不是1,贝U/ 按下标将数据分成两组for (int i=0; iN/2; i+)hei = i

8、n2*i;/偶数下标分组hoi = in2*i+1;/奇数下标分组/ 计算偶数下标部分的 N/2 点 DFT FFT_1D(he, He, N/2);/ 计算奇数下标部分的 N/2 点 DFT FFT_1D(ho, Ho, N/2);/ 计算当前所有数据的 N 点 DFTfor (int k=0; kN/2; k+)/ 下面计算式中的 Wk 是旋转因子,可以事先计算好/ 当前数据的前一半, N/2 点 outk= Hek + Wk*Hok;/ 当前数据的后一半, N/2 点outN/2+k = Hek Wk*Hok;【图象压缩与放大原理】要尽量少失真地对图象进行缩放处理,贝需从频域着手进行。如

9、果从频谱图中去掉一些频率的分量, 然后再作 IFFT ,得到时域数据, 即可实现对图 象的缩小。而如果在频谱中加入一些零值,再作 IFFT ,得到时域数据,贝可 实现对图象的放大根据一维情形下的奈奎斯圣区间和折叠频率的概念,我们知道,二维频 谱的高频区集中在二维谱矩阵(谱向量的矩阵形式)的中心区域;而低频区 在 4 个角上。如果考虑到二维频谱图中高频分量与低频分量的分布情况,则 对图象频谱图的处理,不论是去掉部分频率数据,还是在频谱数据中补零, 都应关于图象频谱的中心对称。要思考和解决的问题是:为保证图象缩小后失真最小,应去掉原图中的 高频分量,还是去掉低频分量。【注意事项】(1) 输入的图像

10、数据是以文本形式存放在文件中的, 在读入文件内容后要将不同的字符转化为数值(如转为 0 , o转为10 ),才能进行FFT 变换。(2) 为了能显示还原后的图像,还需要将 IFFT 变换后的数据(复数值) 转换成不同的字符,并以文本形式入文件中。(3) 复数转成字符的原则和方法: IFFT 变换后的数据是复数,根据复数模的大小,将它们分别转成和 o字符。这就要设定一个控制阈值, 模大于阈值的复数对应 o 字符,模小于阈值的复数对应字符。 这个控 制阈值可能通过实验来调整和确定。(4) 程序中涉及到了复数运算(加减乘除) ,可以自己编程实现,也可以 通过包含下面的代码来解决:#include u

11、sing namespace std;/ 将 complex 简记为 Comptypedef complex Comp;这样,就可以在程序中直接使用“ Comp ”这种类型了。用法如下:Comp w1(3, 4);Comp w2;W2 = Comp(3, 4);主程序代码流程示例】(1) 接受用户对阈值的设定(2) 打开文件,读入字符(3) 根据( 1)中设定的阈值,将字符转换成数值保存到数组(4) 调用 2D-FFT ,计算图象的频谱(5) 对频谱数据进行相应处理(如去掉一部分频谱值,或添加一些零)(6) 对处理后频谱数据进行 2D-IFFT ,转换成时域数值(7) 根据阈值,将还原的时域数据转换成字符(8) 将字符保存到文件,以备查看

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号