,,
(1. 浙江工業(yè)大學 計算機科學與技術(shù)學院,浙江 杭州 310023;2. 浙江工業(yè)大學 國際學院,浙江 杭州 310023)
點云獲取作為一項基礎(chǔ)技術(shù),常被應用于逆向工程[1-3]、測繪遙感[4-6]、工業(yè)測量[7-8]、體感技術(shù)[9]和農(nóng)業(yè)[10-12]等領(lǐng)域.
點云獲取方法分為主動式和被動式兩類,其中主動式方法主要分為結(jié)構(gòu)光法、飛行時間法和激光散斑法,被動式方法主要基于立體視覺的原理,利用視差求解測量點的深度信息[13].一般地,基于立體視覺的點云獲取方法需要進行圖像間的特征點匹配,因此不適用于表面特征點較少或難以匹配的被測物[14].飛行時間法需要對激光脈沖的往返時間進行高精度的計時,對設備的要求較高[15].而基于線結(jié)構(gòu)光的點云獲取方法作為一種主動式、非接觸的測量方法,具有無破壞性、精度高、實時性好和抗干擾能力強等優(yōu)點[16-17],因而被廣泛采用.
傳統(tǒng)的基于線結(jié)構(gòu)光的測量系統(tǒng),需要事先完成相機標定,得到相機內(nèi)外參數(shù)和畸變信息.內(nèi)部參數(shù)表示了相機坐標系和圖像坐標系之間的映射關(guān)系,外部參數(shù)表示了世界坐標系和相機坐標系之間的映射關(guān)系.然后令線結(jié)構(gòu)光投射被測物,令相機采集光條紋圖像,根據(jù)線結(jié)構(gòu)光和相機的空間幾何關(guān)系進行建模.現(xiàn)有方法主要依據(jù)兩種模型,即三角測量模型[18-19]和透視投影模型[19-20].
結(jié)合相機的內(nèi)外參數(shù)和建模得到的空間幾何關(guān)系,確定光條紋的二維圖像和被測物的三維坐標之間的映射關(guān)系,從而計算出被測物表面的三維點云.
基于標定物的相機標定方法,需要已知尺寸的標定物作為參照.常用的標定物有等間距實心圓陣列圖案[20]、國際象棋盤圖案[21]等.利用張正友標定法[22]或其他方法可以求解相機內(nèi)外參數(shù).除了這類方法,還有相機自標定法[23]、主動視覺相機標定法[24]等.
盡管現(xiàn)在相機在出廠時已經(jīng)內(nèi)置了去畸變的方法,但是由于傳統(tǒng)的線結(jié)構(gòu)光測量模型的精度需要,必須求解理想圖像平面與實際圖像平面之間的變換關(guān)系[25],因此相機標定步驟對于傳統(tǒng)的線結(jié)構(gòu)光測量方法是必不可少的.一般地,相機標定只考慮對相機成像影響最大的徑向畸變[26],所得到的畸變矩陣與相機鏡頭實際的物理特性難以做到完全吻合.
線結(jié)構(gòu)光的三角測量模型如圖1所示.
圖1 線結(jié)構(gòu)光的三角測量模型Fig.1 Triangulation model of linear sturctured light
基于相機的小孔成像模型[27],某測量點Pw(xw,yw,zw)在圖像中的投影為點Pi(xi,yi).該測量點的三維坐標為
(1)
式中:d為線結(jié)構(gòu)光光源與鏡頭中心的距離;θ為線結(jié)構(gòu)光投射方向與相機光軸的夾角;f為鏡頭的焦距.
線結(jié)構(gòu)光的透視投影模型如圖2所示.
圖2 線結(jié)構(gòu)光的透視投影模型Fig.2 Perspective projection model of linear structured light
某測量點Pw(xw,yw,zw)經(jīng)過相機內(nèi)外參數(shù)的變換,在圖像平面中映射為點Pi(xi,yi),此時Pw,Pi,相機光心Oc三點共線.因為Pw也是光平面中的一點,該測量點的三維坐標為
(2)
式中:λ為比例系數(shù);A為相機的內(nèi)部參數(shù);R,T分別為從世界坐標系到相機坐標系的旋轉(zhuǎn)矩陣和平移矢量,即相機的外部參數(shù);a,b,c,d分別為光平面方程的4 個系數(shù).
傳統(tǒng)的線結(jié)構(gòu)光測量方法對于相機標定精度非常敏感.根據(jù)傳統(tǒng)測量模型的特點,對于標定物的測量誤差或其他因素導致的相機標定誤差,將在測量結(jié)果中被迅速放大[28].為此,筆者提出了一種不需要相機標定的點云獲取方法.該方法不經(jīng)過相機坐標系,以單條線結(jié)構(gòu)光投射被測物,直接計算光平面在圖像坐標系與世界坐標系之間的映射關(guān)系,從而將光條紋的二維圖像變換為三維坐標.
為了計算線結(jié)構(gòu)光光平面在坐標系之間的映射關(guān)系,需要在光平面中設置4 個控制點,并獲取這4個控制點在世界坐標系中的空間坐標和在圖像坐標系中的像素坐標.
筆者利用2 塊相互平行且與線結(jié)構(gòu)光投射方向垂直的平板,在空間中設置所需的4 個控制點.令線結(jié)構(gòu)光線段分別投射至這2 塊平板,空間中將產(chǎn)生2 條相互平行且不等長的光條紋線段,如圖3(a)所示.令這2 條光條紋線段的共計4 個端點為控制點,以其中1 個控制點為世界坐標系原點,線結(jié)構(gòu)光掃描方向為世界坐標系x軸方向,光條紋線端方向為y軸方向,線結(jié)構(gòu)光投射方向為z軸方向,建立三維世界坐標系.根據(jù)刻度尺測量得到的光條紋長度、平板間的距離和線結(jié)構(gòu)光的投射距離等信息,計算出這4 個控制點的空間坐標.令相機以固定視角分別采集得到這2 條光條紋線段的圖像,對其進行中心線提取操作后,提取4 個端點,從而獲得這4 個控制點在圖像中的像素坐標.
另一個十分有效的方法是基于Dewar[29]和West[30]等的“拉絲法”.如圖3(b)所示,在空間中設置4 條平行的細絲,并令它們垂直于光平面,為方便后續(xù)計算,可令其構(gòu)成1 個矩形.線結(jié)構(gòu)光投射在這4 條細絲上將產(chǎn)生4 個光點,并被相機同時捕捉,由此得到4 個控制點的像素坐標.與雙平面法類似,以某一光點為世界坐標系原點,根據(jù)刻度尺測量得到的空間中4 條細絲的間距等信息建立三維坐標系,并由此確定4 個控制點的空間坐標.
圖3 4 個控制點的設置Fig.3 Arrangement of four control points
在計算機視覺領(lǐng)域,對于空間中同一平面,以不同視角觀察所得到的兩張圖像,它們之間的映射關(guān)系被稱為單應性(Homography).
對于線結(jié)構(gòu)光光平面,假設其可見,它在相機中所成的圖像與其空間中的正視圖能夠被1 個單應矩陣聯(lián)系起來,即對于光平面中的任意一點,其在圖像中投影點的像素坐標(x1,y1)與其在空間中正視圖的坐標(x2,y2)應滿足
(3)
式中:H為單應矩陣,它是1 個3×3的矩陣;h11,h12等為H的元素.如果令其乘以任意一個非零比例因子,原有的單應性不會受到影響,因此一般令矩陣右下角的元素h33=1以實現(xiàn)歸一化[31].在單應矩陣的9 個元素中,有8 個元素能夠自由取值,即1 個單應矩陣具有8 個自由度.
式(3)寫成非齊次形式為
(4)
由式(4)可知:每一個控制點的像素坐標和空間坐標可以提供關(guān)于所求單應矩陣元素的2 個方程.為了計算所求單應矩陣的唯一解,即為了求解8 個未知數(shù),至少需要4 個控制點提供8 個方程.利用2.1節(jié)方法,在空間中設置4 個控制點,并獲得它們的空間坐標和像素坐標,代入式(4),并以直接線性變換(DLT)[31]或奇異值分解(SVD)[32]等算法,計算所求單應矩陣.
令線結(jié)構(gòu)光投射于被測物表面,利用相機在適當位置采集光條紋圖像,該圖像可以被看作是光平面在相機中所成的像,且光平面與被測物相交,截交線(Line of section)即是光條紋.
圖4 利用單應性獲取深度信息示意圖Fig.4 Illustration of acquiring depth information using homography
根據(jù)事先在光平面中設置的4 個控制點,計算將相機采集到的光平面斜視圖變換為正視圖的單應矩陣,并校正圖像中的透視失真,如圖4所示.變換后的光條紋圖像與被測物真實的截面圖為放縮關(guān)系,且放縮變換的比例因子可由控制點間的像素長度與實際長度計算得到.然后根據(jù)之前建立的三維坐標系,確定此時光平面的位置,從而將光平面正視圖聯(lián)系到三維坐標系,并將光條紋上的點轉(zhuǎn)換成空間坐標.
相機的位置和朝向決定了它所能采集到的光平面的范圍,如圖5所示(為了效果更好,給光平面添加了網(wǎng)格),圖5中4 個標記點表示以2.1節(jié)中雙平面法在空間中光平面上設置的4 個控制點.如果令相機光軸與線結(jié)構(gòu)光投射方向較平行,則可以采集到較大范圍的光平面,這在測量過程中體現(xiàn)為量程較大.但是因為相機分辨率的限制,量程越大,測量精度越低.相反地,如果令相機光軸與線結(jié)構(gòu)光投射方向較垂直,則量程變小,測量精度變高.
圖5 相機位置的選取Fig.5 Options of camera’s position
因此,對于不同的測量需求,可以適當改變相機的位置和朝向,以達到測量范圍與測量精度之間的平衡.因相機移動,使其與光平面的相對位置發(fā)生改變,所以需要根據(jù)4 個控制點在新視角下所成像的像素坐標重新計算單應矩陣.
經(jīng)過之前的工作,可以將線結(jié)構(gòu)光在被測物表面的光條紋還原為被測物的深度信息.為了獲得更完整的點云數(shù)據(jù),需要令線結(jié)構(gòu)光掃描被測物.一般地,如圖6所示,有4 種掃描方式:1) 固定相機,平移線結(jié)構(gòu)光;2) 固定相機,旋轉(zhuǎn)線結(jié)構(gòu)光;3) 固定兩者的相對位置,一起平移;4) 固定兩者的相對位置,一起旋轉(zhuǎn).
對于1 個N幀的待測圖像序列,圖6(a,b)需要計算N個單應矩陣,效率較低.而圖6(c,d)因為相機與線結(jié)構(gòu)光光平面的相對位置沒有發(fā)生改變,所以只需計算1 個單應矩陣.另外,圖6(b,d)因為在空間中進行了旋轉(zhuǎn)操作,所以需要利用極坐標系進行適當?shù)淖鴺诵拚?例如筆者實驗中采用投影儀作為線結(jié)構(gòu)光的光源,可以看作是以圖6(b)進行線結(jié)構(gòu)光掃描.
圖6 線結(jié)構(gòu)光掃描方式Fig.6 Methods of scanning by linear structured light
實驗采用MP-CL1型投影儀作為線結(jié)構(gòu)光的光源.因為單應性的計算和應用均不需要對相機進行內(nèi)外參數(shù)的標定,在測量過程中只需保持投影儀與相機的相對位置不變,對相對位置本身沒有要求,所以實驗中使用普通智能手機和三腳架進行圖像采集.
為驗證筆者方法的有效性,實驗中分別以球體、圓柱體和長方體為被測物進行精度測試.實驗環(huán)境和點云獲取結(jié)果如圖7所示.
圖7 精度測試實驗及結(jié)果Fig.7 Precision testing and results
得到點云數(shù)據(jù)后,分別對各個物體的點云進行擬合,計算出物體在空間中的位置,然后以物體的實際尺寸對點云進行誤差分析,結(jié)果如表1所示.實驗證明:即使測量過程中使用刻度尺或平面稍不平整,產(chǎn)生了較大誤差,但是筆者方法所得到的結(jié)果仍然具有較高的精度,即筆者方法具有較強的魯棒性.
依據(jù)筆者方法,分別對蘋果、香蕉和盆栽進行點云獲取實驗.實驗環(huán)境和點云獲取結(jié)果如圖8所示.由于遮擋問題,一次掃描只能得到被測物的部分點云.因此需要適當移動被測物或掃描系統(tǒng)以獲得多組數(shù)據(jù),經(jīng)點云配準可以得到關(guān)于被測物的更完整的點云.
表1 表面點云獲取實驗的誤差Table 1 Errors of the point cloud acquisition
圖8 點云獲取實驗及結(jié)果Fig.8 Experiment of point cloud acquisition and results
提出了一種基于單應性視角變換的點云獲取方法.利用單條線結(jié)構(gòu)光投射出光平面,通過單應性將光條紋圖像直接變換為被測物截面圖,從而讀出被測物的深度信息.實驗證明了該方法的有效性.相比傳統(tǒng)線結(jié)構(gòu)光測量方法,筆者方法的主要優(yōu)點:1) 不需要相機標定.因為單應性的計算和應用與相機的內(nèi)外參數(shù)無關(guān).求解單應矩陣,即可不經(jīng)過相機坐標系,完成從圖像坐標系到世界坐標系的直接映射.2) 適用范圍廣.通過調(diào)整相機位置,可以按需求進行測量范圍和測量精度間的取舍.3) 魯棒性強.筆者方法原理簡潔,容錯性強.即使使用較粗糙的器材仍然能夠達到可觀的精度,可用于以低成本快速搭建三維點云獲取系統(tǒng).