




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、模式识别作业三一、编程要求:编程实现KL变换,并对TM六波段图像进行演算。KL变换的思想是:从n维特征选取m维特征,删去的n-m维特征不一定就是无用的信息,如何在信息损失最小的情况下选取特征,在理论上就显得更严密些。通常采用正交变换,得到新的经变换的模式, 以保证信息损失最小情况下获得有利于分类的特征。二、编程思想:将6副图象依次输入获得灰度值存在一个6*size(size为一副图象的像素数)的二维数组中,计算每个波段的灰度均值,然后计算协方差矩阵,得出特征值和特征向量,再重新计算要输出的处理的图象的灰度。三、核心代码:void CKLchangeView:Oninput() /TM图象数据读
2、入AfxMessageBox("注意:请一次将6副图象都读入!");/读图象的方法int flag=0;while(flag<6)CFileDialog dlg(TRUE,"bmp",".bmp");if(dlg.DoModal()=IDOK)m_NewFileNameflag=dlg.GetFileName();for(int j=0;j<5;j+)if(flag=j|m_NewFileNameflag!=m_NewFileNamej) continue;else AfxMessageBox("已打开过的图象!
3、请按方法重新打开!");flag=0; for(int i=0;i<6;i+) m_NewFileNamei=""return;NewFileName=m_NewFileNameflag;flag+;/判断是否是已经打开的图象,若已经打开,则要重新按方法打开else /不读图象,或是只是要看图象for(int i=0;i<6;i+) m_NewFileNamei=""return;CDC *pDC = GetWindowDC();CFile f(NewFileName,0);m_pDib.Read(&f);/读图象if(m_
4、pDib.m_nColorTableEntries!=256)/判断是否是灰度图象AfxMessageBox("请打开灰度图象!");return;CKLchangeDoc* pDoc = GetDocument(); pDoc->pDib=&m_pDib;OnDraw(pDC);/调用OnDraw函数绘图sizeImage = m_pDib.GetDimensions(); sizeSaveImage = m_pDib.GetDibSaveDim(); a=sizeSaveImage.cx * sizeSaveImage.cy;/象素数if(flag=1)
5、tm=CMatrix(6,a);/开第一副图象时为矩阵分配内存 /将每幅图象象素灰度值放入矩阵中if(flag=1)for(int i=0;i<a;i+)tm.m_pDatai=*(m_pDib.m_lpImage+sizeSaveImage.cx*(i/sizeImage.cx)+i%sizeImage.cx);if(flag=2)for(int i=0;i<a;i+)tm.m_pDataa+i=*(m_pDib.m_lpImage+sizeSaveImage.cx*(i/sizeImage.cx)+i%sizeImage.cx);if(flag=3)for(int i=0;i&
6、lt;a;i+)tm.m_pData2*a+i=*(m_pDib.m_lpImage+sizeSaveImage.cx*(i/sizeImage.cx)+i%sizeImage.cx);if(flag=4)for(int i=0;i<a;i+)tm.m_pData3*a+i=*(m_pDib.m_lpImage+sizeSaveImage.cx*(i/sizeImage.cx)+i%sizeImage.cx);if(flag=5)for(int i=0;i<a;i+)tm.m_pData4*a+i=*(m_pDib.m_lpImage+sizeSaveImage.cx*(i/siz
7、eImage.cx)+i%sizeImage.cx);if(flag=6)for(int i=0;i<a;i+)tm.m_pData5*a+i=*(m_pDib.m_lpImage+sizeSaveImage.cx*(i/sizeImage.cx)+i%sizeImage.cx);void CKLchangeView:OnKl() /KL变换计算int i,j;xfea.Init(6,1);xfeat.Init(1,6);temp=CMatrix(6,6);feature=new double6;fea.Init(6,6);double tmave6;/求每幅图象的灰度均值for (i=
8、0;i<6;i+)tmavei=0;for(j=0;j<a;j+)tmavei+=tm.m_pDatai*a+j;tmavei/=(double)a;/求方差矩阵Rfor(j=0;j<36;j+) temp.m_pDataj=0.0;for(i=0;i<a;i+) temp.m_pDataj+=(tm.m_pData(j/6)*a+i%6-tmavej/6)*(tm.m_pData(j%6)*a+i%6-tmavej%6);temp.m_pDataj/=(double)a; temp.JacobiEigenv2(feature, fea, 0.000001);/求特征值
9、和特征向量 double t=0.0;double featuretemp6;/临时变量 for(i=0;i<6;i+)featuretempi=featurei;/给临时数组赋值 for(i=0;i<6;i+)/"冒泡法"将特征值排序 for(j=0;j<5;j+) if(featurej>featurej+1) t=featurej; featurej=featurej+1; featurej+1=t; for(i=0;i<6;i+)/求出特征值排序后对应在特征值数组中的位置 for(j=0;j<6;j+) if(featurei=f
10、eaturetempj) indexi=j; void CKLchangeView:OnFirst() /第一主分量 if(NewFileName="") AfxMessageBox("请先读入图象数据!");return;if(fea.m_pData0=0) OnKl();result.Init(1,a);for(int i=0;i<a;i+)for(int j=0;j<6;j+) result.m_pDatai+=fea.m_pDataindex5+j*6*tm.m_pDataj*a+i; Draw();void CKLchangeVie
11、w:OnFive() /第五主分量if(NewFileName="") AfxMessageBox("请先读入图象数据!");return;if(fea.m_pData0=0) OnKl();result.Init(1,a);for(int i=0;i<a;i+)for(int j=0;j<6;j+) result.m_pDatai+=fea.m_pDataindex1+j*6*tm.m_pDataj*a+i; Draw();void CKLchangeView:OnFour() /第四主分量if(NewFileName="&quo
12、t;) AfxMessageBox("请先读入图象数据!");return;if(fea.m_pData0=0) OnKl();result.Init(1,a);for(int i=0;i<a;i+)for(int j=0;j<6;j+) result.m_pDatai+=fea.m_pDataindex2+j*6*tm.m_pDataj*a+i; Draw();void CKLchangeView:OnSecond() /第二主分量if(NewFileName="") AfxMessageBox("请先读入图象数据!")
13、;return;if(fea.m_pData0=0) OnKl();result.Init(1,a);for(int i=0;i<a;i+)for(int j=0;j<6;j+) result.m_pDatai+=fea.m_pDataindex4+j*6*tm.m_pDataj*a+i;Draw();void CKLchangeView:OnSix() /第六主分量if(NewFileName="") AfxMessageBox("请先读入图象数据!");return;if(fea.m_pData0=0) OnKl();result.Ini
14、t(1,a);for(int i=0;i<a;i+)for(int j=0;j<6;j+) result.m_pDatai+=fea.m_pDataindex0+j*6*tm.m_pDataj*a+i; Draw();void CKLchangeView:OnThird() /第三主分量if(NewFileName="") AfxMessageBox("请先读入图象数据!");return;if(fea.m_pData0=0) OnKl(); result.Init(1,a);for(int i=0;i<a;i+)for(int j=0;j<6;j+) result.m_pDatai+=fea.m_pDataindex3+j*6*tm.m_pDataj*a+i; Draw();void CKLchangeView:Draw() /图象输出int i;for(i=0;i<a;i+)/处理越界的灰度值if(result.m_pDatai<0) result.m_pDatai=0; if(result.m_pDatai>255) result.m_pDatai=255; for (i = 0; i <a; i +)/重新给图象每个象素赋灰度值 un
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南通师范高等专科学校《室内设计原理》2023-2024学年第二学期期末试卷
- 湖南省株洲市攸县2025届三下数学期末统考模拟试题含解析
- 山西省吕梁市汾阳市2025届初三下学期升级统测英语试题含答案
- 江苏如皋市江安镇中心中学2024-2025学年高三第三次适应性训练物理试题含解析
- 石嘴山工贸职业技术学院《中国传统文化》2023-2024学年第二学期期末试卷
- 西安财经大学行知学院《外科学(外专科)》2023-2024学年第二学期期末试卷
- 中国海洋大学《医疗仪器设计》2023-2024学年第二学期期末试卷
- 四川华新现代职业学院《工程热力学D》2023-2024学年第二学期期末试卷
- 南充职业技术学院《心灵导航》2023-2024学年第二学期期末试卷
- 帐户的分类的类型及含义
- 结石病的科普知识
- 深度学习及自动驾驶应用 课件 第6、7章 基于CNN的自动驾驶场景语义分割理论与实践、循环神经网络及自动驾驶车辆换道行为预测
- 2024年下半年宣城市广德县人民法院招考书记员兼任法警易考易错模拟试题(共500题)试卷后附参考答案
- 电子商务师中级练习题库
- 新闻媒体内容审核与发布流程规范
- DB62-T 4964-2024 地质灾害精细调查技术规范
- 2024年电信智能云服务工程师技能竞赛理论考试题库(含答案)
- 七年级道德与法治下册 第四单元 走进法治天地 第九课 法律在我们身边 第二框《法律保障生活》教学设计 新人教版
- 2-1、职业生涯规划概述
- 《发电厂及变电站二次回路》教学大纲
- 【电子产品开发合同范本】电子产品开发合同范本
评论
0/150
提交评论