多媒体信息技术课程设计报告_第1页
多媒体信息技术课程设计报告_第2页
多媒体信息技术课程设计报告_第3页
多媒体信息技术课程设计报告_第4页
多媒体信息技术课程设计报告_第5页
已阅读5页,还剩16页未读, 继续免费阅读

下载本文档

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

文档简介

南京工程学院课程设计报告书课程名称多媒体信息技术院(系、部、中心)班级学号姓名起止日期指导教师目录一.课程设计目的…………3二.课程设计题目及要求…………………3三.概述……………………3四.运行结果………………4五.课程设计总结…………5六.源程序代码……………6七.参考文献………………18一、课程设计目的本次课程设计的目的是通过课程设计,达到理论与实际应用相结合,提高学生对多媒体信息的各种处理方法的理解和编写大型程序的能力,使学生能够根据处理的信息的特征,掌握数字图像处理、数字视频编码和数字音频编码的算法设计基本方法,并培养良好的程序设计能力。二、课程设计题目及要求图像滤波去噪和滤波增强分别使用下面两个均值空域滤波模板对“电路板图.bmp”进行滤波,并输出滤波结果。使用3X3中值滤波器对“带有噪声的电路板图.bmp”进行去噪滤波,并输出滤波结果。使用下图复合拉普拉斯掩模和Sobel算子对“月球.bmp”进行空域滤波增强,并输出增强结果。三、概述1、均值滤波:均值滤波时典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身)再用模板中的全体像素的平均值来代替原来像素值。2、中值滤波;中值滤波器是一种非线性平滑技术,它将每一点像素的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值;方法:通过从图像中的某个采样窗口取出奇数个数据进行排序,用排序后的中值取代要处理的数据。3、复合拉普拉斯掩模:从模板形式容易看出,如果在图像中一个较暗的区域中出现了一个亮点,那么用拉普拉斯运算就会使这个亮点变得更亮,因为图像中的边缘就是那些灰度发生跳变的区域,所以拉普拉斯锐化模板在边缘检测中很有用。4、Sobel算子:主要用于作边缘检测,Sobel算子对于像素的位置影响做了加权,可以降低边缘模糊程度。四、运行结果原图:结果图:五、课程设计总结这次通过c语言编写程序对图像进行滤波,去噪滤波、空域增强,了解了图像处理的原理和过程。其中,均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点;中值滤波对消除椒盐噪声非常有效,在图像处理中,常用于保护边缘信息,是经典的平滑噪声的方法;拉普拉斯是一种微分算子,它的应用可增强图像中灰度突变的区域,减弱灰度的缓慢变化区域Sobel算子则用于边缘检测。通过努力顺利完成了这次课程设计,学会了用c语言进行图像处理,在过程中遇到问题再解决使我成长了不少,收获了很多。六、源程序代码//BMPRW.H#ifndefBMPRW_H#defineBMPRW_Htypedefstruct{ unsignedlongbfSize; unsignedshortbfReserved1; unsignedshortbfReserved2; unsignedlongbfOffBits;}ClBitMapFileHeader;typedefstruct{ unsignedlongbiSize; longbiWidth; longbiHeight; unsignedshortbiPlanes; unsignedshortbiBitCount; unsignedlongbiCompression; unsignedlongbiSizeImage; longbiXPelsPerMeter; longbiYPelsPerMeter; unsignedlongbiClrUsed; unsignedlongbiClrImportant;}ClBitMapInfoHeader;typedefstruct{ unsignedcharrgbBlue; unsignedcharrgbGreen; unsignedcharrgbRed; unsignedcharrgbReserved;}ClRgbQuad;typedefstruct{ intwidth; intheight; intchannels; unsignedchar*imageData;}ClImage;ClImage*clLoadImage(char*path);boolclSaveImage(char*path,ClImage*bmpImg);#endif//pretreatment.cpp#include<stdio.h>intmain(){ longbmpwidth,bmpheight; FILE*fp; fp=fopen("FIVEANGL.bmp","rb"); fseek(fp,18L,SEEK_SET); fread(&bmpwidth,4,1,fp); fread(&bmpheight,4,1,fp); fclose(fp); printf("\n%swidthis%ld,heightis%ld","FIVEANGL.bmp",bmpwidth,bmpheight); getchar(); return0;}//multimedia.cpp#include<stdio.h>#include<stdlib.h>#include"BMPRW.h"ClImage*clLoadImage(char*path){ ClImage*bmpImg; FILE*pFile; unsignedshortfileType; ClBitMapFileHeaderbmpFileHeader; ClBitMapInfoHeaderbmpInfoHeader; intchannels=1; intwidth=0; intheight=0; intstep=0; intoffset=0; unsignedcharpixVal; ClRgbQuad*quad; inti,j,k; bmpImg=(ClImage*)malloc(sizeof(ClImage)); pFile=fopen(path,"rb"); if(!pFile) { free(bmpImg); returnNULL; } fread(&fileType,sizeof(unsignedshort),1,pFile); if(fileType==0x4D42) { fread(&bmpFileHeader,sizeof(ClBitMapFileHeader),1,pFile); fread(&bmpInfoHeader,sizeof(ClBitMapInfoHeader),1,pFile); if(bmpInfoHeader.biBitCount==8) { printf("该文件有调色板,即该位图为非真彩色\n\n"); channels=1; width=bmpInfoHeader.biWidth; height=bmpInfoHeader.biHeight; offset=(channels*width)%4; if(offset!=0) { offset=4-offset; } bmpImg->width=width; bmpImg->height=height; bmpImg->channels=1; bmpImg->imageData=(unsignedchar*)malloc(sizeof(unsignedchar)*width*height); step=channels*width; quad=(ClRgbQuad*)malloc(sizeof(ClRgbQuad)*256); fread(quad,sizeof(ClRgbQuad),256,pFile); free(quad); for(i=0;i<height;i++) { for(j=0;j<width;j++) { fread(&pixVal,sizeof(unsignedchar),1,pFile); bmpImg->imageData[(height-1-i)*step+j]=pixVal; } if(offset!=0) { for(j=0;j<offset;j++) { fread(&pixVal,sizeof(unsignedchar),1,pFile); } } } } elseif(bmpInfoHeader.biBitCount==24) { printf("该位图为真彩色\n\n"); channels=3; width=bmpInfoHeader.biWidth; height=bmpInfoHeader.biHeight; bmpImg->width=width; bmpImg->height=height; bmpImg->channels=3; bmpImg->imageData=(unsignedchar*)malloc(sizeof(unsignedchar)*width*3*height); step=channels*width; offset=(channels*width)%4; if(offset!=0) { offset=4-offset; } for(i=0;i<height;i++) { for(j=0;j<width;j++) { for(k=0;k<3;k++) { fread(&pixVal,sizeof(unsignedchar),1,pFile); bmpImg->imageData[(height-1-i)*step+j*3+k]=pixVal; } } if(offset!=0) { for(j=0;j<offset;j++) { fread(&pixVal,sizeof(unsignedchar),1,pFile); } } } } } returnbmpImg;}boolclSaveImage(char*path,ClImage*bmpImg){ FILE*pFile; unsignedshortfileType; ClBitMapFileHeaderbmpFileHeader; ClBitMapInfoHeaderbmpInfoHeader; intstep; intoffset; unsignedcharpixVal='\0'; inti,j; ClRgbQuad*quad; pFile=fopen(path,"wb"); if(!pFile) { returnfalse; } fileType=0x4D42; fwrite(&fileType,sizeof(unsignedshort),1,pFile); if(bmpImg->channels==3) { step=bmpImg->channels*bmpImg->width; offset=step%4; if(offset!=4) { step+=4-offset; } bmpFileHeader.bfSize=bmpImg->height*step+54; bmpFileHeader.bfReserved1=0; bmpFileHeader.bfReserved2=0; bmpFileHeader.bfOffBits=54; fwrite(&bmpFileHeader,sizeof(ClBitMapFileHeader),1,pFile); bmpInfoHeader.biSize=40; bmpInfoHeader.biWidth=bmpImg->width; bmpInfoHeader.biHeight=bmpImg->height; bmpInfoHeader.biPlanes=1; bmpInfoHeader.biBitCount=24; bmpInfoHeader.biCompression=0; bmpInfoHeader.biSizeImage=bmpImg->height*step; bmpInfoHeader.biXPelsPerMeter=0; bmpInfoHeader.biYPelsPerMeter=0; bmpInfoHeader.biClrUsed=0; bmpInfoHeader.biClrImportant=0; fwrite(&bmpInfoHeader,sizeof(ClBitMapInfoHeader),1,pFile); for(i=bmpImg->height-1;i>-1;i--) { for(j=0;j<bmpImg->width;j++) { pixVal=bmpImg->imageData[i*bmpImg->width*3+j*3]; fwrite(&pixVal,sizeof(unsignedchar),1,pFile); pixVal=bmpImg->imageData[i*bmpImg->width*3+j*3+1]; fwrite(&pixVal,sizeof(unsignedchar),1,pFile); pixVal=bmpImg->imageData[i*bmpImg->width*3+j*3+2]; fwrite(&pixVal,sizeof(unsignedchar),1,pFile); } if(offset!=0) { for(j=0;j<offset;j++) { pixVal=0; fwrite(&pixVal,sizeof(unsignedchar),1,pFile); } } } } elseif(bmpImg->channels==1) { step=bmpImg->width; offset=step%4; if(offset!=4) { step+=4-offset; } bmpFileHeader.bfSize=54+256*4+bmpImg->width; bmpFileHeader.bfReserved1=0; bmpFileHeader.bfReserved2=0; bmpFileHeader.bfOffBits=54+256*4; fwrite(&bmpFileHeader,sizeof(ClBitMapFileHeader),1,pFile); bmpInfoHeader.biSize=40; bmpInfoHeader.biWidth=bmpImg->width; bmpInfoHeader.biHeight=bmpImg->height; bmpInfoHeader.biPlanes=1; bmpInfoHeader.biBitCount=8; bmpInfoHeader.biCompression=0; bmpInfoHeader.biSizeImage=bmpImg->height*step; bmpInfoHeader.biXPelsPerMeter=0; bmpInfoHeader.biYPelsPerMeter=0; bmpInfoHeader.biClrUsed=256; bmpInfoHeader.biClrImportant=256; fwrite(&bmpInfoHeader,sizeof(ClBitMapInfoHeader),1,pFile); quad=(ClRgbQuad*)malloc(sizeof(ClRgbQuad)*256); for(i=0;i<256;i++) { quad[i].rgbBlue=i; quad[i].rgbGreen=i; quad[i].rgbRed=i; quad[i].rgbReserved=0; } fwrite(quad,sizeof(ClRgbQuad),256,pFile); free(quad); for(i=bmpImg->height-1;i>-1;i--) { for(j=0;j<bmpImg->width;j++) { pixVal=bmpImg->imageData[i*bmpImg->width+j]; fwrite(&pixVal,sizeof(unsignedchar),1,pFile); } if(offset!=0) { for(j=0;j<offset;j++) { pixVal=0; fwrite(&pixVal,sizeof(unsignedchar),1,pFile); } } } } fclose(pFile); returntrue;}voidJunzhi(ClImage*img,inth,intw){ inti,j,k; inta[500][500]={0}; for(i=0;i<h;i++) { for(j=0;j<w;j++) { a[i][j]=img->imageData[i*w*3+j*3]; } } for(i=1;i<h-1;i++) { for(j=1;j<w-1;j++) { for(k=0;k<3;k++) { img->imageData[(i+k)*w*3+j*3+k]=(a[i-1][j-1]+a[i-1][j]+a[i-1][j+1]+a[i][j-1]+a[i][j]+a[i][j+1]+a[i+1][j-1]+a[i+1][j]+a[i+1][j+1])/9; } } } printf("模板一\n"); boolflag=clSaveImage("D:\\material\\1电路图.bmp",img); if(flag) { printf("saveok...\n"); } printf("\n"); for(i=1;i<h-1;i++) { for(j=2;j<w-1;j++) { for(k=0;k<3;k++) { img->imageData[(i+k)*w*3+j*3+k]=(a[i-1][j-1]+2*a[i-1][j]+a[i-1][j+1]+2*a[i][j-1]+4*a[i][j]+2*a[i][j+1]+a[i+1][j-1]+2*a[i+1][j]+a[i+1][j+1])/16; } } } printf("模板二\n"); boolflag0=clSaveImage("D:\\material\\2电路图.bmp",img); if(flag0) { printf("saveok...\n"); } printf("\n");}voidZhongzhi(ClImage*img1,inth,intw){ intb[9]={0},a[500][500]={0}; inti,j,k,m,n,temp; for(i=0;i<h;i++) { for(j=0;j<w;j++) { a[i][j]=img1->imageData[i*w*3+j*3]; } } for(i=1;i<h-1;i++) { for(j=1;j<w-1;j++) { b[0]=a[i-1][j-1]; b[1]=a[i-1][j]; b[2]=a[i-1][j+1]; b[3]=a[i][j-1]; b[4]=a[i][j]; b[5]=a[i][j+1]; b[6]=a[i+1][j-1]; b[7]=a[i+1][j]; b[8]=a[i+1][j+1]; for(m=0;m<8;m++) { for(n=m+1;n<9;n++) { if(b[m]>b[n]) { temp=b[m]; b[m]=b[n]; b[n]=temp; } } } for(k=0;k<3;k++) { img1->imageData[(i+k)*w*3+j*3+k]=b[4]; } } } printf("中值\n"); boolflag1=clSaveImage("D:\\material\\3电路板.bmp",img1); if(flag1) { printf("saveok...\n"); } printf("\n");}voidSobel(ClImage*img2,inth,intw){ inta[550][470]={0}; inti,j,k; for(i=0;i<h;i++) { for(j=0;j<w;j++) { a[i][j]=img2->imageData[i*w*3+j*3]; } } for(i=1;i<h-1;i++) { for(j=1;j<w-1;j++) { for(k=0;k<3;k++) { img2->imageData[(i+k)*w*3+j*3+k]=9*a[i][j]-a[i-1][j-1]-a[i-1][j]-a[i-1][j+1]-a[i][j-1]-a[i][j+1]-a[i+1][j-1]-a[i+1][j]-a[i+1][j+1]; } } } boolflag4=clSaveImage("D:\\material\\4月球.bmp",img2); if(flag4) { printf("saveok...\n"); } printf("\n"); for(i=1;i<h-1;i++) { for(j=1;j<w-1;j++) { for(k=0;k<3;k++) { img2->imageData[(i+k)*w*3+j*3+k]=abs(a[i+1][j-1]+2*a[i+1][j]+a[i+1][j+1]-a[i-1][j-1]-2*a[i-1][j]-a[i-1][j+1])+abs(a[i-1][j+1]+2*a[i][j+1]+a[i+1][j-1]-a[i-1][j-1]-2*a[i][j]-a[i+1][j-1]); } } } printf("Sobel算子\n"); boolflag5=clSaveImage("D:\\material\\5月球.bmp",img2); if(flag5) { printf("saveok...\n"); } printf("\n");}intmain(){ intw=0,h=0; printf("均值滤波\n"); ClImage*img=clLoadImage("D:\\material\\电路板图.bmp"); w=img->width; h=img->height; printf("宽%d\n高%d\n",w,h); Junzhi(img,h,w); printf("中值滤波\n"); ClImage*img1=clLoadImage("D:\\material\\带噪声的电路板图.bmp"); w=img1->width; h=img1->height; printf("宽%d\n高%d\n",w,h); Zhongzhi(img1,h,w); printf("Sobel\n"); ClImage*img2=clLoadImage("D:\\material\\月球.bmp"); w=img2->width; h=img2->height; printf("宽%d\n高%d\n",w,h); Sobel(img2,h,w); return0;}七、参考文献1.《DigitalImageProcessing.2ndEd》,R.C.Conzalez编,电子工业出版社,2002年。2.《数字图像处理》,胡学龙编,电子工业出版社,2006年。3.《ImageProcessing:TheFundamentals.》,MariaPetrou,机械工业出版社,2005年。4.《视频处理与通信》,YaoWang等编著,电子工业出版社,2003年。5.《新一代视频压缩编码标准——H.264/AVC》,毕厚杰编著,人民邮电出版社,2005年。6.《数字视频处理》,黎洪松编著,北京邮电大学出版社,2006年。7.《数字视频处理》,全子一编著,电子工业出版社,2005年。8.《VC++深入详解》,孙鑫编著,北京:清华大学出版社,2002年。目录TOC\o"1-2"\h\z\u第一章总论 1一、项目概况 1二、项目提出的理由与过程 6三、项目建设的必要性 8四、项目的可行性 12第二章市场预测 15一、市场分析 15二、市场预测 16三、产品市场竞争力分析 19第三章建设规模与产品方案 22一、建设规模 22二、产品方案 22三、质量标准 22第四章项目建设地点 25一、项目建设地点选择 25二、项目建设地条件 25第五章技术方案、设备方案和工程方案 28一、技术方案 28二、产品特点 30三、主要设备方案 32四、工程方案 32第六章原材料与原料供应 35一、原料来源及运输方式 35二、燃料供应与运输方式 35第七章总图布置、运输、总体布局与公用辅助工程 37一、总图布置 37二、运输 38三、总体布局 38四、公用辅助工程 39第八章节能、节水与安全措施 44一、主要依据及标准 44二、节能 44三、节水 45四、消防与安全 45第九章环境影响与评价 47一、法规依据 47二、项目建设对环境影响 48三、环境保护措施 48四、环境影响评价 49第十章项目组织管理与运行 50一、项目建设期管理 50二、项目运行期组织管理 52HYPERLINK\l"_Toc21597

温馨提示

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

评论

0/150

提交评论