DSP课程实验报告
dsp原理与应用实验报告总结

dsp原理与应用实验报告总结DSP(Digital Signal Processing)数字信号处理是利用数字技术对信号进行处理和分析的一种方法。
在本次实验中,我们探索了DSP的原理和应用,并进行了一系列实验以验证其在实际应用中的效果。
以下是对实验结果的总结与分析。
实验一:数字滤波器设计与性能测试在本实验中,我们设计了数字滤波器,并通过性能测试来评估其滤波效果。
通过对不同类型的滤波器进行设计和实现,我们了解到数字滤波器在信号处理中的重要性和应用。
实验二:数字信号调制与解调本实验旨在通过数字信号调制与解调的过程,了解数字信号的传输原理与方法。
通过模拟调制与解调过程,我们成功实现了数字信号的传输与还原,验证了调制与解调的可行性。
实验三:数字信号的傅里叶变换与频谱分析傅里叶变换是一种重要的信号分析方法,可以将信号从时域转换到频域,揭示信号的频谱特性。
本实验中,我们学习了傅里叶变换的原理,并通过实验掌握了频谱分析的方法与技巧。
实验四:数字信号的陷波滤波与去噪处理陷波滤波是一种常用的去除特定频率噪声的方法,本实验中我们学习了数字信号的陷波滤波原理,并通过实验验证了其在去噪处理中的有效性。
实验五:DSP在音频处理中的应用音频处理是DSP的一个重要应用领域,本实验中我们探索了DSP在音频处理中的应用。
通过实验,我们成功实现了音频信号的降噪、均衡和混响处理,并对其效果进行了评估。
实验六:DSP在图像处理中的应用图像处理是另一个重要的DSP应用领域,本实验中我们了解了DSP在图像处理中的一些基本原理和方法。
通过实验,我们实现了图像的滤波、边缘检测和图像增强等处理,并观察到了不同算法对图像质量的影响。
通过以上一系列实验,我们深入了解了DSP的原理与应用,并对不同领域下的信号处理方法有了更深刻的认识。
本次实验不仅加深了我们对数字信号处理的理解,也为日后在相关领域的研究与实践提供了基础。
通过实验的结果和总结,我们可以得出结论:DSP作为一种数字信号处理的方法,具有广泛的应用前景和重要的实际意义。
DSP实验报告

实验一数字IO应用实验—、实验目的1. 了解DSP开发系统的组成和结构2. 在实验设备上完成I/O硬件连接,编写I/O实验程序并运行验证。
3. 内存观察工具的使用二、实验设备计算机,CCS3.1版本软件,DSP仿真器,教学实验箱三、实验原理2.键值读取程序:该部分有两种方法进行键值的判断。
方法1:利用内存观察工具进行观察方法2:利用LED1-LED8的亮灭对应显示键值。
a)外部中断1的应用参照实验五;b)内存观察键值:程序中定义了三个变量“W”“row”和“col”。
“W”代表是CPLD中键盘的扫描数值,“row”和“col”分别代表键盘的行和列,由行和列可以判定按键的位置。
上述三个变量可以在观察窗口中观察的。
c)利用LED灯显示键值原理,参看实验一。
具体的LED灯显示值以查表的形式读出,请参看“”库文件。
本实验的CPLD地址译码说明:基地址:0x0000,当底板片选CS0为低时,分配有效。
CPU的IO空间:基地址+0x0200 LED灯output 8位外部中断用XINT1:由CPLD分配,中断信号由键盘按键产生。
中断下降沿触发。
KEY_DAT_REG(R):基地址+0x0004;四、实验步骤和内容1.2407CPU板JUMP1的1和2脚短接,拨码开关S1的第一位置ON,其余置OFF;2.E300板上的开关SW4的第一位置ON,其余OFF;SW3的第四位置ON其余的SW置OFF“DEBUG→Connect”)4.打开系统项目文件 \e300.test\ normal \05_key interface \;“\Debug\”文件“Debug\Go Main”跳到主程序的开始;7.指定位置设置断点;8.View--〉Watch Window打开变量观察窗口;9. 将变量“w”“row”和“col”添加到观察窗口中,改变变量观察窗口的显示方式为HEX显示。
“Debug--〉Animate”全速运行,然后点击E300板上键盘按键,观察窗口中变量变化,同时LED1-LED8灯也相应变化,指示键值。
DSP实验报告

DSP实验报告⼀、综合实验内容和要求1. 实验⽬的(1) 学习掌握CCS3.3编译器的使⽤;(2) 通过实验学习掌握TMS320F28335的GPIO ,浮点计算; (3) 学习并掌握A/D 模块的使⽤⽅法;(4) 学习并掌握中断⽅式和查询⽅式的串⼝通信; (5) 学习并掌握28335DSP 的定时器相关的设置与运⽤; (6) 学习信号时域分析的⽅法,了解相关波形参数的计算⽅法; (7) 了解数字滤波的⼀些基本⽅法; (8) 学习数码管的驱动及运⽤。
(9) 学习MATLAB 串⼝以及画图的运⽤。
2. 实验设计内容与要求:(1) 对给定的周期波形信号采⽤TI 公司的TMS320F28335DSP ,利⽤试验箱上的相关资源计算出波形的周期T ,波形的有效值rms V ,平均值avg V 。
其中,有效值和平均值的计算公式(数字量的离散公式)如下:rms V =1()NavgiV u i N=∑式中N 为⼀个周期采样点数,()u i 为采样序列中的第i 个采样点。
(2) 通过算法计算出波形的有效值和平均值,利⽤串⼝通信把测得的数据发送到串⼝助⼿查看,或者在MATLAB 上编写上位机程序,把发送的数据在MATLAB 上画出来。
(3) 把测得的数据实时显⽰在数码管上。
⼆、硬件电路图1为试验系统的硬件图,硬件电路主要包括TMS320F28335DSP 实验箱,SEED-XDS510仿真器,数码管,SCI,信号发⽣器,电脑,串⼝线等。
图1 硬件电路图三、实验原理本试验主要是通过程序去测量⼀个周期波形的有效值、平均值、峰值等相关参数。
计算离散数据的有效值可⽤公式rms V =平均值可⽤公式1()N avgiV u i N=∑。
所以⾸先需要测出波形的周期,然后确定每个周期需要采样的点数N ,最后去计算平均值和有效值。
v mv 1图2 理想输⼊采样波形如图2所⽰为⼀个正弦输⼊波形,m V 为输⼊波形的峰值,1V 是介于0~ m V 的⼀个值。
重邮课程实验报告

一、实验名称数字信号处理实验二、实验目的1. 理解数字信号处理的基本概念和原理。
2. 掌握数字滤波器的设计方法及其应用。
3. 熟悉数字信号处理软件的使用,提高实验技能。
三、实验原理数字信号处理(Digital Signal Processing,DSP)是研究数字信号的产生、处理、分析和应用的科学。
本实验主要涉及以下几个方面:1. 数字滤波器的基本概念:数字滤波器是一种对数字信号进行频率选择的装置,可以用于信号的滤波、增强、抑制等。
2. 滤波器的设计方法:主要包括有限脉冲响应(FIR)滤波器和无限脉冲响应(IIR)滤波器的设计方法。
3. 数字信号处理软件的使用:利用MATLAB等软件进行数字信号处理实验,提高实验效率。
四、实验器材1. 实验计算机2. MATLAB软件3. 实验指导书五、实验步骤1. 实验一:FIR滤波器设计(1)打开MATLAB软件,创建一个新的脚本文件。
(2)根据实验指导书的要求,输入FIR滤波器的参数,如滤波器的阶数、截止频率等。
(3)运行脚本文件,观察滤波器的频率响应曲线。
(4)根据实验结果,分析滤波器的性能。
2. 实验二:IIR滤波器设计(1)打开MATLAB软件,创建一个新的脚本文件。
(2)根据实验指导书的要求,输入IIR滤波器的参数,如滤波器的阶数、截止频率等。
(3)运行脚本文件,观察滤波器的频率响应曲线。
(4)根据实验结果,分析滤波器的性能。
3. 实验三:数字信号处理软件的使用(1)打开MATLAB软件,创建一个新的脚本文件。
(2)根据实验指导书的要求,输入信号处理的参数,如采样频率、滤波器类型等。
(3)运行脚本文件,观察信号处理的结果。
(4)根据实验结果,分析数字信号处理软件的应用。
六、实验结果与分析1. 实验一:FIR滤波器设计实验结果表明,所设计的FIR滤波器具有较好的频率选择性,滤波效果符合预期。
2. 实验二:IIR滤波器设计实验结果表明,所设计的IIR滤波器具有较好的频率选择性,滤波效果符合预期。
DSP实验报告

DSP实验报告院(系)名称自动化科学与电气工程学院学生姓名学号任课老师吴冠2014年 6 月实验1 CCS入门实验2(C语言的使用)一、实验目的1. 学习用标准C 语言编制程序;了解常用的C 语言程序设计方法和组成部分。
2. 熟悉使用软件仿真方式调试程序。
二、实验内容1. DSP源文件的建立;2. DSP程序工程文件的建立;3. 掌握C语言在DSP中的应用。
三、实验背景知识当使用标准C 语言编制的程序时,其源程序文件名的后缀应为.c。
CCS 在编译标准C 语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP 的可执行代码。
最后生成的是coff 格式的可下载到DSP 中运行的文件,其文件名后缀为.out。
由于使用C 语言编制程序,其中调用的标准C 的库函数由专门的库提供,在编译连接时编译系统还负责构建C 运行环境。
所以用户工程中需要注明使用C 的支持库。
四、实验主程序1.add.c:实验的主程序。
2.28335.gel:系统初始化3.28335.cmd: 声明了系统的存储器配置与程序各段的连接关系。
Add.c 中程序:#include <stdio.h>/* ======== main ======== */void main(){int a=10;int b=10;int c;c=a+b;for(;;);五、实验步骤1.双击图标进入CCS环境;2.添加工程pjt文件,点击Project →open命令3.在弹出的对话框中选中cadd.pjt文件添加该工程文件。
4.添加gel文件,即右键点击工程视窗中的GEL files,在弹出的菜单中选择laod gel 命令。
5.添加.out文件,即使用File→Load Program菜单命令。
装载add.out文件,进行调试。
.out文件一般存放在程序文件夹的debug文件夹中。
6.打开观察窗口观看变量的值,即使用View→Watch Window菜单命令。
DSP课程考试实验报告(精)

宁夏大学物理电气信息学院设计性实验实验报告课程名称 DSP芯片的开发与原理应用实验学期 2011 至 2012 学年第二学期学生所在系物理电气信息学院电子信息工程年级 2009级专业班级电子信息工程班学生姓名学号任课教师实验成绩2012 年 6 月 25 日实验题目有限冲击响应带通滤波器(FIR)算法实验1、实验目的1.掌握用窗函数法设计FIR数字滤波器的原理和方法。
2.熟悉线性相位FIR数字滤波器特性。
3.了解各种窗函数对滤波器特性的影响。
2、实验环境计算机,ICETEK-VC5416-EDU实验箱3、实验内容1.FIR的原理和参数生成公式(1)N阶有限冲激响应滤波器(FIR公式:N=0,1,2....(2FIR设计原理:根据系数h是偶对称为了简化运算产生如下计算方法如果一个FIR滤波有一个冲激响应,h(0,h(1,...,h(N-1,和x(n描绘输入的时常滤波n,输出滤波y(n)的n给出以下方程式:2.程序的字变函数及功能1).global start,fir 设定全局变量2)COFF_FIR_START:.sect "coff_fir".include"bandpass.inc"提示:“bandpass.inc”提供带通系数,用户可参照说明手册最后的练习实现高通及低通。
3)K_FIR_BFFR .set 32 (滤波系数4)d_filin 存放输入波形5)d_filout 存放输出波形6)指定寄存器:指定AR4为FIR_DATA_P数据寄存器指定AR6为INBUF_P输入数据寄存器指定AR7为OUTBUF_P输出数据寄存器7)汇编程序部分说明:Start部分:程序初始化部分制定寄存器,清空寄存器fir_loop部分:循环调入输入数据,并调用子程序fir进行计算Main_end部分:跳转至循环部分Fir部分:子程序部分其中Fir_task部分:进行计算并返回计算结果4、实验步骤(1)连接设备①关闭计算机和实验箱电源②如使用PP型仿真器则用附带的并口连线连接计算机并口和仿真器相应接口③检查ICETEK-VC5416-A 板上DIP 开关MP/MC 的位置,应设置在“OFF”位置(靠近复位按钮),即设置DSP 工作在MP 方式。
实验三FIR滤波器的DSP实验报告
实验三FIR滤波器的DSP实验报告实验目的:1.掌握FIR滤波器的基本原理和结构;2.了解DSP芯片的基本使用方法;3.熟悉MATLAB的使用,实现FIR滤波器的设计和仿真。
实验器材:1.TMS320C6748DSP开发板;2.电脑;3.MATLAB软件。
实验原理:FIR滤波器是数字信号处理中常用的一种滤波器,其基本原理是利用线性相位特性实现对信号频谱的选择性抑制。
FIR滤波器的结构简单,稳定性好,并且可以实现任意的频率响应,因此被广泛应用于音频处理、图像处理等领域。
FIR滤波器的结构由延时单元、加法器和乘法器组成。
延时单元用于存储输入信号的过去值,加法器用于将输入信号和延时单元中的值相加,乘法器用于对加法器的输出进行加权求和。
根据加权系数的不同,可以实现不同的滤波特性。
在本实验中,我们使用MATLAB软件进行FIR滤波器的设计和仿真。
首先,通过指定滤波器的截止频率、通带和阻带的最大衰减等参数,使用MATLAB中的fir1函数进行滤波器的设计。
接下来,将得到的滤波器系数保存为C语言代码,通过DSP开发板进行实时滤波处理。
实验步骤:1. 在MATLAB中打开fir1函数进行滤波器设计。
根据实际需求,指定滤波器的截止频率、通带和阻带的最大衰减等参数。
通过运行代码,得到滤波器的系数。
2.将得到的滤波器系数保存为C语言代码,包括头文件和滤波函数。
7.运行程序,在DSP开发板上实时进行滤波处理,并将输出结果通过耳机进行播放。
实验结果:通过上述实验步骤,我们成功地实现了一个FIR滤波器的设计和DSP 实时处理。
通过调整滤波器参数和监听输出结果,我们观察到不同滤波器参数下得到的滤波效果不同。
通过对比实时输入信号和输出信号,我们可以清晰地看到滤波器对于输入信号频谱的选择性抑制。
实验总结:本次实验通过设计和实现FIR滤波器,加深了我们对滤波器原理和DSP芯片的理解。
通过MATLAB软件的辅助,我们可以直观地观察到滤波器在频率域的作用,对于滤波器的选择和优化提供了方便。
dsp实验报告(1)
DSP实验报告小组杜筱佳0904210204薛茜茜0904210215学院电子工程与光电技术学院班级0904210204指导老师刘明实验日期2012.11——2012.12实验一DSP开发基础一、实验目的1、了解DSP开发系统的基本配置2、掌握DSP集成开发环境(CCS)3、掌握C语言开发的基本流程4、熟悉代码调试的基本方法二、实验仪器计算机,C2000 DSP教学实验箱,XDS510USB仿真器,示波器三、实验内容建立工程,对工程进行编译、链接,载入可执行程序,在DSP硬件平台上进行实时调试,利用代码调试工具,查看程序运行结果四、实验要求及实验结果1、项目的编译、链接、调试2、dataIO()子程序入口地址0x003F81F5processing()子程序入口地址0x003F81DBcurrentBuffer.input所在存储器地址0x008480currentBuffer.output所在存储器地址:0x0085003、图形方式显示数据空间currentBuffer.input和current.Buffer.output缓冲存储区的波形currentBuffer.input:图1.1currentBuffer.output:图1.24、.map文件中,.text段在存储空间的地址003f8000长度0000012b;位于TMS320F2812 程序存储空间,物理存储块名称H0_PM.data段在存储空间的地址00000040长度00000001;位于TMS320F2812 数据存储空间,物理存储块名称M0_RAM.bss段在存储空间的地址00000000长度00000000;实验二任意信号发生器一、实验目的1、熟悉DSP硬件开发平台2、熟悉DSP集成开发环境(CCS)3、熟悉TMS320F2812的存储器配置表4、学习DMS320F2812的编程开发5、熟悉代码调试的基本方法二、实验仪器计算机,C2000 DSP教学实验箱,XDS510USB仿真器,示波器三、实验内容建立工程,编写DSP主程序,并对工程进行编译、链接,利用现有DSP 平台实现任一波的产生,通过示波器观察结果。
DSP实验报告一
DSP实验报告一引言本实验旨在通过实际操作,探索数字信号处理(DSP)的基本概念和技术。
DSP是一种通过数字计算来处理连续时间信号的技术,被广泛应用于音频处理、图像处理、通信系统等领域。
本实验将重点介绍数字信号的采样、量化和离散化过程,并通过实际编程实现。
实验过程1. 信号的采样1.1 信号的定义在DSP领域,信号是指随着时间变化的某种物理量,可以是声音、图像等。
我们首先需要定义一个连续的信号,用于采样和处理。
在本次实验中,我们选择了一个简单的正弦信号作为示例:x(t) = A \\sin(2\\pi f t)其中,A表示幅值,f表示频率,t表示时间。
1.2 采样过程为了将连续信号转换为离散信号,我们需要对信号进行采样。
采样是指在一定时间间隔内对连续信号进行测量。
我们可以通过模拟采样器来模拟采样过程。
在本实验中,我们选择了采样频率为100Hz,即每秒采样100次。
使用Python编程实现采样过程:import numpy as np# 信号参数设置A =1f =10# 采样频率设置fs =100# 采样点数设置N =100# 生成时间序列t = np.arange(N) / fs# 生成采样信号x = A * np.sin(2* np.pi * f * t)上述代码中,我们通过调整A和f的值来模拟不同的信号。
生成的信号将存储在x变量中,可以用于后续处理。
2. 信号的量化2.1 量化过程量化是指将连续信号的幅值转换为离散的数值。
在实际应用中,我们通常使用有限位数来表示信号的幅值。
常用的量化方式有线性量化和非线性量化。
在本实验中,我们选择了线性量化方式。
具体的量化过程可以通过下列Python代码实现:import math# 量化位数设置bits =8# 量化步长计算step_size =2* A / (2** bits -1)# 信号的量化x_quantized = np.round(x / step_size) * step_size上述代码中,我们通过调整bits的值来控制量化位数。
dsp实验报告
dsp实验报告C54x的浮点数的算术运算(实验⼀)实验⽬的:1)了解TMS320C54x汇编语⾔程序的基本格式,以及汇编、链接的基本过程。
2)初步熟悉软件仿真器Simulator的⽤法。
实验内容:A.基础实验将两个⼩数相乘,分离尾数与指数,进⾏算术运算,最后归⼀化。
乘法运算时遵循指数相加尾数相乘的规则。
1)编写浮点乘法程序ex1.asm,完成X1*X2=0.3×(—0.8)运算。
2) 编写链接命令⽂件ex1.cmd。
B.提⾼实验:⽤汇编语⾔实现:y1=x1*a1-x2*a2y2=12/3+1y3=0.3*(-0.5)+1实验程序框图及清单:此次试验中,在⼀个程序⾥完成基础和提⾼部分,四个计算分别作为四个⼦程序。
具体程序及相关注释如下:.title "lab1.asm".mmregsSTACK .usect "STACK", 10H.bss x1,1 ;定点数操作数1.bss x2,1 ;定点数操作数2.bss e1,1 ;指数1.bss m1,1 ;尾数1.bss e2,1 ;指数2.bss m2,1 ;尾数2.bss ep,1 ;乘积的指数.bss mp,1 ;乘积的尾数.bss product,1 ;定点乘积.bss temp,1 ;暂存单元.bss a1,1.bss a2,1.bss b1,1.bss b2,1 ;提⾼实验y1=a1*b1-a2*b2.bss y1,1.bss c1,1 ;提⾼实验y2=12/3+1.bss c2,1.bss c3,1.bss y2,1.bss d1,1 ;提⾼实验y3=0.3*(-0.5)+1.bss d2,1.bss d3,1.bss y3,1.def start.datatable: .word 3*32768/10.word -8*32768/10.word 4*32768/10 ;.word 2*32768/10 ;提⾼实验y1=a1*b1-a2*b2数据.word 12,3,1 ;提⾼实验y2=12/3+1数据.word 3*32768/10.word -5*32768/10 ;提⾼实验y3=0.3*(-0.5)+1数据.word 1 .textstart: STM #0,SWWSRSTM #STACK+10H,SPMVPD table,@x1MVPD table+1,@x2LD @x1,16,A ;EXP AST T,@e1NORM ASTH A,@m1 ;将操作数x1转换成浮点数存⾄e1和m1中LD @x2,16,A ;EXP AST T,@e2NORM ASTH A,@m2 ;将操作数x2转换成浮点数存⾄e2和m2中CALL MULT ;调⽤浮点乘法⼦程序CALL LAB11 ;y1=x1*a1-x2*a2⼦程序CALL LAB12 ;y2=12/3+1⼦程序CALL LAB13 ;y3=0.3*(-0.5)+1⼦程序done: B doneMULT: SSBX FRCT ;设置⼩数相乘浮点乘法⼦程序SSBX SXM ;设置符号扩展LD @e1,A ;ADD @e2,A ;指数相加STL A,@ep ;LD @m1,T ;MPY @m2,A ;尾数相乘EXP A ;ST T,@temp ;NORM A ;将乘积浮点化STH A,@mp ;浮点乘积尾数存mp单元LD @temp,AADD @ep,ASTL A,@ep ;浮点乘积指数存ep单元NEG ASTL A,@tempLD @temp,TLD @mp,16,ANORM ASTH A,@productRETLAB11: STM #a1,AR1 y1=x1*a1-x2*a2⼦程序RPT #3MVPD table,*AR1+SSBX FRCTSSBX SXMLD @a1,TMPY @b1,ALD @a2,TMAS @b2,ASTH A,@y1RETLAB12: STM #c1,AR1 y2=12/3+1⼦程序RPT #2MVPD table+4,*AR1+RSBX FRCTRSBX SXMLD @c1,BRPT #15SUBC @c2,BADD @c3,BSTL B,@y2RETLAB13: STM #d1,AR1 y3=0.3*(-0.5)+1⼦程序RPT #2MVPD table+7,*AR1+SSBX FRCTSSBX SXMLD @d1,TMPY @d2,ALD A,-1,A ;q.15格式转换成q1.14格式ADD @d3,14,A ;与转换成q.14的1相加STH A,@y3 ;q1.14的结果存⼊y3RET.end实验中遇到的问题及解决⽅法主要是Dos命令的熟悉和语法错误的纠正运⾏结果:A.0x0148是基础部分的计算结果(q.15格式)换算回来是B.0x23d6是y1=x1*a1-x2*a2(0.3*0.4-(-0.8)*0.2)的结果0.28045654296875误差为0.28045654296875-0.28=0.00045654296875C.0x0005是y2=12/3+1的结果D.0x666是y3=0.3*(-0.5)+1的结果-0.150146484375误差为-0.150146484375-(-0.15)=-0.00014648375⼩结通过本次试验熟悉并掌握了部分dos命令以及dsp的⼤部分汇编指令,并能在dos调试环境下调程序,检查变量以验证结果正确与否。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录 目录 .................................................................................................................................................. 1 实验一试验名称:RGB转灰度,添加噪声实验 .......................................................................... 2 实验二 试验名称:图像平滑,中值滤波实验 ........................................................................... 7 实验三 试验名称:图像锐化实验 ............................................................................................... 9 实验四 试验名称:灰度变换实验 ............................................................................................. 11 实验五试验名称:灰度直方图,直方图均衡实验 ........................................................................ 13 实验六 试验名称:边沿提取,灰度反转,二值化实验 ......................................................... 16 实验七试验名称:熟悉imgLib的使用实验 .................................................................................. 18 实验一试验名称:RGB转灰度,添加噪声实验
一、试验目的 1、熟悉CCS,学会运用CCS导入图像,并仿真DSP处理图像 2、掌握如何将目标图像由彩色转为灰色 3、掌握如何给目标图像添加各类噪声
二、试验设备 1、PC机一台,windows操作系统 2、CCS编程环境
三、试验原理 (1)彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255个中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其中一个像素点的变化范围为255种,所以在数字图像处理中一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。 在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫做灰度值。因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。图像的灰度化处理,一般有以下三种处理方法: 方法一:加权平均法 根据重要性及其它指标,将R、G、B三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感度最高,对蓝色敏感度最低。因此,在MATLAB中我们可以按下式系统函数,对RGB三分量进行加权平均能得到较合理的灰度图像。 f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j)) 方法二:平均值法 将彩色图像中的R、G、B三个分量的亮度求简单的平均值,将得到均值作为灰度值输出而得到灰度图。其表达式见下式 f(i,j)=(R(i,j)+G(i,j)+B(i,j)) /3 方法三:最大值法 将彩色图像中的R、G、B三个分量中亮度的最大值作为灰度图的灰度值。 其表达式见下式: wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();}); f(i,j)=max(R(i,j),G(i,j),B(i,j)) (2)椒盐噪声是一种因为信号脉冲强度引起的噪声,信噪比(Signal NoiseRate)是衡量图像噪声的一个数字指标。 给一副数字图像加上椒盐噪声的处理顺序应该如下: a. 指定信噪比 SNR 其取值范围在[0, 1]之间 b. 计算总像素数目 SP,得到要加噪的像素数目 NP = SP * (1-SNR) c. 随机获取要加噪的每个像素位置P(i, j) d. 指定像素值为255或者0。 e. 重复c, d两个步骤完成所有像素的NP个像素 f. 输出加噪以后的图像 (3)高斯噪声的密度取决于公式G(x, sigma) 其中X是代表平均值,sigma代表的标准方差,每个输入像素 Pin, 一个正常的高斯采样分布公式G(d), 得到输出像素Pout. Pout = Pin + XMeans + sigma *G(d) 其中d为一个线性的随机数,G(d)是随机数的高斯分布随机值。 给一副数字图像加上高斯噪声的处理顺序如下: a. 输入参数sigam 和 X mean b. 以系统时间为种子产生一个伪随机数 c. 将伪随机数带入G(d)得到高斯随机数 d. 根据输入像素计算出输出像素 e. 重新将像素值防缩在[0 ~ 255]之间 f. 循环所有像素 g. 输出图像
四、试验步骤 (1)运用MATLAB生成目标图像的数据文件 (2)新建工程 (3)编写及编译代码 (4)导入目标图像文件 (5)输出所需结果
五、实验主要程序 void RGB2Gray ( unsigned char * restrict Rptr,unsigned char * restrict Gptr,unsigned char * restrict Bptr,unsigned char * restrict Outptr, int cols,int rows, /*图像的宽度与高度*/ int flag /*控制标志,用来确定灰度化处理的方法*/ ) { int i; for(i=0;i{ Outptr[i]=(Rptr[i] + Gptr[i] + Bptr[i])/3; }
} //在输入图像上加椒噪声 void AddPepperNoise ( unsigned char *sourceImg, //输入:原始灰度图像 int cols,int rows, //图像的宽和长 int range //添加噪声的强度 ) { int k; unsigned char *pp=sourceImg; srand(time(NULL)); //取系统时间作为种子 for(k=0;k{ int i=rand()%cols; //随机选取图像的行 int j=rand()%rows; //随机选取图像的列 pp=sourceImg+rows*j+i; //得到一个像素坐标 *pp=0; //将该点像素灰度置0 } } //在输入图像上加盐噪声 void AddSaltNoise ( unsigned char *sourceImg, //输入:原始灰度图像 int cols,int rows, //图像的宽和长 int range //添加噪声的强度 ) { int k; unsigned char *pp=sourceImg; srand(time(NULL)); //取系统时间作为种子 for(k=0;k{ int i=rand()%cols; //随机选取图像的行 int j=rand()%rows; //随机选取图像的列 pp=sourceImg+rows*j+i; //得到一个像素坐标 *pp=255; //将该点像素灰度置255 } }
//在输入图像上加高斯噪声 void AddRandNoise ( unsigned char *sourceImg, //输入:原始灰度图像 unsigned char *newImg, //输出:添加噪声后的图像 unsigned char *noise, //输出:添加的噪声图像 int cols,int rows, //图像的宽和长 int range, //添加噪声的强度 int num //噪声叠加次数 ) { int i,j; int sum; int pixels; unsigned char *pp=sourceImg, *newpp=newImg, *noisepp=noise; pixels=cols*rows; srand(time(NULL)); //取系统时间作为种子 for(i=0;i{ //生成均匀分布噪声图像 for(j=0;j{ *(noisepp++)=rand()%range; //生成均匀分布随机数 *(noisepp++)=*(newpp++)+*(newpp++); //生成均匀分布的随机数叠加 } noisepp=noise; newpp=newImg; } //高斯噪声图像与原图像叠加 for(i=0;i{ sum=*(pp++)+*(noisepp++); if(sum>=255) { *(newpp++)=255; } else {