自定義濾波能夠自由設置濾波模板,對數據進行處理,自定義濾波器的通常規則要求:算法
( 1) 濾波器的大小應該是奇數,這樣它纔有一箇中心,例如 3x3, 5x5 或者 7x7。有中心了,也有了半徑的稱呼,例如 5x5 大小的核的半徑就是 2。數組
( 2) 濾波器矩陣全部的元素之和應該要等於 1,這是爲了保證濾波先後圖像的亮度保持不變。固然了,這不是硬性要求了。ide
( 3) 若是濾波器矩陣全部元素之和大於 1,那麼濾波後的圖像就會比原圖像更亮,反之,若是小於 1,那麼獲得的圖像就會變暗。若是和爲 0,圖像不會變黑,但也會很是暗。測試
( 4) 對於濾波後的結構,可能會出現負數或者大於 255 的數值。對這種狀況,咱們將他們直接截斷到 0 和 255 之間便可。對於負數,也能夠取絕對值。編碼
PIE支持算法功能的執行,下面對自定義濾波算法功能進行介紹。spa
第一步code |
算法參數設置視頻 |
第二步xml |
算法執行blog |
第三步 |
結果顯示 |
算法名稱 |
自定義濾波 |
|
C#算法DLL |
PIE.CommonAlgo.dll |
|
C#算法名稱 |
PIE.CommonAlgo.ImgProFiltCustomAlgo |
|
參數結構體 |
StImageFittleCustom |
|
參數說明 |
||
InputFilePath |
String |
輸入文件 (*.tif;*.tiff; *.img) |
OutputFilePath |
String |
輸出文件路徑 (*.tif;*.tiff; *.img) |
XMLFile |
String |
XML文件路徑 (*.xml) |
LM |
Int |
模板大小M(最小爲3的奇數),最大爲33 |
LN |
Int |
模板大小N(最小爲3的奇數,和LM值同樣) |
FilterType |
Int |
濾波類型 |
Kernel |
array<float> |
自定義濾波值數組(LM* LN大小的數組) |
FuncName |
String |
功能名稱 |
FileTypeCode |
String |
根據輸出類型得到文件編碼類型 .tif/.tiff——GTiff .img—————HFA 其餘—————ENVI |
LowBands |
IList<Int> |
輸出影像的波段(至少選擇一個波段,{ 0, 1, 2, 3 }) |
項目路徑 |
百度雲盤地址下/PIE示例程序/10.算法調用/圖像處理/ ImageProcessing. ImgFiltCustomAlgo |
數據路徑 |
百度雲盤地址下/PIE示例數據/柵格數據/04.World/World.tif |
視頻路徑 |
百度雲盤地址下/PIE視頻教程/10.算法調用/圖像處理/自定義濾波算法.avi |
示例代碼 |
|
![]() 1 /// <summary> 2 /// 自定義濾波算法測試,本算法實現了將World.tif進行自定義濾波,模板大小M和N均爲3 3 /// 自定義濾波值數組爲{ 1, 1, 1, 1, 1, 1, 1, 1, 1 } 4 /// </summary> 5 public override void OnClick() 6 { 7 #region 一、參數設置 8 PIE.CommonAlgo.StImageFittleCustom info = new PIE.CommonAlgo.StImageFittleCustom(); 9 10 info.InputFilePath = @"D:\Data\World.tif"; 11 info.OutputFilePath = @"D:\Data\ip_result18.tif"; 12 info.LM = 3; 13 info.LN = 3; 14 info.FilterType = 0; 15 info.Kernel = new float[] { 1, 1, 1, 1, 1, 1, 1, 1, 1 }; 16 info.FileTypeCode = "GTiff"; 17 info.LowBands = new List<int> { 0, 1, 2 }; 18 19 PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImgProFiltCustomAlgo"); 20 if (algo == null) return; 21 #endregion 22 23 //二、算法執行 24 PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents; 25 algo.Name = " 自定義濾波"; 26 algo.Params = info; 27 bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo); 28 29 //三、結果顯示 30 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\ip_result18.tif"); 31 m_HookHelper.ActiveView.FocusMap.AddLayer(layer); m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 32 } |