申 煥,石曉春,邱宏華
(廣東省國土資源測繪院,廣東 廣州510500)
隨著遙感技術和數字攝影技術的快速發展,遙感影像數據的應用越來越廣泛,已成為重要的數據源和數據更新的手段[1]。近年來,遙感技術研究的力度不斷加大,各種新衛星不斷升空,遙感數據源呈現出高空間分辨率、高光譜分辨率、高時間分辨率的發展趨勢,傳感器常常接收到超過1G的大數據量遙感影像[2]。
有效處理海量遙感影像數據,是解決諸如氣象預報、資源普查、導航定位、農業生產、環境監測等領域遙感產品生產系統的大規模復雜應用的關鍵。國內外許多學者已進行大量研究,如袁帥等[3]在ArcInfo和Oracle8i的基礎上,通過對影像數據分塊存儲、建立空間索引、元數據存儲、完成了海量影像數據的管理;王俊等[4]對多圖幅海量數據電子地圖快速顯示做了一系列研究;朱江等[5]基于Geo-Raster實現了海量影像數據的在線發布和共享;王佳等[6]提出了一種面向海量空間數據的并行UNION查詢技術。針對目前通用的順序處理已不能滿足海量數據運算要求的問題,基于MPI并行處理開發環境,進行了海量遙感影像并行處理研究,大幅度地提高了海量遙感影像數據的運算速度。
遙感影像切分即將整幅遙感影像按照其金字塔分層的級別分割成若干小的圖片,每個切片單獨存儲為一個文件,并按照一定的規則存儲在文件系統中。遙感影像合成即將切片目錄中的所有切片拼合在一起,形成一幅完整的影像,且該完整影像需復制切片的空間參考、仿射變換等信息。在影像切分之前,必須預先定義一組標準的影像切分參數,影像切分參數既能保證影像切分過程的一致性,也能保證影像切分后的影像切片信息描述的完整性。影像切分參數是影像根據以切片為單位顯示或處理時坐標映射、影像顯示的核心參數,包括:
1)切片大小(TileSize:xSize,ySize)
影像經過切分后生成許多小塊的圖片,稱為切片(tile)。切片的寬(xSize)和高(ySize)一般相等,亦即我們通常使用正方形的切片,以像素為單位,通常有

切片的寬、高的尺寸應以大于等于128像素為佳。
2)圖片格式
可以選用Png或Jpeg,圖像質量比較好,并支持Alpha通道。
3)坐標系統
國際上坐標系統普遍采用的是歐洲石油勘探組織(EPSG),坐標參考系數集的編碼表示法,各大GIS軟件廠商幾乎都支持EPSG表示法,GDAL同樣支持EPSG表示法。開放地理信息聯盟(OGC),標準中間參考系統的(SRID)與EPSG的空間參考系統的ID是一致的。
4)金字塔分級數
金字塔分級數是根據切片的尺寸來計算的。對于同一幅影像,不同大小的切片對應不同的金字塔分級數。確定了金字塔分級數,對原始影像重采樣,建立影像金字塔。
5)仿射變換
仿射變換用含有6個元素的雙精度浮點數數組來表示,描述了地圖上像元行列坐標到地理參考空間的映射。
6)顏色對照表
16位的遙感影像(含1個波段)通常含有一個顏色對照表的記錄,其DN值(Data Number)在0~255區間內取值,0~255內的每一個值對應著一個顏色值,DN值與顏色值的一一對應,便構成了顏色對照表。
消息傳遞接口(MPI)是目前比較流行的并行計算開發環境之一。MPI是一個并行計算消息傳遞接口標準,由 MPI論壇(MPI Forum)推出,該標準的目的是提高并行程序的可移植性和開發效率。MPI論壇是由歐美主要的并行計算機生產商,大學、政府實驗室和工廠研究人員組成的一個非官方組織。MPI論壇在1994年6月正式推出了MPI的第一個版本MPI 1.0,又于1995年6月推出了MPI 1.1,對原有的版本進行了修改、完善和補充。1997年7月推出的MPI 2.0版本中,又加入了遠程存儲訪問、并行I/O、動態進程管理等內容。MPI現在已經成為產業界廣泛支持的并行計算標準。
MPI.NET開發環境配置前需安裝以下應用程序:首先安裝 Microsoft Visual Studio 2005或更高版本;其次安裝 MS-MPI,可安裝 Microsoft HPC SDK 或者 Microsoft Compute Cluster Pack SDK,其中包含編寫MPI程序需要的 MS-MPI的頭文件。
上述文件安裝之后,即可安裝MPI.NET軟件開發包,接著在Path環境變量中加入“C:\Program Files\Microsoft Compute Cluster Pack\Bin\mpiexec.exe”,再打開命令提示符窗口,將當前目錄改變到MPI.NET的安裝目錄下(默認為C:\Program Files\MPI.NET),最后輸入命令“mpiexec.exe–n 8PingPong.exe”,執行效果如圖1所示。

圖1 MPI運行示例
圖1中所示,mpiexec程序啟動了PingPong程序的8個進程,在PingPong中,秩(rank)為0的進程(這里為主進程)向其它進程發送ping命令,然后返回運行這些進程的計算機名,因為這里的8個進程運行在一臺計算機上,這8個進程返回的計算機名是相同的。如果PingPong程序運行正確的話,說明MPI.NET安裝成功,其后就可以開發MPI并行程序。
遙感影像的存儲是二維數組,大部分遙感影像的處理都是對像素值的逐點處理,因此遙感影像的并行處理過程如下:
1)影像切分
利用影像切分算法將遙感影像切分成若干個合適的切片,具體算法如下:
①計算金字塔分級數
假設原始影像的寬度為RasterXSize,高度為RasterYSize,切片的尺寸為TileSize,則有:

將xLevel和yLevel兩者取整后的最大整數作為金字塔的分級數。
②建立金字塔并重采樣
GDAL提供的重采樣的方法有Nearest、GAUSS、CUBIC、AVERAGE、MODE、AVERAGE_MAGPHASE等,這里選用Nearest方法。

這樣便建立了影像金字塔,每一個overview對應金字塔的一層,overviewId=-1代表原始影像,overviewId的值越小,其比例尺越小,其分辨率越大。
③計算金字塔各層的仿射變換參數
如上所述,overviewid=-1代表原始影像,Transform[1]和Transform[5]分別表示影像在X方向和Y方向的分辨率,那么影像金字塔overviewid所對應的分辨率為

式中,xResolution、yResolution分別為原始影像在x方向和y方向的分辨率。
④坐標系統
利用GetProjection()方法讀取原始影像的坐標系統:string proj=ds.GetProjection();
該方法的返回值為WKT格式的空間參考系,再利用SetProjection()方法設定切片的坐標系統:dsTile.SetProjection(proj);
⑤設定顏色對照表
利用GetRasterColorTable()方法獲取原始影像相應波段的顏色對照表:ColorTable ct=bandIn.GetRasterColorTable();
再利用原始影像相應波段的顏色對照表設定切片相應波段的顏色對照表:
bandOut.SetRasterColorTable(ct);
⑥切圖,生成切片
已知原始影像的寬為RasterXSize,高為RasterYSize,切片尺寸為TileSize。

其中,nTileX、nTileY分別為在X、Y 方向上能夠切分的足額切片數,nPixelRemX、nPixelRemY分別為在X、Y方向上剩余部分。首先切分足額的切片部分,再切分X、Y方向的剩余部分,當剩余部分的寬度或高度<TileSize,無DN值處,以0值填充。
⑦記錄原始影像大小
為了以后將切片合成為整幅影像的需要,需使用一個文本文件,記錄原始影像的尺寸(因切片的綜合尺寸與原始影像的尺寸不一定相符)。

2)按行對影像進行分塊計算
每個切片的高度為h,并行運算計算機的節點數為n.將切片分成n塊,每塊有連續r行向量,r=h/n的整數部分,余數部分留給主節點處理。
3)將n塊數據用send方法發送到各個計算節點因采用主從模式,秩(rank)為0的節點為主節點,主節點負責發送n塊數據,接收各個節點的計算結果,并處理第0塊數據和余數部分的數據。
4)各個子節點通過Receive方法接收從主節點發送來的數據塊,采用一定的算法進行影像處理運算,并將運算結果通過Send方法發回主節點。
5)主節點利用Receive方法接收各個子節點的運算結果,將各運算結果合并,生成影像切片的最終處理結果。
6)繼續循環,并行處理下一個影像切片。
7)影像合成
各切片均處理完成后,應用影像合成算法合成完整影像的最終運算結果,影像合成算法如下:
①從切片目錄下的sizenote.txt文件中讀取完整影像的尺寸信息,讀取得到影像的寬度和高度,分別記為xSize、ySize;②創建用戶指定格式的數據類型的驅動以用來創建新的柵格文件;③讀取空間參考、仿射變換等信息;④創建數據集,并給其設置空間參考、仿射變換等信息;⑤遍歷讀取切片的DN值,并寫入新建的數據集中;⑥保存文件。
當前所使用的并行處理遙感影像的技術是將主節點運算量按計算機節點平均分配,各子節點處理完后,將處理結果發回主節點,主節點將運算結果合并。這種不考慮子節點性能和運算時間的并行處理方式稱為靜態負載均衡。在今后的研究中,應該考慮使用動態負載均衡技術,即主節點負責發送數據,子節點負責處理數據,子節點處理完將結果返回給主節點,主節點接收到處理結果后,再次向該子節點發送待處理數據。這樣,子節點一直有任務在進行,直至所有任務結束。
[1]王永會,宋曉宇,沈 暉.基于OLE Automation的GIS系統的開發方法[J].沈陽建筑工程學院學報,2000,16(2):140-142.
[2]王 橋,鄭丙輝.環境遙感技術研究與應用進展[J].衛星應用,2006,14(1):35-40.
[3]袁 帥,宋曉宇,王永會,等.GIS海量影像數據管理系統的設計與實現[J].沈陽建筑工程學院,2003,19(3):236-239.
[4]王 俊,張文詩,王建濤.多圖幅海量數據電子地圖快速顯示的研究與實現[J].測繪工程,2003,12(3):18-20.
[5]朱 江,張立立,曾志明,等.海量影像數據的發布集群系統與應用[J].地球信息科學,2006,8(2):101-105.
[6]王 佳,楊樹強,賈 焰.面向海量數據的并行UNION查詢技術研究與實現[J].微電子學與計算機,2006,23(10):68-71.