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. 示例截图

彩色空间正变换

彩色空间逆变换

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