摘 要: 針對傳統(tǒng)的遙感圖像前期處理算法在面對海量地面數(shù)據(jù)時計算時間很難滿足需求的問題,基于RPC模型的遙感成像幾何校正算法的并行加速和基于SIFT特征提取的圖像匹配技術的并行加速研究。針對幾何校正的主要步驟及其速度瓶頸問題,提出了可采用的并行加速方法,同時結合SIFT的特點提出了并行優(yōu)化加速的方案。采用基于數(shù)據(jù)劃分的并行方法對遙感圖像的幾何校正和SIFT特征提取算法進行加速。最后利用CUDA環(huán)境,在CPU+GPU異構系統(tǒng)下,設計試驗對兩個算法優(yōu)化并行提速,試驗結果表明,提出的加速方案和優(yōu)化算法能大幅提高遙感圖像的前期處理效率。
關鍵詞: 遙感圖像; 幾何校正; SIFT特征提??; CPU+GPU; 并行計算
中圖分類號: TN911.73?34; TP338.6 文獻標識碼: A 文章編號: 1004?373X(2016)03?0047?04
Research and application of GPU?based preprocessing algorithms for
remote sensing image
WANG Huazhe, WEI Xianyong
(Shangqiu Polytechnic, Shangqiu 476000, China)
Abstract: Since the computing time of the traditional preprocessing algorithm that is faced with massive ground data is difficult to satisfy the requirement of practical application, the parallel acceleration algorithms of remote sensing image geometric correction based on RPC model and image matching technique based on SIFT feature extraction are studied. For the key steps and the speed bottleneck of the geometric correction, the adoptable parallel acceleration method is presented, and the parallel optimization acceleration scheme is proposed in combination with the characteristics of SIFT. The parallel algorithm based on data partitioning is adopted to accelerate the geometric correction algorithm and SIFT feature extraction algorithm for remote sensing image. In the CUDA environment, the two parallel optimization algorithms were speeded up by design experiment in CPU+GPU heterogeneous system. The test results show that the proposed acceleration scheme and optimization algorithm can greatly improve the preprocessing efficiency of the remote sensing image.
Keywords: remote sensing image; geometric correction; SIFT feature extraction; CPU+GPU; parallel computing
0 引 言
隨著數(shù)字圖像處理在遙感成像技術應用中的飛速發(fā)展,對遙感圖像處理在速度和精度上的要求越來越高。圖像處理數(shù)據(jù)的特點和圖像算法的復雜性,使得并行計算成為提高遙感圖像處理算法速度的有效技術之一[1]。特別是在面對海量的地面數(shù)據(jù)時,計算時間很難滿足需求。因此如何提高幾何校正算法的效率成為遙感圖像處理問題的關鍵。
目前并行計算機技術主要有基于CPU和基于GPU這兩種并行處理方法。另外在國內和國際上形成了許多基于特征的圖像匹配算法,包括基于Harris算子、基于Moravec算子的匹配[2]等。在當前,怎樣使CPU和GPU協(xié)同計算,高效并行地組合二者進行任務處理和數(shù)據(jù)計算成為遙感圖像前期處理領域的新課題[3]。本文結合遙感圖像的幾何校正和SIFT特征點匹配,針對CPU?GPU混合異構模式的特點,對基于GPU的遙感圖像處理并行算法的實現(xiàn)及優(yōu)化進行具體的討論。
1 遙感圖像幾何校正算法及優(yōu)化
幾何校正是遙感圖像預處理中一個非常重要的環(huán)節(jié),是從衛(wèi)星遙感影像中提取信息的前提[4]。幾何校正的第一步需要對輸入圖像的四個頂點作計算,得到四個頂點的地面點坐標。這一步重點需要完成的是將輸入圖像四個頂點的圖像坐標轉換為地面點坐標。在得到圖像四個頂點的地面點坐標后,根據(jù)采樣間隔對四個頂點的包絡范圍劃分地面點網(wǎng)格,確定采樣點的地面坐標如圖1所示。接下來計算每個采樣點的灰度值。該方法涉及到復雜的多項式計算,計算復雜度高且計算量大,有并行優(yōu)化加速的需要,進行優(yōu)化和加速的空間很大。
由于遙感圖像尺寸巨大,需要處理的數(shù)據(jù)量多,受限于處理器存儲帶寬的限制,需要對圖像分塊處理。對于一幅[M×N]大小的圖像,劃分成[m×n]的圖像塊,計算每一小塊輸出圖像的成像范圍,然后根據(jù)采樣間隔劃分確定采樣點的數(shù)量即成像大小,計算采樣點的地面坐標。將輸出圖像劃分成適合存儲容量大小為[m×n]的塊后,每次處理一塊的數(shù)據(jù)并寫入輸出文件。在處理每一小塊圖像的幾何校正算法中,每個像素的計算互不影響,多個像素可以并行處理,因此幾何校正算法的并行處理是幾何校正算法的一種主要的優(yōu)化加速技術。
在解決了遙感圖像的幾何校正處理后,經(jīng)過校正后的遙感圖像可以用來作為區(qū)域匹配的模板圖像,將待匹配的地形圖像文件與校正后的區(qū)域圖像做匹配,可以有效地找出圖像中符合要求的地形區(qū)域。
2 遙感圖像配準的SIFT算法及優(yōu)化
特征遙感匹配方法大大減少了匹配過程中的計算量。根據(jù)已知,特征點匹配的度量值對與像素點位置的變化具有敏感性,因此圖像匹配的準確度大大提高?;谔卣鞯膱D像匹配方法在灰度變化、圖像變形和遮擋上也表現(xiàn)出了良好的魯棒性,在提取特征點的過程中有效地減少了噪聲的影響?,F(xiàn)今常使用基于特征的圖像匹配方法。
在使用SIFT特征點進行匹配的過程中,會產(chǎn)生一些錯誤匹配,為了避免錯誤匹配,通常使用RANSAC(Random Sample Consensus,隨機抽樣一致)算法[5]。其主要思想是建立一個待定的模型,用測試數(shù)據(jù)反復測試,尋找一個模型對應的錯誤率最小的集合。在SIFT算法中,找到一個變換矩陣,使得盡量多的特征點都符合一定的變換關系[6]。隨機地在匹配特征點中抽取四對以上的特征點,根據(jù)這些特征點產(chǎn)生一個變換矩陣,產(chǎn)生矩陣的定義模型。
根據(jù)對SIFT算法的分析可知,算法的大部分是對圖像像素數(shù)據(jù)的計算,而這些計算為并行的可能性提供了大量的參考依據(jù)。GPU本身在大規(guī)模的數(shù)據(jù)計算上占有優(yōu)勢并且提供了強大的性能,GPU和CPU配合起來將任務劃分可以充分挖掘SIFT算法的提速空間。
對于SIFT算法來說,通過比較每個步驟在算法復雜度上的差異與算法可并行性、可擴展性上的不同,來決定各個部分應該采用的并行策略。在任務的劃分上,充分考慮到CPU與GPU在計算、處理上的差別。加之CPU與GPU有一定任務匹配的依賴關系,通常情況下應該設計更加高明的算法優(yōu)化現(xiàn)有的串行算法[7]。在相鄰的數(shù)據(jù)大規(guī)模并行計算之間往往存在著少量的串行計算,可以讓CPU在GPU進行計算的同時也做一些計算,例如準備下一次計算需要的數(shù)據(jù)。
根據(jù)SIFT算法,檢測SIFT特征點圖像中的幾個部分,包括創(chuàng)建和初始化的具體特點,高斯金字塔的創(chuàng)建和高斯差分金字塔的創(chuàng)建,DOG空間極值點的檢測,計算特征點方向、梯度以及特征點描述符的計算。第一步和第二步的計算量較少,可以放在CPU端來做。各個模塊之間的交互與通信,由少量的CPU輔助運算。圖2為SIFT并行方案中CPU和GPU的任務劃分情況。
3 混合架構模型
CPU+GPU混合架構主要涉及的思想是基于異構模式下的主從模型設計思想[7]。在主從模式設計的思想下,對于一個給定的問題模型,分別交給主進程和從進程分別處理,主進程將整個計算任務劃分成多個子任務分配給各個從進程進行并行計算,從進程得到了子任務后按照事先制定好的任務劃分規(guī)則進行并行計算,各個從進程執(zhí)行完畢再匯總到主進程。在CPU+GPU混合系統(tǒng)中,不同的子任務映射到不同的區(qū)域完成[8]。主進程管理CPU端的控制、任務的劃分、分配、調度,從進程負責GPU資源分配、數(shù)據(jù)計算和并行任務的計算。
在編寫GPU優(yōu)化并行加速代碼時,要充分注意分配任務的合理性,盡量減少訪存延遲,同時注意存儲器數(shù)據(jù)傳遞的優(yōu)化,這樣才能讓GPU的并行效果達到最好。
由于遙感影像比一般圖像大小偏大,可達12 000×12 000像素,因此一般采取劃分塊的方法對圖像數(shù)據(jù)進行計算。劃分塊既可以減少單次塊計算所需的存儲空間,預防出現(xiàn)由于內存空間不足出現(xiàn)計算錯誤,考慮到分塊處理可以減小每次CPU與GPU的通信數(shù)據(jù)大小,降低通信延遲。在不受限與GPU顯存大小的前提下,一般將圖像劃分為4 096×4 096大小的塊,實際情況下會根據(jù)CUDA線程占用的顯存資源動態(tài)調整塊的大小,這會對算法產(chǎn)生一定的影響。
輸出圖像大小的計算、圖像的分塊任務劃分和顯示等工作都需要CPU來完成,而GPU則主要負責具體分塊后的圖像數(shù)據(jù)的接收以及像元顏色值的計算。因此在整個幾何校正的并行方案中,任務規(guī)劃部分如下:
(1) CPU處理原圖像的角點信息,計算角點的經(jīng)緯度坐標和地理坐標,確定整幅圖像涵蓋的經(jīng)度帶。
(2) 根據(jù)四個角點的地理坐標,確定輸出圖像的地理范圍。
(3) 根據(jù)采樣間隔確定輸出圖像的大小,根據(jù)GPU的可計算規(guī)模,對需要計算的數(shù)據(jù)分塊處理,如圖3所示。
CPU在做完任務規(guī)劃后,接下來的工作就是按照新的輸出圖像的大小決定分塊計算的大小,計算新的輸出圖像分塊需要原圖像數(shù)據(jù)的范圍,并與GPU協(xié)作計算分塊后的圖像的像素顏色值。
4 并行加速方案及其優(yōu)化
本文采用三種方案對劃分塊后的采樣點進行處理,每個分塊在處理前在CPU端完成任務的劃分和數(shù)據(jù)的傳輸工作:
(1) 方案1:在CPU端完成初始化計算工作后,在CPU端通過調用proj庫函數(shù),將每個采樣點的地面坐標值轉換為經(jīng)緯度坐標值,將計算好的坐標值傳到GPU端作下一步計算。在GPU端,每個線程獲得需要計算的采樣點的經(jīng)緯度坐標,通過RPC公式計算像素坐標,最后計算出點的灰度值。
(2) 方案2:首先對圖像塊劃分格網(wǎng),用512×512大小的格網(wǎng)覆蓋4 096×4 096個采樣點,在CPU端通過proj庫計算格網(wǎng)點經(jīng)緯度坐標,并將格網(wǎng)點的經(jīng)緯度坐標值傳到GPU端。在GPU端,通過插值的方法計算格網(wǎng)內部采樣點的經(jīng)緯度,完成非格網(wǎng)點的采樣點坐標轉換計算。然后通過RPC公式計算像素坐標完成第二步計算,最后計算出采樣點的灰度值。
(3) 方案3:在CPU端完成簡單的任務劃分,然后在GPU端完成第二步計算和采樣點的重采樣工作。在GPU端使用GeographicLib庫完成采樣點的第一步坐標轉換計算。提取GeographicLib庫的相關算法后,在GPU端計算采樣點的第一步坐標轉換,完成從地面坐標到經(jīng)緯度坐標的轉換。接下來完成采樣點的經(jīng)緯度坐標到像素坐標的計算轉換,最后計算出采樣點的灰度值。
在上述三種優(yōu)化方案中,第一種方案采樣點的第一步坐標轉換計算使用了標準的proj庫實現(xiàn),并將這部分計算放到CPU端處理。這種方案下計算精度最高,但是效率也最低,優(yōu)化效果較其他兩種方案相比最差。第二種方案簡化了第一步的計算步驟。這種方案下計算精度最低,但是精度在誤差允許的范圍內,而且計算效率最高,優(yōu)化效果較其他兩種方案最好。第三種方案采用了一種折中的方法,與第二種方案相比,這種方案的計算精度高,但是計算復雜度比插值方法大,因此優(yōu)化效果不如第二種方案效果好。
本文設計的方案采用的策略:設定初始塊大小為4 096×4 096,根據(jù)塊大小計算CUDA線程占用的顯存資源大小,如果超過了顯存總量,按照塊邊長為16的整數(shù)倍的前提[9],依次減小塊的大小,直到CUDA線程占用的顯存資源小于顯存總數(shù)。
在實際情況下,有一些圖像是多波段的。所謂多波段是指圖像的像元信息包含多個光譜信息,例如一幅圖像包含R,G,B三種光譜的顏色信息。在CPU下,通常要將多個波段依次分開計算。而在使用GPU做計算時,可以將多個波段的信息同時處理,這樣會加大使用的CUDA線程數(shù)量,根據(jù)上述分析,需要減小處理塊的大小,使CUDA線程使用的顯存資源不超過顯存總數(shù)。這樣需要處理塊的數(shù)量就會增加,由于塊與塊之間采用串行處理,塊的數(shù)量越多,整個計算過程需要花費的時間就越多。因此對于多波段圖像,整體加速效果會有所下降。
5 試驗結果與分析
根據(jù)上述針對幾何校正的并行優(yōu)化方案,本文設計了驗證實驗并應用這些優(yōu)化方案解決原始遙感圖像的幾何校正。實驗數(shù)據(jù)使用了兩幅圖像,一幅圖像大小為6 000×6 000,RBG彩色圖,采樣間隔為10 m,生成圖像大小為7 368×7 007;另一幅圖像大小為12 000×12 000,灰度圖,采樣間隔為5 m,生成圖像大小為14 739×14 019。
實驗采用的平臺及硬件配置相關參數(shù)如下:
CPU:Intel?Xeon E5?2670;配置:八核;時鐘頻率:2.6 GHz;內存2.1 GB。
GPU:Tesla M2090;配置:512個CUDA核心數(shù)量,顯存帶寬177 GB/s,顯存容量為6 GB。
表1列出了兩幅圖像的幾何校正過程分別在CPU下,以及在CPU?GPU混合架構下,采用上述三種方案所得到的處理性能比較。
通過分析三種優(yōu)化方案的實驗結果可以看出,采用格網(wǎng)劃分的方法達到的優(yōu)化效果最明顯,對于兩幅圖加速比可達17.08和27.36;使用GeographicLib次之,加速比分別為8.79和10.35;使用proj庫的效果最差,加速比為4.39和1.96。對于單波段的大尺寸圖像,采用格網(wǎng)劃分的方法將達到更加明顯的加速效果,如圖4所示。
從圖4可以看出,多波段的圖像的加速效果要次于單波段的圖像。因為在加速多波段的圖像中,本文的優(yōu)化方案使用的策略是在GPU端對多個波段的圖像像素值同時進行計算。由于GPU存儲以及傳輸帶寬的限制,多波段圖像在處理的時候分塊大小比單波段圖像小,因此加速效果不如單波段的圖像明顯。
針對SIFT算法的并行優(yōu)化方案,本文設計了驗證實驗并應用這些優(yōu)化策略解決SIFT算法。
實驗采用一幅6 000×6 000的圖像。實驗采用的平臺及硬件配置相關參數(shù)如下:
CPU:Intel?Xeon E5?2670;配置:八核;時鐘頻率:2.6 GHz;內存2.1 GB。
通過上述實驗數(shù)據(jù)可知,主方向模值梯度計算的并行效果較好。主方向模值梯度的計算采用了大量的像素矩陣之間的運算,并且彼此之間獨立容易分開計算,非常適合CPU?GPU架構的并行計算。
6 結 論
本文基于RPC模型的遙感成像幾何校正算法的并行加速和基于SIFT特征提取的圖像匹配技術的并行加速研究,采用了基于數(shù)據(jù)劃分的并行方法在CPU+GPU異構體系下,對遙感圖像的幾何校正和SIFT特征提取算法進行了加速。將幾何校正部分和SIFT特征提取部分在CPU+GPU異構的環(huán)境下進行了并行加速,利用混合編程模型進行了并行實驗,取得了良好的實驗效果。限于實驗數(shù)據(jù)以及實驗設備的原因,本文對遙感圖像處理算法的并行加速沒有在大的集群上進行驗證,只進行了小規(guī)模的實驗。今后的工作將在現(xiàn)有的工作基礎上,在CPU+GPU異構環(huán)境下對SIFT特征提取部分的并行加速將在更大規(guī)模的集群上進行并行加速研究,將采用更大規(guī)模的數(shù)據(jù)進行實驗,并分析加速性能。
參考文獻
[1] 李宏寬,楊曉冬,鄒珍軍.基于mpi并行的遙感影像系統(tǒng)級幾何校正快速處理技術研究[J].河南工程學院學報(自然科學版),2011,23(1):49?52.
[2] 劉仲,邢彬朝,扈嘯.基于yhft?qdsp的并行圖像匹配算法[J].計算機工程與科學,2012,34(4):47?51.
[3] 盧風順,宋君強,銀??担?CPU/GPU協(xié)同并行計算研究綜述[J].計算機科學,2011,38(3):5?9.
[4] 趙進.基于GPU的遙感圖像并行處理算法及其優(yōu)化技術研究[D].長沙:國防科學技術大學,2011.
[5] ZHANG Rachel. SIFT特征提取分析[EB/OL].[2012?06?06].http://blog.csdn.net/abcje nnifer/article/details/7639681.
[6] 戴憲彪,王亮.基于SIFT特征的月面模擬環(huán)境視差估計[J].計算機測量與控制,2011(12):3072?3074.
[7] 汪松.基于SIFT算法的圖像匹配方法研究[D].西安:西安電子科技大學,2013.
[8] 李晶.CPU和GPU協(xié)同運算下的DEFLATE算法性能加速研究[D].長春:吉林大學,2013.
[9] 張春,楊俊.基于GPU的圖像處理算法研究[J].西南師范大學(自然科學版),2014(8):41?45.