PIE SDK彩色標準化融合

 

1.算法功能簡介

    色彩標準化融合對彩色圖像和高分辨率圖像進行數學合成,從而使圖像獲得銳化。色彩歸一化變換也被稱爲能量分離變換( Energy Subdivision Transform),它使用來自融合圖像的高空間分辨率波段對輸入圖像的低空間分辨率波段進行加強。該方法僅對包含在融合圖像波段的波譜範圍內對應的輸入波段進行融合,其餘輸入波段被直接輸出而不進行融合處理。融合圖像波段的波譜範圍由波段中心波長和 FWHM( full width-half maximum)值限定。算法

   PIE支持算法功能的執行,下面對彩色標準化融合算法功能進行介紹。緩存

2.算法功能實現說明

2.1. 實現步驟

第一步多線程

算法參數設置ide

第二步測試

算法執行編碼

第三步spa

結果顯示線程

2.2. 算法參數

算法名稱code

彩色標準化融合orm

C#算法DLL

PIE.CommonAlgo.dll

C#算法名稱

PIE.CommonAlgo.CFusionAlgo

參數結構體

CFusion_Exchange_Info

參數說明

Type

Int

融合類型

0 : SFIM融合

1: 彩色標準化融合

LowResFile

IList<String>

輸入的多光譜數據波段名稱集合

LowBands

IList<Int>

多光譜數據波段集合{0,1,2,3}

OutputFilePath

String

輸出文件

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

FileTypeCode

String

文件類型編碼

.tif/.tiff——GTiff

.img—————HFA

其餘—————ENVI

ResampleMode

Int

重採樣類型

(最近鄰點插值0/雙線性插值1/三次卷積法插值2)

HighResNullValue

Int

融合所選擇的高分辨率數據波段(默認0)

lMaxCache

Int

最大緩存(默認16)

FuncName

String

功能名稱

BMultiThread

Bool

是否多線程(默認true)

TRUE 是; FALSE 否

2.3. 示例代碼

 

項目路徑

百度雲盤地址下/PIE示例程序/10.算法調用/圖像預處理/ PIE.ImagePreprocessing. CFusionAlgo

數據路徑

百度雲盤地址下/PIE示例數據/柵格數據/01.GF1/PAN.tif ;MS.tif

視頻路徑

百度雲盤地址下/PIE視頻教程/10.算法調用/圖像預處理/彩色標準化融合算法.avi

示例代碼

 1 /// <summary>
 2 ///彩色標準化融合算法測試,本算法實現了將MS.tif和PAN.tif進行彩色標準化融合
 3 /// </summary>
 4 public override void OnClick()
 5 {
 6 #region 一、參數設置
 7 PIE.CommonAlgo.CFusion_Exchange_Info info = new PIE.CommonAlgo.CFusion_Exchange_Info();
 8 
 9 info.Type = 1; //彩色標準化融合
10 //info.Type = 0; //SFIM融合
11 string path1 = @"D:\Data\MS.tif";
12 string path2 = @"D:\Data\PAN.tif";
13 info.LowResFile = new List<String> { path1,path1,path1,path2 };
14 info.LowBands = new List<int> { 0, 1, 2,0 };
15 info.OutputFilePath = @"D:\Data\result6.tif";
16 info.FileTypeCode = "Gtiff";
17 info.ResampleMode = 0;
18 info.HighResNullValue = 0;
19 info.lMaxCache = 16;
20 info.BMultiThread = true;
21 
22 PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.CFusionAlgo");
23 if (algo == null) return;
24 #endregion
25 
26 //二、算法執行
27 PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
28 algo.Name = "彩色標準化融合";
29 algo.Params = info;
30 (algo as PIE.SystemAlgo.ISystemAlgoEvents).OnExecuteCompleted +=CFusionAlgo_OnExecuteCompleted;
31 (algo as PIE.SystemAlgo.ISystemAlgoEvents).OnProgressChanged += CFusionAlgo_OnProgressChanged;
32 
33 PIE.AxControls.IStatusBar statusBar = m_Application.StatusBar;
34 statusBar.ShowProgress(0, 100, "");
35 
36 PIE.SystemAlgo.AlgoFactory.Instance().AsynExecuteAlgo(algo);
37 }
38 
39 int CFusionAlgo_OnProgressChanged(double complete, string msg, SystemAlgo.ISystemAlgo algo)
40 {
41 PIE.AxControls.IStatusBar statusBar = m_Application.StatusBar;
42 statusBar.UpdateProgress((int)complete, msg);
43 return 0;
44 }
45 
46 void CFusionAlgo_OnExecuteCompleted(SystemAlgo.ISystemAlgo algo)
47 {
48 PIE.AxControls.IStatusBar statusBar = m_Application.StatusBar;
49 statusBar.UpdateProgress(100, "");
50 statusBar.HideProgress();
51 
52 //三、結果顯示
53 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\result6.tif");
54 m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
55 m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
56 
57 m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
58 
59 (algo as PIE.SystemAlgo.ISystemAlgoEvents).OnExecuteCompleted -= CFusionAlgo_OnExecuteCompleted;
60 (algo as PIE.SystemAlgo.ISystemAlgoEvents).OnProgressChanged -= CFusionAlgo_OnProgressChanged;
61 }
View Code

2.4. 示例截圖

相關文章
相關標籤/搜索