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