• PIE SDK SFIM融合


     

    1.算法功能简介

        SFIM 融合方法全称为基于平滑滤波的亮度变换。基本原理是将高分辨率影像通过低通滤波抑制其高频空间信息保留低频信息,再将原高分辨率影像与通过低通滤波的高分辨率影像进行比值运算,以抵消光谱及地形反差,增强纹理结构信息,最后将比值运算结果融入低分辨率影像中。

        PIE支持算法功能的执行,下面对SFIM融合算法功能进行介绍。

    2.算法功能实现说明

    2.1.实现步骤

    第一步

    算法参数设置

    第二步

    算法执行

    第三步

    结果显示

    2.2.算法参数

    算法名称

    SFIM融合

    C#算法DLL

    PIE.CommonAlgo.dll

    C#算法名称

    PIE.CommonAlgo.CFusionAlgo

    参数结构体

    CFusion_Exchange_Info

    参数说明

    Type

    String

    融合类型

    0 SFIM融合

    1彩色标准化融合

    LowResFile

    IList<String>

    输入的多光谱数据波段名称集合

    LowBands

    IList<int>

    多光谱数据波段集合{0,1,2,3}

    OutputFilePath

    String

    输出文件

    (*.tif;*.tiff; *.img)

    FileTypeCode

    String

    文件类型编码

    .tif/.tiff——GTiff

    .img—————HFA

    其他—————ENVI

    HighResNullValue

    Int

    融合所选择的高分辨率数据波段(0)

    ResampleMode

    Int

    重采样类型

    (最近邻点插值0/双线性插值1/三次卷积法插值2)

    lMaxCache

    Int

    最大缓存(16)

    FuncName

    String

    功能名称

    BMultiThread

    Bool

    是否多线程(true) TRUE 是; FALSE 否

    2.3.示例代码

    项目路径

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

    数据路径

    百度云盘地址下/PIE示例数据/ 栅格数据/01.GF1/MS.tif

    PAN.tif

    视频路径

    百度云盘地址下/PIE视频教程/ 10.算法调用/图像预处理/ SFIM融合算法avi

    示例代码

     1 /// <summary>
     2 ///SFIM融合算法测试,本算法实现了将MS.tif和PAN.tif进行SFIM融合
     3 /// </summary>
     4 public override void OnClick()
     5 {
     6 #region 1、参数设置
     7 PIE.CommonAlgo.CFusion_Exchange_Info info = new PIE.CommonAlgo.CFusion_Exchange_Info();
     8 
     9 //info.Type = 1; //彩色标准化融合
    10 info.Type = 0; //SFIM融合
    11 string path1 = @"D:DataMS.tif";
    12 string path2 = @"D:DataPAN.tif";
    13 info.LowResFile = new List<String> { path1,path1,path1,path2 };
    14 info.LowBands = new List<int> { 0, 1, 2,0 };
    15 info.OutputFilePath = @"D:Data
    esult7.tif";
    16 info.FileTypeCode = "Gtiff";
    17 info.ResampleMode = 0;
    18 info.HighResNullValue = 0;
    19 info.lMaxCache = 16;
    20 info.BMultiThread = true;
    21 
    22 PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.CFusionAlgo");
    23 if (algo == null) return;
    24 #endregion
    25 
    26 //2、算法执行
    27 PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
    28 algo.Name = "SFIM融合";
    29 algo.Params = info;
    30 (algo as PIE.SystemAlgo.ISystemAlgoEvents).OnExecuteCompleted +=CFusionAlgo_OnExecuteCompleted;
    31 (algo as PIE.SystemAlgo.ISystemAlgoEvents).OnProgressChanged += CFusionAlgo_OnProgressChanged;
    32 
    33 PIE.AxControls.IStatusBar statusBar = m_Application.StatusBar;
    34 statusBar.ShowProgress(0, 100, "");
    35 
    36 PIE.SystemAlgo.AlgoFactory.Instance().AsynExecuteAlgo(algo);
    37 }
    38 int CFusionAlgo_OnProgressChanged(double complete, string msg, SystemAlgo.ISystemAlgo algo)
    39 {
    40 PIE.AxControls.IStatusBar statusBar = m_Application.StatusBar;
    41 statusBar.UpdateProgress((int)complete, msg);
    42 return 0;
    43 }
    44 
    45 void CFusionAlgo_OnExecuteCompleted(SystemAlgo.ISystemAlgo algo)
    46 {
    47 PIE.AxControls.IStatusBar statusBar = m_Application.StatusBar;
    48 statusBar.UpdateProgress(100, "");
    49 statusBar.HideProgress();
    50 //3、结果显示
    51 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:Data
    esult7.tif");
    52 m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
    53 m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    54 m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    55 (algo as PIE.SystemAlgo.ISystemAlgoEvents).OnExecuteCompleted -= CFusionAlgo_OnExecuteCompleted;
    56 (algo as PIE.SystemAlgo.ISystemAlgoEvents).OnProgressChanged -= CFusionAlgo_OnProgressChanged;
    57 }
    View Code

    2.4.示例截图

     

  • 相关阅读:
    Spring Security简单的登陆验证授权
    汽车之家汽车品牌Logo信息抓取 DotnetSpider实战[三]
    汽车之家店铺商品详情数据抓取 DotnetSpider实战[二]
    如何解决 MySQL报错:ERROR 1045 (28000)
    linux三剑客grep|sed|awk实践
    VMware中Linux启动时***Host SMBus controller not enabled的解决方法
    selenium初探:WebDriverException解决方法探索(以Chrome浏览器|IE浏览器|Edge浏览器为例)
    Windows10 64位 Python2.7 Matplotlib安装
    关于 水平制表符 Horizontal Tab (TAB)
    leetcode每日解题思路 221 Maximal Square
  • 原文地址:https://www.cnblogs.com/PIESat/p/10190315.html
Copyright © 2020-2023  润新知