zoukankan      html  css  js  c++  java
  • PIE SDK彩色空间变换

    1. 算法功能简介

        使用彩色空间变换工具可以将三波段红、绿、蓝图像变换到一个特定的彩色空间,并且能从所选彩色空间变换回 RGB。两次变换之间,通过对比度拉伸,可以生成一个色彩增强的彩色合成图像。此外,颜色亮度值波段或亮度波段可以被另一个波段(通常具有较高的空间分辨率)代替,生成一幅合成图像(将一幅图像的色彩特征与另一幅图像的空间特征相结合)。

        彩色变换的一般工作流程:选择波段进行 RGB 合成显示→进行彩色变换→进行其他的图像处理→进行彩色逆变换→RGB 合成显示。

        PIE SDK支持算法功能的执行,下面对彩色空间变换算法功能进行介绍。

    2.算法功能实现说明

    2.1. 实现步骤

    第一步

    算法参数设置

    第二步

    算法执行

    第三步

    结果显示

    2.2. 算法参数

    算法名称

    彩色空间正变换

    C#算法DLL

    PIE.CommonAlgo.dll

    C#算法名称

    PIE.CommonAlgo.TransformRGB2IHSAlgo

    参数结构体

    RGBTrans_Exchange_Info

    参数说明

    m_strInputFile

    String

    输入文件

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

    m_strOutputFile

    String

    输出文件

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

    m_strFileTypeCode

    String

    输出文件类型,默认GTiff

    .tif/.tiff——GTiff

    .img—————HFA

    其他—————ENVI

    m_vecBandIndex

    IList<Int>

    通道设置

    m_vecBandOutIndex

    IList<Int>

    输出影像波段向量

    2.3. 示例代码

    项目路径

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

    数据路径

    百度云盘地址下/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.RGBTrans_Exchange_Info info = new PIE.CommonAlgo.RGBTrans_Exchange_Info();
     9 
    10             info.m_strInputFile = @"D:DataWorld.tif";
    11             info.m_strOutputFile = @"D:Data TransformRGB2IHS.tif ";
    12             info.m_strFileTypeCode="GTiff"; 
    13             info.m_vecBandIndex = new List<int> { 1,2,3 };
    14             info.m_vecBandOutIndex = new List<int> { 0,1,2 };
    15 
    16             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.TransformRGB2IHSAlgo"); //正变换
    17             //PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.TransformIHS2RGBAlgo"); //逆变换
    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(strOutputFile);
    29             m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
    30             m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    31 
    32         }
    33         //(二) 彩色空间逆变换
    34         /// <summary>
    35         /// 彩色空间逆变换算法测试,本算法实现了将World.tif进行彩色空间逆变换
    36         /// </summary>
    37         public override void OnClick()
    38         {
    39             #region 1、参数设置
    40             PIE.CommonAlgo.RGBTrans_Exchange_Info info = new PIE.CommonAlgo.RGBTrans_Exchange_Info();
    41 
    42             //info.m_strInputFile = @"D:DataWorld.tif"; //正变换
    43             info.m_strInputFile = @"D:Data TransformRGB2IHS.tif"; //正变换
    44             info.m_strOutputFile = @"D:Dataip_result20.tif";
    45             info.m_strFileTypeCode="GTiff"; 
    46             info.m_vecBandIndex = new List<int> { 1,2,3 };
    47             info.m_vecBandOutIndex = new List<int> { 0,1,2 };
    48 
    49             //PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.TransformRGB2IHSAlgo"); //正变换
    50             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.TransformIHS2RGBAlgo"); //逆变换
    51             if (algo == null) return;
    52             #endregion
    53 
    54             //2、算法执行
    55             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
    56             algo.Name = " 彩色空间逆变换";
    57             algo.Params = info;
    58             bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
    59 
    60             //3、结果显示
    61             ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(info.m_strOutputFile);
    62             m_HookHelper.ActiveView.FocusMap.AddLayer(layer);            m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    63         }
    View Code

    2.4. 示例截图

    彩色空间正变换

    彩色空间逆变换

  • 相关阅读:
    死锁
    Notepad++源代码阅读——窗口封装与继承
    Notepad++源代码阅读——窗口元素组织与布局
    选择问题(selection problem)
    插入排序 | 冒泡排序 | 希尔排序 | 堆排序 | 快速排序 | 选择排序 | 归并排序
    编程之美2014---大神与三位小伙伴
    ulimit 修改 open files & core
    tmux手记
    匿名访问windows server 2008 R2 文件服务器的共享
    WINDOWS系统变量
  • 原文地址:https://www.cnblogs.com/PIESat/p/10213285.html
Copyright © 2011-2022 走看看