北京信息科技大學(xué)儀器科學(xué)與光電工程學(xué)院 王新 張曉青 郭陽寬
在物體的三維形貌測量中,點(diǎn)云拼接對三維重建具有至關(guān)重要的意義。本文提出一種多角度被測物圖像點(diǎn)云拼接算法,在相機(jī)投影儀旋轉(zhuǎn)不同角度的情況下,拍攝被測物體多角度的圖像信息,設(shè)置被測物體外圍的圓孔輔助進(jìn)行點(diǎn)云拼接,并采用ICP算法提高拼接效果。實驗結(jié)果表明,本方法拼接效果好且拼接速度有明顯提升。
隨著國內(nèi)外測量技術(shù)的不斷發(fā)展與生活需求的快速增長,通過點(diǎn)云數(shù)據(jù)進(jìn)行客觀世界三維物體數(shù)字化建模的技術(shù)逐漸應(yīng)用到各行各業(yè)中,并獲得了良好的反響。當(dāng)使用三維掃描設(shè)備掃描物體時,由于物體遮擋、視野范圍受限等因素,在固定視角下很難通過一次掃描便獲取物體表面完整的三維信息,因此在三維重建的實現(xiàn)中需要進(jìn)行點(diǎn)云拼接。點(diǎn)云拼接一般分為點(diǎn)云粗拼接[1-4]和點(diǎn)云精拼接[5]。粗拼接適用于多角度點(diǎn)云角度相差較大的情況,依據(jù)多角度點(diǎn)云之間的對應(yīng)點(diǎn)縮小點(diǎn)云之間角度和距離的差別,使其粗略合并在一起,點(diǎn)云粗拼接的精度一般不高,但能很好的提高點(diǎn)云整體拼接的速度。點(diǎn)云精拼接是指按照特定的準(zhǔn)則作為輸入,通過算法迭代[6]不斷縮小點(diǎn)云拼接誤差值從而實現(xiàn)多角度點(diǎn)云的精確拼接。在進(jìn)行多角度點(diǎn)云拼接時,一般先進(jìn)行點(diǎn)云粗拼接,將粗拼接的結(jié)果作為精拼接的初始值。
在工程應(yīng)用中常常需要測量機(jī)械零件的三維形貌,機(jī)械零件大多表面光滑,缺乏紋理特征,重復(fù)的結(jié)構(gòu)較多,且對精度要求很高,測量過程不能造成零件臟污或缺損,不適用于在零件上粘貼標(biāo)志點(diǎn)后提取特征描述子進(jìn)行拼接的方法。本文將基于光柵數(shù)字投影的結(jié)構(gòu)光三維測量技術(shù)應(yīng)用到機(jī)械零件的三維無損檢測,采用旋轉(zhuǎn)平臺帶動相機(jī)—投影儀進(jìn)行旋轉(zhuǎn),得到機(jī)械零件多個角度的點(diǎn)云,利用測量區(qū)域外的圓孔實現(xiàn)機(jī)械零件點(diǎn)云的拼接。
為了實現(xiàn)單目光柵投影系統(tǒng)自動形成完整的點(diǎn)云且不用在零件上貼標(biāo)志點(diǎn),本文采取在檢測區(qū)域外圍制造圓孔,通過底部光源實現(xiàn)圓孔角度的識別,進(jìn)而實現(xiàn)多角度點(diǎn)云的粗拼接。識別圓孔提取圓心的處理速度相對于從三維點(diǎn)云上提取變換矩陣的方法更快。
機(jī)械零件點(diǎn)云粗拼接步驟如圖1所示。
圖1 點(diǎn)云粗拼接步驟圖Fig.1 Point cloud coarse stitching step diagram
在檢測區(qū)域外圍設(shè)置19個圓孔,其中2個圓孔的間隔是其他圓孔間隔的二倍,從而實現(xiàn)圓孔檢測時起始方向的判定。設(shè)置旋轉(zhuǎn)平臺的旋轉(zhuǎn)角度為5個,工業(yè)相機(jī)采集完光柵投影的圖像后,會對圓孔進(jìn)行圖像采集,采集第一角度的圓孔圖像后對圓孔圖像進(jìn)行灰度直方圖計算,其中灰度值主要集中在0~50,不容易區(qū)分圓孔邊界。為此對該圖像進(jìn)行灰度圖拉伸,拉伸后灰度值范圍在0~255,增大了圓孔邊緣灰度變化,如圖2所示,有利于提高后續(xù)圓孔識別精度。
圖2 圓孔圖像灰度拉伸結(jié)果Fig.2 Gray stretching results of circular hole image
對圖像進(jìn)行高斯濾波,去除環(huán)境光以及其他干擾,減少誤差累計傳遞,濾波結(jié)果如圖3所示。對圖像進(jìn)行二值化并進(jìn)行連通域統(tǒng)計,去除過大或者過小的區(qū)域,結(jié)果如圖4所示。
圖3 高斯濾波結(jié)果Fig.3 Gaussian filtering result
圖4 二值化結(jié)果Fig.4 Binarization results
對圖像進(jìn)行霍夫圓檢測,通過限定圓的大小,提取圓孔所在角度,圓心保存為二維坐標(biāo)點(diǎn)集P2[i](i=1...19)。檢測圓孔外輪廓的結(jié)果如圖5所示。將檢測的圓心通過相機(jī)-投影儀標(biāo)定參數(shù)轉(zhuǎn)換成三維坐標(biāo),儲存到三維坐標(biāo)點(diǎn)集P3[i](i=1...19),用于之后平移量的確定。將各圓孔的圓心P2[i]進(jìn)行圓形擬合,確定所有圓孔形成大圓的中心O,結(jié)果如圖6所示。
圖5 圓孔輪廓提取結(jié)果Fig.5 Round hole contour extraction results
圖6 大圓圓心提取結(jié)果Fig.6 Extraction of large circle center results
將圓孔圓心P2[i]分別與大圓圓心O進(jìn)行斜率計算,確定每個圓孔圓心的角度。在計算過程中,由于圓孔圓心可能出現(xiàn)相對于大圓圓心的四個象限中,所以應(yīng)分4種情況進(jìn)行計算。計算得到的各圓孔角度進(jìn)行排序,找取其中相差36°的兩個圓孔圓心,以順時針方向的圓孔圓心為始,對P2[i ]和P3[i]進(jìn)行排列。同理可得其他角度的P2[i ]和P3[i ]點(diǎn)集,第一角度與其他角度求得的P2[i]點(diǎn)集中第一點(diǎn)的角度差為旋轉(zhuǎn)角度。以第一角度為基準(zhǔn),對第二角度的三維點(diǎn)集P3[i]進(jìn)行旋轉(zhuǎn)得到結(jié)果如圖7所示,可以看出兩組P3[i]方向已經(jīng)一致。將第一角度和其他角度的三維點(diǎn)P3[i]坐標(biāo)之間進(jìn)行求差值取平均計算,得到其他角度點(diǎn)云相對第一角度點(diǎn)云在x、y、z三個軸上的平移量。以第一角度為基準(zhǔn),對第二角度的三維點(diǎn)集進(jìn)行平移得到結(jié)果如圖8所示,可以看出兩組P3[i]基本重合。
圖7 第二角度三維點(diǎn)集旋轉(zhuǎn)結(jié)果Fig.7 Second angle 3D point set rotation results
圖8 第二角度三維點(diǎn)集平移結(jié)果Fig.8 Second angle 3D point set translation results
對第二角度的點(diǎn)云進(jìn)行旋轉(zhuǎn)平移,結(jié)果如圖10所示,與第一角度點(diǎn)云如圖9所示,圓孔位置基本一致,點(diǎn)云之間進(jìn)行互補(bǔ)。
圖9 第一角度點(diǎn)云Fig.9 First angle 3D points
圖10 變換后第二角度點(diǎn)云Fig.10 Second angle point cloud after transformation
零件點(diǎn)云的粗拼接使多角度的零件點(diǎn)云在經(jīng)過旋轉(zhuǎn)平移之后,與第一角度的點(diǎn)云基本重合,但多角度點(diǎn)云之間還存在偏差。為了使多角度點(diǎn)云拼接更加精準(zhǔn),還需要用ICP算法進(jìn)行迭代拼接。
ICP算法流程圖如圖11所示。
圖11 ICP算法流程圖Fig.11 ICP algorithm flow chart
將第一角度和其他四個角度進(jìn)行拼接之后的零件點(diǎn)云如圖12所示,零件完整點(diǎn)云部分地方冗余,主平面與側(cè)面的點(diǎn)云不均勻,需要對零件完整點(diǎn)云進(jìn)行精簡,零件點(diǎn)云進(jìn)行精簡之后的結(jié)果如圖13所示。
圖12 完整點(diǎn)云Fig.12 Complete point cloud
圖13 完整點(diǎn)云精簡結(jié)果Fig.13 Complete point cloud simplification results
通過相機(jī)—投影儀在旋轉(zhuǎn)平臺上旋轉(zhuǎn),采集多角度圖像,在檢測區(qū)域外圍設(shè)定圓孔,使用識別圓孔提取圓心的方法進(jìn)行點(diǎn)云的粗拼接,再使用ICP算法進(jìn)行點(diǎn)云精拼接,并通過實驗驗證了方案和算法的可行性。