蔡來良,李 儒
(1.河南理工大學測繪與國土信息工程學院,河南焦作454003;2.西安煤航信息產業有限公司地理信息工程院,陜西西安710054)
隨著測繪科技的發展,三維激光掃描技術被越來越多地用于房屋的變形監測、林木測量、工礦企業測量、輸電線路測量、礦區地表移動觀測站測量,地質滑坡監測、古文物建模、道路監測等[1-10]。隨著該項技術的進一步深入,給數據處理也提出了新的要求。就目前來看數據處理都是基于一些通用平臺,很少有針對某一領域的專用軟件;同時,目前的數據處理軟件都以國外軟件為主體,很少有國產軟件。為了進一步提高我國的自主研發水平,很有必要編制出有自主知識產權的點云數據處理平臺,為更多的三維激光掃描應用提供服務。本文針對點云數據的特點,提出了基本的數據處理方法并進行了程序實現。
從三維激光掃描技術的特點可知,其測量速度快,自動化程度高,在很短時間就可以獲取大量數據。通常一個掃描工程可獲得上GB的數據,有的項目一次可以獲得十幾GB的數據。數據量巨大,給這些數據讀取、處理、分析工作帶來了挑戰。
文件操作是傳統應用程序最為基本的功能之一,現有流行的編程平臺均提供有支持文件處理的函數和類,常用的有 Win32 API的 CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile類等。一般來說,以上這些函數可以滿足大多數場合的要求,但是對于某些特殊應用領域所需要的動輒幾十GB、幾百GB、乃至幾TB的海量存儲,無法再以通常的文件處理方法進行處理。目前,對于上述這種大文件的操作一般是以內存映射文件的方式來加以處理的,若要使用內存映射文件,必須執行下列操作步驟:
1)創建或打開一個文件內核對象,該對象用于標識磁盤上你想用作內存映射文件的文件;
2)創建一個文件映射內核對象,告訴系統該文件的大小和如何訪問該文件;
3)讓系統將文件映射對象的全部或一部分映射到你的進程地址空間中。
當完成對內存映射文件的使用時,必須執行下面這些步驟將它清除:
1)告訴系統從進程的地址空間中撤消文件映射內核對象的映像;
2)關閉文件映射內核對象;
3)關閉文件內核對象。
與虛擬內存一樣,內存映射文件可以用來保留一個地址空間的區域,并將物理存儲器提交給該區域。它們之間的差別是,物理存儲器來自一個已經位于磁盤上的文件,而不是系統的頁文件。一旦該文件被映射,就可以訪問它,就像整個文件已經加載內存一樣。使用內存映射文件來訪問磁盤上的數據文件時,可以不必對文件執行I/O操作,并且可以不必對文件內容進行緩存。
內存映射技術在點云數據處理過程的應用極大地提高了數據的存取速度,為進一步的數據處理奠定了基礎。
點云數據被讀入系統后,最重要的工作便是對其可視化。通過計算機圖形學的相關技術可知,現有的成熟三維顯示引擎為OpenGL和Direct3D。下面分別介紹其技術實現過程。
OpenGL是行業領域中最為廣泛接納的2D/3D圖形API,其自誕生至今已催生了各種計算機平臺及設備上的數千優秀應用程序。根據其強大的圖形功能,能完全勝任點云處理的各種可視化功能。其三維建模流程如圖1所示。

圖1 OpenGL建立三維模型的流程
Direct3D(D3D)是微軟公司在Microsoft Windows操作系統上所開發的一套3D繪圖編程接口,是DirectX的一部分,目前廣為各家顯示卡所支持。與OpenGL同為電腦繪圖軟體和電腦游戲最常使用的兩套繪圖編程接口之一。使用Direct3D來進行點云可視化的基本步驟如下:
1)設置繪圖參數。在本步驟中主要設置的是窗口類型、后備緩存交換的參數、是否允許自動深度測試、繪圖窗口的大小等。
2)創建繪圖設備device。由于在整個系統中存在很多的數值計算,最小二乘擬合等,為了保證計算精度,需要設置上CreateFlags.FpuPreserve項。
3)場景渲染。在本步驟中主要通過循環繪制三維場景來顯示點云數據,其實質是反復對上一步創建的device進行參數設置,更新顯示區域。
由于點云數據的主要特點之一就是它的離散化。當需要研究被測物體的連續表面時就需要將離散的點連成面。不管是表示地形表面還是建筑物表面,目前用得最多的是三角網。三角網建立的方法雖然有一定的復雜度,但是建成后,其在紋理映射等方面有較強的優勢。
三維Delaunay三角網的生成步驟如下。
(1)預處理
1)將點云數據自動分割為片狀;
2)擬合出片狀點云的趨勢平面;
3)將片狀點云投影在趨勢平面上,獲得投影的二維坐標,將三維問題轉化為二維問題。
(2)連接三角網
1)提取包含所有數據點的最小外接矩形,沿矩形對角線將矩形劃分為兩個超三角形;
2)定位三角形,從點集中取出一點,在已構建的三角形中檢索到包含該點的三角形;
3)確定受影響三角形,沿待插入點所在的三角形三條邊的方向搜索,尋找出外接圓包含該點的所有三角形,這些三角形的外邊界稱為受影響邊界;
4)受影響區域內三角形重構,刪除所有受影響三角形,依次連接邊界中每一條受影響邊與待插入點構建新的三角形;
5)循環2)、3)、4)直到所有的數據點都被插入到三角網中;
6)刪除包含所有包含最小外接矩形頂點的三角形。
基于本文的基本算法,結合VS2010軟件開發平臺,研發了點云處理軟件,該軟件能實現一些基本的數據處理和建模功能,見圖2、圖3。

圖2 點云的顯示及交互操作

圖3 點云的三維建模
通過算法研究,程序實現等手段,研究了點云數據處理平臺。通過研究,基本上實現了點云數據的快速讀取、顯示和三維建模。為進一步建立更優的數據處理平臺奠定了基礎。
[1]蔡來良,吳侃,張舒.點云平面擬合在三維激光掃描儀變形監測中的應用[J].測繪科學,2010,35(5):231-232.
[2]戴華陽,廉旭剛,陳炎,等.三維激光掃描技術在采動區房屋變形監測中的應用[J].測繪通報,2011(11):44-46.
[3]王瑜,劉西濤,王照星,等.三維激光掃描技術在石化企業的應用[J].測繪通報,2011(11):86-87.
[4]段奇三.徠卡HDS8800三維激光掃描儀在露天礦中的應用[J].測繪通報,2011(12):79-80.
[5]李超,程浩,王芳.三維激光掃描技術在林木測量方面的應用[J].測繪通報,2011(11):86-87.
[6]周學林,魏文濤,王占超.三維激光掃描系統在舟曲重點地質災害治理工程中的應用[J].測繪通報,2011(11):81-82.
[7]黃姍,薛勇,江濤.三維激光掃描技術在地質滑坡中的應用[J].測繪通報,2012(1):100-101.
[8]趙鑫,吳侃,蔡來良.具有先驗信息的地面三維激光掃描地形測量數據去噪算法[J].大地測量與地球動力學,2011,31(4):107-111.
[9]孟志義,錢林.基于點云數據的文物精細建模[J].測繪通報,2011(12):41-43.
[10]徐進軍,張毅,王海成.基于地面三維激光掃描技術的路面測量與數據處理[J].測繪通報,2011(11):34-36.