数字信号处理实验讲稿

2024-04-20

数字信号处理实验讲稿(通用8篇)

篇1:数字信号处理实验讲稿

邯 郸 学 院

讲 稿

2010 ~2011 学年 第 一 学期

分院(系、部): 信息工程学院 教 研 室: 电子信息工程 课 程 名 称: 数字信号处理

授 课 班 级: 07级电子信息工程

主 讲 教 师: 王苗苗 职

称:

助教(研究生)

使 用 教 材: 《数字信号处理》

制 作 系 统:

Word2003

邯郸学院制

实验一..Matlab仿真软件介绍

一、实验目的

熟悉Matlab仿真软件

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、学习Matlab仿真软件的安装

2、熟悉Matlab仿真软件的操作环境

3、直接在Matlab仿真软件的命令窗口实现数值计算

4、编写M文件

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

1、熟悉Matlab仿真软件

2、参阅Matlab及在电子信息类课程中的应用(第2版)唐向宏 电子工业出版社

实验二 离散信号和系统分析的Matlab实现

一、实验目的

1、Matlab实现离散信号和系统分析

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、利用Matlab产生离散信号

2、利用Matlab计算离散卷积

3、利用Matlab求解离散LTI系统响应

4、利用Matlab计算DTFT

5、利用Matlab实现部分分式法

6、利用Matlab计算系统的零极点

7、利用Matlab进行简单数字滤波器设计

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

实验三 利用Matlab实现信号DFT的计算

一、实验目的

1、Matlab实现信号DFT的计算

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、利用Matlab计算信号的DFT

2、利用Matlab实现由DFT计算线性卷积

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

实验四 利用Matlab实现滤波器设计

一、实验目的

1、Matlab实现实现滤波器设计

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、利用Matlab实现模拟低通滤波器的设计

2、利用Matlab实现模拟域频率变换

3、利用Matlab实现脉冲响应不变法

4、利用Matlab实现双线性变换法

5、利用Matlab实现数字滤波器设计

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

实验五 利用Matlab实现FIR滤波器设计

一、实验目的

1、Matlab实现实现滤波器设计

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、利用Matlab实现窗函数法

2、利用Matlab实现频率取样法

3、利用Matlab实现优化设计

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

实验六..随机信号功率谱估计的Matlab实现

一、实验目的

1、Matlab实现实现滤波器设计

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、利用Matlab实现随机序列

2、利用Matlab计算相关函数的估计

3、利用Matlab进行非参数功率谱估计

4、利用Matlab进行AR模型功率谱估计

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

实验七..数字滤波器结构的Matlab实现

一、实验目的

1、Matlab实现实现滤波器设计

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、利用Matlab实现数字滤波器直接型设计

2、利用Matlab实现数字滤波器级联设计

3、利用Matlab实现数字滤波器并联型设计

4、利用Matlab实现数字滤波器格型设计

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

实验八....利用Matlab实现信号小波分析

一、实验目的

1、Matlab实现实现滤波器设计

2、进一步熟悉Matlab软件操作

二、实验设备和元器件

含Matlab仿真软件的计算机

三、实验内容和步骤

1、小波测试信号

2、分解与重构滤波器组

3、离散小波变换

4、离散小波反变换

5、基于小波的信号去噪

6、基于小波的信号压缩

四、实验报告要求

按照《Matlab程序设计》模板提交实验报告

五、预习要求

预习课本上的相关内容

篇2:数字信号处理实验讲稿

利用 T DFT 分析信号频谱

一、实验目的

1.加深对 DFT 原理的理解。

2.应用 DFT 分析信号的频谱。

3.深刻理解利用 DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。

二、实验设备与环境

计算机、MATLAB 软件环境 三、实验基础理论

T 1.DFT 与 与 T DTFT 的关系

有限长序列 的离散时间傅里叶变换 在频率区间的 N 个等间隔分布的点 上的 N 个取样值可以由下式表示:

212 /0()|()()0 1Nj knjNk NkX e x n e X k k N      由上式可知,序列 的 N 点 DFT ,实际上就是 序列的 DTFT 在 N 个等间隔频率点 上样本。

2.利用 T DFT 求 求 DTFT

方法 1 1:由恢复出的方法如下:

由图 2.1 所示流程可知:

101()()()Nj j n kn j nNn n kX e x n e X k W eN               由上式可以得到:

篇3:数字信号处理实验讲稿

关键词:数字信号处理,语音信号,实验,改革

如今,数字信号处理已几乎涉及各行各业的每一个角落,是一门非常重要、实用的技术,因此,在高校中,几乎每个工科专业都会涉及与数字信号处理相关的教学内容,电类专业更是专门开设数字信号处理课程,甚至是现代数字信处理课程或是高级数字信处理课程。

数字信号处理课程的特点是理论性强,公式的推导与证明过程繁杂,在教学过程中如果处理不好,甚至会被当成一门数学课,从而导致学生学习兴趣下降。为了提高学习兴趣,提升学习效果,实验课程成为课堂教学的重要部分,是理论推导的有效补充,已经成为数字信号处理课程改革的一个重要内容与方向。[1,2,3,4,5]

笔者通过网络方式调查了近年来国内一部分重点高校的实验课程开设情况,包括实验内容、实验设备以及实验指导教材等。在实验内容上,各高校基本大同小异,均集中在频谱分析、滤波器设计等方面,与教学重点相吻合。这些基本的要点与重点已经在教学界达成了共识。在实验设备上,一部分引入Matlab W作为软件实验平台,一部分以DSP芯片构建硬件实验平台或是购买商品化硬件实验平台。实验指导教材对应于实验设备,包括已出版实验指导书(以Matlab为主),商品化硬件平台自带的实验指书。纵观各高校实验课程的开设,结合各专业具体学时安排与实际条件,所选择的设备与教材有所不同,各重点有所侧重,但基本体系已经相对完善,基本可以满足工科本科学生的基本学习需求。其中,硬件实验平台的缺点在于硬件成本高,不便于改动,灵活性较差,学生实验也更多地集中于硬件芯片的编程实现。而Matlab实验平台则具有更大的灵活性,可视性强,尤其是随着笔记本电脑的普及,更具有学习时间与学习地点的灵活性,而不必完全局限于上课时间于实验室内完成实验。在笔者多年的教学过程中发现,无论是硬件实验平台,还是软件实验平台,都只是实验方式与手段上的不同,在实验内容上基本一致。而实验内容才是影响学习效果的关键因素。而且现行实验内容存在的最大问题即实验对象简单抽象化。[5]例如,讲频谱分析时或滤波时,更多地采用的信号是由几个不同频率的正弦信号合成的。这些信号比较简单,物理意义也明确,但与实际信号联系不大,而从不容易上学习把理论与实践相联系。也有教师试图将实际信号与课程联系,例如王祖林和郭旭静[6]曾提出用通信信号为实例进行讲解,取得了不错的授课效果,但这类信号不易获取,对于非通信类专业的学习来说也存在理解困难等不足,因此,该方法在各高校的授课中并不多见。

1 实验内容改革设想

1.1 实验对象的选择

在实验课程中增加与日常生活密切相关的实例,已经成为实验课程改革中的一项共识。正是基于这一点,笔者提出以语音信号为实验课程的实验对象的设想。该设想是基于语音信号以下优点:(1)语音信号来源于日常生活,没有人会感觉到陌生;(2)语音信号易于获取,且每名学生都可以结合自身语音进行分析,实验对象即具有共性,又具有不同;(3)语音信号具有明确的时域频域物理意义,便于学习过程中对理论知识的理解;(4)语音信号处理是数字信号处理中的一个重要分支与科研热点,对学生而言又具有扩展性与探索性。

1.2 实验时间与地点的选择

传统的实验课程,都是在指定的时间到指定的实验室内,由1~2名教师或实验员带着几十个学生完成实验。由于实验场地与设备的局限性,在指定时间地点之外很难进行实验。如何突破这个局限,是实验课程改革中必须面对的问题。因此,笔者认为,实验内容与环节的设计上,可以考虑让学生拥有更大的时间与空间自由度。

1.3 考核方式的选择

在实验过程中让学生拥有更大的时间与空间的自由度,如果考核方式与制度还是保持传统不变,则可能是出现雷同等不良现象,反而降低了预期实验效果。在考核方式制定上,即要考虑到共性的部分,即对理论的理解,又要考虑到每名学生个性的部分,即在实际应用上的灵活性。

2 实验内容与实验环节设计

根据上述分析与设想,并根据多年的教学实践,在传统实验内容的基础上,对每个实验项目增加了选做的实验内容(见表1)。

在实验环节的设计上,把每一次实验的学时分为两部分,第一部分用于理解并完成部分实验内容,第二部分学时用于考核。例如一个2学时的实验课,分为1个学时用于实验,1个学时用于考核,且两部分学时不连续进行,进行考核的1个学时是在提交实验报告后进行。

在第一部分的学时上,对于传统的实验内容在实验课时详细讲解、演示,并要求学生同步跟随完成,对于增加的内容,提出问题与目标,引导学生思考,并不要求其在实验课内完成,而是鼓励学生在实验课时之外完成,鼓励学生通过查资料,讨论等方式完成,并且可以通过邮件等方式与授课老师进行讨论。

在增加的实验内容部分中,4个实验项目所用的声音信号可以为同一声音信号,以增强实验的连续性。

3 考核方式的改革

传统的实验课程的考核方式以提交实验报告为主,提交实验报告后即为该次实验的结束。笔者尝在上交实验报告并批阅完后,再进行第二部分学时的课程,请每位学生向全班学生讲解其实验结果(如果学时不足,或是人数过多,则可根据实验报告撰写的情况抽取部分学生讲解),针对出现的问题由教师现场答疑,并根据学生讲解的情况考察其是否独立完成,是否理解实验目标,对于有主动深化探索的学生,提高其考核成绩。每次实验的考核成绩包含实验报告成绩和现场讲解成绩两部分。通过强化考核力度,消除学生侥幸心理,引导学生重视自我学习与自主思考的能力,从而提升学习效果。

4 结束语

数字信号处理课程的实验内容是整门课程的重要组成部分,在现有实验条件不变的基础上,通过对实验内容的改进,重新设计实验环节与考核方式,强化实践过程,引导学生主动思考,提升学习兴趣,鼓励深化学习与探索精神。通过2年实验课程的教学实践,学生的动手能力有了很大的提高,自主学习与思考能力也有了提升,对数字信号处理理论知识的理解也更加清晰,有效地提升了数字信号处理课程的教学效果。本套实验内容与考核方式改革对于其他学校数字信号处理课程的教学均有一定的借鉴意义。

篇4:数字图像处理实验平台的设计

关键词: 数字图像处理    实验平台    Matlab    GUI

数字图像处理是信息科学中一个发展迅速的研究方向,是模式识别、计算机视觉、图像通讯、多媒体技术等学科的基础,是一门涉及多领域的交叉学科,具有很强的理论性和实践性[1]。该课程的主要任务是通过对数字图像处理基本概念、理论和算法的学习,培养学生对数字图像的实践编程处理能力,为学生从事图像处理工程师工作奠定基础。该课程涉及内容比较宽广,课程起点高,难度系数较大,如何在教学过程中提高学生的学习兴趣和后续实践能力一直是该课程研究的重点[2]。

为促使学生更深入地学习数字图像处理课程,在学习过程中更熟练地掌握数字图像处理的基本理论和基本方法,并有效提高学生的实践动手能力和创新能力。本文利用Matlab的图形用户界面环境(GUI)设计了一个数字图像处理实验平台。该实验平台采用模块化设计的方式,通过对窗口及控件的控制函数的设计,较好地实现数字图像处理算法一体化集成的功能。通过该平台可以实现助教、助学、实践创新及考核等功能,帮助学生理解和掌握数字图像处理的基本技能。

1.数字图像处理实验平台的总体设计

数字图像处理实验平台总体设计如图1所示,在该实验平台上主要集中了数字图像处理中常用的基本操作及算法,通过该平台的窗口界面对象操作就能够实现相应的数字图像处理功能,主要操作包括文件对象操作、图像格式转换、直方图修正、图像转置、图像旋转、空间域图像滤波、灰度图像二值化处理、图像边缘检测、图像变换操作、图像代数运算、亮度对比度调节、图像缩放操作和形态学操作等。该平台可以操作者提供了一个方便快捷的数字图像处理实践环境,适合实现对数字图像进行基本处理[3]。

2.实验平台界面的设计

在数字图像处理系统实验平台的设计过程中,主要利用Matlab提供的GUI向导设计控件而完成,图形用户界面包含的图形对象有图形窗口、菜单、控件、文本等,本文设计改变传统的菜单式设计,将所有的图像处理操作采用窗口或控件的方式直接放于平台窗口界面上。设计时在GUIDE开发环境中设计好GUI后会自动生成相应的FIG文件和M文件,其中在FIG文件中实现数字图像处理窗口界面,包括有图像界面窗口和静态界面中所有序列化的图形对象[4][5]。根据数字图像处理系统的系统框图,将要实现的功能全部集中体现在界面上,进行合理布局,界面设计结果如图2所示:

3.实验平台的模块功能实现

在各平台模块功能实现中,我们主要通过对界面上的相应控件对象编写回调函数,激活相应控件以实现图像处理功能,在GUIDE开发环境中自动生成的M文件中包括界面窗口中自动生成的函数框架、控制函数及自定义图形对象的回调函数。例如在文件操作模块中,设计了载入图像、保存图像、撤销、退出的触控按钮。在设计时,载入图像时采用对话框的方式,uigetfile函数显示一个对话框用选择图像,当前路径下的文件和目录将在带对话框内显示[8];保存图像触控按钮的实现主要应用uiputfile()标准写盘处理对话框实现,将处理后的图像写入相应路径下的磁盘中;撤销操作是指对当前对象的上一步操作的取消,图像的处理后显示区显示的是原始图像;退出即退出当前操作界面;其他模块的设计方式类似。

如图3所示,我们对输入的lena图像进行了边缘检测,采用的边缘检测算子为canny算子,在图形输出窗口直接看到的输出结果,如果想要改变算子就可以直接点击不同的算子按钮即可实现图像处理。通过验证该实验平台的控件选择方式比菜单式的数字图像处理平台更直观、方便,可以实现教学演示、实训练习等,帮助学生更深入理解和掌握数字图像处理课程的基本知识。

4.结语

本文基于MatlabGUI实现了一个数字图像处理实验平台,该平台将数字图像处理基本算法集成于一个界面中,所有功能实现通过点击界面中相应的控件完成,部分操作还可以自定义参数,经处理的图像能够直观、形象地展示在数字图像处理实验平台上。该平台使得数字图像处理的教学过程更方便、直观,对学生学习了解数字图像处理具有一定的辅助作用,同时也可将该平台应用于学生实践创新能力的培养。

参考文献:

[1]史彩娟,刘利平,李志刚.“数字图像处理”课程多层次实践教学体系研究[J].中国电力教育,2014,(307):133-134.

[2]杨淑莹,张桦."数字图像处理"教学软件的开发设计[J].天津师范大学学报,2009,(4):76-80.

[3]梁原.基于MATLAB的数字图像处理系统研究[D].长春理工大学.2008.

[4]陈超等编著.MATLAB应用实例精讲-图像处理与GUI设计篇[M].北京:电子工业出版社,2011.

[5]邢文博,蒋敬.基于Matlab开发数字图像处理GUI[J],电气电子教学学报,2013,35(6):107-108.

篇5:数字基带信号实验报告

专业班级:

指导老师:李 敏

姓 名:

学 号:

实验一 数字基带信号

一、实验目的

1、了解单极性码、双极性码、归零码、不归零码等基带信号波形特点。

2、掌握AMI、HDB3码的编码规则。

3、掌握从HDB3码信号中提取位同步信号的方法。

4、掌握集中插入帧同步码时分复用信号的帧结构特点。

5、了解HDB3(AMI)编译码集成电路CD22103。

二、实验内容

1、用示波器观察单极性非归零码(NRZ)、传号交替反转码(AMI)、三阶高密度双极性码(HDB3)、整流后的AMI码及整流后的HDB3码。

2、用示波器观察从HDB3码中和从AMI码中提取位同步信号的电路中有关波形。

3、用示波器观察HDB3、AMI译码输出波形。

三、实验步骤

本实验使用数字信源单元和HDB3编译码单元。

1、熟悉数字信源单元和HDB3编译码单元的工作原理。接好电源线,打开电源开关。

2、用示波器观察数字信源单元上的各种信号波形。

用信源单元的FS作为示波器的外同步信号,示波器探头的地端接在实验板任何位置的GND点均可,进行下列观察:

(1)示波器的两个通道探头分别接信源单元的NRZ-OUT和BS-OUT,对照发光二极管的发光状态,判断数字信源单元是否已正常工作(1码对应的发光管亮,0码对应的发光管熄);

(2)用开关K1产生代码×1110010(×为任意代码,1110010为7位帧同步码),K2、K3产生任意信息代码,观察本实验给定的集中插入帧同步码时分复用信号帧结构,和NRZ码特点。

3、 用示波器观察HDB3编译单元的各种波形。

仍用信源单元的FS信号作为示波器的外同步信号。 (1)示波器的两个探头CH1和CH2分别接信源单元的NRZ-OUT和HDB3单元的AMI-HDB3,将信源单元的K1、K2、K3每一位都置1,观察全1码对应的AMI码(开关K4置于左方AMI端)波形和HDB3码(开关K4置于右方HDB3端)波形。再将K1、K2、K3置为全0,观察全0码对应的AMI码和HDB3码。观察时应注意AMI、HDB3码的码元都是占空比为0.5的双极性归零矩形脉冲。编码输出AMI-HDB3比信源输入NRZ-OUT延迟了4个码元。

(2)将K1、K2、K3置于0111 0010 0000 1100 0010 0000态,观察并记录对应的AMI(3)将K1、K2、K3置于任意状态,K4先置左方(AMI)端再置右方(HDB3)端,CH1码和HDB3码。 接信源单元的NRZ-OUT,CH2依次接HDB3单元的DET、BPF、BS-R和NRZ ,观察这些信号波形。观察时应注意:

HDB3单元的NRZ信号(译码输出)滞后于信源模块的NRZ-OUT信号(编码输入)8个码元。

DET是占空比等于0.5的单极性归零码。

BPF信号是一个幅度和周期都不恒定的准正弦信号,BS-R是一个周期基本恒定(等于一个码元周期)的TTL电平信号。

信源代码连0个数越多,越难于从AMI码中提取位同步信号(或者说要求带通滤波的Q值越高,因而越难于实现),而HDB3码则不存在这种问题。本实验中若24位信源代码中连零很多时,则难以从AMI码中得到一个符合要求的稳定的位同步信号,因此不能完成正确的译码(由于分离参数的.影响,各实验系统的现象可能略有不同。一般将信源代码置成只有1个“1”码的状态来观察译码输出)。若24位信源代码全为“0”码,则更不可能从AMI信号(亦是全0信号)得到正确的位同步信号。

四、 实验报告要求

1. 根据实验观察和纪录回答:

(1)不归零码和归零码的特点是什么?

(2)与信源代码中的“1”码相对应的AMI码及HDB3码是否一定相同?为什么?

答:1)不归零码特点:脉冲宽度 τ 等于码元宽度Ts归零码特点:τ <Ts

2)与信源代码中的“1”码对应的AMI码及HDB3码不一定相同。因信源代码中的“1”码对应的AMI码“1”、“-1”相间出现,而HDB3码中的“1”,“-1”不但与信源代码中的“1”码有关,而且还与信源代码中的“0”码有关。

2. 设代码为全1,全0及0111 0010 0000 1100 0010 0000,给出AMI及HDB3码的代码和波形。

答:信息代码 1 11 1111

AMI 1 -11-1 1 -1 1

HDB31 -11-1 1 -1 1

信息代码0 0 0 00 0 0 00 0 0 00

AMI 0 0 0 00 0 0 00 0 0 00

HDB30 0 0 1-1 0 0 1 -1 0 0 1 -1

信息代码 0 1 1 10 0 1 00 0 0 01 1 0 00 0 1 00 0 0 0

AMI0 1 -1 1 0 0 -1 0 0 0 0 01 -1 0 0 0 0 1 00 0 0 0

HDB3 0 1 -1 1 0 0 -1 0 0 0-1 0 1 -1 1 0 0 1 -1 0 0 0 –1 0

3. 总结从HDB3码中提取位同步信号的原理。

答:HDB3中不含有离散谱fS(fS在数值上等于码速率)成分。整流后变为一个占空比等于0.5的单极性归零码,其连0个数不超过3,频谱中含有较强的离散谱fS成分,故可通过窄带带通滤波器得到一个相位抖动较小的正弦信号,再经过整形、移相后即可得到合乎要求的位同步信号。

4. 试根据占空比为0.5的单极性归零码的功率谱密度公式说明为什么信息代码中的连0码越长,越难于从AMI码中提取位同步信号,而HDB3码则不存在此问题。

篇6:数字图像处理实验报告

实验目的:本实验内容旨在让学生通过用VC等高级语言编写数字图像处理的一些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力,并通过实际编程了解图像处理软件的实现的基本原理。为学生进一步学习数字摄影测量、遥感和地理信息系统等专业课程以及应用图像处理解决实际问题奠定基础。

二、实验原理和方法

(1) Raw格式到BMP格式的转换:

Raw格式:Raw格式文件是按照数字图像组成的二维矩阵,将像素按行列号顺序存储在文件中。这种文件只含有图像像素数据,不含有信息头,因此,在读图像时,需要根据文件大小,计算图像所包含的行列号,或者需要事先知道图像大小(矩阵大小)。RAW文件按图像上行到下行、左列到右列顺序存储。

BMP格式:BMP文件数据区按图像上下行到上行、左列列到右列顺序存储到数据区。BMP文件由文件头、信息头、颜色表、数据区四个部分组成。

做Raw格式文件到BMP格式文件的转化,先要为BMP格式文件申请四部分的内存:文件头,位图信息头,颜色表,图象数据,然后根据输入值以及Raw文件信息,BMP格式文件信息计算出这几部分的值,赋给他们,写到BMP文件中去。

(2) 灰度图象的线性拉伸:

灰度变化是点运算,将原图象的每个像素的灰度值改成线性变化之后的灰度即可。

灰度的线性变换就是指图像的中所有点的灰度按照线性灰度变换函数进行变换。灰度变换方程如下:

该方程为线性方程。式中参数 为输入图像的像素的灰度值,参数 为输出图像的

灰度值。

设原图象的灰度范围为[a,b],变化之后的范围为[a’,b’],则:

fA=(b’-a’)/(b-a)

fB=-(b’-a’)/(b-a)*a+a’

如果算出来的值大于255,则让它等于255,小于0则让其等于0。

(3) 局部处理(3*3高通滤波,3*3低通滤波):

局部处理在处理某一像素时,利用与该像素相邻的一组像素,经过某种变换得到处理后图像中某一点的像素值。目标像素的邻域一般是由像素组成的二维矩阵,该矩阵的大小为奇数,目标像素位于该矩阵的中央,即目标像素就是区域的中心像素。经过处理后,目标像素的值为经过特定算法计算后所得的结果。

实际上都是利用卷积来实现的,卷积往往用一个矩阵表示,将矩阵的中心对齐某个像素,矩阵中的值乘到相应的像素中去,然后将所有乘积加起来就得到中心像素的灰度值。边界像素不做处理,仍为原来的灰度值。求出的像素灰度值若超过[0~255],则向离其最近的属于该范围的像素值靠拢。

3*3低通滤波的算子见表1。

3*3高通滤波的算子见表2。

表格 1

1/9

1/9

1/9

1/9

1/9

1/9

1/9

1/9

1/9

表格 2

-1

-1

-1

-1

9

-1

-1

-1

-1

(4) 图象几何处理(图象平移,图象缩放):

对于图像平移来说,若平移量是(tx,ty),像素在原图像中的坐标为(x0,y0),则变化后的坐标为(x1,y1),x1=x0+tx,y1=y0+ty。平移只需改变像素的灰度值,不必改变位图信息头和调色板内容。

对于图像缩放,假设放大因子为ratio,缩放的变换矩阵为:

图像信息头中新图像的宽度和高度都变为原来宽度和高度分别与水平垂直比例的乘积,图像大小变为新宽度(变为4的整数倍)与新高度的乘积。

(5) 灰度图象中值滤波:

中值滤波也属于局部处理的一种,将窗口中的各个像素排序之后排序,取中值赋给模板中心的像素,所以窗口中个数一般是基数。

我用的中值滤波窗口是十字丝的9个数的窗口。

(6) 灰度图象边缘检测:

边缘检测有三种算子:Roberts,Prewit,Sobel。三种算子都是做一阶差分的,通过算子算出各个像素的梯度值,将水平梯度的绝对值和垂直梯度的绝对值相加,若此梯度值大于某个阈值,则将其灰度值赋为255,否则赋为0。

(7) 图象旋转:

图像旋转一般是以图像中心为中心顺时针旋转,利用图像的四个角点求出图像旋转后的大小。

先计算以图像中心为原点坐标系下原图像四个角点的坐标值,按照旋转矩阵计算其旋转之后的坐标值,根据四个角点的新坐标值计算出最大宽度和高度作为新图像的宽度和高度值,按照计算值修改位图信息头,申请一块新内存,存储旋转后图像的灰度值。

旋转矩阵如下:

同样要求各个像素在原图像中的坐标,先将新图像的坐标系平移到图像中心,做逆时针旋转,然后再平移到屏幕左上角,然后将原图像对应坐标的值赋给新图像。

(8) 图象二值化:

判断分析法:假定图像的灰度区间为[0,L-1],则选择一阈值T 将图像的像素分为两组。

为最大值所对应的T,就是所求判断分析法的分割阈值。

搜寻到阈值之后,灰度值小于阈值的像素赋0,其他的赋1,修改文件信息头,调色板,申请新内存。

(9) 图象直方图:

统计各灰度值出现的频数,以及像素的总个数,用频数除以总个数作为频率,以灰度值作为横坐标,频率作为纵坐标绘图。

三、实验过程和步骤

首先要建立一个基于MFC的多文档工程,将视图基类改为滚动视图,以自己的学号命名。

我用的是书上给的CDib类,类里面有获取BMP宽度,高度的函数,有指向位图信息头的指针,指向图象数据的指针,因此我在文档类(Doc类)里定义了一个CDib类的对象,打开以及保存文件的时候利用这个对象去调用CDib里读取与存储文件的函数,并且可以利用这个对象的两个指针对打开的图象进行各种操作。

1.Raw格式到BMP格式的转换:

首先建立一个RawToBMP的对话框,在上面加上四个编辑框(一个输入打开文件的路径一个输入保存文件的路径,另两个),两个按钮,以及默认的确认,取消按钮。利用类向导插入此对话框类,并且为前两个编辑框定义CString的两个变量,用来存储打开与保存文件的路径。同时为两个浏览按钮添加消息响应函数,在消息函数里创建CFileDialog对象,利用此对象的函数将两个路径值赋给前两个编辑框的成员变量。再为OK键添加消息响应函数,分别定义BMP格式文件前三部分数据变量,计算出各变量的值,并且利用一个CFile对象获取Raw图象的数据,利用另一个CFile对象将数据存储到所输入的路径的文件中去,CFile对象的Read函数会自动创建一个文件。

然后在菜单上新建一个菜单,为菜单添加消息响应函数,在其消息响应函数里创建RowToBMP对话框。这样点击菜单后就会弹出一个对话框,按确定键之后就可以读取Raw文件并且存储BMP文件,完成整个消息循环。

2.灰度图象的线性拉伸:

创建一个对话框来输入变化后的灰度值,为对话框的两个编辑框定义成员变量,在文档类中添加处理函数,按照对话框输入值计算出fA与fB,做一个循环,将0到255的灰度值,计算出拉伸后的灰度值(超限情况特殊处理),存放在下标为此值的一个数组中,然后利用文档类的中定义的CDib类的成员变量m_DIB,获得当前打开的图像指

向图像数据部分的指针m_DIB.m_pBits,在数组中查出每个像素变化后的灰度值,并将此值赋给指针m_pBits指向的内存。刷新视图。

然后在菜单中加上线性拉伸的菜单,为该菜单的ID添加消息响应函数,在该函数中创建对话框,并调用文档类线性拉伸的函数,将对话框的两个成员变量传给此函数。

3.局部处理:

在文档类里添加低通滤波和高通滤波的成员函数,在函数中使用m_DIB对象中指向图像数据部分的指针m_pBits,首先申请一个新内存,将原来图像的灰度值存储起来,然后定义9个BYTE类型的指针,利用双重嵌套循环,在循环中每次用这9个指针指向复制图像对应模板中的9个数,然后按照模板中的数值计算出中心像素的灰度值,判断是否超过范围,如果超过范围则做相应的处理,否则将此值直接赋给m_pBits中对应的中心像素。循环之后刷新视图。

添加局部处理的菜单,为菜单设置消息响应函数,在菜单消息响应函数中调用文档类的函数,完成对m_DIB的处理。

4.图像几何变换:

建立平移对话框,定义两个成员变量,分别存储输入的水平位移和垂直位移。

在文档类里添加平移函数,申请一块新内存复制原图像的信息,在函数中将

外层循环变量i视为纵坐标,内层循环变量j视为横坐标,通过双重循环,对每个像素,求出其在原图像中的坐标(i0,j0),将复制图像中的对应(i0,j0)的像素灰度值赋给m_DIB.m_pBits指针中的图像。如果在原图像中找不到该像素,置为背景色。刷新视图。

在菜单中添加图像平移菜单,并为该菜单添加消息响应函数,在此函数中创建平移对话框,调用文档类的平移函数,将对话框的成员变量传入该函数。

建立缩放对话框类,为此类定义两个成员变量,存储输入的水平缩放因子和垂直缩放因子。

再在文档类中添加缩放函数,利用m_DIB.m_pBMI(指向位图信息头的指针),修改位图信息头中的宽度,高度,图像大小。计算出新图像的大小,申请一块新内存存储新图像,同平移函数一样,计算出每个像素在原图像中的坐标,i0=i/PRatio,j0=j/VRatio,PRatio与VRatio分别为水平缩放因子和垂直缩放因子。将原图像中对应坐标的灰度值赋给新内存,然后将m_DIB.m_pBits(指向图像数据的指针)指向新内存,刷新视图。

5.中值滤波:

在文档类中添加两个成员函数。一个用来把传入的指针里的内容排序,一个用来做中值滤波。也要申请一块新内存来复制原图像的信息,双重嵌套循环,边界像素不处理,对每个像素,使用一个大小为9个字节的数组来存放复制图像窗口中各像素值,然后将数组首地址传入排序的函数中,将中间的值赋给当前图像窗口中心的像素。排序函数我用的是快速排序法。

在菜单中添加中值滤波菜单项,为其添加消息响应函数,调用文档类的中值滤波函数。

6.边缘检测:

在文档类中定义三个函数,分别为Roberts,Prewit,Sobel算子处理函数,处理时,先申请新内存复制原来图像信息,边界像素不作处理,对每个像素值,求出其在复制图像中的梯度,判断,若梯度值大于150(这个是我自己定的),则将灰度值赋为255,否则置零。

菜单中添加边缘检测菜单,置属性为Pop—up,添加三个下一级菜单,分别为Roberts,Prewit,Sobel,各个菜单的消息响应函数中调用文档类中各自的处理函数。

7.图像旋转:

创建一个对话框输入旋转角度,在文档类中添加成员函数。

先将角度化为弧度值。

计算原图像四个角点的坐标,以及新图像四个角点的坐标。

根据新图像四个角点的坐标,取对角线上两个点横坐标差值较大值作为宽度,纵坐标差值较大值作为高度。

根据计算出来的高度和宽度修改文件信息头,并且申请内存存储新图像。

计算每点的像素在原来图像中的坐标从而获取其灰度值,写入新内存。

将m_DIB.m_pBits指向该新内存。刷新视图。

添加图像旋转菜单,在菜单响应函数中创建对话框,调用文档类中旋转函数,将对话框中获取的角度传给旋转函数。

8.图像二值化:

在文档类添加一个成员函数,根据传人的图像和阈值返回组间方差和组内方差的比值。

再添加一个成员函数,进行二值化。

在函数中:

计算新BMP文件的大小,申请一块新内存,存储新的整个BMP文件的信息,将位图信息头中biBitCount置为1,调色板数组只有两个两个元素,下标为0的三个灰度值都为0,下标为1的三个灰度值为255。

从最大灰度值到最小灰度值之间搜寻上述函数返回值最大的值,作为阈值。

对每个像素,若其原来灰度值小于阈值,赋1,否则赋0。

将m_DIB,m_pBits指向新内存的图像数据部分,m_DIB.m_pBMI指向位图信息头。

9.图像直方图:

为文档类添加一个int型指针成员变量m_pGray,在构造函数中将该指针赋空,在文档类中定义了一个函数,统计各个灰度值出现的频数,申请一个内存,存储在这个内存中,并将m_pGray指向它。

创建一个画直方图的对话框,添加Picture控件,在控件里调用文档类成员变量,画直方图。添加一个滚动条,用来确定阈值,为滚动条添加消息响应函数,按照滚动条的值进行二值化。

在菜单中添加直方图菜单,添加消息响应函数,在响应函数中创建直方图对话框对象。

最后,因为我开始做工程的时候没有把菜单设计好,做得有点乱,所以,我又在View里添加WM_CONTEXTMENU消息响应函数,在函数体内用CMenu类来实现弹出菜单。

四、结果分析与评价

(1)Raw格式到BMP格式的转换:效果见图1。

图表 1

老师说在转化的时候后面用一个循环会降低效率,但是实际上只要宽度是4的整数倍,后面的循环就不会做了。所以这个算法效率我觉得还行吧。

(2)线性变化:输入线性变化范围10~20,效果见图2。

图表 2

用了线性查找表之后,这个算法的效率应该会高很多,但是我的算法里是线性表从0~255都有变化之后的值,实际上,如果图片的灰度范围小一些的话,做了很多无用的计算,而且前面已经搜寻过原图像的最大最小灰度值了,所以线性表的生成循环可以只从最小灰度做到最大灰度。另外,我设计的算法里,如果最大值和最小值输反了的话,程序会自动交换他们的值,做这个可能就会多算一些东西了。

(3)低通滤波:效果见图3。

图表 3

取的是8邻域内的平均值,效果不是很好。

高通滤波:效果见图4。

图表 4

基本上我觉得边缘还是有突出了吧。

中值滤波:效果见图5。

图表 5

这个中值滤波的效果我还是比较满意的,因为排序所以要调用其他函数,我用了快速排序,而且用的是9个数的十字丝窗口,所以速度要比25个数的窗口快一些。平滑的效果出来还可以。

(4)边缘检测:

Roberts算子:效果见图6。

图表 6

Prewit算子:效果见图7。

图表 7

Sobel算子:效果见图8。

图表 8

由于Prewit算子和Sobel算子都用了8个数去做,所以效果要好一些,相比之下,Sobel算子对这幅图又要效果好些,应该是对4邻域赋予了更大权的缘故。但是后两种算法计算量也要大一些。

(5)图像平移:效果见图9。

图表 9

这个图像平移量比较大,所以被裁切的也显得不真实了。主要是因为我的图像大小和坐标都没有变化,所以只在原来的图像坐标范围内显示平移后的图像,实际上,我既可以改变图像的大小,并且为了节省计算,可以让循环变量i和j从一个新的值开始做计算,前面的全都赋背景色。

图像缩放:水平比例0.4,垂直比例0.5,效果见图10。

图表 10

在此基础上旋转:效果见图11。

图表 11

这几种算法主要的计算量都在for循环内,所以要想优化算法的话,必须简化循环里的计算。不过我的想法差不多跟书上的差不多,还没有什么优化。也许,这种优化的算法需要看很多别人做的好程序才能慢慢自己学会吧。

(6)二值化(判断分析法):效果见图12。

图表 12

实际上,我用直方图看的最佳阈值应该在100多左右,而我做的程序阈值好像偏小一些,所以效果不太好,我计算组间方差和组内方差的时候调用了一个函数专门求阈值,可能这里的计算还是有一点问题。而且在我的函数里,要256次调用这个函数,又因为计算机是按字节处理数据的,因此写图像数据的时候要用每8个写到一个数组中,然后通过计算得到字节类型的值,这些都使得我的算法效率比较低,最后一个问题,我觉得如果使用位运算会快一些,但是前面的问题还没有想到比较好的解决方法。

(7)直方图:效果见图13。

这个图像255的像素太多,如果我没算错的话,量化应该不是很好吧。

图表 13

五、实验总结与体会

这次实验学到最大的东西,是自己总算有MFC编程的概念了,虽然自己VC++考试的分数还不错,但是里面的很多东西,不通过自己的编程时绝对不能真正理解。比如说封装性,这次用CDib的方便,很好地利用了类的封装性。另外,比如MFC是基于消息响应机制的,这就决定了,要利用鼠标或者菜单响应函数去实现功能,而用c语言编写程序的时候,完全是按主函数的线程来的。

另外,我也学会了调试的真正含义。以前都只知道那几个按键是做什么用的,调试的真正目的,是根据自己的算法来检验程序计算的各个值是否符合,从而可以很快速方便地查到自己的错误。

自学也是很重要的一方面。实际上,在现在来说,用MSDN也不是很难的事了,我们不应该被英文打到,而且现在,随着对一些专有名词熟悉了之后,看MSDN也容易一些了,万一不懂的函数,也可以利用网络查到很多函数功能用法的解释。

刚开始的时候做的是位图的读取和显示,实在是不知从哪里做起,所以就照着实验书上敲了前面的部分,但是慢慢地也看懂了代码的意思。所以后来的基本上都是自己做的了,但是算法还是基本上和书上差不多。不过自己编的时候还是有很多细节的部分没有注意到,比如说,强制数据类型转换,我自己编的时候没有注意这个问题,结果出了很多错,有些事由于函数调用引起的,有些是由于不等号两边数据的匹配问题,还有的是由于指针的移动,直到这个时候,才真正明白实验书上程序为什么那么多强制类型转换,虽然书上很多东西不是尽善尽美,但是对于我这种刚开始学会编程的人还是有很多可以学习的地方的。

如老师所说,算法的效率是很重要的。要提高算法的效率,一个是要简化计算(不得不说,这需要数学基础),另外一个就是要避免许多重复的计算。在参考书上的程序里,很多时候,为了避免这种重复的计算(在循环中表现尤其明显),会把某些数当常数算出来,只要后来加上这个常数就可以,这样,效率高很多。

另外,对许多出错的情况,我的程序里也没有做好。比如,如果打开的不是8位图像,我的程序不会提示错误,正常结束,而可能做错,所以,这也是我应该向别人程序学习的地方。

篇7:遥感数字图像处理实验报告

学院 理学院 班级 地信131 学号 姓名

编写日期:1

2015.5

▶▶作业a

1.LS8_C_20140613_022505_000000_118039_GEOTIFF_L4

2.L5118_39_19860531 ProductDescription用记事本打开,读取头文件,并填写相关信息与相应位置即可

3.L5118-39-19960103

4.L7118039_20050815 直接打开以_mtl为后缀的文件,该文件中包含了遥感影像的所有波段 5.LM*** 直接打开波段,然后波段合成即可

6.s5kj297_289_10m

7.WORLDVIEW-052606622010_01

▶▶作业b

在ENVI中将landsat的4景影像和SPOT-5的1景的影像打开,并联动连接查看同一区域

link displays是根据象元位置来连接的,geographic link是通过地理坐标位置来连接的。

由上图可知,将遥感影像联动时亦可实现不同影像同一区域的快速检索,但是我们也可以看到,由于受到各方面因素的影像并不能特别精确的指在同一地方。

▶▶作业c

1.WORLDVIEW-2影像保存为jpg和TIF格式的4-3-2波段合成的假彩色图像。可用同样的方法将SPOT-5影像保存为jpg和tif格式的4-3-2波段合成的假彩色图像 2.为landsat的5景影像附上波段的波长,并根据波长用landsat 5的7-4-3波段,保存为jpg和tif格式影像

为波长复制后,导入影像文件各波段显示差异前后对比

转换为JPG格式后可以用看图软件直接打开

▶▶作业d

需要对影像进行裁剪,裁剪的基本步骤如下:

1.L5118_39_19860531裁剪前后对比

2.L5118-39-19960103裁剪前后对比

3.L7118039_20050815裁剪前后对比

4.LS8_C_20140613_022505_000000_118039_GEOTIFF_L4裁剪前后对比

▶▶

作业e

将剪裁影像,重采样成10m,重采样的操作主要如下

1.L5118_39_19860531重采样前后对比

2.L5118-39-19960103重采样前后对比

3.L7118039_20050815重采样前后对比

篇8:数字信号处理实验讲稿

MATLAB仿真图形界面,实现功能多,便于学生自己动手设计,适合大多数学生快速掌握和应用,可作为学生学习《数字信号处理》课程的实验工具,帮助学生解决课程中遇到的问题。

1实验项目的GUI设计

1.1基本模块

利用MATLAB的GUIDE工具箱,系统界面以各类按钮、文本说明、编辑对话框和坐标轴等构成,即使学生不是很精通MATLABLAB,也可以很方便地操作使用。

整个系统总体设计结构如图1所示。

该实验系统设计六个GUI项目,课程知识概括全面,操作简单易学,结果直观。具体的层次结构划分以下四个模块:

1) 实验主界面模块:显示系统所能实现的实验项目,点击项目按钮进入对应实验详细内容。

2) 实验项目模块:所对应的六个实验项目的具体内容。

3) 实验内容模块:指导对当前实验项目的操作,主要以文本形式出现。

4) 实验结果显示模块:以图形和文本形式输出。

完整的实验界面包括整个系统的主界面和分类项目界面,点击主界面的选项可以进入任一个子实验项目界面,任一个子界面都能回到主界面。如图2所示,用户可以根据自己的需要点击相应的按钮,进入实验项目子界面,点击“退出”按钮,可直接退出该实验系统,通过界面上各个控件就可以控制数据的输入、图形的演示等功能,方便对实验内容及结果的对照分析。

1.2界面平台部分功能演示

下面选取几个实例,对上述GUI界面功能进行演示,以展示其设计效果。

1) 序列的基本运算

序列自身运算包含翻转、移位和尺度变换,设置对应的参数,对指定序列进行变换。

打开GUIDE编辑界面,从控件工具栏拖拽按钮Push Button、文本编辑框Edit Text、坐标系Axes和静态文本Static Text等控件。双击弹出属性对话框,设置分布位置与控件大小比例。界面见图3。

上图分为左、右两个区域。左边区域实现的是序列的翻转、移位和尺度变换,点击“产生序列x(k)={1,2,3,4,5;k=0,1,2,3,4}”按钮,可产生演示序列,输入参数,可进行相应的演示,其中,对尺度变换部分用静态文本Static Tex进行了详细说明;右边区域,实现的是序列加法和乘法的演示,因为加乘运算较为简单,故演示序列设为固定的两个,没有进行任意序列的设计。

“实验说明”按钮同样是弹出实验原理简介,帮助对理论知识的先行复习;点击“返回”将弹出实验主界面并关闭该子界面;“退出”关闭该子界面。

2) 序列的卷积和界面演示

离散卷积和,可以计算系统的零状态响应,即系统零状态响应等于激励与系统单位取样响应的卷积,卷积运算在离散序列处理领域应用广泛,关系式如下:

本部分GUI实现的是有限长序列的卷积,这也和实际信号处理情况相吻合。通过界面演示两给定序列的卷积,深刻理解卷积的运算步骤过程:翻转、移位,相乘,累加。实验操作为打开GUIDE编辑界面,从控件工具栏拖拽按钮Push Button、坐标系Axes、按钮组Button Group和单选按钮Radio Button等控件,按钮组和两个单选按钮组合“演示速度”选择面板。设置控件属性,设计控件分布位置与大小比例。

界面在进行卷积过程演示时,由于循环和暂停延迟控制,界面为动态显示,如图4截取了演示过程中的4张图,演示速度设置为“慢”。界面演示时,除了显示序列h(m)的翻转、移位外,还在图的下方给出各个y(k)值的对应计算简式,便于结合卷积定义式对过程的理解。

2界面设计部分

另外,界面还提供了操作者自行进行设计部分。通过点选相应按钮,把文件名填入到edit框中,由操作界面读取作为参考,该部分的每个操作实现,都需要自己编程、调试再运行,实现的流程,在界面上都用“=》”做了简单指示,具体步骤,可点选按钮“设计说明”进行查看,过比较来加深认识设计方法的优越性和简便性。

3总结

本文设计了一个学习滤波器的实验平台,实现了实例演示和自主设计两部分功能,操作简单,结果直观,可作为学生学习相关课程内容的辅助工具,帮助学生解决课程中遇到的问题,增强学习基础理论知识的兴趣。

摘要:该文借助MATLAB丰富的工具箱函数,完成了《数字信号处理》课程基础运算的仿真设计。系统分为主界面设计和分类界面设计两部分,使用者点击相应实验界面,输入参数可以完成相应运算实验内容,操作简单,结果形象直观,灵活性强。

上一篇:我以奋斗写青春作文下一篇:优秀教师先进事迹报告会演讲稿