KL实习报告.docx
- 文档编号:6217978
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:12
- 大小:588.27KB
KL实习报告.docx
《KL实习报告.docx》由会员分享,可在线阅读,更多相关《KL实习报告.docx(12页珍藏版)》请在冰豆网上搜索。
KL实习报告
模式识别课程实习
K-L变换实习报告
一.实习目的
本实习内容旨在让我们通过用VC等高级语言编写离散K-L变换的基本算法程序,利用K-L变换对遥感图像进行处理,达到分类特征提取的目的。
同时巩固对模式特征分析和选取的方法的理解。
二.实习原理
离散K-L变换(Karhunen-Loeve)变换
从n维特征选取m维特征,删去的n-m维特征不一定就是无用的信息,如何在信息损失最小的情况下选取特征,在理论上就显得更严密些。
通常采用正交变换,得到新的经变换的模式,以保证信息损失最小情况下获得有利于分类的特征。
离散K-L变换(Karhunen-Loeve变换)就是常用的方法。
KL变换的引入。
设一个输入向量x。
如果是图像数据,那么可以按照字典排列法组成一个向量。
KL变换的目的是对原向量进行变换,组成新向量y。
该新向量的特征数比x少,各特征间不相关。
因此关键是找到这样的变换矩阵A。
KL变换是一个能够从n个特征中选择m个(m 这给我们降维工作带来很大的好处。 但这种变换不是从类可分性的角度出发的,因此不一定具有最好的可分性,尤其对于低维空间,维数的压缩不一定能对可分性提供帮助。 从几何上看,KL是做下面的旋转变换: KL变换、主分量变换是可以相互使用的同义词,本质上并无区别,不过在不同领域中的叫法不同而已。 一般多元统计分析上以后者为主,图像、模式识别和信号处理中则前者为主; 对遥感图像进行KL变换 1.首先计算每个波段的均值,组成均值向量,其中K为样本数量 2.然后计算波段之间的协方差矩阵 利用K-L变换的分类特征提取 KL变换的数学实质是对样本的协方差矩阵进行分析,获得变换矩阵所需的列向量。 协方差矩阵本质上是一种散布矩阵。 因此对不同的散布矩阵有不同的结果。 1.按总体散布矩阵作K-L变换 考虑所有各类模式的总体散布矩阵 和前面定义的总体散布矩阵本质上是一致的 因此,对于给定的样本集,两者相差一个常数。 由于这种散布矩阵实际上是样本总体的协方差矩阵,在实施K-L变换时,若以该矩阵的较大本征值对应的本征向量构成变换矩阵,不仅能在均方误差最小的前提下保留原模式的主要信息,而且突出了各类模式的差异性或可分性信息。 2.按类内散布矩阵作K-L变换 类内散布矩阵为 同样可以证明,和下述类内散布矩阵的定义本质上是一致的: 它是各类模式协方差矩阵之和。 若采用这种矩阵作K-L变换,从分类的角度出发,一般希望各类模式的类内距离最小,即要求其凝聚程度要好,因此常选用较小本征值对应的本征向量组成变换矩阵。 但这时由于不是以突出差异性为主,就需要进行分析。 将各类模式按这样的变换矩阵映射到二维空间,若每类模式凝聚性好,各类模式之间可分性也好,就可以进行变换后的分类,但若仅仅每类模式凝聚性好,类间可分性差,就不宜作变换后的分类。 3.按类间散布矩阵作K-L变换 自动分类主要依赖于各类特征之间的差异性,故利用类间散布矩阵进行K-L变换是十分重要的。 类间散布矩阵为 计算类间散布矩阵的本征值,按其大小排列,选择对应于较大本征向量构成变换矩阵,就可以得到有利分类的降维后的新模式。 在维数较高的情况下,究竟降维到何程度比较适宜,利用几何图形进行直观分析常常比较困难,这时须利用变换散布矩阵的迹准则来进行判断。 变换散布矩阵的计算公式: 三.实习要求 计算机作业: 编程实现KL变换,并对TM六波段图像进行演算。 四.实习步骤 部分源代码: public: CMatrixtuxiang;//存储图象所有象素的灰度值CMatrixtezhengxl;//特征向量矩阵double*feature;//特征值CMatrixtemp;//矩阵RCSizesizeImage;//图象大小CSizesizeSaveImage;//图象实际存储大小HWNDhwnd;voidOnKl();//KL变换计算voidDraw();//图象输出CMatrixtezheng;//某一特征向量CMatrixtezhengt;//某一特征向量转置CMatrixresult;//输入图象CKLchangeDoc*GetDocument(); voidCKLchangeView: : OnKl()//KL变换计算{inti,j;tezheng.Init(6,1);tezhengt.Init(1,6);temp=CMatrix(6,6);feature=newdouble[6];tezhengxl.Init(6,6);doubletmave[6];//求每幅图象的灰度均值for(i=0;i<6;i++){tmave[i]=0;for(j=0;jfeature[j+1]){t=feature[j];feature[j]=feature[j+1];feature[j+1]=t;}for(i=0;i<6;i++)//求出特征值排序后对应在特征值数组中的位置for(j=0;j<6;j++)if(feature[i]==featuretemp[j]){index[i]=j;}}voidCKLchangeView: : OnFirst()//第一主分量{if(NewFileName==""){AfxMessageBox("请先读入图象数据! ");return;}if(tezhengxl.m_pData[0]==0)OnKl();result.Init(1,a);for(inti=0;i voidCKLchangeView: : Oninput()//TM图象数据读入{AfxMessageBox("注意: 请一次将6副图象都读入! ");//读图象的方法intflag=0;while(flag<6){CFileDialogdlg(TRUE,"bmp",".bmp");if(dlg.DoModal()==IDOK){m_NewFileName[flag]=dlg.GetFileName();for(intj=0;j<5;j++){if(flag==j||m_NewFileName[flag]! =m_NewFileName[j])continue;else{AfxMessageBox("已打开过的图象! 请按方法重新打开! ");flag=0;for(inti=0;i<6;i++)m_NewFileName[i]="";return;}}NewFileName=m_NewFileName[flag];flag++;}//判断是否是已经打开的图象,若已经打开,则要重新按方法打开else//不读图象,或是只是要看图象{for(inti=0;i<6;i++)m_NewFileName[i]="";return;}CDC*pDC=GetWindowDC();CFilef(NewFileName,0);m_pDib.Read(&f);//读图象if(m_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)tuxiang=CMatrix(6,a);//开第一副图象时为矩阵分配内存//将每幅图象象素灰度值放入矩阵中if(flag==1)for(inti=0;i voidCKLchangeView: : Draw()//图象输出{inti;for(i=0;i255)result.m_pData[i]=255;}for(i=0;ipDib=&m_pDib;OnDraw(pDC);//将处理后图象绘出} 四.结果分析 源图像 波段一: 波段2 波段3 波段4 波段5 波段6 处理后图像: 波段1 波段2 波段3 波段4 波段5 波段6 五.实习体会 通过这次的编程我还是收获了很多,对K-L有了比较清晰地了解。 也锻炼了自己的动手编程能力。 在以后的日子里,自己还应该多下功夫,多用编程加深自己对课内知识的理解运用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- KL 实习 报告