使用彩色空間變換工具能夠將三波段紅、綠、藍圖像變換到一個特定的彩色空間,而且能從所選彩色空間變換回 RGB。兩次變換之間,經過對比度拉伸,能夠生成一個色彩加強的彩色合成圖像。此外,顏色亮度值波段或亮度波段能夠被另外一個波段(一般具備較高的空間分辨率)代替,生成一幅合成圖像(將一幅圖像的色彩特徵與另外一幅圖像的空間特徵相結合)。算法
彩色變換的通常工做流程:選擇波段進行 RGB 合成顯示→進行彩色變換→進行其餘的圖像處理→進行彩色逆變換→RGB 合成顯示。ide
PIE SDK支持算法功能的執行,下面對彩色空間變換算法功能進行介紹。工具
第一步測試 |
算法參數設置spa |
第二步code |
算法執行orm |
第三步視頻 |
結果顯示blog |
算法名稱教程 |
彩色空間正變換 |
|
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> |
輸出影像波段向量 |
項目路徑 |
百度雲盤地址下/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 一、參數設置 8 PIE.CommonAlgo.RGBTrans_Exchange_Info info = new PIE.CommonAlgo.RGBTrans_Exchange_Info(); 9 10 info.m_strInputFile = @"D:\Data\World.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 //二、算法執行 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 //三、結果顯示 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 一、參數設置 40 PIE.CommonAlgo.RGBTrans_Exchange_Info info = new PIE.CommonAlgo.RGBTrans_Exchange_Info(); 41 42 //info.m_strInputFile = @"D:\Data\World.tif"; //正變換 43 info.m_strInputFile = @"D:\Data\ TransformRGB2IHS.tif"; //正變換 44 info.m_strOutputFile = @"D:\Data\ip_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 //二、算法執行 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 //三、結果顯示 61 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(info.m_strOutputFile); 62 m_HookHelper.ActiveView.FocusMap.AddLayer(layer); m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 63 } |
彩色空間正變換
彩色空間逆變換