DSP应用系统(三级)项目设计说明书基于DSP的形状识别_第1页
DSP应用系统(三级)项目设计说明书基于DSP的形状识别_第2页
DSP应用系统(三级)项目设计说明书基于DSP的形状识别_第3页
DSP应用系统(三级)项目设计说明书基于DSP的形状识别_第4页
DSP应用系统(三级)项目设计说明书基于DSP的形状识别_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息与电气工程学院 dspdsp 应用系统(三级)项目应用系统(三级)项目 设计说明书设计说明书 (2013/2014 学年第二学期) 题 目 : 基于 dsp 的形状识别 专业班级 : 电子信息 1101 学生姓名 : 指导教师 : 设计周数 : 2 周 设计成绩 : 2014 年 7 月 11 日 目目 录录 1 1 项目设计目的及任务项目设计目的及任务.2 2 2 2 项目设计内容项目设计内容.2 2 2.2.1 1 项目设计原理项目设计原理.2 2 2.1.2.1.1 1 数字图像信号处理数字图像信号处理.2 2 2.2.1 1.2.2 tms320vc5509tms320vc5509

2、 芯片介绍芯片介绍 .4 4 2.2.1 1 程序代码程序代码.5 5 3 3 项目设计心得项目设计心得.1 10 0 4 4 参考文献参考文献.1 10 0 1 1 项目设计目的项目设计目的 (1)通过 dsp 实验箱,读取一幅图像或者一路模拟视频信号的采集与显示; (2)掌握形式识别的原理; (3)掌握 dsp 实验箱环境与程序设计; (4)基于实验箱环境编写形状识别程序,对规则形状进行识别 2 2 项目设计内容项目设计内容 2.12.1 项目设计原理项目设计原理 2.1.12.1.1 数字图像信号处理数字图像信号处理 (1)数字图像直方图统计:灰度直方图是数字图像处理中一个最简单、最有用

3、的工具, 它描述了一幅图像的灰度级内容。任何一幅图像的直方图都包括了可观的信息,某些类型 的图像可由其直方图完全描述。灰度直方图是灰度值的函数, 描述的是图像中具有该灰度 值的像素的个数,其横坐标表示像素的灰度级别,纵坐标是该灰度出现的频率(像素个数与 图像像素总数之比)。 程序流程图: 图 1 直方统计流程图 (2)数字图像边缘检测:图像的边缘是图像的最基本特征。所谓边缘(或边沿)是指 其周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。边缘广泛存在于物体与背景之 间、物体与物体之间、基元与基元之间。因此,它是图像分割所依赖的重要特征。物体的 边缘是由灰度不连续性所反映的。 经典的边缘提取方

4、法是考察图像的每个像素在某个邻域内灰度的变化,利用边缘临近 一阶或二阶方向导数变化规律,用简单的方法检测边缘。这种方法称为边缘检测局部算子 法。 边缘的种类可以分为两种:一种称为阶跃性边缘,它两边的像素的灰度值有着显著的 不同;另一种称为屋顶状边缘, 它位于灰度值从增加到减少的变化转折点。 如果一个像素落在图像中某一个物体的边界上,那么它的邻域将成为一个灰度级的变 化带。对于这种变化最有用的两个特征是灰度的变化率和方向,它们分别以梯度向量的幅 度和方向来表示。 边缘检测算子检查每个像素的邻域并对灰度变化率进行量化, 也包括方向的确定。大 多数使用基于方向导数掩模求卷积的方法。 (3)sobel

5、 边缘算子:在边沿检测中,常用的一种模板是 sobel 算子。sobel 算子有 两个,一个是检测水平边沿的;另一个是检测垂直平边沿的。与和相比,sobel 算子对于 象素的位置的影响做了加权,因此效果更好。 sobel 算子另一种形式是各向同性 sobel(isotropic sobel)算子,也有两个,一个是 检测水平边沿的 ,另一个是检测垂直平边沿的 。各向同性 sobel 算子和普通 sobel 算子 相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。由于建筑 物图像的特殊性,我们可以发现,处理该类型图像轮廓时,并不需要对梯度方向进行运算, 所以程序并没有给出各向同

6、性 sobel 算子的处理方法。 由于 sobel 算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数, 简单有 效,因此应用广泛。美中不足的是,sobel 算子并没有将图像的主体与背景严格地区分开 来,换言之就是 sobel 算子没有基于图像灰度进行处理,由于 sobel 算子没有严格地模拟 人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。在观测一幅图像的时候, 我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理 论,我们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布 时所求解是最优的。 sobel 算子是一个离散微分算子(d

7、iscrete differentiation operator)。它结合了高 斯平滑和微分求导,用来计算图像灰度函数的近似梯度。下图所示的两个卷积核形成了 sobel 算子,图像中的每个点都用这两个核做卷积,一个核对通常的垂直边缘相应最大, 而另一个对水平边缘相应最大。两个卷积的最大值作为该点的输出位。运算结果是一幅边 缘幅度图像。 图 2 sobel 边缘算子 程序流程图: 图 3 边缘检测流程图 2.1.22.1.2 tms320vc5509tms320vc5509 芯片介绍芯片介绍 dsp 定点数字信号处理器(dsp)是基于 dsp tms320c55x 代 cpu 处理器核心。的 c

8、55x dsp 架构通过增加并行性和减少功耗总重点实现了高性能和低功耗。支持的 cpu 内部总线 结构,是由一个程序读取的数据总线,三总线,两个数据写入总线,和更多的公交车专用 外设和 dma 活动。这些巴士提供表演三数据的能力在一个周期内读取和写入两数据。同时, dma 控制器进行了两个数据传输周期独立的 cpu 活动。提供两个 cpu 的 c55x 乘累加 (mac)单元,每个具有 17 位17 位乘法的一个周期。 特征: *高性能,低功耗,定点数字信号处理器 tms320c55x * 6.94-ns 指令周期时间为 144 mhz 的时钟速率在 1.6 v *一个/两个指令(s)每个周期

9、执行 *双乘法器达 288000000 乘累加每秒(mmacs) *两个算术/逻辑单元(alu) *三内部数据、操作数读公交车和两个内部数据/操作数写入总线 * 128k 的16 位的芯片上的 ram,由: *64k 字节的双端口存储器(区)8 块 4k16 位 *192k 字节的单一访问 ram(saram)24 块 4k16 位 *64k 字节的一个等待状态的片上 rom(32k16 位) *816 位最大可寻址的外部存储空间(同步动态随机存储器) *16 位外部并行总线内存支持 *外部存储器接口(emif)与 gpio 功能和无缝接口 *异步静态存储器(sram) *异步存储器 *同步动

10、态随机存取存储器(sdram) * 16 位并行增强的主机接口(hpi)与 gpio 功能 *六装置的功能结构域可编程低功耗控制 *在芯片扫描为基础的仿真逻辑 *片上外设 2.22.2 程序代码程序代码 image.c #include #define imagewidth 80 #define imageheight 80 #define modegraybar 0 #define modegray 1 #define modephoto1 2 #define modephoto2 3 #define modephoto3 4 #define modephoto4 5 #define mod

11、ephoto5 6 #define modephoto6 7 float fhistogram256; void initimage(unsigned int nmode,unsigned char *pimage,int nwidth,int nheight); unsigned char dbimageimagewidth*imageheight; unsigned char dbtargetimageimagewidth*imageheight; float circularity(unsigned char *pimage,unsigned char *pimage0,int nwid

12、th,int nheight,float fhisto256); float l,s,circularity0; /* 直方图统计实验程序 */ int main() initimage(modephoto1,dbimage,imagewidth,imageheight); /breakpoint sobel(imagewidth,imageheight); identification(modephoto1); initimage(modephoto2,dbimage,imagewidth,imageheight); /breakpoint sobel(imagewidth,imagehei

13、ght); identification(modephoto2); initimage(modephoto3,dbimage,imagewidth,imageheight); /breakpoint sobel(imagewidth,imageheight); identification(modephoto3); initimage(modephoto4,dbimage,imagewidth,imageheight); /breakpoint sobel(imagewidth,imageheight); identification(modephoto4); initimage(modeph

14、oto5,dbimage,imagewidth,imageheight); /breakpoint sobel(imagewidth,imageheight); identification(modephoto5); initimage(modephoto6,dbimage,imagewidth,imageheight); /breakpoint sobel(imagewidth,imageheight); identification(modephoto6); while (1);/breakpoint float circularity(unsigned char *pimage,unsi

15、gned char *pimage0,int nwidth,int nheight,float fhisto256) int i,j; unsigned int uwork; unsigned char *pwork,*pwork0; for ( i=0;i256;i+ ) fhistoi=0.0f; pwork=pimage0; for ( i=0;inheight;i+ ) for ( j=0;jnwidth;j+,pwork+ ) uwork=(unsigned int)(*pwork); fhistouwork+; l=fhisto255; for ( i=0;i256;i+ )fhi

16、stoi=0.0f; pwork0=pimage; for ( i=0;inheight;i+ ) for ( j=0;j59 initimage.c #include #define modegraybar 0 #define modegray 1 #define modephoto1 2 #define modephoto2 3 #define modephoto3 4 #define modephoto4 5 #define modephoto5 6 #define modephoto6 7 #define modeblock 6 #define modeincline 7 #defin

17、e modefphoto 8 #define graybarlevel 16 void readimage(unsigned char *pimage,char *cfilename,int nwidth,int nheight); void initimage(unsigned int nmode,unsigned char *pimage,int nwidth,int nheight) switch ( nmode ) case modephoto1: readimage(pimage,.circle1.bmp,nwidth,nheight); break; case modephoto2

18、: readimage(pimage,.squarence1.bmp,nwidth,nheight); break; case modephoto3: readimage(pimage,.triangle1.bmp,nwidth,nheight); break; case modephoto4: readimage(pimage,.squarence2.bmp,nwidth,nheight); break; case modephoto5: readimage(pimage,.triangle2.bmp,nwidth,nheight); break; case modephoto6: read

19、image(pimage,.circle2.bmp,nwidth,nheight); break; void readimage(unsigned char *pimage,char *cfilename,int nwidth,int nheight) int j; unsigned char *pwork; file *fp; if ( fp=fopen(cfilename,rb ) ) fseek(fp,1078l,seek_set); pwork=pimage+(nheight-1)*nwidth; for ( j=0;jnheight;j+,pwork-=nwidth ) fread(

20、pwork,nwidth,1,fp); fclose(fp); sobel.c #define imagewidth 80 #define imageheight 80 #include extern unsigned char dbimageimagewidth*imageheight; extern unsigned char dbtargetimageimagewidth*imageheight; int mi,mj,m_nwork1,m_nwork2; unsigned int m_nwork,*pwork; unsigned char *pimg1,*pimg2,*pimg3,*pi

21、mg; unsigned int x1,x2,x3,x4,x5,x6,x7,x8,x9; void sobel(int nwidth,int nheight) int i; pimg=dbtargetimage; for ( i=0;iimagewidth;i+,pimg+ ) (*pimg)=0; (*pimg)=0; pimg1=dbimage; pimg2=pimg1+imagewidth; pimg3=pimg2+imagewidth; for ( i=2;inheight;i+ ) pimg+; x1=(*pimg1); pimg1+; x2=(*pimg1); pimg1+; x4

22、=(*pimg2); pimg2+; x5=(*pimg2); pimg2+; x7=(*pimg3); pimg3+; x8=(*pimg3); pimg3+; for ( mi=2;minwidth;mi+,pimg+,pimg1+,pimg2+,pimg3+ ) x3=(*pimg1); x6=(*pimg2); x9=(*pimg3); m_nwork1=abs(x7+x8+x8-x2-x2-x3); m_nwork2=abs(x3+x6+x6-x4-x4-x7); if (m_nwork1255 )m_nwork1=255; (*pimg)=m_nwork1; x1=x2; x2=x

23、3; x4=x5; x5=x6; x7=x8; x8=x9; (*pimg)=0; pimg+; 程序运行结果: circularity0=59.205189.circle circularity0=63.320961.squarence circularity0=96.094772.triangle circularity0=63.429848.squarence circularity0=96.553711.triangle circularity0=59.391403.circle 3 3 项目设计总结或结论项目设计总结或结论 本学期学习 dsp 的时间很短,芯片设计掌握的深度不够,但通过此次课程设计,却改变 了很多, 首先,对于

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论