PIE SDK圖像重採樣算法

 1.算法功能簡介

  圖像重採樣是指對採樣後造成的由離散數據組成的數字圖像按所需的像元位置或像元問距從新採樣,以構成幾何變換後的新圖像。重採樣過程本質上是圖像恢復過程,它用輸入的離散數字圖像重建表明原始圖像二維連續函數,再按新的像元間距和像元位置進行採樣。其數學過程是根據重建的連續函數(曲面),用周圍若干像元點的值估計或內插出新採樣點的值。圖像重採樣在圖像處理中應用很是普遍,如SIFT特徵提取。html

  圖像重採樣後圖像的維數會發生改變。當重採樣圖像小於原圖像維數時,稱爲降採樣;當重採樣圖像維數大於原圖像時,稱爲升採樣。VTK中能夠方便的對圖像進行重採樣。vtkImageShrink3D類實現圖像降採樣。降採樣須要設置每一個方向的採樣率,降採樣率越大,圖像越模糊。升採樣的原理與降採樣原理一致,只是增長採樣點數來增長圖像的維數。VTK中vtkImageMagnify來實現圖像的升採樣。算法

  圖像重採樣算法方式有好幾種,最近相鄰插值算法/最近鄰法、雙線性內插法、立方卷積法等,具體概念查看連接ide

  PIE支持圖像重採樣算法功能的執行,下面對此算法功能進行介紹。函數

2.算法功能實現說明

2.1 實現步驟

第一步編碼

算法參數設置spa

第二步code

算法執行orm

第三步htm

結果顯示blog

2.2 算法參數

算法名稱

圖像重採樣

C#算法DLL

PIE.CommonAlgo.dll

C#算法名稱

PIE.CommonAlgo.ImageResampleAlgo

參數結構體

ImageResample_Exchange_Info

參數說明

InputFilePath

String

輸入文件

(*.tif;*.tiff; *.img)

OutputFilePath

String

輸出文件路徑

(*.tif;*.tiff; *.img)

Mode

Int

重採樣類型

(最近鄰點插值0/雙線性插值1/三次卷積法插值2)

ListBands

IList<Int>

輸入影像的波段(至少選擇一個波段,{ 0, 1, 2, 3 })

FuncName

String

功能名稱

FileTypeCode

String

根據輸出類型得到文件編碼類型

.tif/.tiff——GTiff

.img—————HFA

其餘—————ENVI

OutWidth

Int

重採樣寬

OutHeight

Int

重採樣高

2.3 示例代碼

數據路徑

百度雲盤地址下/ PIE示例數據/柵格數/04.World/World.tif

示例代碼

 1 /// <summary>
 2 /// 圖像重採樣
 3 /// </summary>
 4 public override void OnClick()
 5 {
 6      FrmImgClassReSample frmClassPostSieve = new FrmImgClassReSample(m_HookHelper);
 7     if (frmClassPostSieve.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
 8 
 9     // 重採樣
10     PIE.CommonAlgo.ImageResample_Exchange_Info info = frmClassPostSieve.ExChangeData;
11     PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageResampleAlgo");
12     if (algo == null) return;
13     algo.Name = "重採樣";
14     algo.Params = info;
15     bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
16     if (result)
17      {             
18       MessageBox.Show("執行成功");
19       ILayer layer = LayerFactory.CreateDefaultLayer(info.OutputFilePath);
20       if (layer == null) return;
21       m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
22       m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
23       }}
View Code

2.4 示例截圖

 

  

  總結:從上兩幅圖能夠看到對world.tif進行重採樣後,像素值發生了變化。

相關文章
相關標籤/搜索