• PIE SDK 精度分析(分类后处理)


    1.算法功能简介

      遥感图像分类精度分析通常把分类图与标准数据进行比较,然后用正确分类的百分比来表示分类的精度。

      PIE SDK支持算法功能的执行,下面对精度分析算法功能进行介绍。

    2.算法功能实现说明

    2.1. 实现步骤

    第一步

    算法参数设置

    第二步

    算法执行

    第三步

    结果显示

    2.2. 算法参数

    算法名称

    精度分析

    C#算法DLL

    PIE.CommonAlgo.dll

    C#算法名称

    PIE.CommonAlgo.ImgClassPostPAAlgo

    参数结构体

    StImgClassPostPA

    参数说明

    RealName

    String

    输入真实地面分类文件(*.tif;*.tiff; *.img)

    ClassName

    String

    输入分类数据文件(*.tif;*.tiff; *.img)

    RealIndex

    IList<Int>

    真实类别索引集合(正整数)

    ClassIndex

    IList<Int>

    分类类别索引集合(正整数)

    strRealInfo

    IList<String>

    真实地面信息

    strClassInfo

    IList<String>

    分类数据信息

    Fileinfo

    String

    精度结果

    IsShp

    bool

    是否矢量

    FuncName

    String

    功能名称

    SelIndex

    Int

    选中索引

    2.3. 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/10.算法调用/图像处理/ PrecisionAnalysisDemo

    数据路径

    百度云盘地址下/PIE示例数据/栅格数据/08.图像分类/ distanceClassify-Julei.tif

    视频路径

    百度云盘地址下/PIE视频教程/10.算法调用/图像处理/精度分析.avi

    示例代码

     1         /// <summary>
     2         /// 分类后处理-精度分析
     3         /// </summary>
     4         /// <param name="sender"></param>
     5        /// <param name="e"></param>
     6 private void toolStripButton1_Click(object sender, EventArgs e)
     7         {
     8 //用分类后的结果distanceClassify-Julei.tif和真实的文件进行比对,得到精度分析结果
     9             //参数设置
    10             PIE.CommonAlgo.StImgClassPostPA info = new PIE.CommonAlgo.StImgClassPostPA();
    11             info.FuncName = "精度分析";
    12             info.ClassName = @"D:data图像分类2distanceClassify-Julei.tif";//分类后数据文件
    13             info.RealName = @"D:data图像分类2
    oi-shp.shp";//地面真实文件(矢量或者是影像)
    14             IList<int> listRealIndex = new List<int> { 1, 2, 3, 4 };//此处没有处理索引为0的未分类数据,若处理可以加上0;
    15             IList<int> listClassIndex = new List<int> { 1,2,3,4 };
    16             info.RealIndex = listRealIndex;//真实地面索引集合  匹配的左侧索引
    17             info.ClassIndex = listClassIndex;//分类类别索引集合 匹配的右侧索引
    18             info.IsShp = true;  //如果是roi文件 则为true
    19 
    20             IList<string> listClassNameInfo = new List<string>();
    21             IList<string> listRealNameInfo = new List<string>();
    22             listRealNameInfo.Add("Unclassified");
    23             IFeatureDataset realFeatureDataset = DatasetFactory.OpenFeatureDataset(info.RealName);
    24             if (realFeatureDataset == null) return;
    25             IFeature feature = realFeatureDataset.GetNextFeature();
    26             while (feature != null)
    27             {
    28                 string str = feature.GetValue(0).ToString();//默认选择索引为0的字段的值
    29                 int nSize = listRealNameInfo.Count;
    30                 if (nSize == 0)
    31                 {
    32                     listRealNameInfo.Add(str);
    33                     continue;
    34                 }
    35                 int isz = 0;
    36                 for (isz = 0; isz < nSize; isz++)
    37                 {
    38                     if (listRealNameInfo[isz] == str) break;
    39                 }
    40 
    41                 if (isz == nSize)
    42                 {
    43                     listRealNameInfo.Add(str);
    44                 }
    45                 feature = realFeatureDataset.GetNextFeature();
    46             }
    47 
    48             //分类数据的类别
    49             IRasterDataset rasterDataset = DatasetFactory.OpenRasterDataset(info.ClassName, OpenMode.ReadOnly);
    50             listClassNameInfo = rasterDataset.GetRasterBand(0).GetCategoryNames();//获取分类信息
    51             if (listClassNameInfo == null)
    52             {
    53                 IColorTable colTable = rasterDataset.GetRasterBand(0).Table;
    54                 if (colTable != null)
    55                 {
    56                     int count = colTable.GetColorEntryCount();
    57                     for (int i = 0; i < count; i++)
    58                     {
    59                         listClassNameInfo.Add("Class" + i);
    60                     }
    61                 }
    62             }
    63             info.strClassInfo = listClassNameInfo; //分类数据类别信息
    64             info.strRealInfo = listRealNameInfo; //真实地面信息
    65             info.SelIndex = 0; //选中的属性索引 ClassName 
    66 
    67             //2、创建算法对象
    68             ISystemAlgo algo = AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImgClassPostPAAlgo");
    69             if (algo == null) return;
    70             algo.Params = info;
    71 
    72             //3、执行算法
    73             bool result = AlgoFactory.Instance().ExecuteAlgo(algo);       
    74             PIE.CommonAlgo.StImgClassPostPA info1 = algo.Params as PIE.CommonAlgo.StImgClassPostPA;
    75             string str1 = info1.Fileinfo;
    76             MessageBox.Show(str1,"精度分析结果:");       
    77         }
    View Code

    2.4. 示例截图

     

    图1:分类前数据

     

    图2:距离分类结果(聚类调整)

     

    图3:精度分析结果

    注意示例中的分类数据是距离分类数据distanceClassify.img;

    分类之后会出现斑点问题,可以采用聚类进行消除得到distanceClassify-Julei.tif数据。

     
  • 相关阅读:
    (十一)Activitivi5之流程控制网关:连线
    (十)Activitivi5之启动流程/完成任务的时候设置流程变量
    (九)Activitivi5之使用 RuntimeService 设置和获取流程变量
    (八)Activiti之流程变量和局部流程变量
    (七)Activiti之历史活动查询和历史任务查询和流程状态查询
    (六)Activiti之实现学生请假流程
    (五)Activiti之查看最新版本的流程定义
    (五)Activiti之获取流程定义图片和流程定义删除
    (四)Activiti之流程定义部署之ZIP方式和流程定义查询
    java程序中执行HiveQL
  • 原文地址:https://www.cnblogs.com/PIESat/p/11098104.html
Copyright © 2020-2023  润新知