ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:20.70KB ,
资源ID:23331724      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23331724.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字图像处理在DSP上的实现.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字图像处理在DSP上的实现.docx

1、数字图像处理在DSP上的实现数字图像处理在DSP上的实现(旋转)1 绪论1.1设计目的图像旋转是一种应用广泛的数字图像处理技术,随着应用水平的不断提高,对在嵌入式系统中实现高分辨率大图像旋转的需求也越来越高。如在航空领域的高分辨率数字地图图像的显示处理过程中,由于现有的显示芯片均不能支持图像旋转功能,就需要在资源有限的嵌入式平台上实现大幅面地图图像的实时旋转。采用DSP平台是一种实现方式,具体实现时需仔细考虑两个方面的问题,一是选用计算量小的旋转算法,二是充分发挥DSP平台强大的并行计算能力。1.2设计任务 1.能从计算机上读取图片。2.编写图像旋转程序,在TMS320C5509上实现。2 设

2、计原理及分析2.1设计原理 目前,已经有很多有效降低计算量的图像旋转算法,基于图像线性存储结构的旋转方法就是其中之一。然而,在DSP平台上,有限的高速存储资源限制了这些算法效率的直接发挥,需要针对算法及DSP平台的性能结构特点进行高效的数据调度。对于图像旋转问题而言,数据调度还需要克服由于存在大量非连续图像像素地址访问而严重影响DSP数据存取及CPU效率发挥的问题。这是图像旋转本身的特殊性,在其他图像处理技术中是不存在的。由DSP的结构特点可知,只有在数据和程序均位于片内存储器当中的条件下,DSP的效率才能得到最大化的发挥。在大图像旋转算法中,由于涉及的图像数据量远大于DSP的片内存储器容量,

3、源图像和最终视口图像等数据必须被存放在片外存储器中。在这种情况下,为了保证DSP CPU高速处理能力的发挥,必须优化数据流,将源图像分块,依次搬移至片内处理,并设法保证CPU当前要处理的图像数据块已经事先在片内存储器中准备好了。因此在算法整体优化结构上采用Ping-Pong双缓冲技术,利用EDMA与CPU并行工作来隐藏图像数据块在片内和片外之间的传输时间,使CPU能连续不断地处理数据,中间不会出现空闲等待。传统的图像旋转一般通过矩阵乘法实现: 其中,为旋转角度。由于图像是线性存储的,各个像素点之间的相对位置关系确定。如图1(a)所示,图像旋转前,任意像素点P(x,y)和P1(x1,y1)、P2

4、(x2,y2)及A(xA,yA)在几何上是矩形的四顶点关系。由于旋转变换是线性变换,如图1(b)所示,图像旋转后,各个像素点之间的相对位置关系不发生变化,旋转算法的数据调度目的是使算法能够按照一定的规则,将源图像数据有规律地分块,并按次序分别传输到DSP片内存储器中,完成计算后,形成视口图像块,再将视口图像块按同样的顺序进行排列,形成旋转后的视口图像。整个过程要求调入和调出的图像数据均是规则分块的,并且调入的源图像块中应该包含计算视口图像块的过程中所需要的全部像素数据,尤其需要解决其中的大量非连续图像像素地址访问问题。视口逆时针旋转的情况与此类似。区别有以下两点:1 源图像块的左边框中点与相应

5、的视口图像块旋转后的左上角顶点对应;源图像块的顶点局部坐标地址值与视口图像块的顶点局部坐标地址值之间的对应关系式应为:其中height指源图像块的高度。3 软件程序3.1主程序#include#include#include#include#includeint load_cut(char *fname);int load_convolution_matrix(char *fname);int convolve_image(void);int swap_pictures(void);int minx,maxx,miny,maxy;int LOADPAGE=0;int ENHANCEPAGE=1

6、;int *cmat, *pmat, *vmat;int cmx,cmy,cmnum;struct palettetype palette,newpal;int driver,mode;int cleancut=-1;int init_graphics(void) driver=DETECT; mode=0; detectgraph(&driver,&mode); if(driver=VGA) mode=VGAMED; initgraph(&driver,&mode,); getpalette(&palette); getpalette(&newpal);int cleanup_image(v

7、oid) int i,j,num,x,y,k; if(cleancut0) return; setactivepage(LOADPAGE); setvisualpage(ENHANCEPAGE); for(x=minx;xmaxx;x+) for(y=miny;ymaxy;y+) if(getpixel(x,y)!=0) num=-1; else num=0; for(j=-1;j2;j+) for(i=-1;icleancut) k=getpixel(x,y); setactivepage(ENHANCEPAGE); putpixel(x,y,k); setactivepage(LOADPA

8、GE); k=ENHANCEPAGE; ENHANCEPAGE=LOADPAGE; LOADPAGE=k;void show_test_image(void) int i; minx=cmx; miny=cmy; maxx=100+minx; maxy=100+miny; setcolor(1); moveto(minx,miny); randomize(); for(i=0;i20;i+) lineto(random(100)+minx,random(100)+miny); for(i=0;i8) cleancut=8; init_graphics(); setactivepage(1);

9、cleardevice(); setactivepage(0); cleardevice(); setactivepage(LOADPAGE); setvisualpage(LOADPAGE); if(flag) load_cut(fname); else show_test_image(); cleanup_image(); setvisualpage(ENHANCEPAGE); convolve_image(); swap_pictures(); restorecrtmode();int toggle_colors(char c) c=tolower(c); c=c-a; if(c=pal

10、ette.size) return 0; newpal.colorsc= palette.colorsc-newpal.colorsc; setpalette(c,newpal.colorsc); return 1;int swap_pictures(void) int mode=0; char a; setvisualpage(LOADPAGE); for(;) a=getch(); if(a=27) return; if(toggle_colors(a) continue; if(mode=0) setvisualpage(ENHANCEPAGE); if(mode=1) setvisua

11、lpage(LOADPAGE); mode=1-mode; int convolve_image(void) int i,j,k,nval; int *vx, *vy, *c; int colmax,offset,end,midy; char *lines=NULL; char *temp=NULL; offset=-minx+(cmx/2); end=cmy-1; midy=cmy/2; lines=(char *)malloc(cmy*sizeof(char *); for(i=0;icmy;i+) linesi=(char *)malloc(sizeof(char)*(maxx-minx

12、+cmx+1); setactivepage(LOADPAGE); for(j=-cmy/2;jcmy/2;j+) for(i=minx-cmx/2;i(maxx+cmx/2+1);i+) linesj+midyi+offset=getpixel(i,j+miny); colmax=getmaxcolor(); for(j=miny;jmaxy;j+) setactivepage(LOADPAGE); for(i=j+cmy/2,k=minx-cmx/2,nval=maxx+cmx/2;knval;k+) linesendk+offset=getpixel(k,i); for(i=minx;i

13、maxx;i+) /* Load & multiply neighbors into matrix */ setactivepage(LOADPAGE); vx=vmat; vy=vmat+1; c=cmat; nval=0; for(k=0;kcmnum;k+) if(*c) nval+= lines(*vy)+midyi+(*vx)+offset*(*c); /* if(*c) nval+= getpixel(i+(*vx),j+(*vy) * (*c); */ c+; vx+=2; vy+=2; /* Cut off values too high or too low */ if(nv

14、alcolmax) nval=colmax; /* Place new pixel value */ setactivepage(ENHANCEPAGE); putpixel(i,j,nval); if(kbhit() getch(); break; /* rotate line pointers */ temp=lines0; for(i=1;icmy;i+) linesi-1=linesi; linesend=temp; for(i=0;icmy;i+) if(linesi!=NULL) free(linesi); if(lines!=NULL) free(lines); return;i

15、nt build_offset_vectors(void) int *t; int il,im,jl,jm,i,j; il=-cmx/2; im=cmx+il; jl=-cmy/2; jm=cmy+jl; t=vmat; for(j=jl;jjm;j+) for(i=il;iim;i+) *t+=i; *t+=j; int load_convolution_matrix(char *fname) /* Layout of matrix file: #x #y x0y0 x1y0 . xny1 . . . . x0ym x1ym . xnym */ FILE *mf; int *t; int i

16、,j,im,jm; if( (mf=fopen(fname,rt)=NULL ) printf(Cannot load matrix file.n); abort(); fscanf(mf,%d%d,&im,&jm); if( (im&1)=0 | (jm&1)=0 ) printf(Convolution matrix MUST have a center point.n); abort(); if( (cmat=(int *)calloc(im*jm,sizeof(int)=NULL ) printf(Unable to calloc convolution matrix.n); abor

17、t(); if( (vmat=(int *)calloc(2*im*jm,sizeof(int)=NULL ) printf(Unable to calloc offset vector matrix.n); abort(); cmx=im; cmy=jm; cmnum=im*jm; t=cmat; for(j=0;jjm;j+) for(i=0;i(getmaxy()-cmy) maxy=getmaxy()-cmy; height=maxy-yl; getw(fp); y=yl-1; for(sp=st,n=0;nheight;n+) stp=getw(fp); for(sp=st,spen

18、d=st+stp;spspend;) *sp+=getc(fp); sp=st; spend=sp+stp; x=xl; y+; while(sp0x80) len=(*sp+) & 0x7f; if(!(*sp) x+=len; continue; setcolor(*sp+); moveto(x,y); linerel(len,0); x+=len; continue; else len=*sp+; for(j=0;jlen;j+) putpixel(x+,y,*sp+); continue; fclose(fp);3.2初始化和读取图像程序#include#define MODEPHOT

19、O1 1#define MODEPHOTO2 2#define GRAYBARLEVEL 16void ReadImage(unsigned char*pImage,char*cFileName,int nWidth,int nHeight);void InitImage(unsigned int nMode,unsigned char*pImage,int nWidth,int nHeight) swich(nMode) case MODEPHOTO1: Readimage(pImage,.DSP.bmp,nWidth,nHeight); break; case MODEPHOTO2: Re

20、adImage(pImage,.1.bmp,nWidth,nHeight); break; default: break; void ReadImage(unsigned 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(pWork,nWidth

21、,1,fp); fclose(fp); 4 运行结果分析从实验结果可以看出,调整图像旋转,由于存在对称性,一幅图像任意角度的旋转可分解为一次90或180或270的旋转,再加上一次45以内的旋转。图4.1 原图图4.2 顺时针旋转90度图4.3 逆时针旋转90度结 论本文得到的结论如下:实验采用高分辨率图像处理平台,以TMS320C5509芯片为主处理芯片,时钟为300MHz,片外为16MB SDRAM。实验实现相应尺寸(8080像素)的视口图像旋转,相应的源图像数据分别为8080像素的BMP格式的数字地图图像,采用0.005弧度旋转角度递增间隔,对分别采用传统像素逐点矩阵相乘方法、基于图像线性

22、存储结构方法以及基于本文数据调度策略的结构优化的线性存储结构方法三种实现方式进行对比,分别统计其平均每帧运行时间并转换成帧率,达到了本次课程设计的要求。参考文献1 DANIELSSON P E.High-Accuracy Rotation of ImagesJ.Graphical Models and Image Processing,20022 方华刚.DSP原理与应用.北京.北京机械工业出版社,2006.13 朱虹.数字图像处理.北京.科学出版社,2007.44 孙宗瀛. TMS320C55X DSP原理设计与应用.北京. 清华大学出版社,20025 郑红 吴冠. TMS320C55X D

23、SP应用系统设计.北京.北京航空航天大学出版社, 20026 TMS320C55X DSP Programmers Guide SPRU376AZ.Texas Instruments,2001致 谢通过本次课程设计,加强了我们动手、思考和解决问题的能力,我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解所学的知识。而这次课程设计使我对于其在DSP中的使用有了更多的认识。平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为我所用。在设计实验过程中,我也遇到过很多困难,通过同学们和老师的帮助最终解决了问题才得以完成课程设计,在这里对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!课程设计(论文)评语及成绩评定指导教师评语:评分_ 指导教师(签字)_ _年_月_日课程设计(论文)及答辩评分:1学生工作态度和平时表现(共20分)_;2论文格式规范、语言流畅(共20分)_;3数据完整、分析论述充分合理,结论正确(共20分)_;4答辩表述能力(共20分)_;5基本概念及回答问题情况(共20分)_。课程设计总成绩_ 答辩组成员(签字)_ _年_月_日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1