PIE SDK直方图统计法

1.算法功能简介

  图像直方图描述了图像中每个亮度值DN的像元数量的统计分布。它通过每个亮度值的像元数除以图像中总得像元数,即频率直方图。在很多遥感应用中,直方图是遥感图像中所包含的信息的一种有用的图示。每个波段的直方图能提供关于原始图像质量的信息,如其对比度的强弱,是否多峰值等。

  下面介绍如何用PIE实现直方图统计分析,主要有两种方法,一个是直接调用PIE.Dataset.DatasetFactory类的ExecuteHistogramStatistics方法进行执行;另一种是直接调用PIE的直方图统计界面进行执行,两种区别在于第一种方法可以获取执行的统计信息,第二种只能作为界面的显示,不能获取界面执行后的统计信息。

2.算法功能实现说明

2.1 实现思路

第一步

调用DatasetFactory.ExecuteHistogramStatistics(….)执行直方图统计功能

第二步

设置参数以便传到第一步的算法中

第三步

结果显示

2.2 示例代码

数据路径

百度云盘地址下/ PIE示例数据/栅格数据/4.World/World.tif

示例代码

 1 /// <summary>
 2 /// 直方图统计法
 3 /// </summary>
 4 public void HistogramStatistic()           
 5 {
 6     //1、第一种方法
 7     #region DatasetFactory类中的方法                
 8     string filePath = @"D:dataChina1worldWorld.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}波段的直方图统计信息:
最大值:{0};
最小值:{1};
中值:{2};
众值:{3};
平均值:{4};
标准差:{5};
峰值:{6};
偏度:{7};
总像素值:{8};
 ", max, min, median, mode, mean, dev, k, s, numOfPixel, filePath, band + 1);
28     MessageBox.Show(info, "直方图统计信息");
29     #endregion
30 
31     //2、第二种方法
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:调界面显示结果(第二种方法)

原文地址:https://www.cnblogs.com/PIESat/p/11276841.html