程付超,苗 放,2,楊文暉,陳 墾
(1.成都理工大學(xué) 地球探測與信息技術(shù)教育部重點實驗室,成都 610059;2.成都理工大學(xué) 地質(zhì)災(zāi)害防治與地質(zhì)環(huán)境保護國家重點實驗室,成都 610059;3.成都理工大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 610059)
隨著遙感影像數(shù)據(jù)分辨率的提高,其數(shù)據(jù)量呈現(xiàn)海量化趨勢,單一節(jié)點圖形工作站的處理能力已無法完全滿足其處理、分析與計算需求,通過并行計算或分布式計算技術(shù)進行海量遙感影像處理,是未來的發(fā)展趨勢[1-2]。
目前正處于研究中的遙感影像分布式處理技術(shù)包括FPGA(Field-Programmable Gate Array),CUDA(Compute Unified Device Architecture),MPI(Message Passing Interface)和MapReduce等。其中,F(xiàn)PGA[3-4]和CUDA[5]的處理性能較高,但依賴于專用的硬件設(shè)備,成本高昂,一般應(yīng)用于大型生產(chǎn)環(huán)境中;MPI[6]是一種基于消息傳遞的并行編程模型,具有較好的可擴展性,但由于編程較為繁瑣,限制了其應(yīng)用;MapReduce[7-8]是一種新興的分布式編程模型,能夠?qū)τ嬎銛?shù)據(jù)集進行劃分,并將計算任務(wù)分發(fā)到多個節(jié)點上,實現(xiàn)分布式計算。Hadoop是MapReduce的一個主要開源實現(xiàn),支持面向?qū)ο缶幊?,具有較好的易用性,被應(yīng)用到數(shù)據(jù)挖掘、機器學(xué)習(xí)、日志分析等多個領(lǐng)域。但由于Hadoop缺乏對遙感影像數(shù)據(jù)的支持,將其應(yīng)用到遙感影像處理中需要對影像數(shù)據(jù)集的劃分方法及其相關(guān)接口進行設(shè)計和實現(xiàn)。
本次研究以Hadoop MapReduce為基礎(chǔ),設(shè)計并實現(xiàn)了一種適用于海量遙感影像的分布式計算框架——SPC(Split Process Cluster)。SPC框架綜合運用了我們自行提出的彈性影像金字塔[9](RIP,Resilient Image Pyramid)和面向空間實體的密度聚類算法[9](DBCSSE,Density-Based Clustering for Spatial Surface Entity)等理論與技術(shù),測試結(jié)果表明,SPC能夠基本滿足海量遙感影像處理的功能與性能需要。
SPC計算框架是一種用于實現(xiàn)海量遙感影像分布式處理的開發(fā)框架,它提供了一種透明化的編程環(huán)境,使用者不用去處理分布式計算中的若干細(xì)節(jié)問題,只需要按照SPC的接口與規(guī)范編寫處理算法,就能夠較容易地實現(xiàn)海量遙感影像的分布式處理。
SPC能夠?qū)b感影像數(shù)據(jù)進行分層分塊,并將影像數(shù)據(jù)塊封裝為Key-Value格式,通過Hadoop進行計算,最后通過聚類算法對結(jié)果進行歸并,從而實現(xiàn)海量遙感影像的分布式處理。其影像處理過程包括以下三個主要步驟:
(1)遙感影像分割。按照RIP的構(gòu)建算法[9],對原始影像數(shù)據(jù)進行分層分塊,將其轉(zhuǎn)化為多層冗余的影像金字塔結(jié)構(gòu),作為分布式計算的輸入數(shù)據(jù)。
(2)分布式計算。將分割后的遙感影像數(shù)據(jù)塊封裝為Key-Value格式,并按照用戶提交的處理算法對每個影像分塊進行計算和處理;處理完成的中間結(jié)果被暫時保存到各個計算節(jié)點上,等待歸并。
(3)冗余結(jié)果歸并。多層冗余的數(shù)據(jù)分割方式會導(dǎo)致計算結(jié)果中出現(xiàn)一定的冗余量,需采用DBCSSE聚類算法找出冗余結(jié)果,并按照用戶定義的歸并算法對冗余結(jié)果進行處理。
圖1 SPC框架組成結(jié)構(gòu)圖Fig.1 The structure of SPC
SPC以Hadoop平臺為基礎(chǔ),其組成結(jié)構(gòu)如圖1所示,虛線框出的部分為Hadoop已有的組件,包括用戶代理(JobClient)、任務(wù)管理節(jié)點(JobTracker)和計算節(jié)點(TaskTracker)等;粗實線框出的部分為SPC獨有的組成部分,主要包括三種不同類型的任務(wù)組件(Task),Split任務(wù)、Process任務(wù)和Cluster任務(wù),這三種任務(wù)直接對應(yīng)于分布式影像處理的三個步驟。通過這三種任務(wù),SPC能夠?qū)⑦b感影像的分布式處理過程轉(zhuǎn)化為Hadoop中的Map和Reduce兩個過程。
1.2.1 Split任務(wù)
Split任務(wù)用于實現(xiàn)遙感影像數(shù)據(jù)的分割,包括影像載入(Image Input)、影像分割(Image Split)和數(shù)據(jù)分發(fā)(Region Write)三個主要的子流程,如圖2所示。
圖2 Split任務(wù)執(zhí)行流程Fig.2 The workflow of split task
(1)影像載入。加載遙感影像數(shù)據(jù),能夠?qū)DFS中以block形式存儲的海量遙感影像數(shù)據(jù)加載到計算框架中。目前SPC只能夠加載GeoTIFF格式的影像數(shù)據(jù),我們將在后續(xù)加入對更多影像格式的支持。
(2)影像分割。用于實現(xiàn)遙感影像數(shù)據(jù)集的分割,它按照RIP的構(gòu)造算法將原始數(shù)據(jù)集分割為多個影像分區(qū)(Region)。影像分區(qū)是一種邏輯上的劃分,其數(shù)據(jù)內(nèi)容并不單獨存儲在HDFS或是本地存儲中,而是以元數(shù)據(jù)形式存儲,并在需要使用時通過其元數(shù)據(jù)動態(tài)生成。
(3)數(shù)據(jù)分發(fā)。將影像分區(qū)元數(shù)據(jù)寫入到HDFS中,以便后續(xù)任務(wù)執(zhí)行時調(diào)用。由于采用了基于元數(shù)據(jù)的數(shù)據(jù)分發(fā),SPC中的數(shù)據(jù)分發(fā)量得到了有效的控制。
1.2.2 Process任務(wù)
Process任務(wù)用于實現(xiàn)對各個影像分區(qū)的處理和計算,包括數(shù)據(jù)獲取、影像處理和結(jié)果封裝等子流程(圖3)。
圖3 Process任務(wù)執(zhí)行流程Fig.3 The workflow of process task
(1)數(shù)據(jù)獲取。從HDFS中獲取影像分區(qū)數(shù)據(jù),能夠通過影像分區(qū)的元數(shù)據(jù)計算其數(shù)據(jù)內(nèi)容,并將之封裝為Key-Value格式。數(shù)據(jù)獲取中使用了影像局部加載技術(shù),以避免因遙感影像過大造成的內(nèi)存溢出問題。
(2)影像處理。SPC框架的用戶接口,提供一組用于實現(xiàn)用戶遙感影像處理算法的API,并能夠按照用戶編寫的處理算法對各影像分區(qū)進行單獨的處理。
(3)結(jié)果封裝。將上一步處理得到的中間結(jié)果轉(zhuǎn)換為Key-Value格式,并緩存到本地存儲器中,等待最終的結(jié)果歸并處理。
1.2.3 Cluster任務(wù)
Cluster任務(wù)通過聚類算法執(zhí)行對中間結(jié)果的歸并運算,包括結(jié)果集排序,聚類運算和結(jié)果輸出三步(圖4)。
圖4 Cluster任務(wù)執(zhí)行流程Fig.4 The workflow of cluster task
(1)結(jié)果集排序。對臨時結(jié)果進行排序和分組,能夠按照影像分區(qū)的ID將具有空間位置關(guān)聯(lián)的中間結(jié)果數(shù)據(jù)分為一組,作為聚類運算的輸入。
(2)聚類運算。對一組中間結(jié)果數(shù)據(jù)進行聚類分析,尋找冗余結(jié)果,并按照用戶的歸并算法對冗余結(jié)果進行處理。
(3)結(jié)果輸出。輸出影像處理的最終結(jié)果數(shù)據(jù)到HDFS中。
我們在CentOS 6.4環(huán)境下,采用Hadoop 0.20.2對SPC框架進行了實現(xiàn),并將其部署在具有一個控制節(jié)點,三個計算節(jié)點的實驗集群上。集群中各節(jié)點間通過千兆網(wǎng)卡連接,節(jié)點的主要硬件參數(shù)指標(biāo)為:Intel Xeon E3-1230 3.2 GHz、內(nèi)存16 GB DDR3、硬盤2 TB SATA。
我們以相關(guān)項目中的實際需求為例,設(shè)計了兩組不同應(yīng)用場景的測試來對SPC的性能進行評估。
2.2.1 特征提取測試
本測試將SPC框架應(yīng)用于月球撞擊坑提取的應(yīng)用場景中,分別在單節(jié)點圖形工作站和SPC實驗集群上對同一月面區(qū)域的撞擊坑位置進行提取,評估SPC框架應(yīng)用于遙感影像特征提取的處理效果和性能。測試中采用的提取算法為一種基于Sobel算子的圓形構(gòu)造提取算法。選取的測試數(shù)據(jù)為嫦娥一號月球影像數(shù)據(jù)如圖5所示,影像范圍為-14° 44′ 26.16″ ~ 29° 43′35.79″N,-27° 14′24.25″ ~ 16° 55′21.83″E,數(shù)據(jù)量約700 MB。
圖5 特征提取的測試數(shù)據(jù)Fig.5 The test data of feature extraction
圖6 幾何校正與影像鑲嵌處理結(jié)果Fig.6 The result of geometric correction and image mosaic
測試序號1234單節(jié)點耗時/s378.2381.3369.9374.5提取數(shù)量139257139236139217139289SPC耗時/s137.9132.4136.1133.3提取數(shù)量139203139187139221139243
測試結(jié)果見表1,從表1可以看到,采用SPC框架進行撞擊坑提取,其處理耗時遠(yuǎn)小于采用單一節(jié)點,充分發(fā)揮了三個計算節(jié)點的性能優(yōu)勢。且采用SPC的提取率接近于采用單節(jié)點的處理結(jié)果,四次測試的平均誤差率小于1%。
2.2.2 幾何校正與影像鑲嵌測試
本測試將SPC框架應(yīng)用于遙感影像的幾何校正和影像鑲嵌中,對嫦娥二號原始影像條帶CE2_BMYK_CCD-B08中0341_A到0370_A的30條影像數(shù)據(jù)(約11.5 GB)進行幾何校正和影像鑲嵌。測試中,采用三個計算節(jié)點進行幾何校正與影像鑲嵌的處理耗時約20 min,處理結(jié)果如圖6所示。從圖6中可以看到,由于缺乏輻射校正,各條影像間的灰度變化比較明顯,但從撞擊坑邊緣的連續(xù)性看,還是基本達到了幾何校正的目的,影像鑲嵌的位置也是較為準(zhǔn)確的。因此,SPC框架可以較好地應(yīng)用于遙感影像的幾何校正和影像鑲嵌中。
本研究針對海量遙感影像的處理與計算問題,設(shè)計并實現(xiàn)了一種基于Hadoop MapReduce的分布式計算框架SPC。SPC框架為使用者屏蔽了分布式程序開發(fā)中需要考慮的若干細(xì)節(jié)問題,使用者只需按照SPC框架提供的開發(fā)接口實現(xiàn)需要的遙感影像處理算法,SPC會利用其分割(Split)、處理(Process)和聚類(Cluster)的運行機制,將海量遙感影像數(shù)據(jù)通過Hadoop平臺進行處理,從而降低了實現(xiàn)遙感影像分布式處理的難度。
同時測試結(jié)果表明,不管是應(yīng)用于以點識別為主的特征提取,還是應(yīng)用于面向整體的幾何校正和影像鑲嵌,SPC框架都具有較好的處理能力,不但充分發(fā)揮了分布式處理的性能優(yōu)勢,影像處理效果也保持了較高的水平,是一種適用于海量遙感影像處理的分布式計算框架。
參考文獻:
[1] 張良培, 黃昕. 遙感影像信息處理技術(shù)的研究進展[J]. 遙感學(xué)報, 2009, 13(4): 559-569.
[2] 楊海平, 沈占鋒, 駱劍承 , 等. 海量遙感數(shù)據(jù)的高性能地學(xué)計算應(yīng)用與發(fā)展分析[J]. 地球信息科學(xué)學(xué)報, 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的海量影像數(shù)據(jù)管理關(guān)鍵技術(shù)研究[D]. 長沙: 國防科學(xué)技術(shù)大學(xué), 2010.
[8] 康俊鋒. 云計算環(huán)境下高分辨率遙感影像存儲與高效管理技術(shù)研究[D]. 杭州: 浙江大學(xué), 2011.
[9] 程付超, 苗放, 陳墾. 顧及結(jié)果完整性的遙感影像分布式邊緣提取方法[J]. 計算機工程與設(shè)計, 2013,35(2):546-551.