码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-05-31 00:51:36      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:div   actor   指正   而且   map   ram   htm   private   factor   

        最近研究遥感,用到分类算法,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)使用经验

标签:div   actor   指正   而且   map   ram   htm   private   factor   

原文地址:https://www.cnblogs.com/LW-MA/p/10952872.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!