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 } |
2.4. 示例截图
彩色空间正变换
彩色空间逆变换