快速拼接是對若干幅互爲鄰接的遙感數字圖像拼在一塊兒,構成一幅總體影像的技術過程。PIE支持快速拼接算法功能的執行,下面對快速拼接算法功能進行介紹。算法
第一步ide |
算法參數設置ui |
第二步spa |
算法執行code |
第三步視頻 |
結果顯示blog |
算法名稱教程 |
快速拼接ci |
|
C#算法DLLstring |
PIE.CommonAlgo.dll |
|
C#算法名稱 |
PIE.CommonAlgo.ImageMosaicParamAlgo |
|
參數結構體 |
PIE.CommonAlgo.buildMosaicFileVec |
|
參數說明 |
||
buildMosaicFileVec(生成鑲嵌影像算法參數) |
||
bmfVec |
IList<buildMosaicFileInfo> |
生成鑲嵌結果所需參數 若IList<buildMosaicFileInfo>數量等於1 則爲整幅輸出鑲嵌結果 若大於1 可設置分幅輸出鑲嵌結果 |
buildMosaicFileInfo |
||
sOutFilePath |
String |
輸出文件路徑 |
EnvOut |
IEnvelope |
設置鑲嵌結果輸出範圍 |
iOutBandType |
Int |
輸出通道類型 0:3通道8位輸出 1:原始數據格式 |
pSrcLyrs |
IList<IRasterLayer> |
輸入影像 存放原始數據柵格圖層,數量不能小於2 |
數據路徑 |
實驗中的例子是將一整幅World.tif分割成兩個影像來進行快速拼接實驗的 |
視頻路徑 |
百度雲盤地址下/PIE視頻教程/10.算法調用/圖像預處理/快速拼接算法avi |
示例代碼 |
|
1 /// <summary> 2 /// 快速拼接算法實現了波段相同的影像快速拼接在一塊兒 3 /// </summary> 4 public override void OnClick() 5 { 6 //影像快速拼接 7 buildMosaicFileVec info = new buildMosaicFileVec(); 8 List<buildMosaicFileInfo> bmfVec = new List<buildMosaicFileInfo>(); 9 buildMosaicFileInfo item = new buildMosaicFileInfo(); 10 //設置影像文件 11 IList<string> listFile = new List<string>(); 12 string file1 = @"D:\data\圖像mosaic拼接\world31.tif"; 13 string file2 = @"D:\data\圖像mosaic拼接\world33.tif"; 14 listFile.Add(file1); 15 listFile.Add(file2); 16 int bandCount = 0; 17 int count = 0; 18 foreach (string file in listFile) 19 { 20 //判斷拼接的圖像的波段數是否一致 21 IRasterDataset tempDataset = DatasetFactory.OpenRasterDataset(file, OpenMode.ReadOnly); 22 if (tempDataset == null) 23 { 24 MessageBox.Show("打開數據集失敗!" + file, "提示"); 25 return; 26 } 27 if (count == 0) 28 { 29 bandCount = tempDataset.GetBandCount(); 30 } 31 else 32 { 33 if (bandCount != tempDataset.GetBandCount()) 34 { 35 MessageBox.Show("加入文件波段數不一致!", "提示"); 36 (tempDataset as IDisposable).Dispose(); 37 tempDataset = null; 38 return; 39 } 40 } 41 count++; 42 IRasterLayer rLayer = LayerFactory.CreateDefaultRasterLayer(tempDataset); 43 item.pSrcLyrs.Add(rLayer); 44 } 45 item.iOutBandType = 0; 46 item.bFastMosaic = true; 47 item.sOutFilePath = @"D:\data\圖像mosaic拼接\world_Mosia.tif"; 48 bmfVec.Add(item); 49 info.bmfVec = bmfVec; 50 //建立算法 51 ISystemAlgo algo = SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageMosaicParamAlgo"); 52 if (algo == null) return; 53 algo.Params = info; 54 bool result = AlgoFactory.Instance().ExecuteAlgo(algo); 55 if (result) 56 { 57 MessageBox.Show("算法執行成功"); 58 ILayer layer = LayerFactory.CreateDefaultLayer(item.sOutFilePath); 59 if (layer == null) return; 60 m_HookHelper.ActiveView.FocusMap.AddLayer(layer); 61 m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 62 } 63 else 64 { 65 MessageBox.Show("算法執行失敗!"); 66 } 67 } |