1. 程式人生 > >PIE SDK小波變換

PIE SDK小波變換

 

1.演算法功能簡介

    小波變換是一種訊號的時間——尺度分析方法,具有多解析度分析的特點,而且在時頻兩域都具有表徵訊號區域性特徵的能力,是一種視窗大小固定不變但其形狀可變,時間窗和頻率窗都可變的時頻區域性化分析方法。即在低頻部分具有較高的頻率解析度和時間解析度,在高頻部分具有較高的時間解析度和較低的頻率解析度,很適合探測正常訊號中夾帶的瞬態反常現象並展示其成分,被譽為分析訊號的顯微鏡。

    PIE SDK支援演算法功能的執行,下面對小波變換演算法功能進行介紹。

2.演算法功能實現說明

2.1. 實現步驟

第一步

演算法引數設定

第二步

演算法執行

第三步

結果顯示

2.2. 演算法引數

演算法名稱

小波正變換

C#演算法DLL

PIE.CommonAlgo.dll

C#演算法名稱

PIE.CommonAlgo.TransformFuncAlgo

引數結構體

DataTrans_Exchange_Info

引數說明

AlgoType

Int

區分呼叫的是哪個演算法

0 主成分變換

1 最小噪聲變換

2 傅立葉變換

3 小波變換

4 纓帽變換

bForward

Bool

區分正變換還是逆變換

 true 正;false 逆

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

2.3. 示例程式碼

專案路徑

百度雲盤地址下/PIE示例程式/10.演算法呼叫/影象處理/ImageProcessing. TransformFuncAlgo

資料路徑

百度雲盤地址下/PIE示例資料/柵格資料/World/World.tif

waveletTransform.tif

視訊路徑

百度雲盤地址下/PIE視訊教程/10.演算法呼叫/影象處理/小波變換演算法avi

示例程式碼

 1 //(一)小波正變換
 2 /// <summary>
 3 /// 小波正變換演算法測試,本演算法實現了將World.tif進行小波正變換
 4 /// </summary>
 5 public override void OnClick()
 6 {
 7 #region 1、引數設定
 8 PIE.CommonAlgo.DataTrans_Exchange_Info info = new PIE.CommonAlgo.DataTrans_Exchange_Info();
 9 info.m_strInputFile = @"D:\Data\World.tif";
10 info.m_strOutputFile = @"D:\Data\ip_result9.tif";
11 info.AlgoType = 3; //小波變換
12 info.bForward = true; //正變換
13 info.m_strFileTypeCode = "GTiff";
14  
15 PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.TransformFuncAlgo");
16 if (algo == null) return;
17 #endregion
18 
19 //2、演算法執行
20 PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
21 algo.Name = " 小波正變換";
22 algo.Params = info;
23 bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
24 
25 int code = -1;
26 string msg = string.Empty;
27 algo.GetErrorInfo(ref code, ref msg);
28 
29 //3、結果顯示
30 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\ip_result9.tif");
31 m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
32 m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
33 
34 }
35 //(二)小波逆變換
36 /// <summary>
37 ///小波逆變換演算法測試,本演算法實現了將ip_result8.tif進行小波逆變換
38 /// </summary>
39 public override void OnClick()
40 {
41 #region 1、引數設定
42 PIE.CommonAlgo.DataTrans_Exchange_Info info = new PIE.CommonAlgo.DataTrans_Exchange_Info();
43 
44 info.m_strInputFile = @"D:\Data\waveletTransform.tif";
45 info.m_strOutputFile = @"D:\Data\ip_result9.tif";
46 info.AlgoType = 3; //小波變換
47 info.bForward = false; //逆變換
48 info.m_strFileTypeCode = "GTiff";
49 PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.TransformFuncAlgo");
50 if (algo == null) return;
51 #endregion
52 
53 //2、演算法執行
54 PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
55 algo.Name = "小波逆變換";
56 algo.Params = info;
57 bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
58 
59 int code = -1;
60 string msg = string.Empty;
61 algo.GetErrorInfo(ref code, ref msg);
62 
63 //3、結果顯示
64 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\ip_result9.tif");
65 m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
66 m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
67 }
View Code

2.4.示例截圖

 

小波正變換

小波逆變換