劉京


摘要:無人機航測數據處理中,POS數據在影像拼接和三維快速建模中有著十分重要的作用。為了充分利用無人機POS數據的優勢,針對原始POS數據丟失、無法直接可視化等缺陷,開發了基于CAD平臺的POS數據處理工具,該工具能夠以交互式的方式編輯POS數據并導出到航測軟件中,提高了航測內業處理的效率。
關鍵詞:無人機POS;數據處理;CAD二次開發
中圖分類號:V557 ? ? ? ? ?文獻標識碼:A
無人機POS數據在空三自由網平差、像控點預測等方面有著十分重要的作用,可靠完整的POS既能夠加快空三計算和三維建模的速度,又能夠提高正射拼接影像的正確性。不僅如此,如果將POS數據對應的照片范圍投影到一定高度的地面,可以以可視化的方式檢查原始照片的航向和旁向重疊度,如果再將像控點坐標展繪進來,自動識別與控制點相關聯的照片,幫助內業人員快速定位每個像控點所對應的原始照片,這能夠大幅提高空三刺像控點時的效率。
由于無人機姿態不穩、地物遮擋等原因,無人機在飛行過程中,GPS信號會出現斷片的情況,導出的POS數據可能會出現成片的丟失。對于這種情況,考慮到POS參與航測數據后處理的精度不必太高和飛機航線本身的線性特征關系,可以采用線性插值的方式解決。
基于以上背景,筆者采用VB.net語言,開發了基于CAD的無人機POS數據處理工具。該工具實現了POS數據的可視化、丟失POS的插值、POS數據對應照片覆蓋區生成等功能。本文將詳細介紹POS數據后處理的流程及這些軟件功能的實現方法。
1 POS數據處理工作流程
無人機POS數據處理的工作流程主要包括以下4個步驟。
1.1 高斯正向投影
無人機原始POS數據坐標系采用的是WGS84地理坐標系,用經緯度表示,適用于在球面坐標系中,而AutoCad采用的是平面直角坐標系,因此要在CAD中表示POS數據,需要對原始POS數據進行高斯正向投影,將經緯度坐標轉換為國家標準帶平面坐標或者地方獨立坐標。
1.2 CAD中繪制POS數據
首先在CAD中繪制投影后的POS中心點數據,并在中心點位置注記POS序號,然后調用無人機相機參數,繪制POS中心點所在相片覆蓋區矩形框,該矩形框代表無人機在該POS點拍攝照片所覆蓋測區的范圍,所有的矩形框構成了無人機在本次飛行過程的航跡,即航線。
1.3 內插POS數據
由于已經繪制出了無人機飛行航線,通過目視解讀,即可檢查出POS數據的質量及丟失情況。對于有丟失的POS,需要利用相鄰的POS點位信息和航線的航跡特征,內插出丟失的POS數據。
1.4 高斯反向投影
通過高斯投影反算程序,將檢查無誤的POS數據反向投影為經緯度格式的數據,并導出為跟原始POS數據格式一致的文件。
2 關鍵算法
基于CAD的無人機POS數據處理工具開發中涉及了一系列算法,主要有大地坐標和平面直角坐標互相轉換的高斯正反算算法、POS對應相片覆蓋區生成算法和POS內插等算法。
2.1 高斯正反算算法
無人機飛行中獲取的POS數據的格式是經緯度的形式,坐標系是地理坐標系(WGS84),而CAD中只能表示平面直角坐標數據,所以無法將該格式的數據直接在CAD中展繪出來。為此,我們必須先將POS數據投影到平面直角坐標系中,這就是高斯正算。在對投影后的POS數據做相片覆蓋區生成、丟失點內插等操作后,為了導出處理完成的POS數據,又需要將POS數據轉換成經緯度格式,這就是高斯反算。完成高斯反算的POS數據,可以直接導入到Pix4d、ContextCapture等航測軟件中,參與空三解算、影像拼接等航測數據處理。高斯正反算具體的公式可以參考相應的大地測量學書籍。
2.2 相片覆蓋區生成算法
如果將無人機相片的拍攝范圍按照一定的高度投影到實地,就能夠得到相片在該高度下的相片覆蓋區矩形。該高度如果是每張相片真實的航高,所得相片覆蓋區就能真實體現實際的相片覆蓋范圍及相片之間的關系。通過相片覆蓋區的可視化,我們可以直觀地得到航向重疊度、旁向重疊度等參數,從而快速的評估本次飛行的質量。相片覆蓋區的另外一個作用是幫助業內人員快速的定位野外控制點在相片的位置。
式中x,y表示要內插的POS數據的平面坐標,x0,y0,x1,y1分別代表內插點相鄰兩已知POS點的平面坐標,t是步長,取值在0~1,限定內插的點位于相鄰已知POS點間。編寫程序時,t可以用需要內插點的個數的倒數來表示,在循環中,t保持自增。
對于第二個問題,由于相鄰兩已知POS點的序號具有有序性,而從以上未知點POS數據內插公式可知,未知POS數據內插總是從靠近第一個已知的POS數據開始內插,因此未知POS點的點序號可以看成從第一個已知POS數據遞增或遞減得到。
3 基于CAD的POS數據處理工具實現
基于CAD的二次開發方式有Lisp、VBA、ObjectARX和.Net API。其中,基于.Net平臺對CAD進行二次開發,可以充分利用.Net的各種優勢,在保證功能強大的前提下大幅提高開發速度。
Visual Basie.Net是基于微軟.Net Framework之上的面向對象的編程語言。筆者采用VB.Net語言,基于AutoCAD平臺,實現了POS數據處理工具的全部功能。
3.1 VB.Net調用CAD類庫
在VS環境中引用AutoCAD 2006 Type Libaray庫,并使用”Using”方法引用Autodesk.AutoCAD.Interop和Autodesk.AutoCAD.Interop.Common兩個命名空間。在程序最外層定義acadApp和acadDoc兩個對象,分別代表CAD應用程序和CAD文檔。程序初始化的時候,創建兩個對象的實例,具體代碼如下:
Private Sub Main_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load
Try
acadApp = GetObject(, "AutoCAD.Application")
Catch ex As Exception
acadApp = CreateObject("AutoCAD.Application")
End Try
acadApp.Visible = True
AppActivate(acadApp.Caption)
acadDoc = acadApp.ActiveDocument
End Sub
3.2 功能實現
軟件主要由主窗體類(mainCLS)、算法類(algorithmCLS)和繪制類(drawCls)3個類模塊組成。其中主窗體類實現了用戶交互的主界面;算法類實現了高斯正反算算法、相片覆蓋區生成算法、POS丟失點內插算法和自動查找控制點所在照片等算法;繪制類實現了POS點位置和注記繪制、相片覆蓋區繪制、控制點與所在照片連接線繪制等圖形可視化功能。篇幅所限,下文僅列舉POS丟失數據內插算法實現代碼:
Dim t ? ? ? ? ? ? ? ? ? ‘定義步長
Dim xuhao ? ? ? ? ? ? ? ‘內插點序號
If no_1 < no_2 Then
For i = 1 To cnt '如果第1個POS對象的序號小于第2個POS對象的序號
t = i / (cnt + 1)
xuhao = no_1 + i
xc = x0 * (1 - t) + t * x1
yc = y0 * (1 - t) + t * y1
drawRect(xc, yc, m_l, m_w, xuhao, 1.5) ‘繪制覆蓋區矩形
Next
Else
For i = 1 To cnt
t = i / (cnt + 1)
xuhao = no_1 - i
xc = x0 * (1 - t) + t * x1
yc = y0 * (1 - t) + t * y1
drawRect(xc, yc, m_l, m_w, xuhao, 1.5)
Next
End If
3.3 結果展示
利用VB.Net環境調用CAD類庫開發的無人機POS數據處理工具界面如圖1所示,圖片展示了查找控制點對應照片這一功能。白色的十字絲表示控制點的位置,與其相連的紅色虛線另外一端是相片矩形覆蓋區,連接關系表示相片矩形覆蓋區包含了該控制點。
4 結語
本文闡述了無人機POS數據處理的工作流程,并根據關鍵算法開發了基于CAD的無人機POS數據處理工具。該工具能夠以可視化界面的方法,幫助內業人員快速進行無人機POS數據后處理,處理后的POS數據能夠正確地被航測軟件導入,參與后續的航測內業處理,提高航測內業的處理效率。本文開發的工具是在二維CAD下實現的,有一定的局限性,以后的研究可以考慮加入POS中的姿態角等參數,在不經過高斯正反算的情況下,直接在三維環境下完成POS數據的后處理工作,實現真正的三維交互。
參考文獻
[1] 魯恒,李永樹,江禹.一種基于POS數據的無人機影像自動展繪控制點方法[J].光電工程,2011,38(9):25-29.
[2] 孔元祥,郭際明,劉宗泉.大地測量學基礎[M].2版.武漢:武漢大學出版社,2010.
[3] 鄧非,陳朝霞,李新維,等.基于POS的多視傾斜影像展繪與篩選方法[J].測繪地理信息,2017,42(8):23-26.
[4] 郭大海,王建超,鄭雄偉.機載POS系統直接地理定位技術理論與實踐[M].北京:地質出版社,2009.