程付超,苗 放,2,楊文暉,陳 墾
(1.成都理工大學 地球探測與信息技術教育部重點實驗室,成都 610059;2.成都理工大學 地質災害防治與地質環境保護國家重點實驗室,成都 610059;3.成都理工大學 信息科學與技術學院,成都 610059)
隨著遙感影像數據分辨率的提高,其數據量呈現海量化趨勢,單一節點圖形工作站的處理能力已無法完全滿足其處理、分析與計算需求,通過并行計算或分布式計算技術進行海量遙感影像處理,是未來的發展趨勢[1-2]。
目前正處于研究中的遙感影像分布式處理技術包括FPGA(Field-Programmable Gate Array),CUDA(Compute Unified Device Architecture),MPI(Message Passing Interface)和MapReduce等。其中,FPGA[3-4]和CUDA[5]的處理性能較高,但依賴于專用的硬件設備,成本高昂,一般應用于大型生產環境中;MPI[6]是一種基于消息傳遞的并行編程模型,具有較好的可擴展性,但由于編程較為繁瑣,限制了其應用;MapReduce[7-8]是一種新興的分布式編程模型,能夠對計算數據集進行劃分,并將計算任務分發到多個節點上,實現分布式計算。Hadoop是MapReduce的一個主要開源實現,支持面向對象編程,具有較好的易用性,被應用到數據挖掘、機器學習、日志分析等多個領域。但由于Hadoop缺乏對遙感影像數據的支持,將其應用到遙感影像處理中需要對影像數據集的劃分方法及其相關接口進行設計和實現。
本次研究以Hadoop MapReduce為基礎,設計并實現了一種適用于海量遙感影像的分布式計算框架——SPC(Split Process Cluster)。SPC框架綜合運用了我們自行提出的彈性影像金字塔[9](RIP,Resilient Image Pyramid)和面向空間實體的密度聚類算法[9](DBCSSE,Density-Based Clustering for Spatial Surface Entity)等理論與技術,測試結果表明,SPC能夠基本滿足海量遙感影像處理的功能與性能需要。
SPC計算框架是一種用于實現海量遙感影像分布式處理的開發框架,它提供了一種透明化的編程環境,使用者不用去處理分布式計算中的若干細節問題,只需要按照SPC的接口與規范編寫處理算法,就能夠較容易地實現海量遙感影像的分布式處理。
SPC能夠對遙感影像數據進行分層分塊,并將影像數據塊封裝為Key-Value格式,通過Hadoop進行計算,最后通過聚類算法對結果進行歸并,從而實現海量遙感影像的分布式處理。其影像處理過程包括以下三個主要步驟:
(1)遙感影像分割。按照RIP的構建算法[9],對原始影像數據進行分層分塊,將其轉化為多層冗余的影像金字塔結構,作為分布式計算的輸入數據。
(2)分布式計算。將分割后的遙感影像數據塊封裝為Key-Value格式,并按照用戶提交的處理算法對每個影像分塊進行計算和處理;處理完成的中間結果被暫時保存到各個計算節點上,等待歸并。
(3)冗余結果歸并。多層冗余的數據分割方式會導致計算結果中出現一定的冗余量,需采用DBCSSE聚類算法找出冗余結果,并按照用戶定義的歸并算法對冗余結果進行處理。

圖1 SPC框架組成結構圖Fig.1 The structure of SPC
SPC以Hadoop平臺為基礎,其組成結構如圖1所示,虛線框出的部分為Hadoop已有的組件,包括用戶代理(JobClient)、任務管理節點(JobTracker)和計算節點(TaskTracker)等;粗實線框出的部分為SPC獨有的組成部分,主要包括三種不同類型的任務組件(Task),Split任務、Process任務和Cluster任務,這三種任務直接對應于分布式影像處理的三個步驟。通過這三種任務,SPC能夠將遙感影像的分布式處理過程轉化為Hadoop中的Map和Reduce兩個過程。
1.2.1 Split任務
Split任務用于實現遙感影像數據的分割,包括影像載入(Image Input)、影像分割(Image Split)和數據分發(Region Write)三個主要的子流程,如圖2所示。

圖2 Split任務執行流程Fig.2 The workflow of split task
(1)影像載入。加載遙感影像數據,能夠將HDFS中以block形式存儲的海量遙感影像數據加載到計算框架中。目前SPC只能夠加載GeoTIFF格式的影像數據,我們將在后續加入對更多影像格式的支持。
(2)影像分割。用于實現遙感影像數據集的分割,它按照RIP的構造算法將原始數據集分割為多個影像分區(Region)。影像分區是一種邏輯上的劃分,其數據內容并不單獨存儲在HDFS或是本地存儲中,而是以元數據形式存儲,并在需要使用時通過其元數據動態生成。
(3)數據分發。將影像分區元數據寫入到HDFS中,以便后續任務執行時調用。由于采用了基于元數據的數據分發,SPC中的數據分發量得到了有效的控制。
1.2.2 Process任務
Process任務用于實現對各個影像分區的處理和計算,包括數據獲取、影像處理和結果封裝等子流程(圖3)。

圖3 Process任務執行流程Fig.3 The workflow of process task
(1)數據獲取。從HDFS中獲取影像分區數據,能夠通過影像分區的元數據計算其數據內容,并將之封裝為Key-Value格式。數據獲取中使用了影像局部加載技術,以避免因遙感影像過大造成的內存溢出問題。
(2)影像處理。SPC框架的用戶接口,提供一組用于實現用戶遙感影像處理算法的API,并能夠按照用戶編寫的處理算法對各影像分區進行單獨的處理。
(3)結果封裝。將上一步處理得到的中間結果轉換為Key-Value格式,并緩存到本地存儲器中,等待最終的結果歸并處理。
1.2.3 Cluster任務
Cluster任務通過聚類算法執行對中間結果的歸并運算,包括結果集排序,聚類運算和結果輸出三步(圖4)。

圖4 Cluster任務執行流程Fig.4 The workflow of cluster task
(1)結果集排序。對臨時結果進行排序和分組,能夠按照影像分區的ID將具有空間位置關聯的中間結果數據分為一組,作為聚類運算的輸入。
(2)聚類運算。對一組中間結果數據進行聚類分析,尋找冗余結果,并按照用戶的歸并算法對冗余結果進行處理。
(3)結果輸出。輸出影像處理的最終結果數據到HDFS中。
我們在CentOS 6.4環境下,采用Hadoop 0.20.2對SPC框架進行了實現,并將其部署在具有一個控制節點,三個計算節點的實驗集群上。集群中各節點間通過千兆網卡連接,節點的主要硬件參數指標為:Intel Xeon E3-1230 3.2 GHz、內存16 GB DDR3、硬盤2 TB SATA。
我們以相關項目中的實際需求為例,設計了兩組不同應用場景的測試來對SPC的性能進行評估。
2.2.1 特征提取測試
本測試將SPC框架應用于月球撞擊坑提取的應用場景中,分別在單節點圖形工作站和SPC實驗集群上對同一月面區域的撞擊坑位置進行提取,評估SPC框架應用于遙感影像特征提取的處理效果和性能。測試中采用的提取算法為一種基于Sobel算子的圓形構造提取算法。選取的測試數據為嫦娥一號月球影像數據如圖5所示,影像范圍為-14° 44′ 26.16″ ~ 29° 43′35.79″N,-27° 14′24.25″ ~ 16° 55′21.83″E,數據量約700 MB。

圖5 特征提取的測試數據Fig.5 The test data of feature extraction

圖6 幾何校正與影像鑲嵌處理結果Fig.6 The result of geometric correction and image mosaic

測試序號1234單節點耗時/s378.2381.3369.9374.5提取數量139257139236139217139289SPC耗時/s137.9132.4136.1133.3提取數量139203139187139221139243
測試結果見表1,從表1可以看到,采用SPC框架進行撞擊坑提取,其處理耗時遠小于采用單一節點,充分發揮了三個計算節點的性能優勢。且采用SPC的提取率接近于采用單節點的處理結果,四次測試的平均誤差率小于1%。
2.2.2 幾何校正與影像鑲嵌測試
本測試將SPC框架應用于遙感影像的幾何校正和影像鑲嵌中,對嫦娥二號原始影像條帶CE2_BMYK_CCD-B08中0341_A到0370_A的30條影像數據(約11.5 GB)進行幾何校正和影像鑲嵌。測試中,采用三個計算節點進行幾何校正與影像鑲嵌的處理耗時約20 min,處理結果如圖6所示。從圖6中可以看到,由于缺乏輻射校正,各條影像間的灰度變化比較明顯,但從撞擊坑邊緣的連續性看,還是基本達到了幾何校正的目的,影像鑲嵌的位置也是較為準確的。因此,SPC框架可以較好地應用于遙感影像的幾何校正和影像鑲嵌中。
本研究針對海量遙感影像的處理與計算問題,設計并實現了一種基于Hadoop MapReduce的分布式計算框架SPC。SPC框架為使用者屏蔽了分布式程序開發中需要考慮的若干細節問題,使用者只需按照SPC框架提供的開發接口實現需要的遙感影像處理算法,SPC會利用其分割(Split)、處理(Process)和聚類(Cluster)的運行機制,將海量遙感影像數據通過Hadoop平臺進行處理,從而降低了實現遙感影像分布式處理的難度。
同時測試結果表明,不管是應用于以點識別為主的特征提取,還是應用于面向整體的幾何校正和影像鑲嵌,SPC框架都具有較好的處理能力,不但充分發揮了分布式處理的性能優勢,影像處理效果也保持了較高的水平,是一種適用于海量遙感影像處理的分布式計算框架。
參考文獻:
[1] 張良培, 黃昕. 遙感影像信息處理技術的研究進展[J]. 遙感學報, 2009, 13(4): 559-569.
[2] 楊海平, 沈占鋒, 駱劍承 , 等. 海量遙感數據的高性能地學計算應用與發展分析[J]. 地球信息科學學報, 2013, 15(1): 128-136.
[3] GONZALEZ C, NEHEZ S A, PAZ A, et al. Use of FPGA or GPU-based architectures for remotely sensed hyper-spectral image processing[J]. Integration, the VLSI Journal, 2012, 46(2): 89-103.
[4] GONZALEZ C, RESANO J, MOZOS D, te al. FPGA imple-mentation of the pixel purity index algorithm for remo-tely sensed hyperspectral image analysis[J]. EURASIP Journal on Advances in Signal Processing, 2010 (969806): 1-3.
[5] 許雪貴, 張清. 基于CUDA的高效并行遙感影像處理[J]. 地理空間信息, 2011, 9(6): 47-54.
[6] PLAZA A, DU Q, CHANG Y L, et al. High performance computing for hyperspectral remote sensing[J]. IEEE Journal of Selected Topics in Applied Earth Observa-tions and Remote Sensing, 2011, 4(3): 528-544.
[7] 霍樹民. 基于Hadoop的海量影像數據管理關鍵技術研究[D]. 長沙: 國防科學技術大學, 2010.
[8] 康俊鋒. 云計算環境下高分辨率遙感影像存儲與高效管理技術研究[D]. 杭州: 浙江大學, 2011.
[9] 程付超, 苗放, 陳墾. 顧及結果完整性的遙感影像分布式邊緣提取方法[J]. 計算機工程與設計, 2013,35(2):546-551.