PIE SDK傅里葉變換

 

1.算法功能簡介

    傅里葉變換能把遙感圖像從空域變換到只包含不一樣頻域信息的頻域中。原圖像上的灰度突變部位(如物體邊緣)、圖像結構複雜的區域、圖像細節及干擾噪聲等,經傅里葉變換後,其信息大多集中在高頻區;而原圖像上灰度變化平緩的部位,如植被比較一致的平原、沙漠和海面等,經傅里葉變換後,大多集中在頻率域中的低頻區。在頻率域平面中,低頻區位於中心部位,而高頻區位於低頻區的外圍,即邊緣部位。算法

    傅里葉變換是可逆的,即對圖像進行傅里葉變換後獲得的頻率函數再作反向傅里葉變換,又能夠獲得原來的圖像。從純粹的數學意義上看,傅里葉變換是將一個函數轉換爲一系列周期函數來處理的。從物理效果上看,傅里葉變換是將圖像從空間域轉換到頻率域,其逆變換是將圖像從頻率域轉換到空間域。換句話說,傅里葉變換的物理意義是將圖像的灰度分佈函數變換爲圖像的頻率分佈函數,逆變換是將圖像的頻率分佈函數變換爲灰度分佈函數。ide

    PIE SDK支持算法功能的執行,下面對傅里葉變換算法功能進行介紹。函數

2.算法功能實現說明

2.1. 實現步驟

第一步測試

算法參數設置spa

第二步code

算法執行orm

第三步視頻

結果顯示blog

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示例數據/柵格數據/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.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             //二、算法執行
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             //三、結果顯示
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 一、參數設置
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             //二、算法執行
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             //三、結果顯示
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. 示例截圖

  

傅里葉正變換(波段一)

傅里葉逆變換

相關文章
相關標籤/搜索