PIE SDK 精度分析(分類後處理)

 

1.算法功能簡介

  遙感圖像分類精度分析一般把分類圖與標準數據進行比較,而後用正確分類的百分比來表示分類的精度。算法

  PIE SDK支持算法功能的執行,下面對精度分析算法功能進行介紹。ide

2.算法功能實現說明

2.1. 實現步驟

第一步spa

算法參數設置code

第二步視頻

算法執行對象

第三步blog

結果顯示教程

2.2. 算法參數

算法名稱索引

精度分析ip

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\圖像分類2\distanceClassify-Julei.tif";//分類後數據文件
13             info.RealName = @"D:\data\圖像分類2\roi-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             //二、建立算法對象
68             ISystemAlgo algo = AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImgClassPostPAAlgo");
69             if (algo == null) return;
70             algo.Params = info;
71 
72             //三、執行算法
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數據。

相關文章
相關標籤/搜索