DSP图像处理技术实验报告模板New.docx
- 文档编号:28089809
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:35
- 大小:142.13KB
DSP图像处理技术实验报告模板New.docx
《DSP图像处理技术实验报告模板New.docx》由会员分享,可在线阅读,更多相关《DSP图像处理技术实验报告模板New.docx(35页珍藏版)》请在冰豆网上搜索。
DSP图像处理技术实验报告模板New
西安**大学
通信与信息工程学院
《DSP数字图像处理技术》课内实验报告
(2016/2017学年第2学期)
学生姓名:
88888
专业班级:
7777
学号:
0000
指导教师:
0000
实验1:
CodeComposerStudio入门实验
一、实验目的
1、学习创建工程和管理工程的方法
2、了解基本的编译和调试功能
3、学习使用观察窗口
4、了解图像功能的使用
二、实验原理
开发TMS320C6xxx应用系统一般需要以下几个调试工具来完成:
1.软件集成开发环境(CCS):
完成系统的软件开发,进行软件和硬件的仿真调试,它是硬件调试的辅助工具。
2.仿真器(如WintechTDS510USB2.0或TDS560USB):
实现硬件仿真调试时与硬件系统的通信、控制和读取硬件系统的状态和数据。
3.评估模块(如实验箱中的TS-DM64x嵌入式多通道音视频处理平台):
提供软件运行和调试的平台和用户系统设计开发的参照。
4CS主要完成系统的软件开发和调试,它提供一整套的程序编制、维护、编译的调试环境,能将汇编语言和C语言程序编译连接生产COFF(公共目标文件)格式的可执行文件,并能将程序下载到目标DSP系统上运行调试。
5CCS通过工程来管理文件,一般包括以下几种文件:
源程序文件:
C语言或汇编语言文件(*.c或*.asm)
头文件(*.h)
命令文件(*.cmd)
库文件(*.lib,*.obj)
三、实验内容(调试好的程序,实验结果及分析)
/*===============调用子程序规则===============*/
intread_signals(int*input);
intwrite_buffer(int*input,int*output,intcount);
intoutput_signals(int*output);
/*=================主程序================*/
main()
{
intnum=BUFSIZE;
inti;
/*===========初始化==========*/
i=0;
input=inp_buffer;
output=out_buffer;
/*===========无限循环=========*/
while(TRUE)
{
read_signals(input);//加软件断点和探针
write_buffer(input,output,num);
output_signals(output);
i++;
printf("Number:
%d\n",i);
}
}
/*==============子程序=============*/
//读取输入信号
intread_signals(int*input)
{
//在此读取采集数据信号放到输入缓冲区input[]
return(TRUE);
}
//将数据进行处理后搬移到输出缓冲区
intwrite_buffer(int*input,int*output,intcount)
{inti;
for(i=0;i output[i]=input[i]*volume;//处理: 将输入数据放大volume倍放到输出缓冲区 return(TRUE); } //输出处理后的信号 intoutput_signals(int*output) { //在此将输出缓冲区out_buffer中的数据发送到输出设备(比如DA) return(TRUE); } 实验分析 1、头文件: 描述标准库程序的调用规则和用户自定义数据、函数头、数据类型等。 具体要包含哪些头文件,需要根据程序中使用哪些函数与数据而定。 2、工作变量定义: 定义全局变量。 3、子函数的调用规则: 这部分描述用户编制的子程序的调用规则,也可以写到用户自己缩写的.h文件中。 4、主程序: 即main()函数,它可分为二部分,即变量定义与初始化部分、主循环部分。 主循环部分完成程序的主要功能。 四、实验小结 这次的实验是CCS的入门实验,相对而言就是先让我们学会如何用CCS工具。 正所谓无论多么难的重要你会就很简单了,无论多么简单的你不会也很难,第一节课肯定是不会啊,不过经过老师讲解我们怎么操作之后我们过了一遍就知道怎么操作了也很简单,比如说CCS的配置贵,实验中要先创建或者导入工程,然后读入程序等等,掌握这些为以后的几次实验课奠定了基础。 (说明: (1)所有的实验报告,将严格按此模板的格式,字体、字号、行间距,进行书写、打印,不得随意改变; (2)在正文中,汉字用五号宋体,字母或数字,用五号TimesNewRoman体;(3)如果有数学公式或数学符号,全部得用“公式编辑器MathType”进行编写,若电脑没装,自己到XX上找且下载安装) 实验2: 编写一个以C语言为基础的DSP程序 一、实验目的 1、学习用标准C语言编写程序;了解常用的C语言程序设计方法和组成部分。 2、学习编制链接命令文件,并用来控制代码的链接。 3、学会建立和改变map文件,以及利用它观察DSP内存使用情况的方法。 4、熟悉使用软件仿真方式调试程序。 二、实验原理 1、标准C语言程序 CCS支持使用标准C语言开发DSP应用程序。 当使用标准C语言编制的程序时,其源程序文件名的后缀应为.c(如: cprogram.c)。 CCS在编译标准C语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP的可执行代码。 最后生成的是COFF格式的可下载到DSP中运行的文件,其文件名后缀为.out。 由于使用C语言编制程序,其中调用的标准C的库函数由专门的库提供,在编译链接时编译系统还负责构建C运行环境。 所以用户工程中需要注明使用C的支持库。 2、命令文件的作用 命令文件(文件名后缀为cmd)为链接程序提供程序和数据在具体DSP硬件中的位置分配信息。 通过编制命令文件,我们可以将某些特定的数据或程序按照我们的意图放置在DSP所管理的内存中。 命令文件也为链接程序提供了DSP外扩存储器的描述。 在程序中使用CMD文件描述硬件存储区,可以只说明使用部分,但只要是说明的,必须和硬件匹配,也就是只要说明的存储区必须是存在的和可用的。 3、内存映射(map)文件的作用 一般地,我们设计、开发的DSP程序在调试好后,要固化到系统的ROM中。 为了更精确地使用ROM空间,我们就需要知道程序的大小和位置,通过建立目标程序的map文件可以了解DSP代码的确切信息。 当需要更改程序和数据的大小和位置时,就要适当修改cmd文件和源程序,再重新生成map文件来观察结果。 另外,通过观察map文件,可以掌握DSP存储器的使用和利用情况,以便进行存储器方面的优化工作。 三、实验内容(调试好的程序,实验结果及分析) intadd(inta,intb); voidmain() { intx; inty; intz; x=1;y=2; while (1) { z=add(x,y);//函数调用 } } //说明: 子函数定义 intadd(inta,intb) { return(a+b); } 实验分析 实验编写一个简单的C语言程序进行测试调用,主要目的是了解CCS工程的工作原理。 CCS在编译标准C语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP的可执行代码。 最后生成的是COFF格式的可下载到DSP中运行的文件,其文件名后缀为.out。 开发的DSP程序调试好后要固化到ROM固盘中。 四、实验小结 这次的实验是用C语言辨析莪一个简单的程序进行测试,实验中我们编写的是C语言编写的一个加法器,我们编写好多的C语言程序经过编译之后会被CCS编译成相应的汇编语言程序,进而在一步的编译成DSP的可执行代码,最后生成的的COFF文件后缀名为.out,将其load加载到工程项目中,然后才可以实现编程的效果。 通过这次的实验是我们对CCS有了更进一步的了解。 实验3: 图像灰度化实验 一、实验目的 1、培养学生理解彩色图像转换成灰度图像的原理; 2、掌握图像处理的基本方法。 二、实验原理 灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。 图像的灰度化处理,一般有以下三种转化方案: 方法1: 加权平均法 所谓加权平均法就是根据三基色的重要性及其它指标,将R、G、B三个分量以不同的权值进行加权平均。 由于人眼对绿色的敏感最高,对蓝色敏感最低。 因此,我们可以按下式对R、G、B三分量进行加权平均,则能得到较合理的灰度图像。 (1) 方法2: 平均值法 所谓平均值法就是对彩色图像的每个像素中的R、G、B三个分量的值进行简单的算术平均,将得到平均值作为灰度图像对应像素的亮度值,其计算式如下所示: (2) 方法3: 最大值法 所谓最大值法就是将彩色图像中每个像素的R、G、B三个分量中的最大值作为灰度图对应像素的灰度值。 其计算式如下: (3) 根据以上三种处理方法,即加权平均法、平均值法和最大值法,通过编程均能将彩色图像转化成灰度图像。 三、实验内容(调试好的程序,实验结果及分析) voidRGB2Gray (unsignedchar*R,/*输入彩色图像的R分量*/ unsignedchar*G/*输入彩色图像的G分量*/ unsignedchar*B,/*输入彩色图像的B分量*/ unsignedchar*Gray,/*输出的灰度图像*/ intcols,introws,/*图像的宽度与高度*/ intflg/*控制标志,当其为1、2、3时,分别表示采用方法1、2和3进行灰度化处理*/ ) { inti;//定义局部变量 //为待生成的灰度图像分配空间 Gray=(unsignedchar*)calloc(cols*rows,sizeof(unsignedchar)); //采用循环的方式对图像中的每个像素进行灰度化 for(i=0;i { if(flg==1)//方法1: 加权平均法 *Gray++=0.3*(*R++)+0.59*(*G++)+0.11*(*B++); elseif(flg==2)//方法2: 简单算术平均法 *Gray++=((*R++)+(*G++)+(*B++))/3; else//方法3: 最大值法 { Gray[i]=R[i]; if(G[i])>Gray[i]) Gray[i]=G[i]; if(B[i])>Gray[i]) Gray[i]=B[i]; } } } 结果分析 这里有三种方法将彩色图像转换为灰度图像,分别是加权平均法,平均值法,最大值法,加权平均值法是对某些像素点加上较大的权重然后一个像素块区域中进行加权后平均。 平均值法就是简单的最某像素区域各个像素点进行平均,最大值法是通过对各个像素比较取灰度值最大的像素点附以整个图像块。 实验首先定义一个flag,判断条件中判断flag的值选择不同的灰度化方式。 四、实验小结 对彩色图像的灰度化有三种方法,分别是加权平均法,平均值法,最大值法,加权平均值法是对某些像素点加上较大的权重然后一个像素块区域中进行加权后平均。 平均值法就是简单的最某像素区域各个像素点进行平均,最大值法是通过对各个像素比较取灰度值最大的像素点附以整个图像块,我们在实验中编程选取不同的方法进行图像的灰度化,得到的鲜果也是略有差异。 通过这次的实验使我们对图像的灰度化有了更进一步的了解,巩固了所学知识。 实验4: 图像平滑实验 一、实验目的 1、培养学生理解图像平滑的原理 2.、掌握图像处理的基本方法 二、实验原理 1、邻域平均法图像平滑 假设待处理的图像为 处理后图像为 ,领域平均法图像平滑处理的数学表达可表示为: (1) 式中 为 的阵列,x,y=0,1,2,…,N-1,S是以 点为中心的邻域的集合,M为邻域S中的像素点数。 在具体平滑运算过程中,领域S的形状和大小根据图像特点来确定,一般取的形状是正方形、矩形及十字形等,如图10.1所示,是S邻域取四点邻域和八点邻域的示例,并且S的形状和大小可以在全图处理过程中始终保持不变,也可以根据图像的局部统计特性而变化,点 一般位于S的中心。 如S为 邻域,点 位于S中心,则公式(10.1)变为: (2) 2、加权平均法图像平滑 加权平均法的基本思路是: 对于同一尺寸的模板,可对不同位置的加权系数采用不同的数值。 一般认为离对应模板中心像素近的像素应对滤波结果有较大贡献,所以接近模板中心的系数可较大,而模板边界附近的系数应较小。 图像邻域加权平均就是用像素的某邻域内诸像素灰度的加权平均值来代替原像素的灰度值,从而达到消除噪声的干扰的目的。 其数学计算式为: (3) 式中 是邻域 内对应于像素 的加权值。 为了使加权平均后图像平均亮度不发生较大的变化,要求所有权值之和为1,即: (4) 如果邻域内各加权系数均相等时,即 ,则加权平均方法变成了邻域平均法,也就是说,邻域平均法是加权平均法中的一种特例。 在实际应用中,为保证各模板系数均为整数以减少计算量,常取模板周边最小的系数为1,而取内部的系数成比例增加,中心系数最大。 一种常用的加权平均方法是根据系数与模板中心的距离成反比来确定其他内部系数的值,常用的加权模板有: 三、实验内容(调试好的程序,实验结果及分析) voidIMG_Smooth (unsignedchar*F,/*输入带有噪声的灰度图像*/ unsignedchar*G,/*输出的平滑后的灰度图像*/ intcols,introws/*图像的宽度与高度*/ ) {//定义局部变量 unsignedchar*ptr,*pp,*newpp; inttmpNum,x,y; //图像四周的像素不进行平滑,等于原值 for(x=0;x G[x]=F[x]; //处理最后一行的像素 newpp=G+(rows-1)*cols;//指针指向平滑图像 pp=F+(rows-1)*cols;//指针指向噪声图像 for(x=0;x *newpp++=*pp++; //处理最左边一列的像素 newpp=G;//指针指向平滑图像 pp=F;//指针指向噪声图像 for(y=0;y { *newpp=*pp; newpp+=cols;pp+=cols;//指针偏移到下一行像素的位置 } //处理最右边一列的像素 newpp=G+cols;//指针指向平滑图像 pp=F+cols;//指针指向噪声图像 for(y=0;y { *newpp=*pp; newpp+=cols;pp+=cols;//指针偏移到下一行像素的位置 } //采用循环的方式对图像中的每个像素进行平滑 for(y=1;y for(x=1;x { newpp=G+y*cols+x;//指针指向平滑图像 pp=F+y*cols+x;//指针指向噪声图像 //累加第一排的3个像素的值 ptr=pp-cols-1; tmpNum=(*ptr++)*CoefArray[0]; tmpNum+=(*ptr++)*CoefArray[1]; tmpNum+=(*ptr++)*CoefArray[2]; //累加第二排的3个像素的值 ptr=pp-1; tmpNum+=(*ptr++)*CoefArray[3]; tmpNum+=(*ptr++)*CoefArray[4]; tmpNum+=(*ptr++)*CoefArray[5]; //累加第三排的3个像素的值 ptr=pp+cols-1; tmpNum+=(*ptr++)*CoefArray[6]; tmpNum+=(*ptr++)*CoefArray[7]; tmpNum+=(*ptr++)*CoefArray[8]; //累加的结果除以9 tmpNum/=9; //检测数据是否溢出,且将平均值赋给平滑图像 if(tmpNum>255) *newpp=255; else *newpp=tmpNum; } }//程序结束 四、实验小结 这次的实验是图像的额平滑,什么是图像的平滑呢? 就是将一幅灰度值分布不是很均匀的图像,通过平滑之后使其灰度级比较均匀,从而去除明显的噪声,在某种意义上跟直方图均衡化是有一定的联系与相同之处的。 这次的实验采用的是领域平均法,将图像分成3*3的像素块,那么每个像素块中是九个像素,然后循环对着九个像素的灰度值相加去平均值赋给器中间的像素点,依次循环对每一个像素点都做相同操作,最后得出的即是平滑后的图像。 可以发现平滑后的图像噪声已不再明显。 在这次的试验中,我感觉对图像处理的原理清楚明了是很重要的,只有在明白原理的基础上做实验才能步骤清晰,快而有准确。 实验5: 图像锐化实验 一、实验目的 1、培养学生理解图像锐化的原理 2、掌握DSP图像处理的基本方法 二、实验原理 拉普拉斯图像锐化: 拉普拉斯算子是一种在图像锐化处理中很重要的算法。 拉普拉斯算子也是与一个边缘方向无关的边缘点检测算子。 它对孤立像素的响应要比对边缘或线的响应更强烈,因此使用该算子进行图像锐化之前需要对图像作平滑处理。 拉普拉斯算子是一个刻画图像灰度的二阶微分算子。 它是点,线,边界提取算子,亦称为边界提取算子。 通常将原图像和对它实施拉普拉斯算子后的结果组合在一起而得到一幅锐化图像。 拉氏算子用来改善因扩散效应而变模糊的图像特别有效。 扩散效应是成像过程中经常发生的现象。 拉普拉斯算子也是最简单的各向同性微分算子,具有旋转不变性。 一个二维图像的拉普拉斯变换是各向同性的二阶导数,定义为: 对于离散数字图像f(i,j),其一阶偏导数为: 则其二阶偏导数为: 所以,拉普拉斯算子▽²f定义为: 对于扩散现象引起的图像模糊,可以用下式来进行锐化: 其中,kτ是与扩散效应有关的系数。 该系数取值要合理,如果kτ过大,图像轮廓边缘会产生过冲;反之如果kτ过小,锐化效果就不明显。 采用拉普拉斯锐化算法来实现数字图像的锐化,其基本的公式如公式(12.16)所示。 考虑到kτ是与扩散效应有关的系数,在锐化算法实现中,令kτ=1,则变换公式为: 如果用模板来表示,则与上式对应的模板如下所示。 这样拉普拉斯锐化运算完全可以转换成模板运算,模板取值将直接影响锐化的效果。 与梯度法相比,拉普拉斯算子对噪声的作用较梯度减弱。 常用的拉普拉斯算子模板 三、实验内容(调试好的程序,实验结果及分析) voidIMG_Sharp_Laplace (unsignedchar*F,/*输入原图像*/ unsignedchar*G,/*输出的锐化图像*/ intcols,introws/*图像的宽度与高度*/ ) {//定义局部变量 unsignedchar*ptr,*pp,*newpp; inttmpNum,i,x,y; //图像四周的像素不进行锐化,等于原值 for(x=0;x G[x]=F[x]; //处理最后一行的像素 newpp=G+(rows-1)*cols;//指针指向锐化图像 pp=F+(rows-1)*cols;//指针指向原图像 for(x=0;x *newpp++=*pp++; //处理最左边一列的像素 newpp=G;//指针指向锐化图像 pp=F;//指针指向原图像 for(y=0;y { *newpp=*pp; newpp+=cols;pp+=cols;//指针偏移到下一行像素的位置 } //处理最右边一列的像素 newpp=G+cols;//指针指向锐化图像 pp=F+cols;//指针指向原图像 for(y=0;y { *newpp=*pp; newpp+=cols;pp+=cols;//指针偏移到下一行像素的位置 } //采用循环的方式对图像中的每个像素进行锐化 for(y=1;y for(x=1;x { newpp=G+y*cols+x;//指针指向锐化图像 pp=F+y*cols+x;//指针指向原图像 tmpNum=5*(*pp);//(x,y)处像素的灰度值 tmpNum-=*(pp-cols);//(x,y)处上方像素的灰度值 tmpNum-=*(pp-1);//(x,y)处左边像素的灰度值 tmpNum-=*(pp+1);//(x,y)处右边像素的灰度值 tmpNum-=*(pp+cols);//(x,y)处下方像素的灰度值 //检测数据是否溢出,且将平均值赋给平滑图像 if(tmpNum>255) *newpp=255; elseif(tmpNum<0) *newpp=0; else *newpp=tmpNum; } }//程序结束 四、实验小结 图像的平滑往往使得图像中边缘,轮廓变得模糊,这是一种不利的现象,为了改变这种不利现象,引进了图像的锐化,图像的锐化是为了使图像的边缘,轮廓线,以及图像的细节部分变的清晰。 因为经过平滑的图像是因为图像收到了平均或积分运算,因此对其进行逆运算I如微分计算,就可以是图像变的清晰。 在这次的试验中,工程导进来之后,我遇到的问题的无法加载生成的.out可执行文件,弄了半天也不行,无奈重新配置CCS之后才好了,真是觉得任何细小的一步都决定了你是否成功完成实验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 图像 处理 技术 实验 报告 模板 New