?

POS數據支持下的面陣航測影像GPU幾何糾正方法

2017-05-02 01:42馬遠征
測繪科學與工程 2017年6期
關鍵詞:畸變線程校正

馬遠征,方 勇

1.長安大學,陜西 西安,710061;

2.西安測繪研究所,陜西 西安,710054

1 引 言

相比于模擬相機,面陣航測相機能夠直接獲取數字影像而無需數字化,攝影效率高、圖像質量好[1],可作為應急救災數據源。當重大災害發生時,其成為決策者快速了解災情、及時制定救災策略的重要依據。而數字航測影像往往數據規模大,迫切需要開發更為高效的影像數據處理算法,以滿足應急測繪需要。隨著圖形處理器(graphics processing unit,GPU)計算性能的不斷提升[2]以及定位定向系統(position orientation system,POS)數據在影像直接地理定位上的廣泛應用,使得攝影數據快速處理成為可能。就此,本文對POS數據支持下的面陣航測影像快速幾何糾正技術展開研究。

傳統的影像幾何糾正方法,大多運行在中央處理器(central processing unit,CPU)上,其效率提升主要依靠多CPU并行技術,但由于CPU時鐘周期長期局限于4GHz,且多CPU散熱問題限制了多核并行技術的進一步發展。為提升影像數據處理效率,許多學者開始嘗試利用CPU-GPU協同技術處理遙感影像。文獻[3]將CPU-GPU協同處理技術用于衛星影像正射校正;文獻[4]分析了幾種不同GPU架構下的影像正射校正效率;文獻[5]利用CPU-GPU協同處理技術,使得影像正射校正效率提升了10.91倍。數字航測相機與POS系統集成,可實現數字航測影像快速地理定位。文獻[6]指出經后處理的POS數據可直接作為影像的外方位元素;文獻[7]設計基于POS數據的高光譜影像CPU快速幾何糾正算法;文獻[8]開展了基于POS數據的機載航空影像幾何糾正試驗;文獻[9]基于POS數據使用ERDAS軟件進行航空遙感影像正射校正;文獻[10]提出結合POS數據、地形數據庫和GDAL開源圖像庫的航空影像快速幾何糾正方案。相機畸變也是數字航測影像幾何糾正的一個重要方面。文獻[11]分析了面陣航測相機的幾何畸變誤差傳遞模型;文獻[12]利用POS計算影像外方位元素,對推掃式成像方式的OMIS影像進行幾何畸變糾正;文獻[13]認為多面陣組合相機的光學畸變差會導致像點相對于其理想位置發生徑向和切向的偏移,并推導了數碼相機畸變校正公式。

上述研究從不同角度論證基于GPU編程框架和POS數據對面陣航測影像幾何糾正的可行性,并開展了許多有益的工作。但是,這些文獻大多僅側重于某一技術層面。如CPU-GPU協同處理方面的文獻往往側重于分析影像幾何糾正算法的實現效率,而沒有涉及對校正精度的詳細分析;基于POS數據進行影像幾何糾正的文獻關注的重點是影像外方位元素求解精度及影像幾何校正方法的精度,而較少考慮糾正效率。而在應急測繪保障需求條件下,糾正效率和糾正精度同等重要。因此,本文基于POS數據建立無控制點面陣影像對地定位關系,設計面陣航測影像GPU幾何糾正算法;并以某新型國產面陣數字航測相機為例,驗證所提方法的效率和精度。

2 原理與方法

2.1 GPU幾何糾正原理

1)無控嚴密對地定位原理

由于影像傾斜和地形起伏等因素,使得獲取的原始中心投影影像存在一定的變形,需要按照一定的數學模型實現原始影像與糾正后影像之間的幾何變換。航測相機獲取的數字影像,一般都滿足中心投影成像特性,可以采用共線方程模型建立嚴密對地定位關系,公式表述為:

其中,XS、YS、ZS為攝站點坐標;X、Y、Z為地面點坐標;為3 個外方位元素組成的9個方向余弦,外方位元素由集成在相機上的POS設備直接測定。

2)CUDA并行程序設計原則

計算統一設備架構(compute unified device architecture,CUDA)是NIVDIA公司推出的一款內嵌在GPU上的通用計算平臺,支持使用標準C語言開發GPU代碼,這些代碼即可運行在CPU上,也可運行在GPU上。CPU負責派生出在GPU運行的多線程任務,即CUDA的內核程序;GPU則通過內部調度器將內核程序映射到GPU的流處理器簇(stream multiprocessors,SM)上,SM數目越多,程序運行速度提升比例就會越高。每個SM調度多個線程塊,在每一個線程塊內部又包含著許多線程。這些線程以批處理方式運行,稱為線程束,是SM中線程執行的最小單元?;贑UDA層次化調度機制,進行GPU并行程序設計時需遵循以下三個原則:(1)要解決的任務可分解為多個可獨立執行的子任務;(2)執行每個子任務的時間消耗不大于解決母任務的時間消耗;(3)每個子任務的解決可獨立執行,且不需要復雜的流程控制。而面陣影像幾何糾正中的逐像素幾何變換及灰度重采樣操作計算密集度高,無需進行流程控制,符合上述原則,故可將其映射到CUDA內核函數中。

因此,面陣影像GPU幾何糾正原理為將CPU視為程序的流程控制端和串行代碼執行端,負責面陣影像數據讀入、旋轉矩陣計算及糾正影像地理范圍概算等任務;而將地面點坐標計算、像點坐標計算和灰度重采樣三個環節映射到CUDA內核程序中,發揮GPU并行計算優勢,高效完成面陣影像快速幾何糾正任務。

圖1 GPU幾何糾正算法流程圖

2.2 GPU幾何糾正方法

使用共線方程建立無控嚴密對地定位關系的方法有兩種,分別為正解法和反解法。正解法糾正是由原始影像的像素點位置利用共線方程直接解算出糾正后影像像素位置,并將原始影像上該像點的灰度值填充到糾正后影像的相應位置。反解法則是由糾正后的影像像素位置出發利用共線方程解算其在原始影像中的像素位置,并將原始影像的像素位置的灰度值填充到糾正后影像的相應位置。

在CPU平臺下,程序是以串行方式執行,體現在影像幾何糾正上就是像素的處理是順序執行的,不同的采樣方法之間的差異僅僅是計算量的問題。在GPU平臺下,程序是以線程并發的方式執行,并行性能發揮的關鍵在于應盡量保證程序對每個像素的處理是獨立進行的,且流程控制部分不宜過多。正解法糾正對每個像素的處理都需要迭代判斷其高程值是否滿足限差,計算量大,流程控制復雜,存儲器尋址操作復雜度高,GPU并行計算優勢無法充分發揮。而反解法糾正有效地避免了線程訪問沖突問題及數據不一致性錯誤,求解過程明確,計算復雜度低,GPU并行易于實現。故本文設計的GPU幾何糾正算法使用反解法,校正流程如圖1所示。

詳細步驟如下:

1)POS數據讀入與旋轉矩陣計算

在CPU端將待糾正影像和對象的POS數據讀入到GPU的全局內存中。根據讀入的外方位角元素計算影像旋轉矩陣,計算公式為:

式中,φ、ω、κ分別為航向傾角、旁向傾角和旋偏角。

2)計算地面點坐標

根據影像尺寸及旋轉矩陣,利用共線方程計算影像地理坐標的四周范圍。假定得到的影像左下角地面點坐標為(Xmin,Ymin),糾正后影像分辨率為m,則影像上位置為(i,j)的像素點對應的地面坐標為:

式中,blockDim、blockIdx、thread Idx均為 CUDA內建變量,數據類型均為dim3類型,分別標識線程塊的維度、線程塊索引及線程索引。其中,x方向和y方向分別對應面陣影像的寬度和高度。

根據設定的線程索引方式及規定的CUDA并行程序設計原則,可知面陣影像幾何糾正算法需要的線程塊和線程網格配置維度均為二維,即由二維線程塊組成線程網格。在影像處理領域,往往以2的冪次配置每個線程塊中的線程數目,其組織方式可采用以下幾種方案:2 ×2、4 ×4、8 ×8、16×16、32×32。由于NIVDIA規定線程束的大小為32,前兩種方案中線程束均小于該值,造成計算資源的大量浪費。8×8的配置方案,每個SM內的線程數為512,小于每個SM可處理768個線程的約束;32×32的配置方案調度每個線程塊中的線程

3)CUDA線程塊及線程網格配置

待糾正面陣影像僅存在x方向和y方向兩個索引維度,則其在CUDA中的線程索引可以表示為:數目為1024,超出一個線程塊只能包含512個線程的限制。而16×16的線程塊組織方案,SM每次調度3個線程塊,可充分利用SM的處理性能。故本文選擇16×16的線程塊調度方案,若糾正后的影像寬度為W,高度為H,則其對應的線程網格配置方案為:

4)計算像點坐標

當測量參數無誤差時,依據共線方程能夠得到無幾何失真的地面影像。而在實際應用中,由于相機畸變的存在,使得糾正后的影像仍存在殘余誤差。因此,建立無控制嚴密對地定位關系時,首先校正相機畸變。

航測相機畸變主要由相機鏡頭徑向畸變(k1,k2,k3)、切向畸變(p1,p2)、面陣 CCD非正方形比例因子b1、CCD陣列排列非正交性畸變系數b2等因素引起。像點坐標畸變差計算公式為:

式中,δx、δy為航測相機畸變導致的像點坐標偏移量;dx0、dy0、df為像主點及相機焦距改正量,由相機文件提供;dx、dy為像主點坐標相對于面陣影像中心點(0,0) 點的偏移量;Δx=x-x0、Δy=y-y0,分別為量測像點坐標與像主點坐標在x方向和y方向的坐標差值;。

將公式(4)代入到公式(1),可推導無幾何失真的無控嚴密對地定位關系表達式:

其中:

由于面陣影像的屏幕顯示是以行列號表示像素位置,坐標系定義為以左上角為原點,x方向取向右為正,y軸方向取向下為正。因此,還需要建立像平面坐標到面陣影像坐標系之間的坐標變換關系,像平面坐標(x,y)到屏幕坐標(I,J)的轉換公式為:

其中,Ic、Jc為像主點所在的行、列號;μ為像元尺寸。

5)灰度重采樣

采用反解法計算得到的像點坐標不可能為整數,因此,存在灰度重采樣問題。在CUDA程序執行過程中,每個線程塊內所有線程共同擁有一塊共享存儲器,所有線程均可訪問全局存儲器。共享存儲器訪存速度優于全局存儲器。在灰度重采樣時,每個線程都需要從GPU的存儲器中讀取這組參數,如果使用全局存儲器,則會存在嚴重的訪存延遲。因此,本文將坐標變換參數從全局存儲器讀取到訪存速度相對較高的共享存儲器中,提升影像灰度重采樣效率。

3 實驗及結果分析

采用Microsoft Visual Studio 2010開發環境分別開發了在CPU平臺和GPU平臺上運行的C++程序,其中CPU程序設備環境為Intel?CoreTMi7-5950HQ CPU 2.9GHZ,內存為 32GB,64 位操作系統;GPU設備環境為GeForce GTX 980M,CUDA版本為CUDA7.0。

實驗數據為某新型大面陣數字航測相機在中國西部某地拍攝的符合中心投影特性的面陣影像,測區處于平原與山地交界地帶,地形起伏較大。單幅影像原始大小為6024×8008,影像位數為8位,數據格式為TIFF;相機主距45mm,像素大小為12μm,航高1500m,影像分辨率為0.19m。相機上集成有POSAV510系統,記錄相機攝影時的位置和姿態參數;經POSPAC后處理軟件處理后,可為面陣航測影像提供精確的攝站點坐標和相機姿態參數。相機參數文件包含相機畸變系數、像中心點的像素坐標和相機焦距等信息。在每幅影像上均勻分布有32個地面控制點或空三加密點,坐標系為2000國家大地坐標系。

3.1 POS數據定位精度驗證

機載POS系統直接對地定位精度可由嚴密空三解算的地面控制點進行檢驗,檢驗公式為:

式中,ica、jca為本文推導公式計算控制點行列號;ico、jco為經嚴密空三解算得到控制點行列號。

使用本文方法及公式(7),選取5幅實驗影像,利用已有控制數據,驗證經檢校后的POS數據直接對地定位精度,結果見表1。

表1 1752號影像像點坐標計算精度(單位:像素)

由表1可知,經嚴格檢校的POS數據無控定位精度優于0.25個像素。

3.2 無控制面陣影像幾何糾正試驗

1)糾正精度分析

在應急測繪應用場景下,無法在短時間內獲取大量高精度的控制點。因此,以1752號影像(圖2)為例,取測區平均高程開展無控面陣影像幾何糾正試驗。采用雙線性插值法進行灰度重采樣,幾何糾正結果如圖3所示。

圖2 原始影像

圖3 CPU/GPU糾正后影像

對圖3中的32個控制點進行量測,其誤差分布情況見表2。

由表2可知,32個檢查點的誤差最大值為7.79m,最小值為0.03m??傻贸鼋Y論:使用平均高程進行無控幾何糾正精度可達到米級。

表3 相機畸變對糾正精度的影響(單位:m)

表3對比了相機畸變對面陣影像幾何糾正精度的影響。結果顯示:加入畸變糾正后幾何糾正精度分別提高了5.23倍(X方向)和3.92倍(Y方向)。說明航測相機畸變是面陣影像幾何糾正的關鍵步驟,不可忽略。

對比表2和表3中校正相機畸變后的結果可知,所有檢查點的誤差值均在3倍中誤差以內。

2)糾正效率分析

使用加速比Sr對本文提出快速幾何糾正算法效率進行評價,定義如下:

式中,Tcpu為CPU串行算法進行面陣影像幾何糾正所需的時間;Tgpu為GPU并行算法進行面陣影像幾何糾正的所需的時間。

利用最鄰近像元法和雙線性插值法進行灰度重采樣,隨機選取5幅影像,其在CPU環境和GPU環境下的運行時間及加速比,見表4和表5。

表4 最鄰近像元法所需時間(單位:m s)

表5 雙線性插值法所需時間(單位:m s)

從上表可以看出:由于采用了GPU并行算法,面陣影像幾何糾正時間大幅縮短。較最鄰近像元法,雙線性插值方法計算量更大,所需時間更長,但兩種插值方法所需時間均小于400ms。較CPU串行程序而言,本文設計的GPU算法加速比在20倍以上。

4 結 論

本文從數字航測相機數據快速處理需求出發,提出了POS數據支持下無控面陣航測影像幾何糾正算法,并進行了GPU編程實現。該算法使用經檢校后的POS數據實現面陣影像的直接對地定位,定位精度優于0.25個像素;應急條件下,使用平均高程進行無控幾何糾正精度可達到米級;較CPU串行糾正方法,GPU并行幾何糾正效率提升20倍以上。本文方法同樣適用于其他滿足中心投影構像條件的遙感影像,具有一定的通用性。

本文研究主要實現了單景航攝影像的快速糾正,還有以下任務有待深入研究:其一,本文方法未使用DEM數據,對于如何開發加入DEM數據的GPU幾何糾正算法,進一步提高影像幾何糾正精度還需繼續研究;其二,在本文研究的基礎上,開發處理大數據量的影像快速拼接算法,提升獲取大范圍區域性影像的時效性,也是未來亟待解決的問題之一。

[1]張祖勛.航空數碼相機及其有關問題[J].測繪工程,2004,13(4):1-5.

[2]蘇統華,馬培軍,劉曙等.CUDA專家手冊[M].北京:機械工業出版社,2014.

[3]方留楊,王密,李德仁.CPU和GPU協同處理的光學衛星遙感影像正射校正方法[J].測繪學報,2013,42(5):668-675.

[4]侯毅,沈彥男,王睿索等.基于GPU的數字影像的正射糾正技術的研究[J].現代測繪,2009,32(3):10-11.

[5]楊靖宇,張永生,李正國等.遙感影像正射糾正的GPU-CPU協同處理研究[J].武漢大學學報·信息科學版,2011,36(9):1043-1046.

[6]徐秋輝.無控制點的無人機遙感影像幾何校正與拼接方法研究[D].南京:南京大學,2013.

[7]張浩,張兵,衛征.基于POS的高光譜影像快速幾何糾正[J].測繪通報,2009(1):14-17.

[8]程紅,王志強,張耀宇.航空影像幾何校正方法的研究[J].東北師大學報(自然科學),2009,41(3):50-54.

[9]袁國體.航空遙感影像正射校正關鍵技術研究[D].焦作:河南理工大學,2011.

[10]李德龍,邙曉宇,劉楊等.基于地形數據庫與機載POS的影像正射糾正技術探討[J].地理信息世界,2012,10(6):58-61.

[11]周前飛,劉晶紅,李剛.面陣CCD航空相機斜視圖像幾何畸變校正誤差分析[J].儀器儀表學報,2014,35(6):1-8.

[12]王偉,童小華,謝鋒等.基于POS數據的OMIS影像幾何校正[J].遙感信息,2010(1):89-93.

[13]周國香.UAV載多面陣數碼相機拼接技術的研究[D].青島:山東科技大學,2009.

猜你喜歡
畸變線程校正
基于C#線程實驗探究
劉光第《南旋記》校正
基于國產化環境的線程池模型研究與實現
在Lightroom中校正鏡頭與透視畸變
機內校正
淺談linux多線程協作
輻射誘導染色體畸變的快速FISH方法的建立
一種基于eNode B的主動式頻偏校正算法
《癌變·畸變·突變》2014年第26卷索引
《癌變·畸變·突變》第六屆編委會第2次會議紀要
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合