数字图像处理在DSP上的实现Word文档下载推荐.docx
- 文档编号:21576958
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:13
- 大小:20.64KB
数字图像处理在DSP上的实现Word文档下载推荐.docx
《数字图像处理在DSP上的实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字图像处理在DSP上的实现Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
intconvolve_image(void);
intswap_pictures(void);
intminx,maxx,miny,maxy;
intLOADPAGE=0;
intENHANCEPAGE=1;
int*cmat,*pmat,*vmat;
intcmx,cmy,cmnum;
structpalettetypepalette,newpal;
intdriver,mode;
intcleancut=-1;
intinit_graphics(void)
{
driver=DETECT;
mode=0;
detectgraph(&
driver,&
mode);
if(driver==VGA)mode=VGAMED;
initgraph(&
mode,"
"
);
getpalette(&
palette);
newpal);
}
intcleanup_image(void)
inti,j,num,x,y,k;
if(cleancut<
0)return;
setactivepage(LOADPAGE);
setvisualpage(ENHANCEPAGE);
for(x=minx;
x<
maxx;
x++){
for(y=miny;
y<
maxy;
y++){
if(getpixel(x,y)!
=0)num=-1;
elsenum=0;
for(j=-1;
j<
2;
j++){
for(i=-1;
i<
i++){
if(getpixel(x+i,y+j)!
=0)num++;
}
if(num>
cleancut){
k=getpixel(x,y);
setactivepage(ENHANCEPAGE);
putpixel(x,y,k);
k=ENHANCEPAGE;
ENHANCEPAGE=LOADPAGE;
LOADPAGE=k;
voidshow_test_image(void)
inti;
minx=cmx;
miny=cmy;
maxx=100+minx;
maxy=100+miny;
setcolor
(1);
moveto(minx,miny);
randomize();
for(i=0;
20;
i++)
lineto(random(100)+minx,random(100)+miny);
10;
fillellipse(random(50)+25+minx,random(50)+25+miny,random(25),random(25));
main()
charfname[50];
intflag=0;
load_convolution_matrix("
printf("
.CUTfile
(1)ortestimage(0)"
scanf("
%d"
&
flag);
flag=flag1:
0;
if(flag){
fflush(stdin);
filenametoprocess:
gets(fname);
Deletepixelswithxorfewerneighbors.x="
cleancut);
if(cleancut>
8)cleancut=8;
init_graphics();
setactivepage
(1);
cleardevice();
setactivepage(0);
setvisualpage(LOADPAGE);
if(flag)load_cut(fname);
elseshow_test_image();
cleanup_image();
convolve_image();
swap_pictures();
restorecrtmode();
inttoggle_colors(charc)
c=tolower(c);
c=c-'
a'
;
if(c<
0||c>
=return0;
[c]=[c][c];
setpalette(c,[c]);
return1;
intswap_pictures(void)
intmode=0;
chara;
for(;
){
a=getch();
if(a==27)return;
if(toggle_colors(a))continue;
if(mode==0)setvisualpage(ENHANCEPAGE);
if(mode==1)setvisualpage(LOADPAGE);
mode=1-mode;
intconvolve_image(void)
inti,j,k,nval;
int*vx,*vy,*c;
intcolmax,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*));
cmy;
i++)lines[i]=(char*)malloc(sizeof(char)*(maxx-minx+cmx+1));
for(j=-cmy/2;
cmy/2;
for(i=minx-cmx/2;
(maxx+cmx/2+1);
lines[j+midy][i+offset]=getpixel(i,j+miny);
colmax=getmaxcolor();
for(j=miny;
for(i=j+cmy/2,k=minx-cmx/2,nval=maxx+cmx/2;
k<
nval;
k++)
lines[end][k+offset]=getpixel(k,i);
for(i=minx;
/*Load&
multiplyneighborsintomatrix*/
vx=vmat;
vy=vmat+1;
c=cmat;
nval=0;
for(k=0;
cmnum;
k++){
if(*c)nval+=lines[(*vy)+midy][i+(*vx)+offset]*(*c);
/*if(*c)nval+=getpixel(i+(*vx),j+(*vy))*(*c);
*/
c++;
vx+=2;
vy+=2;
/*Cutoffvaluestoohighortoolow*/
if(nval<
0)nval=0;
if(nval>
colmax)nval=colmax;
/*Placenewpixelvalue*/
putpixel(i,j,nval);
if(kbhit()){getch();
break;
/*rotatelinepointers*/
temp=lines[0];
for(i=1;
i++)lines[i-1]=lines[i];
lines[end]=temp;
if(lines[i]!
=NULL)free(lines[i]);
if(lines!
=NULL){
free(lines);
return;
intbuild_offset_vectors(void)
int*t;
intil,im,jl,jm,i,j;
il=-cmx/2;
im=cmx+il;
jl=-cmy/2;
jm=cmy+jl;
t=vmat;
for(j=jl;
jm;
for(i=il;
im;
*t++=i;
*t++=j;
intload_convolution_matrix(char*fname)
/*Layoutofmatrixfile:
#x#y
x0y0x1y0...xny1
...............
x0ymx1ym...xnym
FILE*mf;
inti,j,im,jm;
if((mf=fopen(fname,"
rt"
))==NULL){
Cannotloadmatrixfile.\n"
abort();
fscanf(mf,"
%d%d"
im,&
jm);
if((im&
1)==0||(jm&
1)==0){
ConvolutionmatrixMUSThaveacenterpoint.\n"
if((cmat=(int*)calloc(im*jm,sizeof(int)))==NULL){
Unabletocallocconvolutionmatrix.\n"
if((vmat=(int*)calloc(2*im*jm,sizeof(int)))==NULL){
Unabletocallocoffsetvectormatrix.\n"
cmx=im;
cmy=jm;
cmnum=im*jm;
t=cmat;
for(j=0;
if(fscanf(mf,"
t++)!
=1){
Unabletoreadmatrix.\n"
fclose(mf);
build_offset_vectors();
intload_cut(char*fname)
staticunsignedcharst[3000];
char*sp=st,*spend;
intstp=0;
intwidth,height;
FILE*fp;
intx,y,xl,yl;
inti,n,len,d,j;
fp=fopen(fname,"
rb"
width=getw(fp);
height=getw(fp);
xl=cmx;
yl=cmy;
minx=xl;
miny=yl;
maxx=xl+width;
maxy=yl+height;
if(maxy>
(getmaxy()-cmy)){
maxy=getmaxy()-cmy;
height=maxy-yl;
getw(fp);
y=yl-1;
for(sp=st,n=0;
n<
height;
n++){
stp=getw(fp);
for(sp=st,spend=st+stp;
sp<
spend;
)*sp++=getc(fp);
sp=st;
spend=sp+stp;
x=xl;
y++;
while(sp<
spend){
if(*((unsignedchar*)sp)>
0x80){
len=(*sp++)&
0x7f;
if(!
(*sp)){x+=len;
continue;
setcolor(*sp++);
moveto(x,y);
linerel(len,0);
x+=len;
}else{
len=*sp++;
len;
j++)putpixel(x++,y,*sp++);
fclose(fp);
初始化和读取图像程序
#defineMODEPHOTO11
#defineMODEPHOTO22
#defineGRAYBARLEVEL16
voidReadImage(unsignedchar*pImage,char*cFileName,intnWidth,intnHeight);
voidInitImage(unsignedintnMode,unsignedchar*pImage,intnWidth,intnHeight)
swich(nMode)
{
caseMODEPHOTO1:
Readimage(pImage,"
..\\"
nWidth,nHeight);
caseMODEPHOTO2:
ReadImage(pImage,"
default:
voidReadImage(unsignedchar*cFileName,intnWidth,intnHeight)
intj;
unsignedchar*pWork;
FILE*fp;
if(fp=fopen(cFileName,"
))
fseek(fp,1078L,SEEK_SET);
pWork=pImage+(nHeight-1)*nWidth;
nHeight;
j++,pWork-=nWidth)
fread(pWork,nWidth,1,fp);
4运行结果分析
从实验结果可以看出,调整图像旋转,由于存在对称性,一幅图像任意角度的旋转可分解为一次90°
或180°
或270°
的旋转,再加上一次±
45°
以内的旋转。
图原图
图顺时针旋转90度
图逆时针旋转90度
结论
本文得到的结论如下:
实验采用高分辨率图像处理平台,以TMS320C5509芯片为主处理芯片,时钟为300MHz,片外为16MBSDRAM。
实验实现相应尺寸(80×
80像素)的视口图像旋转,相应的源图像数据分别为80×
80像素的BMP格式的数字地图图像,采用弧度旋转角度递增间隔,对分别采用传统像素逐点矩阵相乘方法、基于图像线性存储结构方法以及基于本文数据调度策略的结构优化的线性存储结构方法三种实现方式进行对比,分别统计其平均每帧运行时间并转换成帧率,达到了本次课程设计的要求。
参考文献
[1]DANIELSSONPRotationofImages[J].GraphicalModelsandImageProcessing,2002
[2]方华刚.DSP原理与应用.北京.北京机械工业出版社,
[3]朱虹.数字图像处理.北京.科学出版社,
[4]孙宗瀛.TMS320C55XDSP原理设计与应用.北京.清华大学出版社,2002
[5]郑红吴冠.TMS320C55XDSP应用系统设计.北京.北京航空航天大学出版社,2002
[6]TMS320C55XDSPProgrammer’sGuideSPRU376A[Z].TexasInstruments,2001
致谢
通过本次课程设计,加强了我们动手、思考和解决问题的能力,我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解所学的知识。
而这次课程设计使我对于其在DSP中的使用有了更多的认识。
平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。
而且还可以记住很多东西。
这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为我所用。
在设计实验过程中,我也遇到过很多困难,通过同学们和老师的帮助最终解决了问题才得以完成课程设计,在这里对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
课程设计(论文)评语及成绩评定
指导教师评语:
评分_______指导教师(签字)_______________________年____月____日
课程设计(论文)及答辩评分:
1.学生工作态度和平时表现(共20分)__________;
2.论文格式规范、语言流畅(共20分)__________;
3.数据完整、分析论述充分合理,结论正确(共20分)__________;
4.答辩表述能力(共20分)__________;
5.基本概念及回答问题情况(共20分)_________。
课程设计总成绩______答辩组成员(签字)_________________年___月__日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 DSP 实现