![[毕业设计精品]简单图像处理系统的C语言实现.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-12/20/b839a95b-8259-43ac-8308-d37c9b29f8ce/b839a95b-8259-43ac-8308-d37c9b29f8ce1.gif)
![[毕业设计精品]简单图像处理系统的C语言实现.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-12/20/b839a95b-8259-43ac-8308-d37c9b29f8ce/b839a95b-8259-43ac-8308-d37c9b29f8ce2.gif)
![[毕业设计精品]简单图像处理系统的C语言实现.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-12/20/b839a95b-8259-43ac-8308-d37c9b29f8ce/b839a95b-8259-43ac-8308-d37c9b29f8ce3.gif)
![[毕业设计精品]简单图像处理系统的C语言实现.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-12/20/b839a95b-8259-43ac-8308-d37c9b29f8ce/b839a95b-8259-43ac-8308-d37c9b29f8ce4.gif)
![[毕业设计精品]简单图像处理系统的C语言实现.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-12/20/b839a95b-8259-43ac-8308-d37c9b29f8ce/b839a95b-8259-43ac-8308-d37c9b29f8ce5.gif)
已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
光电图像处理课程设计说明书题 目图像处理系统的c语言实现系 (部) 电子与通信工程系 专业(班级) 姓 名 学 号 20080 指导教师 起止日期 10.12.2709.12.31 08级光电图像处理课程设计与仿真课题任务书系(部):电子与通信工程系 专业: 应物 指导教师: 2010-12-15课题名称运用c语言实现简单的图像处理系统设计内容及要求1、 设计内容(选题范围):首先每个同学都必须有个基本的演示系统(也就是包括简单的显示一张图片,读取图片的信息,读取一张图片。)然后根据你们的学号除以4取余数。题目一 1,显示图片的直方图,简单的线条直方图。 2,采取中值滤波 3,边缘检测(sobel) 4,(提高题目)膨胀或细化题目二 1,显示图片的直方图,简单的线条直方图。 2,采取均值滤波 3,边缘检测(roberts) 4,(提高题目)膨胀或细化题目三 1,显示图片的直方图,简单的线条直方图。 2,采取均值滤波 3,边缘检测(sobel) 4,(提高题目)膨胀或细化题目四 1,显示图片的直方图,简单的线条直方图。 2,采取中值滤波 3,边缘检测(roberts) 4,(提高题目)膨胀或细化 2、设计要求:1、自拟课题请报指导老师登记批准;2、要求同学们能够通过自己的努力做出dos界面演示基本要求(及格),完成题目的前三个小点(中、良),完成提高(优);3、要求使用公式编辑器进行公式输入;4、按照模板撰写课程设计报告。简单图像处理系统的c语言实现摘要本设计要求每个同学能编写一个简单的系统对常见的图像操作进行仿真,并设计简单的界面进行交互式操作,通过研究算法并进行分析。重点是对c语言程序设计课程中学习的知识进行形象,直观的计算机模拟与仿真实现,从而加深对数字图像处理和c语言程序设计的理解,从基本理论过渡到实际应用。通过本次课程设计的学习,掌握了数字图像处理位图的读取和显示,位图直方图的显示,一些图像变换的应用,理解各种应用的基本内容、性质与应用,特别建立图像处理设计的概念,并能建立简单处理图像系统模型,对模型求解,掌握vc+的基本方法和构成,进一步提高分析问题与实践技能的能力,培养整理数据和分析结果的能力,学会用vc+编程、调试程序。加深理解与巩固理论汇编语言的知识。为以后的学习打下基础。关键词位图显示,直方图,中/均值滤波,sobel算子的边缘检测,图像处理系统目 录1 bmp图片格式介绍及图片显示的c语言实现32 直方图显示的c语言实现43 中/均值滤波原理及c语言实现84 sobel算子边缘检测原理及c语言实现115 图像处理系统设计126 心得体会14参考文献141 bmp图片格式介绍及图片显示的c语言实现1.1要求写出bmp图片的基本格式及文字解释。typedef struct tagbitmapfileheader /位图文件头结构 word bftype;/位图文件的类型,必须为16793=bm dword bfsize;/位图文件的大小,位图文件头的总字节数,一般为14 word bfreserved1;/位图文件保留字,必须为0 word bfreserved2;/位图文件保留字,必须为0 dword bfoffbits;/位图数据的起始位置,以相对于位图头文件的偏移量,前三部分字节数之和bitmapfileheader;typedef struct tagbitmapinfoheader /位图信息头结构 dword bisize; / 本结构所占用字节数,40字节 long biwidth; / 位图的宽度,以像素为单位 long biheight; / 位图的高度,以像素为单位 word biplanes; / 目标设备的级别,必须为1 word bibitcount;/ 每个像素所需的位数,必须是1(双色),4(16色),8(256色)或24(真彩色)之一 dword bicompression; / 位图压缩类型,必须是 0(不压缩),1(bi_rle8压缩类型)或2(bi_rle4压缩类型)之一 dword bisizeimage; / 位图的大小,以字节为单位,宽乘以高 long bixpelspermeter; / 位图水平分辨率,每米像素数 long biypelspermeter; / 位图垂直分辨率,每米像素数 dword biclrused;/ 位图实际使用的颜色表中的颜色数 dword biclrimportant;/ 位图显示过程中重要的颜色数bitmapinfoheader; typedef struct tagrgbquad/位图调色板结构 byte rgbblue;/ 蓝色的亮度(值范围为0-255) byte rgbgreen; / 绿色的亮度(值范围为0-255) byte rgbred; / 红色的亮度(值范围为0-255) byte rgbreserved;/ 保留,必须为0rgbquad;1.2 c语言显示图片的关键程序(摘取重要的几行)。void showimage(char * filepath)/打开位图char cmd266;strcpy(cmd,start );strcat(cmd,filepath);printf(%sn,cmd);system(cmd);1.3原图截图。图1.12 直方图显示的c语言实现2.1灰度直方图是表示一幅图像灰度分布情况的统计图表。直方图的横坐标是灰度级,纵坐标是具有该灰度级的像素个数或出现这个灰度级的概率。c语言提取图片信息的关键程序(摘取重要的几行)int readfileheader(char *filepath,bitmapfileheader *bmfh)/读取位图文件头file *fp;fp=fopen(filepath,rb);fread(&bmfh-bftype,sizeof(word),1,fp);fread(&bmfh-bfsize,sizeof(dword),1,fp);fread(&bmfh-bfreserved1,sizeof(word),1,fp);fread(&bmfh-bfreserved2,sizeof(word),1,fp);fread(&bmfh-bfoffbits,sizeof(dword),1,fp);fclose(fp);return 0;/读取位图文件头int readinfoheader(char *filepath,bitmapinfoheader *bmih)/读取信息头file *fp;fp=fopen(filepath,rb);fseek(fp,14,seek_set);fread(&bmih-bisize,sizeof(dword),1,fp);fread(&bmih-biwidth,sizeof(long),1,fp);fread(&bmih-biheight,sizeof(long),1,fp);fread(&bmih-biplanes,sizeof(word),1,fp);fread(&bmih-bibitcount,sizeof(word),1,fp);fread(&bmih-bicompression,sizeof(dword),1,fp);fread(&bmih-bisizeimage,sizeof(dword),1,fp);fread(&bmih-bixpelspermeter,sizeof(long),1,fp);fread(&bmih-biypelspermeter,sizeof(long),1,fp);fread(&bmih-biclrused,sizeof(dword),1,fp);fread(&bmih-biclrimportant,sizeof(dword),1,fp);fclose(fp);return 0;/读取信息头long getlinebytes(int imgwidth,int bitcount)return (imgwidth*bitcount+31)/32*4;/获取一行扫描所占的字节数int readpixeldata(char *filepath,byte *imgdata)/读取位图数据file *fp;int width;int height;int bitcount;dword dwlinebytes;width=bmih.biwidth;height=bmih.biheight;bitcount=bmih.bibitcount;dwlinebytes=getlinebytes(width,bitcount);fp=fopen(filepath,rb);fseek(fp,bmfh.bfoffbits,seek_set);if(bitcount!=8)&(bitcount!=24)printf(nn错误编号04:位图不是8位或24位.); return -1;fread(imgdata,dwlinebytes*height*sizeof(byte),1,fp);return 0;/读取位图数据/*提取直方图的函数* void tqzft(byte *imgdata) byte blackpoint256=0; dword i=0,j=0,k=0,n; dword dwlinebytes0; float p256,max; bitmapfileheader bmfh1; bitmapinfoheader bmih1; byte *imgdata1=null; byte *imgdata2=null; byte* palette1=null; int x,y;/定义 dwlinebytes0=getlinebytes(bmih.biwidth,bmih.bibitcount); n=dwlinebytes0*bmih.biheight*sizeof(byte); for(j=0;j256;j+) for(i=0,k=0;i(dwlinebytes0*bmih.biheight*sizeof(byte);i+) if(*(imgdata+i)=j) k+;pj=(float)k/n;for(i=1,max=p0;imax) max=pi; for(i=0;i256;i+) blackpointi=(byte)(pi/max)*255);/*前面获取涂黑的点的数量*/*下面把直方图会出来* bmfh1.bftype=16793; bmfh1.bfsize=14; bmfh1.bfreserved1=0; bmfh1.bfreserved2=0; bmfh1.bfoffbits=54; bmih1.bisize=40;bmih1.biwidth=256;bmih1.biheight=256;bmih1.biplanes=1;bmih1.bibitcount=8;bmih1.bicompression=0;bmih1.bisizeimage=256*256; bmih1.bixpelspermeter=0;bmih1.biypelspermeter=0;bmih1.biclrused=0;bmih1.biclrimportant=0;imgdata1=(byte*)malloc(256*256*sizeof(byte);imgdata2=imgdata1;if(imgdata1=0)printf(错误编号07:开辟空白图像空间失败n);elsefor(x=0;x=255;x+)for(y=0;y=255;y+)*imgdata2=255; imgdata2+=1;for(x=0;x=255;x+)for(y=0;y=blackpointx;y+)*(imgdata1+x+y*256)=0;save_bitmap(&bmfh1,&bmih1,imgdata1,palette1); free(imgdata1);imgdata1=null;imgdata2=null;图2.1图2.2图2.33 中/均值滤波原理及c语言实现3.1领域平均法就是对含噪声的原始图像f(x,y)的每个像素点取一个领域s,计算s中所有像素灰度级的平均值,作为领域平均处理后的图像g(x,y)的像素值。它的计算表达式是:g(x,y)=1/m f(x,y)。c语言实现的关键程序(摘取重要的几行)/*平滑滤波*void phlb(byte *imgdata)byte i=0,j=0,a5=0,pj=0;dword he=0,length,width,height;byte *imgdata0=null;width=bmih.biwidth;height=bmih.biheight;length=getlinebytes(width,bmih.bibitcount)*height*sizeof(byte);imgdata0=(byte*)malloc(length*height*sizeof(byte);if(imgdata0=null)printf(错误编号08:平滑滤波失败n);if(bmih.bibitcount=8)for(j=1;jwidth-1;j+) for(i=1;iheight-1;i+) he=0; pj=0; a0=*(imgdata+j+i*width); a1=*(imgdata+j+(i+1)*width); a2=*(imgdata+j+(i-1)*width); a3=*(imgdata+(j-1)+i*width); a4=*(imgdata+(j+1)+i*width); he=a0+a1+a2+a3+a4; pj=(byte)(he/5); *(imgdata0+j+i*width)=pj; else for(j=1;jwidth-1;j+) for(i=1;iheight-1;i+) he=0; pj=0;a0=*(imgdata+j*3+i*width); a1=*(imgdata+j*3+(i+1)*width); a2=*(imgdata+j*3+(i-1)*width); a3=*(imgdata+(j-1)*3+i*width); a4=*(imgdata+(j+1)*3+i*width); he=a0+a1+a2+a3+a4; pj=(byte)(he/5); *(imgdata0+j*3+i*width)=pj; *(imgdata0+j*3+1+i*width)=pj; *(imgdata0+j*3+2+i*width)=pj; save_bitmap(&bmfh,&bmih,imgdata0,palette);free(imgdata0);/释放开辟的位图数据空间imgdata0=null;单个程序执行后截图分析:由图可以看出,图像平滑的直观效果是图像的噪声得以消除和衰减,但图像变得比以前模糊了,特别是图像的边缘和细节部分。 图3.1图3.24 sobel算子边缘检测原理及c语言实现sobel算子也有两个,一个是检测水平边缘的模板 ,另一个是检测水平边缘的模板 。与prewitt算子相比,sobel算子对于象素位置的影响作了加权,因此效果更好。sobel算子的另一种形式是各向同性sobel算子,也有两个模板组成,一个是检测水平边缘的 ,另一个是检测垂直边缘的 。各向同性sobel算子和普通sobel算子相比,位置加权系数更为准确,在检测不同方向的边缘时梯度的幅度一致。c语言实现的关键程序(摘取重要的几行)for(j=1;jwidth0-1;j+) for(i=1;iheight0-1;i+) c0=*(imgdata+j+i*width0); c1=*(imgdata+(j-1)+(i+1)*width0); c2=*(imgdata+(j-1)+(i-1)*width0); c3=*(imgdata+j+(i+1)*width0); c4=*(imgdata+j+(i-1)*width0); c5=*(imgdata+(j+1)+(i+1)*width0); c6=*(imgdata+(j+1)+(i-1)*width0); *(imgdata3+j+i*width0)=(byte)fabs(c1-c2+2*c3-2*c4+c5+c6);单个程序执行结果截图分析 :由图可见,图像经过梯度运算后只留下灰度值急剧变化的边缘处的点。图4.1图4.25 图像处理系统设计switch 语句可以将各种功能的函数通过字母编号,当按相应键时就可以实现这个功能。c语言实现图像处理系统的关键程序(摘取重要的几行)switch(ch=getch()case 1: case 1:printf(1:显示位图n); showimage(filepath);break; case 2: case 2:printf(2:位图信息n); printfileheader(&bmfh); printinfoheader(&bmih); break; case 3: case 3:printpixeldata(imgdata,bmih.biwidth,bmih.biheight,bmih.bibitcount); break; case 4: case 4:printf(4:取直方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025华语教师聘请服务合同
- 工业工程文献调研方案(3篇)
- 2025意识障碍试题附答案
- 2025年中空玻璃试卷及答案
- 2025年数学考研最难试卷及答案
- 2025【合同范本】质押担保信托贷款合同
- 2025年分数除法奥数试卷及答案
- 2025年标准设备出口合同范本
- 工程应急保障及方案(3篇)
- 工程用料选购方案模板(3篇)
- 2025至2030有机聚合物钽电容器行业发展趋势分析与未来投资战略咨询研究报告
- 2025年教师节感恩教师主题班会课件
- 建筑培训教学课件
- 2025沈阳各区县(市)工会公开招聘工会社会工作者数量考试参考试题及答案解析
- 2025年中国DDX58抗体行业市场全景分析及前景机遇研判报告
- 学习乐理音程课件
- (2025秋新版)苏教版小学数学二年级上册全册教案
- 爆破安全培训课件
- 管线物探基本知识培训课件
- 医护人员护理文书书写规范模板
- 财务岗招聘笔试题目及答案
评论
0/150
提交评论