王呂梁+郭唐永+李世鵬+朱威+王磊
摘 要:三維激光測繪已廣泛應(yīng)用于城市測繪中,機載三維激光掃描儀是當(dāng)前測繪領(lǐng)域的一個新標(biāo)桿,但大部分技術(shù)仍由國外壟斷,研發(fā)機載三維激光掃描儀和相配套的軟件尤為必要。機載三維激光掃描儀研制需要從硬件和軟件兩個部分著手,從掃描儀得到原始點云數(shù)據(jù)后,通過相應(yīng)軟件對數(shù)據(jù)作后期處理,設(shè)計出友好的交互界面,展現(xiàn)場景,實現(xiàn)三維重構(gòu)。
關(guān)鍵詞:機載激光掃描儀; 點云; 三維重構(gòu)
DOIDOI:10.11907/rjdk.162060
中圖分類號:TP319
文獻標(biāo)識碼:A文章編號:1672-7800(2016)012-0087-02
0 引言
機載三維激光測量技術(shù)是一項前沿性研究課題[1]。機載三維激光掃描儀具有很多傳統(tǒng)測繪儀器無法比擬的優(yōu)越性,有著廣泛的應(yīng)用領(lǐng)域[2],如地形測繪、災(zāi)害調(diào)查與環(huán)境監(jiān)測、森林數(shù)字高程圖獲取、城市三維建模等,還應(yīng)用于工程建設(shè)、逆向工程、電線管道布局、3D打印等領(lǐng)域。我國大部分激光掃描儀主要靠國外公司提供相關(guān)技術(shù)支持。研制出擁有自主知識產(chǎn)權(quán)的機載三維激光掃描儀具有重要意義。本文以掃描儀系統(tǒng)硬件為出發(fā)點,介紹硬件系統(tǒng)架構(gòu)及其技術(shù)難點,針對硬件特點分析軟件功能需求,最后利用點云庫完成軟件系統(tǒng)開發(fā)。
1 系統(tǒng)硬件架構(gòu)
1.1 硬件架構(gòu)分析
本系統(tǒng)分為儀器和軟件兩個部分。儀器設(shè)計需滿足測量要求,實現(xiàn)高速精準(zhǔn)掃描、全波段數(shù)據(jù)采集,具有效率高、可靠性好、便于維護等特點。儀器系統(tǒng)主要由6個部分組成,即激光發(fā)射系統(tǒng)、光學(xué)掃描鏡與收發(fā)光路系統(tǒng)、高精度時間測量系統(tǒng)、高精度頻率源系統(tǒng)、數(shù)據(jù)采集與處理系統(tǒng)、圖像處理系統(tǒng),如圖1所示。
1.2 儀器功能實現(xiàn)
硬件系統(tǒng)的核心為掃描鏡收發(fā)光路系統(tǒng)、高精度時間測量與控制系統(tǒng)和數(shù)據(jù)采集系統(tǒng)[4]。收發(fā)光路系統(tǒng)主要包括卡塞格林望遠鏡、變焦擴束準(zhǔn)直系統(tǒng)、窄帶光濾波等。由于激光的單色性較好,主要對藍綠光波進行接收,采用可變增益的PMT光電倍增管,實現(xiàn)100dB的動態(tài)接收范圍,確保能夠接收到微弱的回波信號。
掃描儀測距由一個高精度時間測量系統(tǒng)實現(xiàn),采用FPGA搭建控制電路來控制時間脈沖觸發(fā),采用先進的時間頻率測控技術(shù)馴服高穩(wěn)定度的銣原子鐘,將高穩(wěn)定度、低相噪雙槽恒溫晶振鎖定在銣原子鐘上,將GPS衛(wèi)星的長期穩(wěn)定性原子頻標(biāo)的中期穩(wěn)定性與高穩(wěn)晶振的短期穩(wěn)定性完美結(jié)合,使采樣頻率同步在GPS原子鐘信號上,保證激光掃描儀的探測精度。
數(shù)據(jù)采集系統(tǒng)由高速數(shù)字采集卡和磁盤陣列存儲服務(wù)器構(gòu)成。高速數(shù)字采集卡將光電轉(zhuǎn)換系統(tǒng)輸出的回波模擬信號轉(zhuǎn)換為數(shù)字信號。機載三維激光掃描儀的探測發(fā)射脈沖寬度小于5ns,保證回波脈沖數(shù)據(jù)采集時不失真,系統(tǒng)設(shè)計的回波采樣率達到1GHz,采樣位數(shù)為12位。
2 系統(tǒng)需求分析
機載三維激光掃描儀主要用在測繪領(lǐng)域,分為近距離和遠距離兩種,其中遠距離激光主要是激光雷達系統(tǒng),近距離掃描儀主要為微軟的Kinect[3-4]。
機載三維激光掃描儀軟件系統(tǒng)關(guān)鍵為點云數(shù)據(jù)讀取、數(shù)據(jù)分析處理及場景重建。所設(shè)計的軟件要能夠處理掃描儀的原始數(shù)據(jù),包括數(shù)據(jù)分析處理、濾波精簡、三維重建等。
軟件系統(tǒng)主要由4個部分組成,包括數(shù)據(jù)讀寫、點云顯示、濾波、網(wǎng)格重建[5]。實現(xiàn)激光掃描儀數(shù)據(jù)處理和使用,與掃描儀器構(gòu)成一套完備的測繪系統(tǒng),軟件系統(tǒng)功能模塊如圖2所示。
3 系統(tǒng)軟件實現(xiàn)
軟件系統(tǒng)的關(guān)鍵技術(shù)在于點云讀寫存儲、濾波和網(wǎng)格重建?;赒T平臺和PCL(Point Cloud Library),通過CMake編譯VTK(Visualization Toolkit)QT插件,實現(xiàn)可視化與點云庫協(xié)同操作,由QT提供交互界面。
點云讀寫存儲由PCL提供的IO類繼承而來,主要針對PCD格式的點云數(shù)據(jù)和PLY格式的網(wǎng)格數(shù)據(jù)[6],格式統(tǒng)一,便于數(shù)據(jù)處理。讀取點云數(shù)據(jù)時先根據(jù)文件后綴判斷格式,是否以.pcd或者.ply格式結(jié)尾,是則讀取,否則返回。讀取后對數(shù)據(jù)進行稀疏判斷,若為密集數(shù)據(jù),則從數(shù)據(jù)中剔除NAN字符,完成數(shù)據(jù)讀取。同理,完成點云的存儲操作,作下一步處理,讀取點云數(shù)據(jù)的程序代碼如下:
QString filename = QFileDialog::getOpenFileName(this, tr("Open Point Cloud"),"D:",tr("Point Cloud Data(*.pcd *.ply )"));
PCL_INFO("File chose: %s\\n", filename.toStdString().c_str());
pcl::PointCloud
if (filename.isEmpty())
return;
int return_status;
if (filename.endsWith(".pcd", Qt::CaseInsensitive))
return_status = pcl::io::loadPCDFile(filename.toStdString(), *cloud_tmp);
else
return_status = pcl::io::loadPLYFile(filename.toStdString(), *cloud_tmp);
if (return_status != 0)
{
PCL_ERROR("Error reading point cloud %s\\n", filename.toStdString().c_str());
return;
}
//To determine whether the point cloud is dense or not
if (cloud_tmp->is_dense)
{
pcl::copyPointCloud(*cloud_tmp, *cloud);
}
else
{
PCL_WARN("Cloud is not dense! Non finite points will be removed\\n");
std::vector
pcl::removeNaNFromPointCloud(*cloud_tmp, *cloud, vec);
}
點云的視圖切換操作通過設(shè)置相機的位置矩陣函數(shù)setCameraPosition()實現(xiàn),通過給定不同的矩陣參數(shù),用戶可以快速切換點云視角,選擇出最好的視角場景效果。由編譯后的VTK庫生成的QVTKWidget控件提供視圖操作,用戶可以實現(xiàn)平移旋轉(zhuǎn)與縮放等基本三維可視化操作。
點云濾波分為直通濾波、體素柵格濾波和統(tǒng)計學(xué)外點移除濾波3個部分。這些濾波方法主要目的是精簡數(shù)據(jù),去除飛點等噪聲點,減小數(shù)據(jù)體積,優(yōu)化點云數(shù)據(jù)結(jié)構(gòu),方便可視化操作和下一步數(shù)據(jù)處理,提高點云質(zhì)量和計算速度。其中統(tǒng)計學(xué)外點移除濾波部分代碼如下:
PointCloudT_XYZ::Ptr cloud_filtered(new PointCloudT_XYZ);
pcl::StatisticalOutlierRemoval
outlierRemoval.setInputCloud(cloud);
outlierRemoval.setMeanK(ui->lineEditMeanK->text().toInt());
outlierRemoval.setStddevMulThresh(ui->lineEdit_StddevMulThresh->text().toDouble());
outlierRemoval.filter(*cloud_filtered);
pcl::copyPointCloud(*cloud_filtered, *cloud);
點云的網(wǎng)格生成由貪婪投影三角網(wǎng)格化、柵格投影網(wǎng)格化和移動最小二乘法3個部分組成。貪婪投影三角網(wǎng)格化實現(xiàn)無序點云的快速重構(gòu),性能良好。柵格投影網(wǎng)格化計算速度稍慢,但可以實現(xiàn)破面、孔洞等的修復(fù),柵格大小由用戶界面設(shè)置。移動最小二乘法采用的是多項式插值方法,設(shè)置鄰域點的個數(shù)和多項式階數(shù),在該范圍內(nèi)多項式擬合,擬合后的曲面進行估計法線,使法向量有序化,再對設(shè)置半徑范圍內(nèi)的點采樣處理,讓點云分布均勻,完成這些操作后再進行存儲,進一步網(wǎng)格化重建模型,得到的網(wǎng)格更加致密光滑。移動最小二乘法的實現(xiàn)代碼如下:
pcl::search::KdTree
mls.setInputCloud(cloud);
mls.setSearchMethod(tree);
mls.setPolynomialFit(true);
mls.setPolynomialOrder(ui->lineEdit_MLS_setPolynomialOrder->text().toInt());
mls.setComputeNormals(false);
mls.setSearchRadius(ui->lineEdit_MLS_setSearchRadius->text().toDouble());
mls.setUpsamplingMethod(mls.SAMPLE_LOCAL_PLANE);
mls.setUpsamplingRadius(ui->lineEdit_MLS_setUpsamplingRadius->text().toDouble());
mls.setUpsamplingStepSize(ui->lineEdit_MLS_setUpsamplingStepSize->text().toDouble()
mls.process(*outputCloud);
4 結(jié)語
通過機載三維激光掃描儀系統(tǒng)構(gòu)建,探討了機載三維激光掃描儀技術(shù),實現(xiàn)了儀器高速數(shù)據(jù)測量、采集和數(shù)據(jù)處理。配合編寫的機載三維激光掃描儀軟件系統(tǒng),實現(xiàn)了點云數(shù)據(jù)的讀寫、精簡濾波與三維重建,完成了設(shè)計要求和精度要求,具有一定的應(yīng)用推廣價值。后期研究中,將在儀器方面提高數(shù)據(jù)高采樣頻率、改進掃描點的算法、提高數(shù)據(jù)傳輸實時性及增大極限掃描距離等,在軟件方面提高軟件的穩(wěn)定性、增加線程操作、優(yōu)化算法、支持更多點云格式文件的操作、改善用戶體驗等,為三維激光掃描儀提供更多的技術(shù)支持。
參考文獻:
[1] 黨夢林,裴海龍. 基于QT的機載三維激光地形測繪軟件構(gòu)建[J]. 計算機測量與控制,2013(4):1084-1086+1089.
[2] 張小紅. 機載激光雷達測量技術(shù)理論與方法[M]. 武漢:武漢大學(xué)出版社,2007.
[3] 李世鵬,郭唐永,羅青山,等.海陸一體機載激光掃描儀的設(shè)計[J]. 大地測量與地球動力學(xué),2013(S2):58-60,70.
[4] 鐘棉卿. 機載激光雷達系統(tǒng)初步方案研究[D].西安:西安科技大學(xué),2012.
[5] 陳鑌. 機載激光測量系統(tǒng)設(shè)計與實現(xiàn)[D].廣州:華南理工大學(xué),2010.
[6] 朱德海.點云庫PCL學(xué)習(xí)教程[M].北京:北京航空航天大學(xué)出版社,2012.
(責(zé)任編輯:陳福時)