PIE SDK影像快速拼接

1.算法功能簡介

   快速拼接是對若干幅互爲鄰接的遙感數字圖像拼在一塊兒,構成一幅總體影像的技術過程。PIE支持快速拼接算法功能的執行,下面對快速拼接算法功能進行介紹。算法

2.算法功能實現說明

2.1 實現步驟

第一步ide

算法參數設置ui

第二步spa

算法執行code

第三步視頻

結果顯示blog

2.2 算法參數

算法名稱教程

快速拼接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

2.3 示例代碼

數據路徑

實驗中的例子是將一整幅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     }
View Code

2.4 示例截圖

相關文章
相關標籤/搜索