云環(huán)境下基于預(yù)分片的遙感影像數(shù)據(jù)并行重采樣方法【專利摘要】本發(fā)明公開了一種云環(huán)境下基于預(yù)分片的遙感影像數(shù)據(jù)并行重采樣方法。步驟如下:1)將目標(biāo)影像數(shù)據(jù)上傳至云平臺HDFS分布式文件系統(tǒng)上;2)對影像數(shù)據(jù)進行預(yù)分片處理,使之按照規(guī)則格網(wǎng)進行劃分;3)將每一個預(yù)分片后的影像塊作為一個單獨的影像分片;4)每個影像分片啟用一個map并行任務(wù),在不同集群節(jié)點上進行并行處理,對原始影像分片逐層重采樣;5)按照影像層級進行歸并,對每一個層級的影像分片集合,進行拼接歸并;6)將歸并后的各分辨率層級影像數(shù)據(jù)輸出到HDFS上。本發(fā)明不僅適用于影像數(shù)據(jù)的重采樣,也適用于其他數(shù)據(jù)可劃分的影像數(shù)據(jù)并行處理領(lǐng)域,是遙感數(shù)據(jù)云計算服務(wù)的關(guān)鍵?!緦@f明】云環(huán)境下基于預(yù)分片的遙感影像數(shù)據(jù)并行重采樣方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及云計算、地理信息系統(tǒng)和遙感影像數(shù)據(jù)處理領(lǐng)域,尤其涉及一種云環(huán)境下基于預(yù)分片的遙感影像數(shù)據(jù)并行重采樣方法?!?br>背景技術(shù):
】[0002]為了對大型高分辨率遙感影像數(shù)據(jù)進行分層分塊組織,建立具有多分辨率層級的影像金字塔,使客戶端能夠直接請求目標(biāo)分辨率層級、目標(biāo)區(qū)域的影像數(shù)據(jù)塊,原始影像數(shù)據(jù)須經(jīng)過重采樣,從而獲得低一級分辨率的影像數(shù)據(jù)。[0003]在影像數(shù)據(jù)處理過程中,盡管許多操作最終是對某個像素進行處理,但處理過程中通常需要考慮影像鄰接的像素點。然而在云計算環(huán)境下,MapReduce并行計算框架使用流式數(shù)據(jù)讀取方式,在默認(rèn)情況下,對數(shù)據(jù)進行分片讀取的方式如圖2所示,這種方式忽略了像素之間原有的空間關(guān)系,難以用以需要考慮緊鄰像素的遙感影像處理領(lǐng)域?!?br/>發(fā)明內(nèi)容】[0004]本發(fā)明的目的是克服現(xiàn)有技術(shù)的不足,提供一種云環(huán)境下基于預(yù)分片的遙感影像數(shù)據(jù)并行重采樣方法。[0005]云環(huán)境下基于預(yù)分片的遙感影像數(shù)據(jù)并行重采樣方法包括如下步驟:(1)目標(biāo)影像數(shù)據(jù)上傳在并行重采樣之前,客戶端通過調(diào)用Hadoop的JavaAPI,將待處理的遙感影像數(shù)據(jù)寫入云存儲的分布式文件系統(tǒng)HDFS集群上,以便通過MapReduce并行計算框架進行處理;(2)影像數(shù)據(jù)預(yù)分片為提供適合影像數(shù)據(jù)并行計算的數(shù)據(jù)輸入策略,使影像數(shù)據(jù)在分片時能夠保持像素間原有空間位置關(guān)系,將步驟(1)中上傳至HDFS集群上的目標(biāo)影像數(shù)據(jù)按照規(guī)則格網(wǎng)方式進行分塊,并將這些分塊寫回HDFS集群上;(3)影像數(shù)據(jù)輸入通過MapReduce框架讀取步驟(2)中生成的預(yù)分片影像塊,將各影像塊作為一個獨立的分片ImageSplit進行輸入,記錄影像塊的層級號和行列位置,其中原始影像的層級號為O,同時,禁止MapReduce框架進一步對其進行再次分塊和分記錄,從而使每個影像塊作為一個單獨的影像分片進行處理;(4)并行重采樣通過MapReduce框架為步驟(3)中的每一個影像分片ImageSplite創(chuàng)建單獨的重采樣map任務(wù),這些map任務(wù)并行運行在集群各節(jié)點上,分別對相應(yīng)的影像分片進行重采樣處理,生成了不同層級的影像分片,并以層級號和行列號進行唯一標(biāo)識;(5)影像數(shù)據(jù)歸并通過MapReduce框架為每一個層級的影像數(shù)據(jù)創(chuàng)建一個單獨的reduce任務(wù),這些reduce任務(wù)并行運行在集群各節(jié)點上,將擁有相同層級號的影像分片分配到對應(yīng)層級號的reduce任務(wù)進行歸并處理,歸并后的各層影像分片通過層級號進行標(biāo)識;(6)影像數(shù)據(jù)輸出階段根據(jù)不同分辨率層級號,對步驟(5)中歸并后的影像數(shù)據(jù)根據(jù)目標(biāo)格式進行逐層輸出,并寫入分布式文件系統(tǒng)HDFS上,從而完成影像數(shù)據(jù)并行重采樣的結(jié)果輸出;所述的步驟(3)包括設(shè)計ImageFileInputFormat類和ImageRecordReader類;ImageFileInputFormat類繼承于FileInputFormat類,通過該類控制已經(jīng)過預(yù)分片的影像塊不再繼續(xù)分片,每個影像塊作為一個單獨的影像分片進行輸入;ImageRecordReader類,繼承于RecordReader類,通過該類實現(xiàn)每個影像分片作為一個單獨的記錄進行處理;設(shè)計ImageBlockffritable類實現(xiàn)對影像分片的封裝,包含了影像塊二進制流、行列位置和層級號,便以通過MapReduce程序進行處理。[0006]所述的步驟(4)包括為重采樣任務(wù)定義了ResaMapper類,繼承于Mapper類,在mapO方法中,加載原始影像分片,即第O級影像分片,并進行循環(huán)重采樣,生成各層級影像數(shù)據(jù)分片;在進行每一層級重采樣之后,對影像分片按照〈IntWritable,ImageBlockffritable)鍵值對方式進行輸出,供下一步繼續(xù)處理,其中IntWritable為層級號,ImageBlockffritable為可序列化影像數(shù)據(jù)塊。[0007]所述的步驟(5)包括為影像分片的歸并設(shè)計ResaReducer類,繼承于Reducer類,用于實現(xiàn)影像數(shù)據(jù)歸并reduce任務(wù);在進行歸并處理時,相同層級的影像分片根據(jù)層級號被分配到同一個ResaReducer進行出,通過reduceO方法完成所在分辨率層級所有影像分片的拼接;不同分辨率層級的影像歸并reduce任務(wù)被分配到不同節(jié)點上執(zhí)行,從而并行生成各層級拼接后的影像數(shù)據(jù),并通過層級號進行標(biāo)識。[0008]所述的步驟(6)包括為實現(xiàn)影像數(shù)據(jù)的輸出設(shè)計ImageOutputFormat類和ImageRecordWriter類,ImageOutputFormat類繼承于FileOutputFormat類,用于控制數(shù)據(jù)輸出格式,ImageRecordWriter類繼承于RecordWriter類,通過writeO方法實現(xiàn)各層影像〈IntWritable,Bytesffritable>鍵值對的文件文件輸出,其中IntWritable為層級號,Bytesffritable為該層級拼接后的影像數(shù)據(jù)二進制流。[0009]本發(fā)明與現(xiàn)有技術(shù)相比具有的有益效果:(1)實現(xiàn)了云計算環(huán)境下遙感影像數(shù)據(jù)的并行重采樣,與傳統(tǒng)重采樣方法相比,大大提高了重采樣的效率;(2)能夠?qū)⒃朴嬎愕母咝阅苡嬎隳芰τ糜谶b感影像數(shù)據(jù)的并行處理,促進了云計算技術(shù)與遙感影像數(shù)據(jù)存儲和處理技術(shù)的結(jié)合,為遙感數(shù)據(jù)云服務(wù)提供技術(shù)基礎(chǔ)。【專利附圖】【附圖說明】[0010]圖1是本發(fā)明的MapReduce中影像預(yù)分片方式;圖2是本發(fā)明的MapReduce中影像默認(rèn)分片方式;圖3是本發(fā)明的影像塊可序列化類(ImageBlockWritable)定義?!揪唧w實施方式】[0011]云環(huán)境下基于預(yù)分片的遙感影像數(shù)據(jù)并行重采樣方法包括如下步驟:(I)目標(biāo)影像數(shù)據(jù)上傳在并行重采樣之前,客戶端通過調(diào)用Hadoop的JavaAPI,將待處理的遙感影像數(shù)據(jù)寫入云存儲的分布式文件系統(tǒng)HDFS集群上,以便通過MapReduce并行計算框架進行處理;(2)影像數(shù)據(jù)預(yù)分片為提供適合影像數(shù)據(jù)并行計算的數(shù)據(jù)輸入策略,使影像數(shù)據(jù)在分片時能夠保持像素間原有空間位置關(guān)系,將步驟(I)中上傳至HDFS集群上的目標(biāo)影像數(shù)據(jù)按照規(guī)則格網(wǎng)方式進行分塊,并將這些分塊寫回HDFS集群上;(3)影像數(shù)據(jù)輸入通過MapReduce框架讀取步驟(2)中生成的預(yù)分片影像塊,將各影像塊作為一個獨立的分片ImageSplit進行輸入,記錄影像塊的層級號和行列位置,其中原始影像的層級號為O,同時,禁止MapReduce框架進一步對其進行再次分塊和分記錄,從而使每個影像塊作為一個單獨的影像分片進行處理;(4)并行重采樣通過MapReduce框架為步驟(3)中的每一個影像分片ImageSplite創(chuàng)建單獨的重采樣map任務(wù),這些map任務(wù)并行運行在集群各節(jié)點上,分別對相應(yīng)的影像分片進行重采樣處理,生成了不同層級的影像分片,并以層級號和行列號進行唯一標(biāo)識;(5)影像數(shù)據(jù)歸并通過MapReduce框架為每一個層級的影像數(shù)據(jù)創(chuàng)建一個單獨的reduce任務(wù),這些reduce任務(wù)并行運行在集群各節(jié)點上,將擁有相同層級號的影像分片分配到對應(yīng)層級號的reduce任務(wù)進行歸并處理,歸并后的各層影像分片通過層級號進行標(biāo)識;(6)影像數(shù)據(jù)輸出階段根據(jù)不同分辨率層級號,對步驟(5)中歸并后的影像數(shù)據(jù)根據(jù)目標(biāo)格式進行逐層輸出,并寫入分布式文件系統(tǒng)HDFS上,從而完成影像數(shù)據(jù)并行重采樣的結(jié)果輸出;所述的步驟(3)包括設(shè)計ImageFileInputFormat類和ImageRecordReader類;ImageFileInputFormat類繼承于FileInputFormat類,通過該類控制已經(jīng)過預(yù)分片的影像塊不再繼續(xù)分片,每個影像塊作為一個單獨的影像分片進行輸入;ImageRecordReader類,繼承于RecordReader類,通過該類實現(xiàn)每個影像分片作為一個單獨的記錄進行處理;設(shè)計ImageBlockffritable類實現(xiàn)對影像分片的封裝,包含了影像塊二進制流、行列位置和層級號,便以通過MapReduce程序進行處理。[0012]所述的步驟(4)包括為重采樣任務(wù)定義了ResaMapper類,繼承于Mapper類,在mapO方法中,加載原始影像分片,即第O級影像分片,并進行循環(huán)重采樣,生成各層級影像數(shù)據(jù)分片;在進行每一層級重采樣之后,對影像分片按照〈IntWritable,ImageBlockffritable)鍵值對方式進行輸出,供下一步繼續(xù)處理,其中IntWritable為層級號,ImageBlockffritable為可序列化影像數(shù)據(jù)塊。[0013]所述的步驟(5)包括為影像分片的歸并設(shè)計ResaReducer類,繼承于Reducer類,用于實現(xiàn)影像數(shù)據(jù)歸并reduce任務(wù);在進行歸并處理時,相同層級的影像分片根據(jù)層級號被分配到同一個ResaReducer進行出,通過reduceO方法完成所在分辨率層級所有影像分片的拼接;不同分辨率層級的影像歸并reduce任務(wù)被分配到不同節(jié)點上執(zhí)行,從而并行生成各層級拼接后的影像數(shù)據(jù),并通過層級號進行標(biāo)識。[0014]所述的步驟(6)包括為實現(xiàn)影像數(shù)據(jù)的輸出設(shè)計ImageOutputFormat類和ImageRecordWriter類,ImageOutputFormat類繼承于FileOutputFormat類,用于控制數(shù)據(jù)輸出格式,ImageRecordWriter類繼承于RecordWriter類,通過writeO方法實現(xiàn)各層影像〈IntWritable,BytesWritable〉鍵值對的文件文件輸出,其中IntWritable為層級號,Bytesffritable為該層級拼接后的影像數(shù)據(jù)二進制流。[0015]實施例:本實施例在開源云計算基礎(chǔ)架構(gòu)Hadoop上進行實現(xiàn),其實施步驟如下:(O目標(biāo)影像數(shù)據(jù)上傳云環(huán)境下的遙感影像數(shù)據(jù)并行重采樣是在集群環(huán)境下,應(yīng)用MapReduce并行計算框架對影像數(shù)據(jù)進行并行處理,因此在重采樣之前,用戶需要將目標(biāo)影像數(shù)據(jù)上傳至云平臺的HDFS集群上以進一步處理。[0016](2)影像數(shù)據(jù)預(yù)分片本步驟是為了提供一種適合影像數(shù)據(jù)并行計算的數(shù)據(jù)輸入策略,使影像數(shù)據(jù)在分片時能夠保持其原有空間位置關(guān)系。如圖1所示,將HDFS集群上的目標(biāo)影像數(shù)據(jù)按照規(guī)則格網(wǎng)進行適當(dāng)?shù)胤謮K,并寫回HDFS上,供MapReduce并行計算程序進一步處理。[0017](3)影像數(shù)據(jù)輸入在本步驟中,MapReduce框架讀取上一步驟中生成的預(yù)分片影像塊,并將各影像塊作為一個獨立的分片(ImageSplit)進行輸入,同時禁止MapReduce框架進一步對其進行再次分塊和分記錄。從而,每個影像塊作為一個單獨的影像分片進行處理。[0018]由于影像的處理通常是需要考慮近鄰像素,該步驟避免了MapReduce默認(rèn)影像數(shù)據(jù)分塊方式(如圖2所示)導(dǎo)致的影像像素之間位置關(guān)系的破壞。[0019]為支持影像塊的輸入,設(shè)計ImageFileInputFormat類(繼承于FileInputFormat類)和ImageRecordReader類(繼承于RecordReader類)。其中,ImageFileInputFormat類用于控制影像的分片,通過該類控制已經(jīng)過預(yù)分片的影像塊不再繼續(xù)分片。在影像塊的讀取時,影像塊的文件名格式應(yīng)采用行列位置自述形式,即每個文件名本身可以表明該影像塊的位置,如“row-column”形式,讀取之后由ImageRecordReader進行解析,并寫入ImageBlockWritable。其中ImageBlockWritable類是本專利設(shè)計的可序列化的影像數(shù)據(jù)塊類,其定義如圖3所示。[0020](4)并行重采樣階段在本步驟中,MapReduce框架為每個影像分片ImageSplite各創(chuàng)建一個對應(yīng)的map任務(wù),這些map任務(wù)并行運行在集群各節(jié)點上,分別對相應(yīng)的影像分片進行重采樣處理,同時對本存儲節(jié)點數(shù)據(jù)進行優(yōu)先處理,從而實現(xiàn)以移動計算來代替移動數(shù)據(jù)。[0021]為實現(xiàn)上述功能,需要為重采樣任務(wù)定義ResaMapper類(繼承于Mapper類),在ResaMapper類的mapO方法中,加載了原始影像數(shù)據(jù)塊(第O級),對各層級進行循環(huán)重采樣。在每一層級重米樣之后,對影像塊按照〈IntWritable,ImageBlockWritable>鍵值對方式進行輸出。其中IntWritable為層級號,ImageBlockWritable為可序列化影像數(shù)據(jù)塊。[0022](5)影像數(shù)據(jù)歸并階段在影像數(shù)據(jù)的歸并階段中,MapReduce框架通過reduceO方法合并同一層級的影像數(shù)據(jù)塊。本專利設(shè)計ResaReducer類(繼承于Reducer類)對影像塊ImageBlockWritable進行歸并(實現(xiàn)影像塊的拼接處理)。[0023]在本步驟中,將相同層級的影像塊根據(jù)層級號被分配到同一個ResaReducer進行合并。由于多個ResaReducer在集群上不同節(jié)點并行執(zhí)行,因此在該階段根據(jù)需要也可以實現(xiàn)影像數(shù)據(jù)的并行入庫。[0024](6)影像數(shù)據(jù)輸出階段該階段控制輸出格式,并對各層歸并后的影像〈IntWritable,BytesWritable〉鍵值對進行輸出,其中IntWritable為層級號,BytesWritable為該層重新拼接后的影像數(shù)據(jù)二進制流。本專利設(shè)計ImageOutputFormat類(繼承于FileOutputFormat類)和ImageRecordffriter類(繼承于RecordWriter類)來實現(xiàn)影像數(shù)據(jù)的輸出。[0025]通過以上步驟可實現(xiàn)基于MapReduce的遙感影像高效并行重采樣。同時,該處理流程不僅適用于影像數(shù)據(jù)的重采樣,也適用于其他數(shù)據(jù)可劃分的影像數(shù)據(jù)并行處理領(lǐng)域,是遙感數(shù)據(jù)云計算服務(wù)的技術(shù)基礎(chǔ)。【權(quán)利要求】1.云環(huán)境下基于預(yù)分片的遙感影像數(shù)據(jù)并行重采樣方法,其特征在于包括如下步驟:(1)目標(biāo)影像數(shù)據(jù)上傳在并行重采樣之前,客戶端通過調(diào)用Hadoop的JavaAPI,將待處理的遙感影像數(shù)據(jù)寫入云存儲的分布式文件系統(tǒng)HDFS集群上,以便通過MapReduce并行計算框架進行處理;(2)影像數(shù)據(jù)預(yù)分片為提供適合影像數(shù)據(jù)并行計算的數(shù)據(jù)輸入策略,使影像數(shù)據(jù)在分片時能夠保持像素間原有空間位置關(guān)系,將步驟(1)中上傳至HDFS集群上的目標(biāo)影像數(shù)據(jù)按照規(guī)則格網(wǎng)方式進行分塊,并將這些分塊寫回HDFS集群上;(3)影像數(shù)據(jù)輸入通過MapReduce框架讀取步驟(2)中生成的預(yù)分片影像塊,將各影像塊作為一個獨立的分片ImageSplit進行輸入,記錄影像塊的層級號和行列位置,其中原始影像的層級號為O,同時,禁止MapReduce框架進一步對其進行再次分塊和分記錄,從而使每個影像塊作為一個單獨的影像分片進行處理;(4)并行重采樣通過MapReduce框架為步驟(3)中的每一個影像分片ImageSplite創(chuàng)建單獨的重采樣map任務(wù),這些map任務(wù)并行運行在集群各節(jié)點上,分別對相應(yīng)的影像分片進行重采樣處理,生成了不同層級的影像分片,并以層級號和行列號進行唯一標(biāo)識;(5)影像數(shù)據(jù)歸并通過MapReduce框架為每一個層級的影像數(shù)據(jù)創(chuàng)建一個單獨的reduce任務(wù),這些reduce任務(wù)并行運行在集群各節(jié)點上,將擁有相同層級號的影像分片分配到對應(yīng)層級號的reduce任務(wù)進行歸并處理,歸并后的各層影像分片通過層級號進行標(biāo)識;(6)影像數(shù)據(jù)輸出階段根據(jù)不同分辨率層級號,對步驟(5)中歸并后的影像數(shù)據(jù)根據(jù)目標(biāo)格式進行逐層輸出,并寫入分布式文件系統(tǒng)HDFS上,從而完成影像數(shù)據(jù)并行重采樣的結(jié)果輸出。2.根據(jù)權(quán)利要求1所述的方法,其特征在于所述的步驟(3)包括設(shè)計ImageFileInputFormat類和ImageRecordReader類;ImageFiIeInputFormat類繼7承于FileInputFormat類,通過該類控制已經(jīng)過預(yù)分片的影像塊不再繼續(xù)分片,每個影像塊作為一個單獨的影像分片進行輸入;ImageRecordReader類,繼承于RecordReader類,通過該類實現(xiàn)每個影像分片作為一個單獨的記錄進行處理;設(shè)計ImageBlockWritable類實現(xiàn)對影像分片的封裝,包含了影像塊二進制流、行列位置和層級號,便以通過MapReduce程序進行處理。3.根據(jù)權(quán)利要求1所述的方法,其特征在于所述的步驟(4)包括為重采樣任務(wù)定義了ResaMapper類,繼承于Mapper類,在mapO方法中,加載原始影像分片,即第O級影像分片,并進行循環(huán)重采樣,生成各層級影像數(shù)據(jù)分片;在進行每一層級重采樣之后,對影像分片按照〈IntWritable,ImageBlockffritable)鍵值對方式進行輸出,供下一步繼續(xù)處理,其中Intffritable為層級號,ImageBlockffritable為可序列化影像數(shù)據(jù)塊。4.根據(jù)權(quán)利要求1所述的方法,其特征在于所述的步驟(5)包括為影像分片的歸并設(shè)計ResaReducer類,繼承于Reducer類,用于實現(xiàn)影像數(shù)據(jù)歸并reduce任務(wù);在進行歸并處理時,相同層級的影像分片根據(jù)層級號被分配到同一個ResaReducer進行出,通SreduceO方法完成所在分辨率層級所有影像分片的拼接;不同分辨率層級的影像歸并reduce任務(wù)被分配到不同節(jié)點上執(zhí)行,從而并行生成各層級拼接后的影像數(shù)據(jù),并通過層級號進行標(biāo)識。5.根據(jù)權(quán)利要求1所述的方法,其特征在于所述的步驟(6)包括為實現(xiàn)影像數(shù)據(jù)的輸出設(shè)計ImageOutputFormat類和ImageRecordWriter類,ImageOutputFormat類繼承于FileOutputFormat類,用于控制數(shù)據(jù)輸出格式,ImageRecordWriter類繼承于RecordWriter類,通過writeO方法實現(xiàn)各層影像〈IntWritable,BytesWritable>鍵值對的文件文件輸出,其中IntWritable為層級號,BytesWritable為該層級拼接后的影像數(shù)據(jù)二進制流。【文檔編號】G06F9/44GK103809969SQ201410017598【公開日】2014年5月21日申請日期:2014年1月15日優(yōu)先權(quán)日:2014年1月15日【發(fā)明者】王國鋒,李建成,池子文,杜震洪,張豐,劉仁義申請人:中國公路工程咨詢集團有限公司,浙江大學(xué)