1. 程式人生 > >PIE SDK傅裏葉變換

PIE SDK傅裏葉變換

sys 地址 cto set pty gof ase sdk put

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

vecBands

IList<Int>

選擇的波段列表

2.3. 示例代碼

項目路徑

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

數據路徑

百度雲盤地址下/PIE示例數據/柵格數據/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.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_result11.tif";         
11             info.AlgoType = 2; //傅裏葉變換            
12             info.bForward = true; //正變換                   
13             info.m_strFileTypeCode = "GTiff";         
14             info.vecBands = new List<int> { 0,1,2};
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             int code = -1;
25             string msg = string.Empty;
26             algo.GetErrorInfo(ref code, ref msg);
27 
28             //3、結果顯示
29             ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\ip_result11.tif");
30             m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
31             m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
32         }
33         //(一)傅裏葉逆變換
34         /// <summary>
35         ///傅裏葉逆變換算法測試,本算法實現了將World.tif進行傅裏葉逆變換
36         /// </summary>
37         public override void OnClick()
38         {
39             #region 1、參數設置
40             PIE.CommonAlgo.DataTrans_Exchange_Info info = new PIE.CommonAlgo.DataTrans_Exchange_Info();
41             info.m_strInputFile = @"D:\Data\World.tif";       
42             info.m_strOutputFile = @"D:\Data\ip_result11.tif";           
43             info.AlgoType = 2; //傅裏葉變換         
44             info.bForward = false; //逆變換        
45             info.m_strFileTypeCode = "GTiff";         
46             info.vecBands = new List<int> { 0,1,2};
47             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.TransformFuncAlgo");
48             if (algo == null) return;
49             #endregion
50             //2、算法執行
51             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
52             algo.Name = "傅裏葉逆變換";
53             algo.Params = info;
54             bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
55             int code = -1;
56             string msg = string.Empty;
57             algo.GetErrorInfo(ref code, ref msg);
58             //3、結果顯示
59             ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\ip_result11.tif");
60             m_HookHelper.ActiveView.FocusMap.AddLayer(layer);          m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
61         }
View Code

2.4. 示例截圖

技術分享圖片

傅裏葉正變換(波段一)

技術分享圖片

傅裏葉逆變換

PIE SDK傅裏葉變換