遙感圖像分類精度分析一般把分類圖與標準數據進行比較,而後用正確分類的百分比來表示分類的精度。算法
PIE SDK支持算法功能的執行,下面對精度分析算法功能進行介紹。ide
第一步spa |
算法參數設置code |
第二步視頻 |
算法執行對象 |
第三步blog |
結果顯示教程 |
算法名稱索引 |
精度分析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 |
選中索引 |
項目路徑 |
百度雲盤地址下/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 } |
圖1:分類前數據
圖2:距離分類結果(聚類調整)
圖3:精度分析結果
注意:示例中的分類數據是距離分類數據distanceClassify.img;
分類以後會出現斑點問題,能夠採用聚類進行消除獲得distanceClassify-Julei.tif數據。