您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 数字图像处理实验报告
实验一图象显示一、实验目的:掌握在计算机上显示图象的方法二、实验要求:1、熟悉参考程序,熟悉C语言。2、输入图象显示源程序,建立C语言程序调试环境。3、在计算机屏幕上显示制定的图像(提供两个图像文件A2和B2),并计算显示其灰度直方图。4、修改程序,在屏幕上显示256*256的对度图像(灰度变化分别是左边暗-右边亮、左下暗-中间亮-右上暗、左上暗-中间亮-右下暗)。三、实验程序#includeconio.h#includestdio.h#includestdlib.h#includeprocess.h#includedos.h#includedir.h#includeio.h#includestring.h#includefcntl.h#includealloc.h#includemath.h#includegraphics.hunionREGSiregs,oregs,sregs;doubledata1[512],data2[512],max1,bu1[3],bu2[3];unsignedcharimage1[128][128],image2[128][128];intmax;main(intargc,char*argv[])/----参数argc代表了输入参数的个数,char*argv[]表示传入的参数的字符串,是一个字符串数组。------/{FILE*fp,*fp1;inta,b,c,x,y,z;intn,isi,driver,mode1;unsignedchard[128][128],datam[256];driver=DETECT;mode1=2;initgraph(&driver,&mode1,);/---initgraph()函数直接进行的图形初始化程序------/iregs.x.ax=0x0100;iregs.x.cx=0x0000;int86(0x10,&iregs,&oregs);closegraph();driver=DETECT;mode1=2;initgraph(&driver,&mode1,);iregs.x.ax=0x005f;int86(0x10,&iregs,&oregs);for(a=0;a256;a++){iregs.x.ax=0x1010;iregs.x.bx=a;iregs.h.dh=a/4;iregs.h.ch=a/4;iregs.h.cl=a/4;int86(0x10,&iregs,&oregs);}fp=fopen(f:\\exp\\tc\\a2,rb);for(a=0;a64;a++){fread(datam,64,1,fp);for(b=0;b64;b++){putpixel2(b*2+256,a*2+100,(int)datam[b]);putpixel2(b*2+257,a*2+100,(int)datam[b]);putpixel2(b*2+256,a*2+101,(int)datam[b]);putpixel2(b*2+257,a*2+101,(int)datam[b]);}}fclose(fp);getch();closegraph();}getpixel2(inta,intb)/--显示像素---/{iregs.h.ah=0xd;iregs.x.dx=b;iregs.x.cx=a;iregs.x.bx=0;int86(0x10,&iregs,&oregs);return(oregs.h.al);}putpixel2(inta,intb,intnum){iregs.h.ah=0xc;iregs.h.al=num;iregs.x.dx=b;iregs.x.cx=a;iregs.x.bx=0;int86(0x10,&iregs,&oregs);}Ⅰ、显示256*256的灰度图象(灰度变化分别是左边暗-右边亮)的程序修改:红色区域内改为fp=fopen(argv[1],rb);for(a=0;a64;a++){fread(datam,64,1,fp);for(b=0;b64;b++){putpixel2(b*2+256,a*2+100,b);putpixel2(b*2+257,a*2+100,b);putpixel2(b*2+256,a*2+101,b);putpixel2(b*2+257,a*2+101,b);Ⅱ、显示256*256的灰度图象(灰度变化分别是左下暗-中间亮-右上暗)的程序修改:红色区域内改为fp=fopen(argv[1],rb);for(a=0;a256;a++){fread(datam,256,1,fp);for(b=0;b256;b++){putpixel2(b*2+256,a*2+100,256-abs(a+b-256));putpixel2(b*2+257,a*2+100,256-abs(a+b-256));putpixel2(b*2+256,a*2+101,256-abs(a+b-256));putpixel2(b*2+257,a*2+101,256-abs(a+b-256));Ⅲ、显示256*256的灰度图象(灰度变化分别是左上暗-中间亮-右下暗)的程序修改:红色区域内改为fp=fopen(argv[1],rb);for(a=0;a256;a++){fread(datam,256,1,fp);for(b=0;b256;b++){putpixel2(b*2+256,a*2+100,abs(a+b-256));putpixel2(b*2+257,a*2+100,abs(a+b-256));putpixel2(b*2+256,a*2+101,abs(a+b-256));putpixel2(b*2+257,a*2+101,abs(a+b-256));四、实验小结:通过本次实验学会了如何用c语言显示图像以及用c语言进行图像的位置显示和位置灰度变换的处理的方法。实验二图象的二维傅立叶变换一、实验目的:掌握在计算机上进行二维傅立叶变换的编程方法以及显示变换图象的方法二、实验要求:1、编写二维傅立叶变换的C语言程序及相应的显示程序。2、建立输入图象,在64*64的白色图象矩阵的中心建立16*16的黑色矩形图像点阵,形成图象文件(共4096字节)。3、对输入图象进行变换,将原始图象及变换图象都显示于屏幕上。4、调整输入图象中白色矩形的尺寸,再进行变换,比较变换结果。5、建立输入图象,在64*64的白色图象矩阵的中心建立半径为6个像素黑色的圆,形成图象文件。对输入图象进行变换,将原始图象及变换图象都显示于屏幕上。调整圆半径的尺寸,比较变换结果。三、实验程序:正方形的傅里叶变换:for(a=0;a128;a++){for(b=0;b128;b++){if(a=40&&a88&&b=40&&b88)data1[b]=100.0;elsedata1[b]=0.0;data2[b]=0.0;putpixel2(b,a+200,255-(int)data1[b]);}程序运行结果如下:较大的正方形的傅里叶变换:for(a=0;a128;a++){for(b=0;b128;b++){if(a=25&&a120&&b=25&&b120)data1[b]=100.0;elsedata1[b]=0.0;data2[b]=0.0;putpixel2(b,a+200,255-(int)data1[b]);}程序运行结果如下:矩形的傅里叶变换for(a=0;a128;a++){for(b=0;b128;b++){if(a=58&&a70&&b=40&&b88)data1[b]=100.0;elsedata1[b]=0.0;data2[b]=0.0;putpixel2(b+400,a+150,255-(int)data1[b]);}程序运行结果如下:矩形的傅里叶变换for(a=0;a128;a++){for(b=0;b128;b++){if(a=40&&a88&&b=58&&b70)data1[b]=100.0;elsedata1[b]=0.0;data2[b]=0.0;putpixel2(b+400,a+150,255-(int)data1[b]);}程序运行结果如下:矩形的傅里叶变换for(a=0;a128;a++){for(b=0;b128;b++){if(a+b=100&&a+b=166&&(a-b=20)&&(b-a=20)data1[b]=100.0;elsedata1[b]=0.0;data2[b]=0.0;putpixel2(b+400,a+150,255-(int)data1[b]);}程序运行结果如下:矩形的傅里叶变换for(a=0;a128;a++){for(b=0;b128;b++){if(a+b=120&&a+b=146&&(a-b=50)&&(b-a)=50)data1[b]=100.0;elsedata1[b]=0.0;data2[b]=0.0;putpixel2(b+400,a+150,255-(int)data1[b]);}程序运行结果如下:圆的傅里叶变换for(a=0;a128;a++){for(b=0;b128;b++){if((a-63)*(a-63)+(b-63)*(b-63)=24*24)data1[b]=100.0;elsedata1[b]=0.0;data2[b]=0.0;putpixel2(b+400,a+150,255-(int)data1[b]);}程序运行结果如下:四、实验小结:通过本次实验,掌握了二维图像傅立叶变换的编程方法以及显示变换图像的方法。实验三图象的增强一、实验目的:掌握在计算机上进行直方图均衡化及四点平滑的方法二、实验要求:1、编写直方图均衡化、四点平滑的C语言程序及相应的显示程序。2、对指定图象进行直方图均衡化,将原始图象及增强后的图象都显示于屏幕上,比较增强的效果。3、对指定图象进行四点平滑,将原始图象及增强后的图象都显示于屏幕上,比较增强的效果。4、对指定图象用3×3模板进行平滑,将原始图象及增强后的图象都显示于屏幕上,比较增强的效果。5、对指定图象用不同的3×3加权模板进行平滑,将原始图象及增强后的图象都显示于屏幕上,比较增强的效果。三、实验程序:(1)直方图均衡化enchence(){inta,b,c,d,x,y;longdata1[256];for(c=0;c256;c++)data1[c]=0;for(b=0;b64;b++)for(a=0;a64;a++)data1[*(buf+b*64+a)]++;for(c=0;c255;c++)data1[c+1]=data1[c]+data1[c+1];for(c=0;c256;c++)data1[c]=data1[c]*(long)255/(long)4096;for(b=0;b64;b++)for(a=0;a64;a++)*(buf+b*64+a)=data1[*(buf+b*64+a)];for(y=0;y64;y++)for(x=0;x64;x++){putpixel2(x*2+300,y*2+120,*(buf+(long)y*64+x));putpixel2(x*2+301,y*2+120,*(buf+(long)y*64+x));putpixel2(x*2+300,y*2+121,*(buf+(long)y*64+x));putpixel2(x*2+301,y*2+121,*(buf+(long)y*64+x));}}图像显示如下:(2)四点平滑enchence(){inta,b,c,d,x,y;unsignedchardatam[64];intss[64][64];intmm[64][64];FILE*fp;fp=fopen(e:\\dip\\tc\\a2,rb);
本文标题:数字图像处理实验报告
链接地址:https://www.777doc.com/doc-6158417 .html