PIE SDK彩色空間變換

 

1. 算法功能簡介

    使用彩色空間變換工具能夠將三波段紅、綠、藍圖像變換到一個特定的彩色空間,而且能從所選彩色空間變換回 RGB。兩次變換之間,經過對比度拉伸,能夠生成一個色彩加強的彩色合成圖像。此外,顏色亮度值波段或亮度波段能夠被另外一個波段(一般具備較高的空間分辨率)代替,生成一幅合成圖像(將一幅圖像的色彩特徵與另外一幅圖像的空間特徵相結合)。算法

    彩色變換的通常工做流程:選擇波段進行 RGB 合成顯示→進行彩色變換→進行其餘的圖像處理→進行彩色逆變換→RGB 合成顯示。ide

    PIE SDK支持算法功能的執行,下面對彩色空間變換算法功能進行介紹。工具

2.算法功能實現說明

2.1. 實現步驟

第一步測試

算法參數設置spa

第二步code

算法執行orm

第三步視頻

結果顯示blog

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 一、參數設置
 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         }
View Code

2.4. 示例截圖

彩色空間正變換

彩色空間逆變換

相關文章
相關標籤/搜索