同態濾波是減小低頻增長高頻,從而減小光照變化並銳化邊緣或細節的圖像濾波方法。算法
同態濾波的流程爲:空間域圖像→對數運算→傅里葉正變換→同態濾波――傅里葉逆變換→指數運算→同態濾波結果。不一樣空間分辨率的遙感圖像,使用同態濾波的效果不一樣。若是圖像中的光照能夠認爲是均勻的,那麼,進行同態濾波產生的效果不大。可是,若是光照明顯是不均勻的,那麼同態濾波有助於表現出圖像中暗處的細節。ide
PIE SDK支持算法功能的執行,下面對同態濾波算法功能進行介紹。測試
第一步編碼 |
算法參數設置spa |
第二步code |
算法執行視頻 |
第三步xml |
結果顯示blog |
算法名稱教程 |
同態濾波 |
|
C#算法DLL |
PIE.CommonAlgo.dll |
|
C#算法名稱 |
PIE.CommonAlgo.ImgProFiltHomoAlgo |
|
參數結構體 |
StImageHomoInfo |
|
參數說明 |
||
InputFilePath |
String |
輸入文件 (*.tif;*.tiff; *.img) |
OutputFilePath |
String |
輸出文件路徑 (*.tif;*.tiff; *.img) |
XMLFile |
String |
XML文件路徑 (*.xml) |
LowGains |
Float |
低頻增益:0.25 |
HighGains |
Float |
高頻增益:2 |
HighPass |
Int |
濾波類型(巴特沃斯高通變換:0,高斯高通變換:1) |
CutFreq |
Float |
截止頻率:50 |
Constant |
Float |
常數或階數:1 |
FuncName |
String |
功能名稱 |
FileTypeCode |
String |
根據輸出類型得到文件編碼類型 .tif/.tiff——GTiff .img—————HFA 其餘—————ENVI |
LowBands |
IList<Int> |
輸出影像的波段(至少選擇一個波段,{ 0, 1, 2, 3 }) |
項目路徑 |
百度雲盤地址下/PIE示例程序/10.算法調用/圖像處理/ ImageProcessing. ImgProFiltHomoAlgo |
數據路徑 |
百度雲盤地址下/PIE示例數據/柵格數據/04.World/World.tif |
視頻路徑 |
百度雲盤地址下/PIE視頻教程/10.算法調用/圖像處理/同態濾波算法.avi |
示例代碼 |
|
![]() 1 /// <summary> 2 /// 同態濾波算法測試,本算法實現了將World.tif進行同態濾波,濾波類型爲巴特沃斯高通變換,截止頻率爲50 3 /// 低頻增益:0.25,高頻增益:2,常數或階數:1 4 /// </summary> 5 public override void OnClick() 6 { 7 #region 一、參數設置 8 PIE.CommonAlgo.StImageHomoInfo info = new PIE.CommonAlgo.StImageHomoInfo(); 9 10 info.InputFilePath = @"D:\Data\World.tif"; 11 info.OutputFilePath = @"D:\Data\ip_result17.tif"; 12 info.LowGains = 0.25F; 13 info.HighGains = 2; 14 info.HighPass = 0; 15 info.CutFreq = 50; 16 info.Constant = 1; 17 info.FileTypeCode = "GTiff"; 18 info.LowBands = new List<int> { 0, 1, 2 }; 19 20 PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImgProFiltHomoAlgo"); 21 if (algo == null) return; 22 #endregion 23 24 //二、算法執行 25 PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents; 26 algo.Name = " 同態濾波"; 27 algo.Params = info; 28 bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo); 29 30 //三、結果顯示 31 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\ip_result17.tif"); 32 m_HookHelper.ActiveView.FocusMap.AddLayer(layer); m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 33 } |