PIE SDK直方圖統計法

1.算法功能簡介

  圖像直方圖描述了圖像中每一個亮度值DN的像元數量的統計分佈。它經過每一個亮度值的像元數除以圖像中總得像元數,即頻率直方圖。在不少遙感應用中,直方圖是遙感圖像中所包含的信息的一種有用的圖示。每一個波段的直方圖能提供關於原始圖像質量的信息,如其對比度的強弱,是否多峯值等。算法

  下面介紹如何用PIE實現直方圖統計分析,主要有兩種方法,一個是直接調用PIE.Dataset.DatasetFactory類的ExecuteHistogramStatistics方法進行執行;另外一種是直接調用PIE的直方圖統計界面進行執行,兩種區別在於第一種方法能夠獲取執行的統計信息,第二種只能做爲界面的顯示,不能獲取界面執行後的統計信息。數組

2.算法功能實現說明

2.1 實現思路

第一步ide

調用DatasetFactory.ExecuteHistogramStatistics(….)執行直方圖統計功能ui

第二步spa

設置參數以便傳到第一步的算法中code

第三步orm

結果顯示blog

2.2 示例代碼

數據路徑索引

百度雲盤地址下/ PIE示例數據/柵格數據/4.World/World.tifci

示例代碼

 1 /// <summary>
 2 /// 直方圖統計法
 3 /// </summary>
 4 public void HistogramStatistic()           
 5 {
 6     //一、第一種方法
 7     #region DatasetFactory類中的方法                
 8     string filePath = @"D:\data\China1\world\World.tif";//統計的數據路徑
 9     int band = 2;//統計的波段編號(從0開始) 注意 索引號不能超過波段數
10     IList<double> listValue = new List<double>();//非統計值
11     float ratio = 100F;//採樣比例
12 
13     double max = 0;//統計最大值
14     double min = 0;//統計最小值
15     double median = 0;//統計中值
16     double mode = 0;//統計衆值
17     double mean = 0;//統計平均值
18     double dev = 0;//統計標準差
19     double k = 0;//峯值
20     double s = 0;//偏度
21     uint numOfPixel = 0;//總像素數
22     IDictionary<double, int>[] mapGray = new Dictionary<double, int>[256];//統計直方圖數據(256的數組)
23 
24     bool result = DatasetFactory.ExecuteHistogramStatistics(filePath, band, listValue, true, true, ratio, true, ref max, ref min, ref median, ref mode, ref mean, ref dev, ref k, ref s, ref numOfPixel, mapGray);
25     if (!result) return;
26 
27     string info = string.Format("數據{9}的第{10}波段的直方圖統計信息:\r\n最大值:{0};\r\n最小值:{1};\r\n中值:{2};\r\n衆值:{3};\r\n平均值:{4};\r\n標準差:{5};\r\n峯值:{6};\r\n偏度:{7};\r\n總像素值:{8};\r\n ", max, min, median, mode, mean, dev, k, s, numOfPixel, filePath, band + 1);
28     MessageBox.Show(info, "直方圖統計信息");
29     #endregion
30 
31     //二、第二種方法
32     #region 調用界面顯示 和第一種方法有所區別,該界面只能用於顯示參數不能獲取界面上的統計信息
33     //PIE.AxControls.HistogramStatDialog frmSupervisedClassificaiton = new AxControls.HistogramStatDialog();
34     //frmSupervisedClassificaiton.Initialize(m_HookHelper.FocusMap);
35     //frmSupervisedClassificaiton.ShowDialog();
36 
37     //(frmSupervisedClassificaiton as IDisposable).Dispose();
38     //frmSupervisedClassificaiton = null;                  
39     #endregion   
40 }
View Code

2.3 示例截圖

圖1第一種方法結果

圖2:調界面顯示結果(第二種方法)

相關文章
相關標籤/搜索