收藏 分享(赏)

数字图像处理实验报告(邻域平均法和中值滤波法).docx

上传人:HR专家 文档编号:7000140 上传时间:2019-04-30 格式:DOCX 页数:16 大小:15.56KB
下载 相关 举报
数字图像处理实验报告(邻域平均法和中值滤波法).docx_第1页
第1页 / 共16页
数字图像处理实验报告(邻域平均法和中值滤波法).docx_第2页
第2页 / 共16页
数字图像处理实验报告(邻域平均法和中值滤波法).docx_第3页
第3页 / 共16页
数字图像处理实验报告(邻域平均法和中值滤波法).docx_第4页
第4页 / 共16页
数字图像处理实验报告(邻域平均法和中值滤波法).docx_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、数字图像处理实验报告班级:姓名:学号:日期:邻域平均法和中值滤波处理一、实验目的图像变换是数字图像处理中的一种综合变换,如直方图变换、几何变换等。通过本实验,使得学生掌握两种变换的程序实现方法。二、实验任务请设计程序,分别用邻域平均法,其模板为:和中值滤波法对testnoise 图像进行去噪处理(中值滤波的模板的大小也设为 33)。三、实验环境本实验在 Windows 平台上进行,对内存及 cpu 主频无特别要求,使用 VC 或者 MINGW(gcc)编译器均可。四、设计思路介绍代码的框架结构、所用的数据结构、各个类的介绍(类的功能、类中方法的功能、类的成员变量的作用)、各方法间的关系写。在此

2、不进行赘述。五、具体实现实现设计思路中定义的所有的数据类型,对每个操作给出实际算法。对主程序和其他模块也都需要写出实际算法。代码:(3*3) #include #include #include #include “hdr.h“ /*-定义结构指针-*/ struct bmphdr *hdr; /定义用于直方图变量unsigned char *bitmap,*count,*new_color; /*-main()函数编-*/ int main() /定义整数 i,j 用于函数循环时的,nr_pixels 为图像中像素的个数int i, j ,nr_pixels,nr_w,nr_h; /定义两个

3、文件指针分别用于提取原图的数据和生成直方图均衡化后的图像FILE *fp, *fpnew; /定义主函数的参数包括:输入的位图文件名和输出的位图文件名,此处内容可以不要,在 DOS 下执行命令的时候再临时输入也可,为了方便演示,我这里直接把函数的参数确定了。/ argc=3; / argv1=“test.bmp“; / argv2=“testzf.bmp“; /参数输入出错显示/* if (argc != 3) printf(“please input the name of input and out bitmap filesn“); exit(1); */ / 获取位图文件相关信息/ hd

4、r = get_header(argv1); hdr = get_header(“testnoise.bmp“); if (!hdr) exit(1); /以二进制可读方式打开输入位图文件 fp = fopen(“testnoise.bmp“, “rb“); if (!fp) printf(“File open error!n“); exit(1); / 文件指针指向数据区域fseek(fp, hdr-offset, SEEK_SET); /计算位图像素的个数nr_pixels = hdr-width * hdr-height; nr_w = hdr-width; nr_h = hdr-hei

5、ght; 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数组中/中心图像存入 count for(i=nr_w+3;isignature, 2, 1, fpnew); fwrite( fwrite(hdr-reserved, 4, 1, fpnew);

6、 fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( if (hdr-offset 54) fwrite(hdr-info, (hdr-offset - 54), 1, fpnew); /直方图均衡化的数据(bitmap)赋值 fwrite(bitmap, nr_pixels, 1, fpnew); /关闭fclose(fpnew); /释放内存(优化程序必需)free(hdr); free(bitmap); free(new_color); free(c

7、ount); return 0; #include #include #include #include “hdr.h“ /*-定义结构指针-*/ struct bmphdr *hdr; /定义用于直方图变量unsigned char *bitmap,*count,*new_color; /*-main()函数编写-*/ int main() /定义整数 i, j 用于函数循环时的,nr_pixels 为图像中像素的个数int i, j, m, n, nr_pixels,nr_w,nr_h,temp,t9; /定义两个文件指针分别用于提取原图像的数据和生成直方图均衡化后的图像FILE *fp,

8、 *fpnew; /定义主函数的参数包括:输入的位图文件名和输出的位图文件名,此处内容可以不要,在 DOS 下执行命令的时候再临时输入也可. / argc=3; / argv1=“test.bmp“; / argv2=“testzf.bmp“; /参数输入出错显示/* if (argc != 3) printf(“please input the name of input and out bitmap filesn“); exit(1); */ / 获取位图文件相关信息/ hdr = get_header(argv1); hdr = get_header(“testnoise.bmp“);

9、if (!hdr) exit(1); /以二进制可读方式打开输入位图文件fp = fopen(“test.bmp“, “rb“); if (!fp) printf(“File open error!n“); exit(1); / 文件指针指向数据区域fseek(fp, hdr-offset, SEEK_SET); /计算位图像素的个数nr_pixels = hdr-width * hdr-height; nr_w = hdr-width; nr_h = hdr-height; bitmap = malloc(nr_pixels); new_color = malloc(nr_pixels);

10、count = malloc(nr_w+2)*(+nr_h+2); /读取位图数据到 bitmap 中 fread(bitmap, nr_pixels, 1, fp); fclose(fp); /因为图像边缘无法使用邻域平均,所以根据邻近颜色填补图像的周围一圈,存入 count数组中 /中心图像存入 count for(i=nr_w+3;itn+1) temp=tn; tn=tn+1; tn+1=temp; new_colori=t4; i+; /结果存入 bitmap中 for (i = 0; i signature, 2, 1, fpnew); fwrite( fwrite(hdr-res

11、erved, 4, 1, fpnew); fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( fwrite( if (hdr-offset 54) fwrite(hdr-info, (hdr-offset - 54), 1, fpnew); /直方图均衡化的数据(bitmap) 赋值fwrite(bitmap, nr_pixels, 1, fpnew); /关闭 fclose(fpnew); /释放内存(优化程序必需)free(hdr); free(bitmap); free(new_color); free(count); return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报