黃會(huì)明, 郭 進(jìn), 段康容
(1.西南財(cái)經(jīng)大學(xué) 天府學(xué)院,四川 綿陽(yáng) 621000; 2.四川大學(xué) 電子信息學(xué)院,四川 成都 610065)
傳統(tǒng)的三維(3D)測(cè)量方式在滿足高精度和高質(zhì)量的要求方面,具有一定的局限性,如不便攜帶、需要很多輔助設(shè)備、無(wú)法快速方便獲得物體紋理信息等,如Breuckman B等人[1]提出的相位輪廓技術(shù),需要工業(yè)相機(jī)和投影設(shè)備輔助進(jìn)行;His-Yung Fenga等人[2]提出的基于線激光三維重建方法,也需要工業(yè)相機(jī)和激光發(fā)射設(shè)備等。上述方法均只能獲取到小范圍物體的三維數(shù)據(jù),且輔助設(shè)備價(jià)格昂貴,需要專門的操作技術(shù)人員。
基于近景攝影測(cè)量學(xué)和光流[3]的三維測(cè)量方式恰好滿足了上述需求。本文采用這種測(cè)量方式,只需用一臺(tái)單反相機(jī)對(duì)物體從不同角度拍攝多幅圖片獲取三維信息。使用一些人工的標(biāo)記點(diǎn)通過(guò)自標(biāo)定的方法標(biāo)定相機(jī)的內(nèi)參數(shù);拍攝需要重建的物體圖像,通過(guò)物體自身的特征點(diǎn),如SIFT特征信息[4],完成相機(jī)的外參數(shù)的標(biāo)定;利用光流檢測(cè)算法計(jì)算出不同角度拍攝的兩幅圖像中每個(gè)像素點(diǎn)的光流值;基于兩幅圖像光流場(chǎng)的變化值獲得像素精度的匹配點(diǎn),根據(jù)匹配點(diǎn)和相機(jī)的標(biāo)定數(shù)據(jù)重建出物體的三維信息。
對(duì)內(nèi)參數(shù)的標(biāo)定采用自標(biāo)定算法[5],首先進(jìn)行射影重建,經(jīng)過(guò)仿射變換后可以將射影重建轉(zhuǎn)換到射影空間下,最后用歐氏變換將仿射空間轉(zhuǎn)換到歐氏空間下從而實(shí)現(xiàn)歐氏三維重建[6]。
根據(jù)針孔相機(jī)模型的成像原理,在理想的情況下拍攝到的圖像點(diǎn)與鏡頭中心和物體三維點(diǎn)具有三點(diǎn)共線性,根據(jù)這個(gè)特性,可以使用齊次坐標(biāo)矩陣表示
(1)
式中 (u,v)為圖像的二維坐標(biāo),fu和fv分別為相機(jī)在圖像的橫軸和縱軸上的基于像素的焦距,(u0,v0)為圖像的中心點(diǎn)坐標(biāo),R和T分別為相機(jī)坐標(biāo)到世界坐標(biāo)的轉(zhuǎn)換關(guān)系,即兩個(gè)坐標(biāo)系的旋轉(zhuǎn)和平移向量,(X,Y,Z)為物體在世界坐標(biāo)系下的三維坐標(biāo)。
實(shí)際上空間三維點(diǎn)到圖像二維點(diǎn)的成像過(guò)程中存在一定的偏差,可以表示為(Δu,Δv)。另外,相機(jī)在生產(chǎn)的過(guò)程中是存在一定的加工誤差,形成了相機(jī)的光學(xué)畸變,可以將這種畸變加入到相機(jī)的模型中去,將共線方程改寫為
(2)
(3)
為避免圖像在采集過(guò)程中出現(xiàn)誤差,采用了基于光束法平差的方法對(duì)相機(jī)的內(nèi)參數(shù)、外參數(shù)和空間三維坐標(biāo)捆綁一起進(jìn)行非線性優(yōu)化[7,8]。根據(jù)最小二乘的原理,將優(yōu)化的目標(biāo)函數(shù)設(shè)置為
(4)
利用目標(biāo)函數(shù),對(duì)式(3)使用泰勒公式進(jìn)行展開(kāi),并取其一階項(xiàng),結(jié)果中圖像二維坐標(biāo)(u,v)在實(shí)際成像過(guò)程中會(huì)存在一定的誤差,加入一個(gè)改正數(shù)(vu,vv),即
u+vu=(u)+du,v+vv=(v)+dv
(5)
獲得攝影測(cè)量中的誤差方程,其矩陣形式為
(6)
式中 矩陣B和矩陣C分別為圖像中的二維點(diǎn)對(duì)相機(jī)內(nèi)外參數(shù)的偏導(dǎo)數(shù)和圖像二維點(diǎn)對(duì)物體三維點(diǎn)的偏導(dǎo)數(shù);矩陣δp和矩陣δt均為改正數(shù),即相機(jī)內(nèi)外參數(shù)的改正數(shù)和物體三維點(diǎn)的改正數(shù);矩陣L為圖像觀測(cè)值。通過(guò)優(yōu)化式(6)就可以計(jì)算出相機(jī)的內(nèi)參數(shù)矩陣。
在雙視圖重建中,外參數(shù)的標(biāo)定一般采用基于本質(zhì)矩陣E進(jìn)行,假設(shè)一對(duì)歸一化后的相機(jī)矩陣P=[I0]和P′=[R′T],與歸一化相機(jī)矩陣對(duì)應(yīng)的基礎(chǔ)矩陣即為本質(zhì)矩陣[10],包括了兩個(gè)相機(jī)之間的相對(duì)空間位置信息,具體形式為
E=[T]×R
(7)
式中 [T]×為平移向量的反對(duì)稱矩陣。E通過(guò)奇異值分解(singular value decomposition,SVD)為Udiag(1,1,0)VT,第一個(gè)相機(jī)投影矩陣為P=[I0],第二個(gè)相機(jī)的投影矩陣P′具有如下4種可能選擇
P′=[UWVT|u3];[UWVT|-u3];
[UWTVT|u3];[UWTVT|-u3]
(8)
外參數(shù)的標(biāo)定可以使用5點(diǎn)法[9]進(jìn)行計(jì)算,首先在兩幅圖像上使用SIFT特征提取方法,獲取到兩張圖片大于5個(gè)匹配的二維圖像點(diǎn),使用匹配點(diǎn)可以計(jì)算出兩個(gè)相機(jī)的外參數(shù)。
依據(jù)三維物體上的一個(gè)點(diǎn)在兩幅圖像上具有旋轉(zhuǎn)位移不變性[11,12],將光流定義為從不同角度拍攝的物體產(chǎn)生的矢量場(chǎng)。設(shè)一個(gè)圖像二維點(diǎn)坐標(biāo)為(x,y),可以表示為空間中某一個(gè)三維點(diǎn)(X,Y,Z)在圖像上投影的二維坐標(biāo),并且該圖像點(diǎn)在時(shí)刻t對(duì)應(yīng)的圖像灰度信息為I(x,y,t)。設(shè)在一個(gè)很短的時(shí)間內(nèi)即t+Δt時(shí)圖像點(diǎn)發(fā)生了一定的位移,即從(x,y)處運(yùn)動(dòng)了(u,v)的距離,到達(dá)點(diǎn)(x+u,y+v)處,若在很短的時(shí)間Δt內(nèi)圖像點(diǎn)從一點(diǎn)運(yùn)動(dòng)到另外一點(diǎn),認(rèn)為圖像點(diǎn)對(duì)應(yīng)的圖像灰度值保存不變。
設(shè)I∶Ω?R3→R表示圖像序列,w=(u,v,1)就是時(shí)間t,t+1時(shí)刻圖像的位移矢量?;叶戎挡蛔兗僭O(shè)有一個(gè)決定性的缺點(diǎn):對(duì)自然場(chǎng)景中的亮度的微小變化很敏感。因此,在灰度值上允許一些小的變化,有助于確定一個(gè)標(biāo)準(zhǔn),在這個(gè)標(biāo)準(zhǔn)下當(dāng)圖像之間產(chǎn)生了位移矢量也不會(huì)引起其值的變化,即圖像梯度
(9)
在計(jì)算單個(gè)像素的位移矢量時(shí)需要考慮到周圍像素的貢獻(xiàn)值,在估計(jì)某個(gè)像素的光流場(chǎng)時(shí)假設(shè)在不同的時(shí)刻圖像的平滑度一致,且可以采用多分辨率的方法逐步實(shí)現(xiàn)。最后使光流場(chǎng)的函數(shù)在某一局部位置收斂到最小。
從上述2種假設(shè)中可以設(shè)置一個(gè)能量函數(shù)E1(u,v),包含了圖像的灰度信息和梯度信息,即
E1(u,v)=
(10)
式中X=(x,y,t)T,W=(u,v,1)T,λ為假設(shè)兩者之間的權(quán)重。
對(duì)于圖像多分辨率的光滑數(shù)學(xué)模型,可以通過(guò)定義圖像梯度場(chǎng)能量函數(shù)E2(u,v)來(lái)實(shí)現(xiàn),對(duì)二維像素坐標(biāo)和時(shí)間分別求偏導(dǎo),即
E2(u,v)=
(11)
對(duì)于兩幅圖片求光流矢量(u,v)的應(yīng)用中,總能量函數(shù)是能量函數(shù)E1(u,v)和E2(u,v)的加權(quán)和
E(u,v)=E1(u,v)+δE2(u,v),δ>0
(12)
使能量函數(shù)M達(dá)到最小的(u,v)即為所求的兩幅圖像之間的像素點(diǎn)的位移矢量。
三維重建主要依據(jù)三角測(cè)量原理,已知不同位置的兩幅圖像上的一組對(duì)應(yīng)點(diǎn)m1,m2,其與各自相機(jī)的光心連線o1m1,o2m2必定交于空間一點(diǎn)M,此點(diǎn)即為此組對(duì)應(yīng)點(diǎn)的空間物點(diǎn),如圖1所示。
圖1 三角測(cè)量原理
根據(jù)光流計(jì)算方法可以很容易地找到兩幅圖片上的匹配點(diǎn),如第一副圖片上一個(gè)像素點(diǎn)為m1=(u1,v1,1),計(jì)算的位移矢量為w=(u,v,1),則另一幅圖片上的匹配點(diǎn)為
m2=(u2,v2,1)=(u1+u,v1+v,1)
(13)
兩個(gè)相機(jī)的投影矩陣分別表示為P1=K1[P1T1],P2=K2[R2T2],根據(jù)透視投影公式可得
(14)
式中λ1,λ2為非零比例因子,消去后,整理為矩陣形式
(15)
依據(jù)最小二乘原理即可求出三維點(diǎn)的坐即
X=(ATA)-1ATb
(16)
實(shí)驗(yàn)過(guò)程只需要使用一臺(tái)單反相機(jī),焦距35 mm,相機(jī)分辨率1 024×1 280。拍攝距離5 m,視場(chǎng)大小4 m×5 m。
圖2 編碼標(biāo)記點(diǎn)
圖3 假山圖像SIFT點(diǎn)匹配
3)光流計(jì)算方法計(jì)算兩幅圖像上的光流場(chǎng):根據(jù)光流場(chǎng)來(lái)對(duì)像素級(jí)別的稠密點(diǎn)進(jìn)行匹配,可以得到兩幅圖像上稠密的二維圖像匹配點(diǎn)。根據(jù)三角測(cè)量原理,利用內(nèi)參和外參以及圖像上的匹配點(diǎn)進(jìn)行三維點(diǎn)的重建,并獲取到每個(gè)三維點(diǎn)對(duì)應(yīng)的圖像顏色值。重建的效果如圖4和圖5。
圖4 假山三維數(shù)據(jù)
圖5 石壁三維數(shù)據(jù)
本文創(chuàng)新地在攝影測(cè)量原理基礎(chǔ)上使用光流來(lái)替代圖像點(diǎn)的匹配,只需采集幾張圖像即可重建出物體的稠密點(diǎn)三維信息。避免了傳統(tǒng)方法使用額外的輔助設(shè)備,此方法可以方便地用于3D打印和虛擬現(xiàn)實(shí)的三維數(shù)據(jù)獲取中。