1、面向对象程序设计课程设计报告学 号: 班级序号: 姓 名: 指导老师: 成 绩: 中国地质大学实习题目一【题目需求】 给定一幅单波段影像 imgData.txt(ASCII 格式),实现对图像的处理和显示。已知条件:(1 ) clrTbl.txt 文件是一个颜色查找表,大小是 256X3,即可表示 256 中 RGB 的颜色。(2 ) ImgData.txt 文件中是图像的数据,每个值代表一个像素的颜色索引号,通过索引号到颜色查找表(clrTbl.txt 文件)中找到相应的 RGB 颜色值。(3 ) 中值滤波:一种非线性平滑技术,它将每一 像素点的 灰度值设置为该点某邻域窗口内(这里选择 3X
2、3)的所有像素点灰度值的中值。(4 )屏幕上显示像素点的函数:SetPixel(HDC drawDevice, long X, long Y, COLORREF rgbVal);基本要求:(1 )定义一个中值滤波器,并实现图像的中值滤波;(2 )将中值滤波的结果输出到二进制文件 resImg.rs 中;拔高要求:(3 )在屏幕上分别显示原始图像和中值滤波结果图像。【实现过程】(1 ) 思想:首先构造结构体用来存储 R/G/B,然后从文件中读取像素点的值利用颜色查找表打印出来,再利用中值滤波器对中间图像处理,边缘图像选用中值滤波器和靠内的像素覆盖来观察效果。最后输出将中值滤波结果输出到二进制文件
3、。(2 ) 实现过程:【感想】该程序的重点即在把制作中值滤波器用旁边点的中值代替中间点,思路较为明确,因从文件中读取各点的像素值从文件中读入颜色查找表设置句柄利用颜色查找表打印图像制作中值滤波器使图像平滑,并在边缘进行处理将中值滤波后结果输入到二进制文件而不是很难。【附录】源程序清单:/ 中值滤波.cpp : 定义控制台应用程序的入口点。/#include “stdafx.h“#include “DeviceContext.h“#include#include#include #include #include using namespace std; struct myRGBshort R;
4、short G;short B;int _tmain(int argc, _TCHAR* argv) int a,b;myRGB rgb256;int s2;HWND mmm;/获得句柄HDC hdc;mmm=GetConsoleWindow();hdc=GetDC(mmm); ifstream myfile;ifstream myfileo;myfile.open(“1-clrTbl.txt“);myfile a b ;for(int j=0; jrgbj.Rrgbj.Grgbj.B;myfileo.open(“1-ImgData.txt“);myfileos0s1;/coutmyij;/从文件中读取for(int i=0;i(/写入文件ifstream file1;file1.open(“resImg.rs“,ios_base:binary|ios_base:in);file1.read(char*)/ for(int i=0;i20;i+)/仅用 20*20 样本对比监测数据/for(int j=0;j20;j+)/ coutmyji“ “;for(int i=0;is0;i+)/释放内存delete myi;deletemy;for(int i=0;is0;i+)delete my1i;deletemy1;system(“pause“);return 0;实现功能及效果