• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于C++與PCL的LAS數(shù)據(jù)讀取及顯示

      2017-09-15 02:57:43劉潔
      城市道橋與防洪 2017年8期
      關(guān)鍵詞:數(shù)據(jù)格式數(shù)據(jù)處理可視化

      劉潔

      (湖南省公路設(shè)計有限公司,湖南 長沙 410011)

      基于C++與PCL的LAS數(shù)據(jù)讀取及顯示

      劉潔

      (湖南省公路設(shè)計有限公司,湖南 長沙 410011)

      點云庫PCL(Point Cloud Library)是專門處理點云數(shù)據(jù)的公開庫,LAS則是機載激光雷達(Aiborne LiDAR)的數(shù)據(jù)格式,需專業(yè)軟件進行讀取。由于PCL無法直接讀取LAS數(shù)據(jù),給基于PCL的點云數(shù)據(jù)處理帶來了不便。為此解析了LAS數(shù)據(jù)格式,在此基礎(chǔ)上使用C++編程讀取LAS數(shù)據(jù)并進行了可視化顯示。以某一區(qū)域LAS數(shù)據(jù)進行試驗,結(jié)果表明程序運行正常,這為后續(xù)基于PCL的點云數(shù)據(jù)處理提供了數(shù)據(jù)源。

      C++;點云庫;機載激光雷達;可視化;格式

      0 引言

      機載激光雷達(Airborne LiDAR,ALiDAR)是一種通過發(fā)射器發(fā)射激光,激光接收器接收反射回的信號來測量地面數(shù)據(jù)的技術(shù)手段。由于其可快速、大面積、不受環(huán)境影響獲取測區(qū)數(shù)據(jù)的優(yōu)勢,因而在測繪領(lǐng)域得到了廣泛應(yīng)用[1,2]。機載激光雷達技術(shù)采集獲取的數(shù)據(jù)為LAS格式,需要專業(yè)軟件讀取點云數(shù)據(jù)。點云庫(Point Cloud Library,PCL)是專門用來處理點云數(shù)據(jù)的開源點云庫,其默認數(shù)據(jù)格式為PCD,無法直接讀取LAS數(shù)據(jù)[3,4]。若使用PCL來處理LAS數(shù)據(jù),需將LAS數(shù)據(jù)轉(zhuǎn)換成PCD格式,才可進行后續(xù)數(shù)據(jù)處理。目前常見的有使用MATLAB語言、C++、C#等編程讀取LAS數(shù)據(jù),但極少將其與PCL進行關(guān)聯(lián)[5~8]。

      本文在分析LAS數(shù)據(jù)格式及PCD格式基礎(chǔ)上,在 Visual Studio 2013搭建好的平臺上使用C++編程讀取LAS數(shù)據(jù),最后進行可視化顯示。以某一地區(qū)采集的數(shù)據(jù)進行數(shù)據(jù)讀取與可視化顯示試驗。試驗結(jié)果表明,本程序可以正確讀取LAS數(shù)據(jù)并進行顯示,這為后續(xù)基于PCL的點云數(shù)據(jù)處理提供了數(shù)據(jù)源。

      1 LAS數(shù)據(jù)格式

      完整的LAS數(shù)據(jù)文件包括三大部分,分別為公共頭文件、變長記錄和點記錄區(qū)[6]。LAS標(biāo)準(zhǔn)的數(shù)據(jù)格式經(jīng)過若干次修改,目前已發(fā)布的版本有1.0、1.1、1.2、1.3、1.4等系,每一版本均包括上述三部分。下面以1.0版本的LAS數(shù)據(jù)格式進行講解。

      1.1 公共頭文件

      公共頭文件主要包括LAS數(shù)據(jù)的基本信息,如采集數(shù)據(jù)日期、儀器,點數(shù)等。表1所示為公共頭文件包含的幾項重要參數(shù),以及每一項對應(yīng)的類型。

      表1 公共頭文件

      在編程讀取數(shù)據(jù)過程中,要特別注意幾項參數(shù)。如主版本號與副版本號,其對應(yīng)了LAS數(shù)據(jù)的版本號。文件頭長度,其表示公共頭文件所占的字節(jié)數(shù),不同版本其所占字節(jié)數(shù)不一樣。如在1.0版本中,其長度為227。

      在C++中可用read()函數(shù)按照字節(jié)進行讀取[9],如下面代碼所示:

      ifstream infname(str,ios::binary|ios::in);

      infname.read((char*)&public_header_block.file_ signature,sizeof(public_header_block.file_signature));

      該段代碼是創(chuàng)建infname文件流對象,然后按字節(jié)數(shù)讀取LAS文件,并將讀取內(nèi)容返回,如本文此次會返回文件標(biāo)簽“LASF”。

      按照上面的讀取方法,即可完成公共頭文件的讀取。

      1.2 變長記錄和點記錄區(qū)

      變長記錄主要包括用戶ID,記錄ID以及擴展域,而點數(shù)據(jù)記錄域主要記錄點的X、Y、Z坐標(biāo)值及其他信息。表2為1.0版本的點數(shù)據(jù)記錄區(qū)。

      表2 點記錄區(qū)域

      其中X、Y、Z坐標(biāo)需要按照公式(1)計算:

      式中:Xcoordinate、Ycoordinate、Zcoordinate分別為點的地理坐標(biāo);Xrecord、Yrecord、Zrecord分別為點數(shù)據(jù)記錄區(qū)中記錄點坐標(biāo);Xscale、Yscale、Zscale分別為頭部文件 X、Y、Z的比例因子;Xoffset、Yoffset、Zoffset分別為X、Y、Z的偏移量。

      在點記錄區(qū)域,可以根據(jù)點的個數(shù),使用循環(huán)語句讀取點坐標(biāo),如下所示:

      for(int i=0;i

      {

      infname.read((char*)&las3.x,sizeof(las3.x));

      infname.read((char*)&las3.y,sizeof(las3.y));

      infname.read((char*)&las3.z,sizeof(las3.z));

      infname.read((char*)&tem,sizeof(tem));

      outfname<

      }

      該段斷碼使用for循環(huán)語讀取每一點的X、Y、Z坐標(biāo),并將坐標(biāo)值保存到文本中,這樣可以直接用文本查看數(shù)據(jù)。

      2 PCD數(shù)據(jù)及點云可視化

      點云庫PCL是包含點云數(shù)據(jù)處理中常見算法的公開庫源,但其默認的數(shù)據(jù)格式為PCD,因此需要將LAS中讀取的點坐標(biāo)格式轉(zhuǎn)換成PCD格式,再進行數(shù)據(jù)處理。

      2.1 PCD數(shù)據(jù)格式

      PCD數(shù)據(jù)格式包括頭文件和點數(shù)據(jù)區(qū)域兩部分,其頭文件格式相對LAS要簡單。頭文件包括PCD數(shù)據(jù)版本,每個點的維度、類型及點的個數(shù),獲取點的視點等信息。圖1為PCD 0.7版本數(shù)據(jù)頭文件格式,其中該數(shù)據(jù)文件包括656 487個點,每個點均包含X、Y、Z坐標(biāo)。

      圖1 PCD數(shù)據(jù)頭文件格式

      2.2 點云可視化顯示

      在PCL中,其可視化工具為VTK(Visualization Toolkit),在將LAS數(shù)據(jù)轉(zhuǎn)換成PCD格式文件后,即可以利用VTK顯示點云,實現(xiàn)可視化。其部分代碼如下[10]:

      pcl::PointCloud

      pcl::io::loadPCDFile(str,*cloud);

      pcl::visualization::PCLVisualizer viewer("visualization");

      viewer.setBackgroundColor(0,0,0);

      pcl::visualization:PointCloudColorHandlerCustom< pcl::PointXYZ>single_color(cloud,0,255,0);

      viewer.addPointCloud

      該段代碼是創(chuàng)建點云對象指針cloud,再利用loadPCD函數(shù)將點云進行加載,同時創(chuàng)建可視化窗口viewer,并將可視化窗口背景顏色設(shè)置為黑色,點云顏色設(shè)置成綠色。

      3 LAS數(shù)據(jù)讀取及顯示試驗

      本文選取2016年期間采集的某一測區(qū)數(shù)據(jù)進行試驗,在Visual Studio 2013平臺上采用C++語言進行編寫,同時在工程中配置好PCL開發(fā)環(huán)境。其中保存在文本中點坐標(biāo)部分數(shù)據(jù)如圖2所示,讀取LAS數(shù)據(jù)文件的部分頭文件信息如圖3所示。

      圖2 數(shù)據(jù)讀取保存

      圖3 頭文件部分信息

      最后將采集的點數(shù)據(jù)進行可視化的點云結(jié)果如圖4所示,可以通過鼠標(biāo)滾動、拖動,變換視角來瀏覽該區(qū)域數(shù)據(jù)。

      圖4 LAS點云數(shù)據(jù)可視化

      4 結(jié)語

      本文主要介紹了LAS數(shù)據(jù)格式及PCD數(shù)據(jù)格式,并用C++編程進行讀取、轉(zhuǎn)換及可視化LAS數(shù)據(jù)。基于C++的LAS數(shù)據(jù)讀取,可以快速讀取轉(zhuǎn)換數(shù)據(jù)格式,為后面基于PCL的點云數(shù)據(jù)處理研究,以及基于LAS數(shù)據(jù)的應(yīng)用提供可靠的數(shù)據(jù)來源,具有重要意義。

      [1]駱云飛,王書民.機載LiDAR系統(tǒng)在道路勘測中的數(shù)據(jù)獲取及應(yīng)用[J].測繪通報,2012(S1):362-364,371.

      [2]范正岳,徐茂文.基于三維激光掃描的露天礦山儲量測量研究[J].礦山測量,2014(4):10-11.

      [3]羅方燕.PCL庫點云統(tǒng)計去噪算法的應(yīng)用研究[J].現(xiàn)代計算機(專業(yè)版),2016(26):63-66.

      [4]南剛雷,張瑞峰,張梓然.基于PCL的柴油機缸蓋三維特征提取技術(shù)[J].電子測量技術(shù),2016(2):80-82,98.

      [5]任常青,張青萍,張曉宇.基于AutoCAD的LIDAR點云數(shù)據(jù)可視化[J].測繪技術(shù)裝備,2011,13(3):42-45.

      [6]趙自明,史兵,田喜平,等.LAS格式解析及其數(shù)據(jù)的讀取與顯示[J].測繪技術(shù)裝備,2010,12(3):17-20.

      [7]蘇偉戴,王森,李沁,等.基于OpenGL的LiDAR數(shù)據(jù)處理模塊設(shè)計與實現(xiàn)[J].中國農(nóng)業(yè)大學(xué)學(xué)報,2012(2):150-158.

      [8]聞?wù)缀#x忠.基于Matlab的LAS格式數(shù)據(jù)解析與顯示[J].地理空間信息,2015(1):50-52.

      [9]譚浩強.C++程序設(shè)計[M].北京:清華大學(xué)出版社,2004:439-453.

      [10]朱德海,郭浩,蘇偉.點云庫PCL學(xué)習(xí)教程[M].北京:北京航空航天大學(xué)出版社,2012:133-158.

      TP751

      A

      1009-7716(2017)08-0272-03

      10.16799/j.cnki.csdqyfh.2017.08.086

      2017-04-01

      劉潔(1969-),男,湖南長沙人,工程師,從事工程測量工作。

      猜你喜歡
      數(shù)據(jù)格式數(shù)據(jù)處理可視化
      基于CiteSpace的足三里穴研究可視化分析
      認知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補與極大似然估計法*
      基于Power BI的油田注水運行動態(tài)分析與可視化展示
      云南化工(2021年8期)2021-12-21 06:37:54
      ILWT-EEMD數(shù)據(jù)處理的ELM滾動軸承故障診斷
      基于CGAL和OpenGL的海底地形三維可視化
      “融評”:黨媒評論的可視化創(chuàng)新
      傳媒評論(2019年4期)2019-07-13 05:49:14
      在智能交通系統(tǒng)中PLC數(shù)據(jù)格式轉(zhuǎn)換方法的研究
      電子測試(2018年1期)2018-04-18 11:52:49
      基于希爾伯特- 黃變換的去噪法在外測數(shù)據(jù)處理中的應(yīng)用
      論子函數(shù)在C語言數(shù)據(jù)格式輸出中的應(yīng)用
      DWG與SHP數(shù)據(jù)格式互轉(zhuǎn)換方法研究——以龍巖規(guī)劃測繪數(shù)據(jù)為例
      镇原县| 德格县| 南雄市| 德安县| 新河县| 靖西县| 青田县| 扬中市| 宜州市| 大同市| 米易县| 平定县| 珠海市| 五大连池市| 大兴区| 十堰市| 施甸县| 公安县| 若羌县| 石狮市| 英超| 休宁县| 诸城市| 德清县| 肇庆市| 彭山县| 神木县| 黑山县| 会泽县| 临安市| 屏边| 临清市| 西盟| 博野县| 建始县| 明星| 隆尧县| 新郑市| 桐梓县| 黄骅市| 蚌埠市|