PIE SDK K-Means分類

 

1.算法功能簡介

    K-Means 算法的基本思想是:以空間中 k 個點爲中心進行聚類,對最靠近他們的對象歸類。經過迭代的方法,逐次更新各聚類中心的值,直至獲得最好的聚類結果。算法

算法首先隨機從數據集中選取 K 個點做爲初始聚類中心,而後計算各個樣本到聚類中的距離,把樣本歸到離它最近的那個聚類中心所在的類。計算新造成的每個聚類的數據對象的平均值來獲得新的聚類中心,若是相鄰兩次的聚類中心沒有任何變化,說明樣本調整結束,聚類準則函數已經收斂。本算法的一個特色是在每次迭代中都要考察每一個樣本的分類是否正確。若不正確,就要調整,在所有樣本調整完後,再修改聚類中心,進入下一次迭代。若是在一次迭代算法中,全部的樣本被正確分類,則不會有調整,聚類中心也不會有任何變化,這標誌着已經收斂,所以算法結束。ide

    PIE SDK支持算法功能的執行,下面對K-Means分類算法功能進行介紹。函數

2.算法功能實現說明

2.1. 實現步驟

第一步oop

算法參數設置測試

第二步spa

算法執行code

第三步視頻

結果顯示對象

2.2. 算法參數blog

算法名稱

K-Means分類

C#算法DLL

PIE.CommonAlgo.dll

C#算法名稱

PIE.CommonAlgo.KmeansClassificationAlgo

參數結構體

KmeansClassification_Exchange_Info

參數說明

InputFilePath

String

輸入文件(*.tif;*.tiff; *.img)

OutputFilePath

String

輸出文件路徑(*.tif;*.tiff; *.img)

ClassNum

Int

分類數(2~255的正整數)

MaxLoop

Int

最大迭代次數(大於0的正整數)

Threshold

double

終止閾值(正數)

FuncName

String

功能名稱

ListBands

IList<Int>

輸入影像的波段(至少選擇一個波段,{ 0, 1, 2, 3 })

2.3. 示例代碼

項目路徑

百度雲盤地址下/PIE示例程序/10.算法調用/圖像處理/ImageProcessing. KmeansClassificationAlgo

數據路徑

百度雲盤地址下/PIE示例數據/柵格數據/01.GF1/GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.tiff

視頻路徑

百度雲盤地址下/PIE視頻教程/10.算法調用/圖像處理/K-Means分類算法avi

示例代碼

 1         /// <summary>
 2         /// K-Means分類算法測試,本算法實現了將GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.tiff進行K-Means分類
 3         ///預期類數爲5,最大迭代次數爲5,終止閾值爲1
 4         /// </summary>
 5         public override void OnClick()
 6         {
 7             #region 一、參數設置
 8             PIE.CommonAlgo.KmeansClassification_Exchange_Info info = new PIE.CommonAlgo.KmeansClassification_Exchange_Info();
 9             info.InputFilePath = @"D:\Data\GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.tiff";
10             info.OutputFilePath = @"D:\Data\ip_result2.tif";
11             info.ClassNum = 5;
12             info.Maxloop = 5;
13             info.Threshold = 1;
14             info.LowBands = new List<int> { 0, 1, 2, 3 };
15 
16             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.KmeansClassificationAlgo");
17             if (algo == null) return;
18             #endregion
19 
20             //二、算法執行
21             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
22             algo.Name = " K-Means分類";
23             algo.Params = info;
24             bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
25 
26             //三、結果顯示
27             ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(info.OutputFilePath);
28             m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
29             m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
30         }
View Code

2.4. 示例截圖

相關文章
相關標籤/搜索