• PIE SDK最小噪声变换


    1.算法功能简介

        最小噪声分离变换是用于判定图像数据内在的维数(即波段数),分离数据中的噪声,减少随后处理中的计算需求量。 MNF 本质上是两次层叠的主成分变换。第一次变换(基于估计的噪声协方差矩阵)用于分离和重新调节数据中的噪声,这步操作使变换后的噪声数据只有最小的方差且没有波段间的相关。第二步是对噪声白化数据( Noise-whitened)的标准主成分变换。为了进一步进行波谱处理,通过检查最终特征值和相关图像来判定数据的内在维数。数据空间可被分为两部分:一部分与较大特征值和相对应的特征图像相关,其余部分与近似相同的特征值以及噪声占主导地位的图像相关。

        用 MNF 变换也可以从数据中消除噪声。操作如下:首先进行正向变换,判定哪些波段包含相关图像(根据对图像和特征值的检验),然后进行一个反向MNF 变换,用波谱子集(只包括“好”波段)或在反向变换前平滑噪声的方法来消除噪声。

        PIE SDK支持算法功能的执行,下面对最小噪声变换算法功能进行介绍。

    2.算法功能实现说明

    2.1. 实现步骤

    第一步

    算法参数设置

    第二步

    算法执行

    第三步

    结果显示

    2.2 .算法参数

    算法名称

    最小噪声正变换

    C#算法DLL

    PIE.CommonAlgo.dll

    C#算法名称

    PIE.CommonAlgo.TransformFuncAlgo

    参数结构体

    DataTrans_Exchange_Info

    参数说明

    AlgoType

    Int

    区分调用的是哪个算法

    0 主成分变换

    1 最小噪声变换

    2 傅里叶变换

    3 小波变换

    4 缨帽变换

    bForward

    Bool

    区分正变换还是逆变换

    true 正;false 逆

    m_strInputFile

    String

    输入文件

    (*.tif;*.tiff;*.bmp;*.img;*.jpg;*.ldf)

    m_strStatFile

    String

    统计文件(输出最小噪声正变换元数据信息)

    m_strOutputFile

    String

    输出文件

    *.tif;*.tiff; *.img

    m_strFileTypeCode

    String

    输出文件类型,默认GTiff

    .tif/.tiff——GTiff

    .img—————HFA

    其他—————ENVI

    2.3. 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/10.算法调用/图像处理//ImageProcessing. TransformFuncAlgo

    数据路径

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

    视频路径

    百度云盘地址下/PIE视频教程/10.算法调用/图像处理//最小噪声变换算法.avi

    示例代码

     1          //(一)最小噪声正变换
     2         /// <summary>
     3         ///最小噪声正变换算法测试,本算法实现了将World.tif进行最小噪声正变换
     4         /// </summary>
     5         public override void OnClick()
     6         {
     7             #region 1、参数设置
     8             PIE.CommonAlgo.DataTrans_Exchange_Info info = new PIE.CommonAlgo.DataTrans_Exchange_Info();
     9 
    10             info.m_strInputFile = @"D:DataWorld.tif";
    11             info.m_strOutputFile = @"D:DataMinimumNoiseTransformation.tif";          
    12             info.AlgoType = 1; //最小噪声变换         
    13             info.bForward = true; //正变换       
    14             info.m_strStatFile = @"D:Datapcasta.sta"; //最小噪声变换
    15             info.m_strFileTypeCode = "GTiff";
    16             //info.lOutBandNum = 1;
    17             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.TransformFuncAlgo");
    18             if (algo == null) return;
    19             #endregion
    20 
    21             //2、算法执行
    22             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
    23             algo.Name = "最小噪声正变换";
    24             algo.Params = info;
    25             bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
    26 
    27             //3、结果显示
    28             ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:DataMinimumNoiseTransformation.tif");
    29             m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
    30             m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    31         }
    32         //(二)最小噪声逆变换
    33         /// <summary>
    34         ///最小噪声逆变换算法测试,本算法实现了将World.tif进行最小噪声逆变换
    35         /// </summary>
    36         public override void OnClick()
    37         {
    38             #region 1、参数设置
    39             PIE.CommonAlgo.DataTrans_Exchange_Info info = new PIE.CommonAlgo.DataTrans_Exchange_Info();
    40 
    41             info.m_strInputFile = @"D:DataMinimumNoiseTransformation.tif";
    42             info.m_strOutputFile = @"D:Dataip_result7.tif";      
    43             info.AlgoType = 1; //最小噪声变换     
    44             info.bForward = false; //逆变换        
    45             info.m_strStatFile = @"D:Datapcasta.sta"; //最小噪声变换
    46             info.m_strFileTypeCode = "GTiff";
    47      
    48             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.TransformFuncAlgo");
    49             if (algo == null) return;
    50             #endregion
    51 
    52             //2、算法执行
    53             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
    54             algo.Name = "最小噪声逆变换";
    55             algo.Params = info;
    56             bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
    57             //3、结果显示
    58             ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:Dataip_result7.tif");
    59             m_HookHelper.ActiveView.FocusMap.AddLayer(layer);          m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    60         }
    View Code

    2.4. 示例截图

    最小噪声正变换

     

    最小噪声逆变换

      

  • 相关阅读:
    Spring事务隔离级别、传播机制、实现方式
    包装类缓存
    Object类详解
    String类详解
    自己实现一个Map
    锁机制
    各容器区别比较
    Map-CurrentHashMap
    Javascript中bind()方法的使用与实现
    this、new、call和apply的相关问题
  • 原文地址:https://www.cnblogs.com/PIESat/p/10215745.html
Copyright © 2020-2023  润新知