监督分类,也叫训练场地法、训练分类法,是遥感图像分类的一种,用被确认类别的样本像元去识别其他未知类别像元的过程。监督分类算法有平行算法、平行六面体法、最小距离法、最大似然法、马氏距离法、二值编码分类法等算法。
最小距离法是一种原理简单,应用方便的分类方法,它利用训练样本中各类别在各波段的均值,根据各像元离训练样本平均值的距离大小来决定其类别,其在遥感分类中应用并不广泛,主要缺点是此方法没有考虑不同类别内部方差的不同,从而造成一些类别在其边界上的重叠,引起分类误差,因此需要一些更有效的测量距离的方法。
最大似然分类,在多类地物识别时,常采用某种统计方法建立起一个判别函数集,然后根据这个判别函数计算各待分类样本的归属概率,样本属于哪一类的概率最大就判别其属于哪一类,这就是最大似然法 。最大似然法是根据训练样本的均值和方差来评价其他像元和训练类别之间的相似性,它可以同时定量地考虑两个以上的波段和类别,是一种广泛应用的分类器,但是这种算法的计算量较大,同时对不同类别的方差变化比较敏感。
PIE SDK支持算法功能的执行,下面对距离分类算法和最大似然分类法功能进行介绍。
第一步 |
设置ROI统计参数ROIStatistics_Exchange_Info并执行ROI统计算法得到ROI统计信息。 |
第二步 |
根据roi统计信息设置监督分类参数SupervisedClassification_Exchange_Info并执行距离分类算法 |
第三步 |
结果显示 |
算法名称 |
距离分类 |
|
C#算法DLL |
PIE.CommonAlgo.dll |
|
C#算法名称 |
PIE.CommonAlgo.DistanceClassificationAlgo(距离分类) PIE.CommonAlgo.MLClassificationAlgo(最大似然分类) |
|
参数结构体 |
SupervisedClassification_Exchange_Info |
|
参数说明 |
||
InputFilePath |
String |
输入文件(*.tif;*.tiff; *.img) |
OutputFilePath |
String |
输出文件路径 (*.tif;*.tiff; *.img) |
RStart |
Int |
行起始值(大于0小于等于栅格总行数) |
REnd |
Int |
行结束值(大于0小于等于栅格总行数,大于RStart) |
CStart |
Int |
列起始值(大于0小于等于栅格总列数) |
CEnd |
Int |
列结束值(大于0小于等于栅格总列数,大于CEnd) |
SelBandNums |
Int |
多光谱波段个数 |
SelBandIndexs |
IList |
多光谱波段集合 |
ROINums |
Int |
ROI个数 |
ROIMean |
IList |
ROI均值集合 |
ROICof |
IList |
ROICof集合 |
ListRoiNames |
IList |
ROI名称集合 |
ListRoiColors |
IList |
ROI颜色集合 |
ClassifierType |
Int |
监督分类类型(0代表最大似然分类;1代表距离分类) |
FuncName |
String |
C#算法名称 |
项目路径 |
百度云盘地址下/PIE示例程序/10.算法调用/图像处理/ DistanceClassify |
数据路径 |
百度云盘地址下/PIE示例数据/栅格数据/04.World.tif |
视频路径 |
百度云盘地址下/PIE视频教程/10.算法调用/图像处理/距离分类算法.avi |
示例代码 |
|
1 using PIE.Carto; 2 using PIE.CommonAlgo; 3 using PIE.Framework; 4 using PIE.SystemAlgo; 5 using System; 6 using System.Collections.Generic; 7 using System.Linq; 8 using System.Text; 9 10 namespace DistanceClassify 11 { 12 //距离分类 13 class DistanceClassifyCommand : DesktopCommand 14 { 15 /// |
注意:
1、上述分类图由于roi分类的类别很少可能误差有点大,稍微做了些渲染修改
2、如果要改成最大似然分类法,修改执行算法以及ClassifierType=0;
其他不变(距离分类和最大似然分类的参数文件是同一个素以不需要修改其他内容):
PIE.SystemAlgo.ISystemAlgo algo=PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.MLClassificationAlgo")