圖像直方圖描述了圖像中每一個亮度值DN的像元數量的統計分佈。它經過每一個亮度值的像元數除以圖像中總得像元數,即頻率直方圖。在不少遙感應用中,直方圖是遙感圖像中所包含的信息的一種有用的圖示。每一個波段的直方圖能提供關於原始圖像質量的信息,如其對比度的強弱,是否多峯值等。算法
下面介紹如何用PIE實現直方圖統計分析,主要有兩種方法,一個是直接調用PIE.Dataset.DatasetFactory類的ExecuteHistogramStatistics方法進行執行;另外一種是直接調用PIE的直方圖統計界面進行執行,兩種區別在於第一種方法能夠獲取執行的統計信息,第二種只能做爲界面的顯示,不能獲取界面執行後的統計信息。數組
第一步ide |
調用DatasetFactory.ExecuteHistogramStatistics(….)執行直方圖統計功能ui |
第二步spa |
設置參數以便傳到第一步的算法中code |
第三步orm |
結果顯示blog |
數據路徑索引 |
百度雲盤地址下/ 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 } |
圖1第一種方法結果
圖2:調界面顯示結果(第二種方法)