




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计课程设计报告 学 号: 班级序号: 姓 名: 指导老师: 成 绩: 中国地质大学实习题目一【题目需求】 给定一幅单波段影像imgData.txt(ASCII格式),实现对图像的处理和显示。已知条件:(1)clrTbl.txt文件是一个颜色查找表,大小是256X3,即可表示256中RGB的颜色。(2)ImgData.txt文件中是图像的数据,每个值代表一个像素的颜色索引号,通过索引号到颜色查找表(clrTbl.txt文件)中找到相应的RGB颜色值。(3)中值滤波:一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内(这里选择3X3)的所有像素点灰度值的中值。(4)屏幕上显示像素点的函数:SetPixel(HDC drawDevice, long X, long Y, COLORREF rgbVal);基本要求:(1)定义一个中值滤波器,并实现图像的中值滤波;(2)将中值滤波的结果输出到二进制文件resImg.rs中;拔高要求:(3)在屏幕上分别显示原始图像和中值滤波结果图像。【实现过程】(1) 思想: 首先构造结构体用来存储R/G/B,然后从文件中读取像素点的值利用颜色查找表打印出来,再利用中值滤波器对中间图像处理,边缘图像选用中值滤波器和靠内的像素覆盖来观察效果。最后输出将中值滤波结果输出到二进制文件。(2) 实现过程:从文件中读取各点的像素值从文件中读入颜色查找表将中值滤波后结果输入到二进制文件设置句柄利用颜色查找表打印图像制作中值滤波器使图像平滑,并在边缘进行处理【感想】 该程序的重点即在把制作中值滤波器用旁边点的中值代替中间点,思路较为明确,因而不是很难。【附录】源程序清单:/ 中值滤波.cpp : 定义控制台应用程序的入口点。/#include stdafx.h#include DeviceContext.h#include#include#include #include #include using namespace std; struct myRGBshort R;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;/couts0s1;该句用于先开始查看遥感图像像素点个数short *my=new short*s0;for(int i=0;is0;i+)myi=new shorts1;short *my1=new short*s0;for(int i=0;is0;i+)my1i=new shorts1;for(int i=0; is0; i+)for(int j=0; jmyij;/从文件中读取for(int i=0;is0;i+)for(int j=0;js1;j+)my1ij=myij;for(int i=0;is0;i+)/打印原始图像for(int j=0;js1;j+)int t=myij;int r=rgbt.R;int g=rgbt.G;int b=rgbt.B;SetPixel(hdc, j, i, RGB(r,g,b); for(int i=1;is0-1;i+)/用中值滤波器进行处理for(int j=1;js1-1;j+)short a9;int k=0;for(int ii=i-1;iii+2;+ii)for(int jj=j-1;jjj+2;+jj)ak+=myiijj;for(int m=0;m5;+m)int min =m;for(int n=m+1;n9;+n)if(anamin)min=n;int temp=am;am=amin;amin=temp;my1ij=a4;for(int i=0;is0;i+)/打印图像for(int j=0;js1;j+)int t=my1ij;int r=rgbt.R;int g=rgbt.G;int b=rgbt.B;SetPixel(hdc, j+330, i, RGB(r,g,b); for(int i=0;i1;i+)/用中值滤波器处理边缘for(int j=1;js1-1;j+)short a5;int k=0;for(int ii=i;iii+2;+ii)for(int jj=j-1;jjj+2;+jj)ak+=myiijj;for(int m=0;m3;+m)int min =m;for(int n=m+1;n5;+n)if(anamin)min=n;int temp=am;am=amin;amin=temp;int r=a2;my1i0=r;for(int j=1;js1;j+)/用附近点进行边缘处理my10j=my11j;for(int j=1;js1;j+)my1s0-1j=my1s0-2j;for(int i=0;is0;i+)/打印图像for(int j=0;js1;j+)int t=my1ij;int r=rgbt.R;int g=rgbt.G;int b=rgbt.B;SetPixel(hdc,j, i+260, RGB(r,g,b); ofstream file (resImg.rs,ios_base:binary|ios_base:out);file.write(reinterpret_cast(&my1),sizeof(my1);/写入文件ifstream file1;file1.open(resImg.rs,ios_base:binary|ios_base:in);file1.read(char*)&my1,sizeof(my1);/ 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;实现功能及效果 实习题目二【题目需求】 样本点的多项式曲线拟合:给定n个样本点(x,y),根据多项式曲线拟合公式,拟合出一条逼近的曲线函数。已知条件:(1)样本点的生成方法:(sin()是余弦函数,rand()是随机函数)y = sin(0.1*x)+ noise; 其中,x = 1100,noise = rand(1100)*0.3,noise是随机噪声。(2)多项式曲线拟合公式:y(x,w) = w0 + w1*x1 + w2*x2 + + wn*xn(3)在程序输出窗口里绘制图形的函数:DrawText(HDC drawDevice, long X, long Y, char* text); /在(x,y)处绘字符MoveTo(HDC drawDevice, long X, long Y); /移动到某个点处LineTo(HDC drawDevice, long X, long Y); /画线到某个点处基本要求:(1)根据给定的条件,计算出带噪声的样本点集合,并将其输出到文本文件samp.txt中;(2)通过线性方程组求解,计算出多项式曲线拟合的系数wi(1=i=n),并将其输出;拔高要求:(3)将原始的样本点和求解的拟合曲线用不同的颜色绘制在窗口,进行显示对比;并通过调整多项式的次数,观察何时会发生过度拟合现象。【实现过程】(1)思想:这个是比较复杂的。首先得到噪声点,再用最小二乘法得到拟合曲线,用textout绘制噪声点,用冒泡排序法法找到x值最小的噪声点,以此找到对应y值,开始用求得的拟合系数来增加x值获得y值连线得到拟合曲线。再绘制一次不同系数观察对比。最小二乘法得到拟合w值(2) 实现过程:得到噪声点冒泡排序找到x最小值利用拟合系数算出x增加时y值并绘制曲线绘制多条进行对比(【感想】 可以看出来最后打出来的曲线相当漂亮,利用冒泡排序法找出最小值因而曲线最终这么漂亮,谢了五堂课程设计课,十分辛苦完成的,拟合感觉也非常好。恩,我很满意的作品。【附录】/ fw1.cpp : 定义控制台应用程序的入口点。/#include stdafx.h#include#include#include#include#include#include#includeusing namespace std;#include DeviceContext.hvoid solve(int m, int number,float *x,float*y,float *p1)int i, j, k;float *w;w=new floatm;if(w!=NULL)/利用最小二乘法求解double a5050 = 0;double t;for (i = 0; i = m; i+)for (j = 0; j = m; j+)for (k = 0; k number; k+)aij += pow(xk, i + j);for (k = 0; k number; k+)aij += yk*pow(xk, i);for (k = 0; k = m - 1; k+)for (i = k + 1; i = m; i+)t = -aik / akk;for (j = k + 1; j = 0; i-)for (j = i + 1; j = m; j+)aim + 1 -= aij * ajm + 1;aim + 1 /= aii;cout y= a0m + 1;for (i = 1; i 0)cout +;cout aim + 1 ;for (int j = 0; j i; j+)cout *x;for(int i=0;im;i+)wi=ai+1m+1;DeviceContext context;/获得句柄HDC hdc = context.GetCurDC();HPEN HPen= CreatePen(PS_SOLID, 2, RGB(108, 0, 0);SelectObject( hdc,HPen );int z;for(i=0;inumber;i+)if(p10=xi)z=yi;MoveToEx(hdc, p10*5+100,768-(z*2+200), NULL);/从x值最小的点开始绘图for (int p=p10; p 100; p+)doubley = a0m + 1;for ( int q= 1; q= m; q+)y+= aqm + 1 * pow(float) p,q);/TextOut(hdc, p+ 100,768-( y+100), *,1);LineTo(hdc, p*5+100,768-(y*2+200);cout endl;deletew;DeleteObject;elsecouterrorendl;void solve1(int m, int number,float *x,float*y,float*p2)/绘制对比曲线int i, j, k;float *w;w=new floatm;if(w!=NULL)double a5050 = 0;double t;for (i = 0; i = m; i+)for (j = 0; j = m; j+)for (k = 0; k number; k+)aij += pow(xk, i + j);for (k = 0; k number; k+)aij += yk*pow(xk, i);for (k = 0; k = m - 1; k+)for (i = k + 1; i = m; i+)t = -aik / akk;for (j = k + 1; j = 0; i-)for (j = i + 1; j = m; j+)aim + 1 -= aij * ajm + 1;aim + 1 /= aii;cout y= a0m + 1;for (i = 1; i 0)cout +;cout aim + 1 ;for (int j = 0; j i; j+)cout *x;for(int i=0;im;i+)wi=ai+1m+1;DeviceContext context;HDC hdc = context.GetCurDC();HPEN HPen= CreatePen(PS_SOLID, 2, RGB(0,105, 105);SelectObject( hdc,HPen );int z;for(i=0;inumber;i+)if(p20=xi)z=yi;MoveToEx(hdc, p20*5+100,768-(z*2+200), NULL);for (int p=p20; p 100; p+)doubley = a0m + 1;for ( int q= 1; q= m; q+)y+= aqm + 1 * pow(float) p,q);/TextOut(hdc, p+ 100,768-( y+100), *,1);LineTo(hdc, p*5+100,768-(y*2+200);cout endl;deletew;DeleteObject;elsecouterrorendl;int _tmain(int argc, _TCHAR* argv) for(;)int number, m;cout 请输入w最高次数 m;cout 请输入点的个数 number;srand(unsigned)time(NULL);float *x,*y,*p1;POINT *point;x=new float number;y=new float number;p1=new floatnumber;point=new POINTnumber;if(x!=NULL)/判断内存是否申请成功if(y!=NULL)if(point!=NULL)for (int i = 0; i number; i+)xi = rand() % 100; p1i=xi;yi =100*sin(0.1*xi) + (rand() % 100) * 0.3;/随机数的产生/cout xi endl;/cout yi endl;for(int j=0;jnumber-1;j+)/找出x值最小的点for(int i=0;ip1i+1)int temp=p1i+1;p1i+1=p1i;p1i=temp;for(int i=0;inumber;i+)pointi.x=xi;pointi.x=yi;ofstream file (samp.text,ios_base:out);/记录带噪声的点的集合file.write(reinterpret_cast(&point),sizeof(point);DeviceContext dc;HDC hdc = dc.GetCurDC();HPEN HPen1= CreatePen(PS_SOLID, 2, RGB(0,0,0);SelectObject( hdc,HPen1 );MoveToEx(hdc, x0+100,768-(y0), NULL);for (int i = 0; i number; i+)TextOut(hdc, xi*5+100,768-(yi*2+200),*,2);solve(m, number,x,y,p1);deletex;/释放内存deletey; DeleteObject;/删除画笔int m1;cout 请输入w最高次数 m1;srand(unsigned)time(NULL);float *x1,*y1,*p2;POINT *point1;x1=new float number;y1=new float number;p2=new float number;point1=new POINTnumber;for (int i = 0; i number; i+)x1i = rand() % 100;p2i=x1i;y1i =100*sin(0.1*xi) + (rand() % 100) * 0.3;/随机数的产生/cout xi endl;/cout yi endl;for(int j=0;jnumber-1;j+)for(int i=0;ip2i+1)int temp=p2i+1;p2i+1=p2i;p2i=temp;for(int i=0;inumber;i+)point1i.x=x1i;point1i.x=y1i;solve1(m1, number,x1,y1,p2);DeviceContext dc1;HDC hdc1= dc1.GetCurDC();HPEN HPen2= CreatePen(PS_SOLID, 1, RGB(0,105,0);SelectObject( hdc1,HPen2);MoveToEx(hdc, x10+100,768-(y10), NULL);for (int i = 0; i number; i+)TextOut(hdc, x1i*5+100,768-(y1i*2+200),*,2);deletex1;deletey1; DeleteObject;sys
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新能源行业工业互联网在能源数据采集与分析中的应用报告
- 2025年新能源汽车自动驾驶技术法规与新能源汽车产业布局优化研究报告
- 2025企业经营贷款的抵押担保合同
- 2025版房屋买卖合同示范文本
- 工程管理服务包括哪些
- 零售店铺租赁补充协议范本(租赁期限及装修规范)
- 跨境贸易公司股东股权转让与供应链管理合同
- 美甲美睫门面房租赁与美甲美睫服务协议
- 离婚协议书:夫妻共同债务清偿与个人财产分割
- 神东矿区劳务派遣员工同工同酬实施细则合同
- (一检)泉州市2026届高三高中毕业班质量监测(一)数学试卷(含标准答案)
- 2025年福建省榕圣建设发展有限公司项目招聘12人笔试参考题库附带答案详解
- 一年级上册语文晨读课件
- 2025-2030数据安全合规审计服务市场爆发及等保测评机构并购价值评估
- 高职院校教师职业发展规划指南
- 2025重庆市专业应急救援总队应急救援人员招聘28人考试参考题库及答案解析
- 2025年中国华电集团招聘面试题解析及备考建议手册
- 黑龙江省龙东地区2025届中考数学试卷(含解析)
- 2025-2026学年人教版(2024)小学美术二年级上册(全册)教学设计(附目录P144)
- 2025高考地理试题分类汇编:地球上的水含解析
- 2025年机器人面试题及答案解析
评论
0/150
提交评论