欢迎来到天天文库
浏览记录
ID:56716781
大小:34.50 KB
页数:11页
时间:2020-07-05
《数字图像处理_领域平均滤波_中值滤波.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、东华大学实验报告课程数字图像处理名称数字图像变换实验名称:邻域平均法(box模板)和中值滤波处理一、实验目的图像变换是数字图像处理中的一种综合变换,如直方图变换、几何变换等。通过本实验,使得学生掌握两种变换的程序实现方法。二、实验任务请设计程序,分别用邻域平均法,其模板为:和中值滤波法对testnoise图像进行去噪处理(中值滤波的模板的大小也设为3×3)。三、实验环境本实验在Windows平台上进行,对内存及cpu主频无特别要求,使用VC或者MINGW(gcc)编译器均可。四、设计思路介绍代码的框架结构、所
2、用的数据结构、各个类的介绍(类的功能、类中方法的功能、类的成员变量的作用)、各方法间的关系试验要求中以给出大致的编程思路和源代码以及代码注释,只有黑框部分需要自己填写。在此不进行赘述。五、具体实现 实现设计思路中定义的所有的数据类型,对每个操作给出实际算法。对主程序和其他模块也都需要写出实际算法。注意:源代码中要加上注释。代码:(红色为重点代码)<邻域平均法>(3*3)/*------利用第一次实验课提供的dhc.h和dhc.c文件以获取位图的高宽以及从文件头到实际的位图数据的偏移字节数,从而实现对位图实际数
3、据的操作。------*/#include#include#include#include"hdr.h"/*------定义结构指针------*/structbmphdr*hdr;//定义用于直方图变量unsignedchar*bitmap,*count,*new_color;/*------main()函数编写------*/intmain(){//定义整数i,j用于函数循环时的,nr_pixels为图像中像素的个数inti,j,nr_pixels
4、,nr_w,nr_h;//定义两个文件指针分别用于提取原图像的数据和生成直方图均衡化后的图像FILE*fp,*fpnew;//定义主函数的参数包括:输入的位图文件名和输出的位图文件名,此处内容可以不要,在DOS下执行命令的时候再临时输入也可,为了方便演示,我这里直接把函数的参数确定了。//argc=3;//argv[1]="test.bmp";//argv[2]="testzf.bmp";//参数输入出错显示/*if(argc!=3){printf("pleaseinputthenameofinputando
5、utbitmapfiles");exit(1);}*///获取位图文件相关信息//hdr=get_header(argv[1]);hdr=get_header("testnoise.bmp");if(!hdr)exit(1);//以二进制可读方式打开输入位图文件fp=fopen("testnoise.bmp","rb");if(!fp){printf("Fileopenerror!");exit(1);}//文件指针指向数据区域fseek(fp,hdr->offset,SEEK_SET);//计算位图
6、像素的个数nr_pixels=hdr->width*hdr->height;nr_w=hdr->width;nr_h=hdr->height;bitmap=malloc(nr_pixels);new_color=malloc(nr_pixels);count=malloc((nr_w+2)*(+nr_h+2));//读取位图数据到bitmap中fread(bitmap,nr_pixels,1,fp);fclose(fp);//因为图像边缘无法使用邻域平均,所以根据邻近颜色填补图像的周围一圈,存入count[]
7、数组中//中心图像存入count[]for(i=nr_w+3;i<(nr_w+2)*(+nr_h+2)-nr_w-3;i++){j=i/(nr_w+2);if(i%(nr_w+2)!=0&&(i+1)%(nr_w+2)!=0)count[i]=bitmap[i-nr_w-1-2*j];}//填补第一排for(i=1;i8、p[nr_w*(nr_h-1)+i-1];}//填补左边一排for(i=0;i
8、p[nr_w*(nr_h-1)+i-1];}//填补左边一排for(i=0;i
此文档下载收益归作者所有