zoukankan      html  css  js  c++  java
  • 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:调界面显示结果(第二种方法)

  • 相关阅读:
    STM32的DMA
    STM32串口接收不定长数据原理与源程序(转)
    推挽与开漏
    开关量输入检测与输出的电路设计(转)
    理解一下单片机的I2C和SPI通信
    电阻桥的作用(转)
    为什么工业上用4到20毫安电流传输数据(转)
    Keil的标题“礦ision3" 的改变(转)
    epplus动态合并列数据
    npm脚本编译代码
  • 原文地址:https://www.cnblogs.com/PIESat/p/11276841.html
Copyright © 2011-2022 走看看