張婧婧 白曉
摘? 要: 基于Matlab圖像處理平臺,以設計激光點云的三維測量系統(tǒng)為目標,展開激光束坐標獲取、點云數(shù)據(jù)配準、測量距離校正等相關內(nèi)容研究。通過激光測距原理,解析攝像頭成像與物體表面信息之間的幾何關系;采用Arduino微處理器完成掃描裝置的舵機控制;運用Matlab提供的校正工具對相機定標,減小相機邊緣畸變;利用灰度矩陣中的亮度最高的像素點,獲取激光束的坐標;使用極坐標配準方法,實現(xiàn)不同視場中三維點云數(shù)據(jù)的配準;根據(jù)多組距離值的測算,得到系統(tǒng)測距的校正參數(shù)。最終完成了激光掃描、點云配準、三維數(shù)據(jù)成像的測量系統(tǒng)設計,為低成本、高速度的激光掃描裝置研究提供典型范例。
關鍵詞: 三維測量; 激光掃描; 系統(tǒng)設計; 點云配準; 相機定標; 參數(shù)校正
中圖分類號: TN206?34; TP242.6+2? ? ? ? ? ? ? ?文獻標識碼: A? ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2020)14?0048?04
Design of 3D measurement system based on laser?point cloud
ZHANG Jingjing, BAI Xiao
(College of Computer and Information Engineering, Xinjiang Agricultural University, Urumqi 830052, China)
Abstract: The relevant contents of laser beam coordinate acquisition, point cloud data registration and measurement distance correction are studied based on the image processing platform using Matlab to design the measurement system of laser point cloud. The geometric relationship between camera imaging and object′s surface information is analyzed by means of the principle of laser ranging. The rudder control of the scanning device is completed by using the Arduino microprocessor. The camera is calibrated by the aligning tool provided by Matlab to reduce the camera′s image edge distortion. The coordinates of the laser beam are obtained by using the pixels with the highest brightness in the gray matrix. The registration of 3D point cloud data in different field of view is realized by means of the polar coordinate registration method. The calibration parameters of ranging of the system are obtained according to the measurement and calculation of multi?group distance values. The design of the measurement system with laser scanning, point cloud registration and 3D data imaging are completed, which provides a typical example for the research on low?cost and high?speed laser scanning device.
Keywords: 3D measurement; laser scanning; system design; point cloud registration; camera calibration; parameter correction
0? 引? 言
激光掃描是一種非接觸主動式快速獲取物體表面三維密集點云的技術,較之傳統(tǒng)的測繪方法,利用激光掃描對物體表面信息提取的方式具有數(shù)據(jù)量大、測量速度快和精度高等突出特點[1]。
掃描裝置通過對物體表面的掃射,能夠獲取具有三維坐標(x,y,z)的點云數(shù)據(jù),將被測物體的點云數(shù)據(jù)傳送至計算機進行圖像處理,即可實施多模式的圖像分析與研究[2?5]。
激光的線掃描分為水平和旋轉兩種方式,水平掃描是指首先固定x軸或y軸的運動軌道,啟動動力裝置后,通過帶動掃描設備沿著軌道運動,不斷地采集待測對象表面的z軸坐標信息,由此構成三維點云[6]。該技術在鐵軌損壞程度檢測、工件3D成像、考古文物修復重建、服裝設計、汽車制造業(yè)以及水下目標三維成像等諸多領域有廣泛應用[7?8]。
基于線掃描的三維激光器還能夠通過旋轉方式獲取待測對象的三維點云[9],然而由于旋轉中心的存在,一定程度上導致了測距誤差。本設計選擇在空間極坐標系下完成激光點云的數(shù)據(jù)配準,就激光旋轉方式測量某物體的表面信息而言,具備測量優(yōu)勢。
1? 激光掃描裝置的硬件及組成
1.1? 激光測距原理
系統(tǒng)的簡易激光掃描裝置主要包含相機、紅外線激光器、濾鏡、掃描桿等,激光測距過程中,激光束發(fā)射后的俯視效果如圖1所示。
圖1中,系統(tǒng)采用光學測距方法獲取點云[10]。首先將激光射線投射到待測對象表面,其光束將在掃描桿另一端的攝像頭中成像。當攝像頭捕捉到激光束或光斑后,將根據(jù)成像光點x軸像素值的不同,計算激光在待測對象表面反饋的深度信息。
對于固定的掃描裝置而言,下式參數(shù)即為已知數(shù)據(jù),則:
[q=f·sx]? ?(1)
[d=qsin β]? (2)
式中: [β]為激光器與旋轉軸的夾角,實驗裝置選取約83°;[s]為激光器中心與攝像頭中心點距離,實驗中固定為210 mm;[f]為攝像頭的焦距,取值6 mm;[x]指攝像頭獲得的水平方向的像素值;d為激光測得的距離。由式(1)求導得到:
[dqdx=-q2f·s]? ? (3)
由式(3)可知,[f·s]的值越小,越適合測量近距離的物體;反之則精度越好,測量距離越遠。
1.2? 簡易激光掃描裝置
基于低成本、便攜式設計要求,實驗中激光掃描裝置的主要部件包括CCD工業(yè)相機、線性激光器、Arduino微處理器、舵機等,其中處理器和舵機被置于底座,通過操縱桿與相機、激光器相連。此外,激光影像數(shù)據(jù)需送至上位機處理,微處理器通過串口控制舵機,由此完成掃描裝置連接,如圖2所示。
將上述部件固定于掃描裝置,旨在獲取激光掃描后待測對象的影像信息。限于光線強度和激光器的成本因素,實驗中將待測對象的掃射范圍控制在500~1 000 mm之內(nèi)。首先通過微處理器控制舵機轉動,逐幀變換掃射位置,且將舵機的掃射角度設定為0°~90°。與此同時,轉軸帶動攝像頭旋轉,在1 s內(nèi)獲取60幀激光影像,并從激光影像中提取線激光束坐標,經(jīng)拼接、配準構成待測物體單側表面的三維信息。
2? 激光點云的極坐標配準方法
基于掃描裝置得到的激光束分布于不同視場,激光配準過程需將不同視場的數(shù)據(jù)匹配到同一坐標系下,實驗中采用三維極坐標系完成激光點云的數(shù)據(jù)配準。
如圖3a)所示,[O′]為攝像頭透鏡中心點,[O]為旋轉中心,激光在攝像頭平面成像為[PP′],[f]為攝像頭焦距,攝像頭分辨率為640×480,x軸水平向右為正方向,y軸垂直向下為正方向,將攝像頭成像方式呈現(xiàn)到極坐標系下即為圖3b)所示。
以攝像頭獲取的任意激光點坐標(x,y)為例,計算極坐標中極徑[O′P]、高度角pitch與方向角[yaw]的方式如下:
1) 計算高度角pitch與極徑[O′P]:
[O′P′=f·s(Spix·x+c)]? ? ? (4)
式中:[Spix]為圖像中一個像素在成像平面的實際值;c為測距誤差校正參數(shù),則:
[pitch=arctanpp′f=arctany-4802·Spixf] (5)
[O′P=O′P′cos pitch]? ?(6)
2) 計算方向角[yaw]:
[O′L=O′P′·tan α]? ?(7)
[O′]為[P′]到LC的垂足,[α=90°-β],[OO′=O′L-OL],OL可以實際測量,那么:
[P′L′=O′P′2+O′L2]? (8)
[OP′=OO′2+O′P′2]? (9)
[yaw=π2-arccosOL2+OP′2-P′L22·OL·OP′]? ? (10)
3) 物體到旋轉中心的距離d為:
[d=OO′2+O′P2]? ?(11)
值得一提的是,極坐標中方向角[yaw]還可以根據(jù)掃描裝置中舵機的旋轉角度而定,如限定每幀激光畫面相對旋轉1°,即方向角[yaw]在1 s內(nèi)變化為60°。由圖3b)中不難看出,軸心[O]與透鏡中心[O′]不重合,旋轉過程中方向角[yaw]會存在固定偏差,計算中可采用c作為測距誤差校正值,本實驗中取值為2.818,該值的求解在3.3節(jié)中詳細論述。通過上述pitch、極徑[O′P]及[yaw]的計算,拼接獲得激光點云的三維極坐標,經(jīng)過空間轉換即可得到笛卡爾坐標(x,y,z)。
3? 系統(tǒng)測試與集成
3.1? 系統(tǒng)設計框架
根據(jù)激光點云的計算及配準要求,實驗中依次完成掃描裝置的安裝、舵機的控制、相機校正、線激光束坐標提取、點云數(shù)據(jù)配準、距離參數(shù)的修正、點云圖像的獲取等過程,系統(tǒng)整體設計框架如圖4所示。
圖4中,Arduino作為微控器除控制舵機旋轉外,還為線性激光器提供電源。基于Matlab圖像處理平臺,本設計運用其較強的圖像處理、矩陣運算能力實現(xiàn)激光掃描過程的點云計算。設計中,執(zhí)行掃描系統(tǒng)的初始化程序后,Matlab與Arduino聯(lián)合控制圖像采集、灰度變換、數(shù)據(jù)存儲過程。其中灰度矩陣進行一次變換后,即向串口發(fā)送命令控制舵機旋轉一次,依此循環(huán)獲取480×60個像素的灰度矩陣,將其存放于新建的坐標矩陣中,即可進行后續(xù)的距離計算與點云配準實驗。
3.2? 獲取線激光束坐標
依據(jù)激光測距原理,實驗中首先通過攝像頭獲取線激光束坐標。本設計采用的攝像頭的單個像元邊長為6 μm。為了減少光線干擾,實驗中在攝像頭前添加了650 nm的高通濾光片,通過調整攝像頭參數(shù),在Matlab中逐幀撲捉激光束圖像,如圖5所示。