PIE SDK 监督分类对话框类(SupervisedClassificaitonDialog)使用经验

Posted lw-ma

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PIE SDK 监督分类对话框类(SupervisedClassificaitonDialog)使用经验相关的知识,希望对你有一定的参考价值。

        最近研究遥感,用到分类算法,PIE SDK正好提供了一些方法可供调用,他们的官方博客上也有相应的示例代码(可参考:https://www.cnblogs.com/PIESat/p/10725270.html)。但是,我在开发手册中发现了监督分类对话框类(SupervisedClassificaitonDialog),欣喜若狂!心想有这个类的话,不仅有直观的界面展示,而且也会省去很多开发过程。不幸的是,直接调用这个类显示参数设置对话框界面(如下图),设置好参数,点击OK,并没有出现我想要的分类结果。实际上是根本就没有执行分类算法。因此,我咨询了相关技术人员(在此表示感谢),终于试验成功,特此Mark一下。

技术图片

       监督分类对话框类界面

       我们知道PIE SDK算法调用有三步:

       第一步:设置ROI统计参数ROIStatistics_Exchange_Info并执行ROI统计算法得到ROI统计信息。

       第二步:根据roi统计信息设置监督分类参数SupervisedClassification_Exchange_Info并执行距离分类算法。

       第三步:结果显示。

       在监督分类对话框类中,可以设置ROI。设置ROI后,就已经完成了ROI信息统计,不再需要执行ROI统计算法。至此,第一步已经完成。

       在第二步中,需要设置监督分类参数SupervisedClassification_Exchange_Info。来看SupervisedClassificaitonDialog的Public成员函数(如下图)。

技术图片

SupervisedClassificaitonDialog的Public成员函数

       其中有GetParams()函数,第一想到的是它可以获得参数以完成第二步监督分类参数SupervisedClassification_Exchange_Info结构体的设置。但是这个函数使用上有一点技巧(我一直卡在这个地方),如下:

技术图片
1 SupervisedClassification_Exchange_Info m_DataInfo = null;
2             m_DataInfo = new SupervisedClassification_Exchange_Info(max_likelihood.GetParams());
View Code

       至此,通过SupervisedClassificaitonDialog显示参数设置对话框界面,设置好参数后,即可完成第二步监督分类参数SupervisedClassification_Exchange_Info结构体的构造。

       下面就开始执行算法获取想要的结果了!!!

       完整代码如下:

技术图片
 1 private void toolStripButton1_Click_1(object sender, EventArgs e)
 2         {
 3             SupervisedClassificaitonDialog max_likelihood = new SupervisedClassificaitonDialog();
 4             max_likelihood.Initialize(0, mapControlMain.FocusMap);
 5             
 6             if (max_likelihood.ShowDialog()!=1)
 7             {
 8                 max_likelihood.Dispose();
 9                 max_likelihood = null;
10                 return;
11             }
12             SupervisedClassification_Exchange_Info m_DataInfo = null;
13             m_DataInfo = new SupervisedClassification_Exchange_Info(max_likelihood.GetParams());
14 
15             ISystemAlgo maxlikelihoodAlgo = AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.MLClassificationAlgo");//最大似然法就将DistanceClassificationAlgo替换为MLClassificationAlgo
16             maxlikelihoodAlgo.Name = "最大似然分类";
17             if (max_likelihood == null) return;
18             maxlikelihoodAlgo.Params = m_DataInfo;
19             ISystemAlgoEvents systemEvents = maxlikelihoodAlgo as ISystemAlgoEvents;
20             systemEvents.OnExecuteCompleted += systemEvents_OnExecuteCompleted;
21             
22 
23             AlgoFactory.Instance().ExecuteAlgo(maxlikelihoodAlgo);
24             max_likelihood.Dispose();
25             max_likelihood = null;
26         }
View Code

技术图片

SupervisedClassificaitonDialog参数设置对话框

技术图片

分类结果展示

       有不对的地方请大家批评指正。

以上是关于PIE SDK 监督分类对话框类(SupervisedClassificaitonDialog)使用经验的主要内容,如果未能解决你的问题,请参考以下文章

PIE SDK矢量数据项查看

PIE Engine机器学习遥感影像监督分类全流程(附源码)

PIE SDK打开自定义矢量数据

PIE SDK元素事件的监听

PIE SDK元素的选择和取消选择

PIE SDK元素位置和显示样式的修改