徐海濤,譚兆湛
(華南理工大學(xué) 廣州學(xué)院,廣州 510800)
三維掃描是集光、機(jī)、電和計(jì)算機(jī)技術(shù)于一體的技術(shù),主要用于對(duì)物體空間外形和結(jié)構(gòu)及色彩進(jìn)行掃描,以獲得物體表面的空間坐標(biāo)。它能夠?qū)?shí)物的立體信息轉(zhuǎn)換為計(jì)算機(jī)能直接處理的數(shù)字信號(hào),為實(shí)物數(shù)字化提供了相當(dāng)方便快捷的手段。
利用Kinect 進(jìn)行掃描,會(huì)有一個(gè)可見面和一個(gè)隱藏面。假設(shè)有一個(gè)點(diǎn)P 在隱藏面,其空間坐標(biāo)是P(x,y,z),如圖1。
圖1
我們需要通過(guò)不同方向的拍照來(lái)重建整個(gè)物體,并在同一個(gè)空間坐標(biāo)系中獲得全部點(diǎn)來(lái)確定這個(gè)物體。因此,讓平臺(tái)旋轉(zhuǎn)一定角度α,使得P 點(diǎn)對(duì)Kinect 可見。在前一次的拍照中,點(diǎn)P 確定于其坐標(biāo)P(x,y,z)。當(dāng)平臺(tái)旋轉(zhuǎn)后,P 的坐標(biāo)相應(yīng)發(fā)生變化變成P(x′,y′,z′)。如果知道平臺(tái)相對(duì)于前一次拍照旋轉(zhuǎn)的角度,可以通過(guò)基本的三角關(guān)系容易由P(x′,y′,z′)計(jì)算出原來(lái)坐標(biāo)中P 點(diǎn)的坐標(biāo)。如果平臺(tái)繞Y 軸的旋轉(zhuǎn)角度為α,可得到如下轉(zhuǎn)換方程:
圖2
圖3 電路圖
旋轉(zhuǎn)平臺(tái)的設(shè)計(jì)是利用齒輪傳動(dòng)來(lái)實(shí)現(xiàn),如圖2。右邊的小齒輪連接舵機(jī),帶動(dòng)中間的大齒輪轉(zhuǎn)動(dòng),傳動(dòng)比為5∶1。左邊小齒輪是連接電位器的,用來(lái)輸出角度信息,系統(tǒng)采用arduino 單片機(jī)進(jìn)行控制,電路如圖3。
舵機(jī)的控制程序如下:
角度控制程序如下:
從Processing 中讀回當(dāng)前角度信息,利用map()函數(shù)把角度信息轉(zhuǎn)換為舵機(jī)的目標(biāo)角度。
在Processing 中,定義變量shotNumber,如下:
float[]shotNumber=new float[3];
shotNumber 用要定義拍照的次數(shù),這里我們讓物體
每轉(zhuǎn)120°拍照一次,因此定義為3,程序如下:
利用Processing 輸出“*.ply”格式的點(diǎn)云數(shù)據(jù)。首先,輸出“ply”作為開頭,然后標(biāo)注所輸出的“ply”格式的類型(ascii 或二進(jìn)制),再以“comment”為開始為文件添加注釋,如下:
接著輸出點(diǎn)云的個(gè)數(shù),以及它們的特征。這里,我們輸出的是每個(gè)點(diǎn)的坐標(biāo)與顏色。因此聲明六個(gè)特征變量:x、y、z、red、green、blue,最后結(jié)束聲明,如下:
執(zhí)行Processing 程序后,得到物體每個(gè)點(diǎn)的坐標(biāo)與顏色特征數(shù)據(jù):
得到物體的點(diǎn)云數(shù)據(jù)后,利用Meshlab 對(duì)點(diǎn)云進(jìn)行網(wǎng)格化,重建物體的三維模型,并生成相應(yīng)格式的三維模型文件“*.ply”,如圖4。
圖4
本文介紹了旋轉(zhuǎn)式三維掃描器的設(shè)計(jì),是利用Arduino 控制平臺(tái)的旋轉(zhuǎn),利用Kinect 傳感器對(duì)旋轉(zhuǎn)平臺(tái)上的物體表面進(jìn)行掃描,并用Processing 輸出物體的空間坐標(biāo)數(shù)據(jù),再通過(guò)MeshLab 重建曲面,輸出一定格式的三維模型文件,如“*.ply”或“*.stl”直接用以三維打印、或供其他CAD 軟件使用。
[1] MELGARER. Arduino and Kinect Projects[M].Apress.Apr 2012.
[2] 余濤.Kinect 應(yīng)用開發(fā)實(shí)戰(zhàn):用最自然的方式與機(jī)器對(duì)話[M].北京:機(jī)械工業(yè)出版社,2013.