邱俊玲
(河南工業貿易職業學院信息工程系,河南鄭州450000)
基于IDL編程語言實現大地坐標轉換
邱俊玲
(河南工業貿易職業學院信息工程系,河南鄭州450000)
由于實際測量時,所使用的儀器不具備自動統一在大地絕對坐標系的功能,采集的數據點是以測量點為中心的相對坐標,給研究帶來了不小的麻煩.為了解決這一問題,借用某礦山的三維激光掃描數據,利用IDL編程語言實現相對坐標與大地絕對坐標的自動轉換,自動轉換程序大大節省了建模時間,并滿足實際研究需要,以供后續研究人員參考.
IDL;數據處理;坐標轉換
大地坐標系是地質測量中以參考橢球面為基準面的坐標系,主要由大地經度、緯度和高度構成.目前主流的大地坐標系有北京54坐標系、西安80坐標系、WGS-80坐標系等.在進行三維激光掃描測量時,掃描儀所測量的數據是以其掃描儀作為基準點的相對三維坐標值,移動位置進行多次測量后,就會造成數據坐標的混亂.目前很多地質軟件可以實現模型拼接的功能,比如Polyworks、Geomagic等[1],測得的散亂目標數據通過軟件進行模型重建、統一在同一坐標系下,即可呈現出原始模型,如同照片所投射的影像一樣,甚至更清晰.但這樣的模型并不具備任何研究價值,為了使目標物具有地質意義,研究人員需要將模型所在相對坐標系轉換為大地絕對坐標系.現有的軟件要想實現這一功能,有的價格比較昂貴,有的功能不能滿足實際需求[2],迫切需要測量人員自己動手來實現.
IDL(Interactive Data Language)作為第四代可視化語言,由于其面向矩陣、語法簡單等特點被廣泛用于三維數據可視化、數值計算、三維圖形建模、科學數據讀取等方面[3].IDL是美國ITT公司開發的高級計算機編程語言,主要用于進行二維及多維數據可視化表現、分析及應用開發.具體來說,在地球科學、圖像處理、GIS系統、軟件開發、大學教學等領域,都能看到IDL的身影.
1.1 與多種編程語言對接
在功能上,IDL與VC一樣擁有強大的菜單定制、消息傳遞、類定義等功能;對新手來說,IDL與VB一樣擁有良好的可視化界面、通俗易懂的語言等特點;從可移植性上說,IDL有與JAVA一樣的跨平臺移植性;從熟悉度來說,IDL與FORTRAN的函數、子程序的調用,語言風格等很相似;從靈活性上說,IDL與MATLAB一樣封裝了大量的數學函數;從時代性上說,IDL提供了與OPENGL相媲美的二維、三維圖形圖像類.IDL,可應用于小程序的開發,又可用于大型三維圖像的處理.
1.2 易用性和易擴展性
智能工具箱的開發是IDL發展的重要一步,工具箱主要包括iPlot、iSurface、iContour、iImage、iVolume等,方便使用者通過鼠標完成數據的可視化和分析工作.
1.3 極高的運算效率
由于采用矩陣技術,IDL不單具有高效的編程特點,同時可以自動支持多CPUs機制.
1.4 大數據處理
目前對大數據的處理要求越來越高,海量的數據帶給編程語言更大的挑戰.由于IDL完全面向矩陣,因此它可以輕松解決超大數據的處理.雖然目前硬件廠商一遍遍刷新自己的容量,宣稱自己的計算機有多大的內存,但這實際上是對內存的管理而非一次開辟多大的矩陣,所以并不用擔心IDL在現有硬件上的應用.
筆者借用某礦山的測量數據進行實驗,數據采集是通過加拿大Optech公司的ILRIS非接觸式三維激光掃描儀來完成的實景采集.其基本原理是:根據精密時鐘控制編碼器保證其同時獲取發射出去的激光光束的水平方向角度α和垂直方向角度β,由脈沖激光發射到返回所用的時間計算得到距離觀測值S,從獲取掃描反射接收的激光強度,與經過校正的彩色相片相結合,得到對掃描點顏色灰度的匹配.對激光掃描儀而言,采樣時是一般使用儀器自定義的坐標系統:即X軸在橫向掃描面內,Y軸在橫向掃描面內與X軸垂直,Z軸與橫向掃描面垂直(如圖1所示)[4-5].由此可得到目標點P的坐標公式為:


圖1 掃描儀工作示意圖
由掃描儀所在的位置作為目標原點,按照機器預先設置好的精度進行數據采集,采集它所目測的區域內物體的三維坐標值,并將坐標數據通過內置存儲器進行存儲.每一個測量地所測區域需要有重疊部分,以方便后續進行實物重現時的拼接.由于該次測量是在露天礦山內完成,實地景觀接近,在實物拼接時很難找到標志物,故采用自己制作的紙質標靶作為人為標志(如圖2).
整個數據采集只是繁雜工作的第一步,下面就面臨大數據及數據誤差的問題,為了保證模型重建的質量,測量者需要首先對數據進行預處理.其過程主要包括:噪聲去除、多視拼接、數據精簡等操作,在此不再贅述.
三維坐標實景數據采集后,通過標志物進行模型拼接,重現后的模型是統一在同一個相對坐標系下的礦山實景圖.然而如果只是在相對坐標下,那么與數碼相機拍照來的圖片并沒有太大區別,只有將所有坐標數據轉換到大地坐標下,才有專業研究的價值.大地坐標是大地測量中參考橢球面為基準建立的坐標系.它的位置就不再是簡單的X,Y,Z,而是有實際意義的經度、維度和高度.在相對坐標轉大地坐標時,可以手動將所有點的坐標值進行一一修改,然而面對如此海量的數據,手動修改幾乎是不可能的.那么如何將如此海量的數據自動進行坐標系的轉換,就成了研究工作的重中之重.

圖2 紙質標靶示意圖
3.1 絕對坐標轉換的原理
絕對坐標與相對坐標間的轉換關系如下:(X,Y,Z)T=R(X',Y',Z')T+(ΔX,ΔY,ΔZ)T(1)其中,(X,Y,Z)T相當于大地坐標值,(X',Y',Z')T為相對坐標,R為待求的旋轉矩陣,(ΔX,ΔY,ΔZ)T為待求的平移矩陣.
然后將坐標標準化,計算出兩個坐標系的重心坐標:(Xg,Yg,Zg)和(X'g,Y'g,Z'g),以及公共點以重心為原點的重心化坐標:(珚X,珚Y,珚X)和(X',Y',Z').

將(2)代入(1)式可得:

根據羅德里格矩陣算法的思想,可設:R=

其中,I為單位矩陣,S為反對稱矩陣.
可設為:

將(4)式、(5)式代入(3)式,即可求得旋轉坐標R.
最后代入公式(1)即可求得平移矩陣(ΔX,ΔY,ΔZ)T[6-7].
3.2 坐標轉換實例
根據這一原理,筆者通過對比,將坐標轉換的非線性問題轉化為矩陣轉換的線性問題,這也正是IDL編程語言的優勢所在.在計算時簡化了三角函數和迭代運算,操作簡單,實用性強,且易于編程實現.
該次轉換是建立在相對坐標系的拼接已完成的基礎上,而所有拼接后的原始坐標數據可通過拼接軟件導出為TXT文本格式.利用羅德里格矩陣算法的原理,通過IDL語言進行編程,將導出的文件統一轉換在大地坐標系下,完成坐標轉換,最后生成新的文本文件,再導入地質軟件中即可查看每一個測量點的大地坐標,并可將轉換后的文件導入處理軟件中查看及對比坐標誤差.
利用IDL編程語言實現坐標轉換的算法(如圖3所示):以三個以上已知點大地坐標作為參考,輸入已知大地坐標對應的相對坐標值,通過矩陣計算得到上面公式中的R和T,然后打開軟件導出TXT文本文件進行轉換,生成新的目標文本文件.

圖3 IDL編程算法圖示

表1 標記點坐標系轉換對比表
通過幾個已知的大地坐標點進行對比,可以看出已知點的實際坐標值與編程轉換后的理論坐標值誤差很小,基本控制在1.5m之內,完全可以滿足研究的精度需要.同時由于IDL編程入門簡單,一個小程序即可完成整個坐標系的轉換,只要稍微有一些編程基礎的人員即可輕松上手,可以被廣大研究人員即使是非計算機專業人員所使用.
在當今大數據時代,研究人員完成測量工作進行后期數據處理時,往往會遇到各種問題,比如該文所提到的坐標系不一致的問題等.有些問題是可以通過手動逐個解決的,有些問題手動解決費時費力,而通過其他途徑可以事半功倍.該文通過IDL編程語言實現的坐標轉換程序,可操作性強、高效、便捷且誤差較小,可以很好地實現不同大地坐標系之間的相互轉換,而并不局限于相對坐標系與大地坐標系的轉換.但是由于時間倉促、基礎不足,該程序處于研發初期,還需要后續更好完善才能被廣泛使用.
[1]羅大兵.逆向工程中數字化測量與點云數據處理[J].機械設計與制造,2005(9):56-58.
[2]邱俊玲.基于三維激光掃描技術的礦山地質建模與應用研究[D].中國地質大學,2012.
[3]張嵐,楊斌,高德政.基于IDL的三維地質勘查方法[J].地理空間信息,2016,14(3):64-66.
[4]劉春.三維激光掃描對構筑物的采集和空間建模[J].工程勘察,2006(4):49-53.
[5]劉春,陳華云.激光三維遙感的數據處理與特征提取[M].北京:科學出版社,2010:21,29,33-35.
[6]徐榮禮,張鈞.逆向工程中散亂點云數據處理關鍵技術研究[D].江南大學,2006.
[7]張鈞.利用羅德里格矩陣確定三維表面重建中的絕對定向模型[J].紅外與激光工程,1998,27(4):30-32.
TP312
A
1671-9476(2017)02-0131-03
10.13450/j.cnkij.zknu.2017.02.033
2017-02-18;
2017-03-02
邱俊玲(1987-),女,河南鄭州人,助教,碩士,研究方向:計算機應用.