遥感分类编程
㈠ 用于摄影测量与遥感应该学什么编程语言
毫无疑问,c/c++
㈡ 实验十七 遥感图像监督分类处理
一、实验目的
通过使用ENVI的六种主要的遥感监督分类器——平行六面体分类、最小距离分类、马氏距离分类、最大似然分类、神经网络分类和支持向量机分类的命令,加深对遥感监督分类原理的理解,了解其技术实现过程,初步掌握其ENVI功能命令的基本使用操作。
二、实验内容
①桂林市TM 遥感影像平行六面体分类;②桂林市TM 遥感影像最小距离分类;③桂林市TM 遥感影像马氏距离分类;④桂林市TM 遥感影像最大似然分类;⑤桂林市TM 遥感影像神经网络分类;⑥桂林市TM 遥感影像支持向量机分类;⑦对6种分类结果进行比较分析。
三、实验要求
①平行六面体、最小距离、马氏距离、最大似然、神经网络和支持向量机六种分类方法在理论上比较复杂,为取得好的实验效果,要求实验前事先预习其原理,从理论上理解并掌握它们的特点和异同。②确定分类处理方法训练样本需要用到的已知地质资料,提前准备。③编写实验报告。④由于同时做六种分类处理工作量较大,可以根据实际课时情况选择做其中部分。最小距离分类为必须做的方法。
四、技术条件
①微型计算机;②灌阳地区QuickBird全色波段遥感数据;③ENVI软件;④Photoshop软件(ver.6.0以上)和ACDSee软件(ver.4.0以上)。
五、实验步骤
遥感影像监督分类可以分为四个过程:样本选择、执行监督分类、评价分类结果和分类后处理。具体操作步骤如下。
(一)定义训练
1.样本选择
(1)在ENVI主菜单中,选择“File>Open Image File”,打开灌阳地区QuickBird全色波段遥感数据,Band3、4、1合成RGB并使之显示在“Display”中,通过分析图像,选择耕地、林地、居民地和水体四种地物样本。
图17-1 ROI工具对话框
(2)在主图像窗口中,选择“Overlay>Region of Interest”,打开“ROI Tool”对话框,如图17-1所示。
(3)在“ROI Tool”对话框中,选择“Window”选项,可以在“Image”、“Scroll”或者“Zoom”窗口中绘制感兴趣区;在“ROI Name”字段输入样本的名称;在“Color”字段中,单击右键选择颜色。
(4)在“ROI Tool”对话框中,选择“ROI Type > Polygon”,在“Image”、“Scroll”或者“Zoom”窗口中绘制感兴趣区。
(5)完成一类感兴趣区的绘制后,在“ROI Tool”对话框中,选择【New Region】按钮,新建另一类样本种类,重复上述操作。
2.评价训练样本
在ROI对话框中,选择“Option>Compute ROI Separability”,打开待分类影像文件,选择所有定义的样本类型,可以计算样本的可分离性,如图17-2所示,表示各个样本类型之间的可分离性,用Jeffries-Matusita距离和转换分离度(Transformed Divergence)来表示。ENVI为每一个感兴趣区组合计算Jeffries-Matusita距离和Transformed Divergence,在对话框底部,根据可分离性值的大小,从小到大列出感兴趣区组合。这两个参数的值在0~2.0之间,大于1.9说明样本之间可分离性好,属于合格样本;小于1.8,需要重新选择样本;小于1,考虑将两类样本合成一类样本。
图17-2 样本可分离性计算报表
(二)执行监督分类
在ENVI主菜单中选择“Classificatoin>Supervisred>分类器类型”,可以根据分类的复杂度、精度需求等选择分类器。
1.平行六面体分类器
平行六面体用一条简单的判定规则对多波谱数据进行分类。判定边界在图像数据空间中形成了一个N维平行六面体。平行六面体的维数由来自每一种选择的分类平均值的标准差的阈值确定。如果像元值位于N 个被分类波段的低阈值与高阈值之间,则它归属于这一类。如果像元值落在多个类里,那么ENVI将这一像元归到最后一个匹配的类里。没有落在平行六面体的任何一类里的区域被称为无类别的。操作步骤如下:
(1)在ENVl主菜单栏中选择“Classification>Supervised>Parallelepiped”,在分类输入文件对话框中选择待分类遥感影像,打开“Parallelepiped Parameters”对话框,如图17-3所示。
图17-3 平行六面体分类器参数设置对话框
(2) Select Classes from Regions:点击【Select All Items】按钮,选择所有的训练样本。
(3) Set Max stdev from Mean:设置标准差阈值。有三种类型:不设置标准差阈值(None)、为所有类别设置一个标准差阈值(Single Value)和分别为每种类别设置一个标准差阈值(Multiple Values)。
(4)选择“Single Value”,在“Max stdev from Mean”文本框里输入标准差阈值。
(5)点击【Preview】按钮,可以预览分类结果。
(6)选择分类结果的输出路径及文件名。
(7)设置“Output Rule Images”:是否选择规则图像数据。
(8)设置完上述参数后,点击【OK】按钮执行分类处理。
2.最小距离分类器
最小距离分类用到每一个终端单元的均值矢量,计算每一个未知像元到每一类均值矢量的欧几里德距离。所有像元都被归为最近的一类,除非限定了标准差和距离的极限(这时,会出现一些像元因不满足选择的标准,而成为“无类别”),操作步骤如下:
(1)在ENVI主菜单栏中选择“Classification>Supervised>Minimum Distance”,在分类输入文件对话框中选择待分类遥感影像,打开“Minimum Distance”对话框,如图174所示。
图17-4 最小距离分类器参数设置对话框
(2) Select classes from Regions:点击【Select All Items】按钮,选择所有的训练样本。
(3) Set Max stdev from Mean:设置标准差阈值。有3种类型:不设置标准差阈值(None)、为所有类别设置一个标准差阈值(Single Value)和分别为每种类别设置一个标准差阈值(Multiple Values)。
(4)选择“Single Value”,在“Max stdev from Mean”文本框里输入标准差阈值。
(5) Set Max Distances Error:设置允许的最大距离误差,距离大于该值的像元将不被分入该类,如果不满足所有类别的最大距离误差,将会被归为未分类类型中,有3种类型:不设置最大距离误差(None)、为所有类别设置一个最大距离误差(Single Value)和分别为每种类别设置一个最大距离误差(Multiple Values)。
(6)点击【Preview】按钮,可以预览分类结果。
(7)选择分类结果的输出路径及文件名。
(8)设置“Output Rule Images”:是否选择规则图像数据。
(9)设置完上述参数后,点击【OK】按钮执行分类处理。
.3 马氏距离分类器
马氏距离分类是一个方向灵敏的距离分类器,分类时用到了统计。它与最大似然分类有些类似,但是假定所有类的协方差相等,所以是一种较快的方法。所有像元都被归到最临近的ROI类,除非用户限定了一个距离阈值(这时,如果一些像元不在阈值内,就会被划为无类别),操作步骤如下:
(1)在ENVI主菜单栏中选择“Classification>Supervised>Mahalanobis Distance”,在分类输入文件对话框中选择待分类遥感影像,打开“Mahalanobis Distance”对话框,如图17-5所示。
(2) Select Classes from Regions:点击【Select All Items】按钮,选择所有的训练样本。
图17-5 马氏距离分类器参数设置对话框
(3) Set Max Distances Error:设置允许的最大距离误差,距离大于该值的像元将不被分入该类,如果不满足所有类别的最大距离误差,将会被归为未分类类型中,有3种类型:不设置最大距离误差(None)、为所有类别设置一个最大距离误差(Single Value)和分别为每种类别设置一个最大距离误差(Multiple Values)。
(4)点击【Preview】按钮,可以预览分类结果。
(5)选择分类结果的输出路径及文件名。
(6)设置“Output Rule Images”:是否选择规则图像数据。
(7)设置完上述参数后,点击【OK】按钮执行分类处理。
4.最大似然分类器
最大似然分类假定每个波段每一类统计呈均匀分布,并计算给定像元属于一特定类别的可能性。除非选择一个可能性阈值,所有像元都将参与分类。每一个像元被归到可能性最大的那一类里。操作步骤如下:
(1)在ENVI主菜单栏中选择“Classification>Supervised>Maximum Likelihood”,在分类输入文件对话框中选择待分类遥感影像,打开“Maximum Likelihood Parameters”对话框,如图17-6所示。
(2) Select Classes from Regio:n点s击【Select All Items】按钮,选择所有的训练样本。
图17-6 最大似然分类器参数设置对话框
(3)Set Probability Threshold:设置似然度的阈值,有3种类型:不设置最大似然度阈值(None)、为所有类别设置一个最大似然度阈值(Single Value)和分别为每种类别设置一个最大似然度阈值(Multiple Values),如果选择Single Value,则在Probability Threshold文本框中输入一个0~1的值。
(4) Data Scale Factor:输入一个数据比例系数,这个比例系数是一个比值系数,用于将整形反射率或者辐射率数据转换为浮点型数据。例如,对于没有经过辐射定标的8bit数据,设定比例系数为255。
(5)点击【Preview】按钮可以预览分类结果。
(6)选择分类结果的输出路径及文件名。
(7)设置“Output Rule Images”:是否选择规则图像数据。
(8)设置完上述参数后,点击【OK】按钮执行分类处理。
5.神经网络分类器
用计算机模拟入脑的结构,用许多小的处理单元模拟生物的神经元,用算法实现人脑的识别、记忆、思考过程应用于图像分类,操作步骤如下:
(1)在ENVI主菜单栏中选择“Classificantion>Supervised>Neural Net”,在分类输入文件对话框中选择待分类遥感影像,打开“Neural Net Parameters”对话框,如图17-7所示。
(2)Select Classes from Regions:点击【Select All Items】按钮,选择所有的训练样本。
图17-7 神经网络分类器参数设置对话框
(3) Activation:选择活化函数,包括对数(Logistic)和双曲线(Hyperbolic)。
(4) Training Threshold Contnbution:输入训练贡献阈值(0~1)。该参数决定了与活化节点级别相关的内部权重的贡献量,它用于调节节点内部权重的变化。训练算法交互式地调整节点间的权重和节点阈值,从而使输出层和响应误差达到最小。将该参数设置为0将不会调整节点的内部权重。适当调整节点的内部权重可以生成一幅较好的分类图像,但是如果设置的权重过大,对分类结果会产生不良影响。
(5) Training Rate:设置权重调节速度(0~1)。参数值越大则使得训练速度越快,但也增加摆动或者使训练结果不收敛。
(6) Training Momentum:设置权重调节动量(0~1)。该值大于0时,在“Training Rate”文本框中输入较大值不会引起摆动。该值越大,训练的步幅越大。该参数的作用是促使权重沿当前方向改变。
(7)Training RMS Exit Criterai:指定RMS误差为何值时训练应该停止。RMS误差值在训练过程中将显示在图表中,当该值小于输入值时,即使还没有达到迭代次数,训练也会停止,然后开始进行分类。
(8) Number of Hidden Layers:输入所用隐藏层的数量。要进行线性分类,输入值为0;进行非线性分类,输入值应该大于或者等于1。
(9) Number of Training Iterations:输入用于训练的迭代次数。
(10) Min Output Activation Threshold:输入一个最小输出活化阈值。如果被分类像元的活化值小于该阈值,在输出的分类中该像元将被归入未分类中。
(11)选择分类结果的输出路径及文件名。
(12)设置“Output Rule Images”:是否选择规则图像数据。
(13)设置完上述参数后,点击【OK】按钮执行分类处理。
6.支持向量机分类器
支持向量机分类(SVM)是一种建立在统计学习理论基础上的机器学习方法。SVM可以自动寻找那些对分类有较大区分能力的支持向量,由此构造出分类器,可以将类与类之间的间隔最大化,因而有较好的推广性和较高的分类准确率,操作步骤如下:
(1)在ENVl主菜单栏中选择“Classification>Supervised>SupportVec tor Machine”,在分类输入文件对话框中选择待分类遥感影像,打开“Support Vector Machine Classification Parameters”对话框,如图17-8所示。
图17-8 支持向量机分类器参数设置对话框
(2) Select Classes From Regions:点击【Select All Items】按钮,选择所有的训练样本。
(3) Kemel Type下拉列表中的选项有:Linear、Polynomial、Radial Basis Function和Sigmoid。
若选择Polynomial,需要设置一个核心多项式(Degere of Kernel Polynomial)的次数用于SVM,最小值为1,最大值为6;使用向量机规则需要为Kernel指定“this Bias”,默认值为1;“Gamma in Kernel Function”参数设置为大于0的浮点型数据,默认值为输入图像波段数的倒数。
若选择“Radial Basis Function”,需设置“Gamma in Kernel Function”参数为大于0的浮点型数据,默认值为输入图像波段数的倒数。
若选择Sigmoid,需使用向量机规则需要为Kernel指定“this Bias”,默认值为1;设置“Gamma in Kernel Function”参数为大于0的浮点型数据,默认值为输入图像波段数的倒数。
(4) Penalty Parameter:为大于0的浮点型数据,这个参数控制了样本错误与分类刚性延伸之间的平衡,默认值为100。
(5)Pyramid Levels:设置分级处理等级,用于SVM训练和分类处理过程,如果这个值为0,将以原始分辨率处理,最大值随图像的大小改变。
(6) Pyramid Reclassification Threshold(0~1):当Pyramid Levels值大于0时,需要设置这个重分类阈值。
(7) Classification Probability Threshold(0~1):为分类设置概率阈值,如果一个像素计算得到所有的规则概率小于该值,该像素将不被分类。
(8)选择分类结果的输出路径及文件名。
(9)设置“Output Rule Images”:是否选择规则图像数据。
(10)设置完上述参数后,点击【OK】按钮执行分类处理。
(三)评价分类结果
在执行监督分类后,需要对分类结果进行评价,本次实验采用使用地表真实感兴趣区来计算混淆矩阵(Confusion Matrices)方法进行分类结果评价,操作步骤如下。
1.建立地表真实感兴趣区
可以在高分辨率图像上,通过目视解译获取各个分类的地表真实感兴趣区;也可以通过野外实地调查,根据调查数据生成地表真实感兴趣区,获取方法同“(一)定义训练”,为了同训练样本区别,我们使用“植被、城镇、河流、农田”作为地表真实感兴趣区名称。
2.计算混淆矩阵
(1)打开定义验证样本的文件(即灌阳地区QuickBird全色波段)以及图像分类结果,使之显示在“Available Band”列表中。
(2)在ENVI主菜单栏中选择“Basic>Region of Interest>Restore Saved ROI File”,打开地表真实感兴趣区文件。
(3)在ENVI主菜单栏中选择“Basic>Region of Interest>Restore ROIs via Map”,打开“Reconcile ROIs via Map”对话框(图179),选择相应的地表真实感兴趣区,点击【OK】按钮。
(4)在“Select Source File where ROI was Drawn”对话框中,选择定义验证样本的文件(即灌阳地区 QuickBird 全色波段),点击【OK】按钮。
(5)在“Select Destination File to Reconcile ROIs to”对话框中,选择匹配目标文件,也就是分类结果图像。
(6)在主菜单中选择“Classification>Post Classification> Confusion Matrix> Using Ground Truth ROIs”。
图17-9“Reconcile ROIs via Map”对话框
(7)在“Classification Input File”对话框中,选择分类结果图像。地表真实感兴趣区将被自动加载到“Match Classes Parameters”对话框中。
(8)在“Match Classes Parameters”对话框中,选择所要匹配的名称,然后点击【Add Combination】按钮,将地表真实感兴趣区与最终分类结果相匹配,类别之间的匹配将显示在对话框底部的列表中,如图17-10所示,点击【OK】按钮输出混淆矩阵。
图17-10“Match Classse Parameters”对话框
(9)在混淆矩阵输出窗口的“Confusion Matrix Parameters”对话框中,选择像素(Pixels)和百分比(Percent),如图17-11所示。
(10)点击【OK】按钮,输出混淆矩阵,在输出的混淆矩阵报表中,包含了总体分类精度、Kappa系数、混淆矩阵等几项评价指标。
图17-11 混淆矩阵输出对话框
(四)分类后处理
一般情况下,使用上述分类方法得到的结果难于达到最终应用的目的,所以对获取的分类结果需要进行一些处理,才能得到最终理想的分类结果。
图17-12 编辑分类名称和颜色
1.更改分类颜色、名称
(1)打开分类结果,并使之显示在“Display”窗口中。
(2)在分类结果主图像窗口中,选择“Tools>Color Mapping>Class Color Mapping”,打开“Class Color Mapping”对话框,如图17-12所示。
(3)从“Selected Classes”列表中选择需要修改的类别,改变其颜色或者名称。
(4)完成对需要修改类别的颜色、名称的修改后,选择“Options>Save Changes”保存修改内容。
(5)选择“File>Cancel”,关闭“Class Color Mapping”对话框。
2.聚类处理
分类结果中不可避免的会产生一些面积很小的图斑,从实际应用角度有必要对这些小图斑进行剔除或重新分类。目前,常用的方法有Majority/Minority分析、聚类处理和过滤处理,本次实验选择聚类处理方法对邻近的类似分类区聚类并合并。
聚类处理首先将被选的分类用一个扩大操作合并到一起,然后用参数对话框中指定了大小的变换核对分类图像进行侵蚀操作,具体操作步骤如下:
在ENVI主菜单栏中选择“Classification> Post Classification> Clump Classes”,在“Classification Input File”对话框中,选择分类结果图像,单击【OK】按钮,打开“Clump Parameters”对话框,如图17-13所示。Clump Parameters对话框参数设置如下。
(1)选择分类类别(Select Classes):单击【Select All Items】按钮选择所有类别;
(2)输入形态学算子大小(Rows和Cols):默认为3,3;
(3)选择输出路径及文件名,单击【OK】按钮,完成聚类处理。
3.分类统计
分类统计可以基于分类结果计算相关输入文件的统计信息,包括类别中的像元数、最大值、最小值、平均值以及类中每个波段的标准差等,还可以记录每类的直方图以及计算协方差矩阵、相关矩阵、特征值和特征向量,并显示所有分类的总结记录。
(1)在ENVI主菜单栏中,选择“Classification> Post Classification > Class Statistics”,在“Classification Input File”对话框中,选择分类结果图像,单击【OK】按钮。
(2)在“Statistics Input File”对话框中,选择一个用于计算统计信息的输入文件,点击【OK】按钮,打开“Class Selection”对话框(图17-14),在“Select Classes”列表中,选择想计算统计的类别名称,点击【OK】按钮,打开“Compute Statistics Parameters”对话框(图17-15),选择需要的统计项,包括以下统计类型。
图17-13 “Clump Parameters”对话框
图17-14 选择分类对话框
基本统计(Basic Stats):包括所有波段的最小值、最大值、均值和标准差,若该文件为多波段,还包括特征值。
直方图统计(Histograms):生成一个关于频率分布的统计直方图。
协方差统计(Covariance):包括协方差矩阵和相关矩阵以及特征值和特征向量。
(3)输出结果的方式包括3种:可以输出到屏幕显示、生成统计文件(.sta)和生成文本文件,其中生成的统计文件可以通过“Classification>Post Classification>View Statistics File”命令打开,选择输出路径及文件名,单击【OK】按钮,完成分类统计。
4.分类结果转矢量
(1)在ENVI主菜单栏中,选择“Classification>Post Classification>Classification to Vector”,在“Rasterto VectorInput Band”对话框中,选择分类结果图像,单击【OK】按钮,打开“Raster to Vector Parameters”对话框,如图17-16所示。
(2)选择需要被转换成矢量文件的类别,在“Output”标签中,使用箭头切换按钮选择“Single Layer”,把所有分类都输出到一个矢量层中;或者选择“One Layer per Class”,将每个所选分类输出到单独的矢量层。
(3)选择输出路径及文件名,单击【OK】按钮,完成分类结果转矢量文件。
图17-15 计算统计参数设置对话框
图17-16 栅格转为矢量参数设置
完成遥感影像监督分类后,分别利用平行六面体、最小距离、马氏距离、最大似然、神经网络和支持向量机这六种分类器对灌阳地区QuickBird遥感影像进行监督分类处理,利用混淆矩阵对六种分类结果进行评价,得出总体分类精度和Kappa系数。比较六种分类结果,用WORD文件记录,取名为《灌阳地区QuickBird遥感影像六种监督分类方法分类结果评价》,存入自己的工作文件夹。
六、实验报告
(1)简述实验过程。
(2)回答问题:①根据实验操作步骤及各步骤之间的关系,分析所做的监督分类方法在模型设计思想或算法上的共同特点。②通过目视解译,定性比较所获得的监督分类图像的图像识别效果优缺点。
实验报告格式见附录一。
㈢ 遥感与地理信息系统专业研究生需要会什么编程语言
遥感与地理信息系统专业研究生需要会C++和C#编程语言。根据查询相关信息显示,遥感与地理信息系统专颤迹业研隐昌究生需要会C++和C#编程语言。C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程灶洞扒的程序设计,因而C++就适应的问题规模而论,大小由之。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。
㈣ 测绘专业的考研选遥感以后要自己编程吗
遥感一般是要编程的,消拆不过没有地理信息系统的多,要求没有那么高,一般也就是做做遥感图像的处理等等,我们学院的遥感的几个学生都要编程,最主要还是看老师吧,老师的项目编程少那就编程少,但是镇源遥感的不会编程就业很御桥态没有优势啊,大地的编程都有要求