吳正斌, 彭業(yè)萍, 曹廣忠, 曹樹鵬
(1.深圳大學(xué) 機(jī)電與控制工程學(xué)院,廣東 深圳 518060; 2.深圳大學(xué) 廣東省電磁控制與智能機(jī)器人重點(diǎn)實(shí)驗(yàn)室,廣東 深圳 518060)
隨著計(jì)算機(jī)視覺在諸多領(lǐng)域內(nèi)被廣泛應(yīng)用,快速、準(zhǔn)確獲取目標(biāo)物體所涵蓋的三維信息成為目前視覺研究領(lǐng)域所關(guān)注的問題。三維重建是指通過相機(jī)獲取目標(biāo)物體的多幅圖像,然后通過圖像上的像素信息得到每幅圖像間點(diǎn)的對(duì)應(yīng)關(guān)系以及空間映射關(guān)系,再通過點(diǎn)和空間兩者之間的關(guān)系得到目標(biāo)物體的三維信息,最終完成對(duì)目標(biāo)物體的三維重建。三維重建應(yīng)用范圍廣泛,在醫(yī)療[1]、工業(yè)檢測(cè)[2]、空間技術(shù)[3]等方面都有十分重要的應(yīng)用。與雙目[4]或者多目[5]立體視覺相比,單目立體視覺在成本、結(jié)構(gòu)及獲取圖片的方式等方面有明顯的優(yōu)勢(shì),通過對(duì)多幅圖像的處理可以完成對(duì)物體三維重建,達(dá)到多目立體視覺的效果。
目前,大多采用基于序列圖像[6-11]的方法進(jìn)行單目立體視覺的三維重建,此外,還有通過控制物體運(yùn)動(dòng)的方式進(jìn)行三維重建[12]。文獻(xiàn)[6]首先通過尺度不變特征轉(zhuǎn)換(scale-invariant feature transform,SIFT)算法對(duì)特征點(diǎn)進(jìn)行提取與匹配以獲取空間點(diǎn)在兩幅圖像上的投影點(diǎn),然后通過本質(zhì)矩陣分解得到圖像間的空間映射關(guān)系,再通過三角化初步獲得雙視圖的三維點(diǎn)云重建,通過多視圖位姿跟蹤算法將已構(gòu)造出的三維點(diǎn)與新增三維點(diǎn)進(jìn)行三維點(diǎn)融合,最終通過曲面重建獲取圖像完整形貌。但使用SIFT進(jìn)行角點(diǎn)提取與匹配的方法獲取到的匹配點(diǎn)數(shù)量少。因此,本文采用Shi-Tomasi角點(diǎn)提取[13]和Kanade-Lucas-Tomasi(KLT)跟蹤[14]的方法解決特征點(diǎn)匹配數(shù)量少的問題。文獻(xiàn)[7]基于攝影深度求解算法的序列圖像稀疏點(diǎn)三維重建算法,在求解3幅圖像上的匹配點(diǎn)時(shí),使用三焦點(diǎn)張量[15]計(jì)算3幅圖像的匹配點(diǎn),由于該方法求解3幅圖像匹配點(diǎn)過于復(fù)雜,因此本文對(duì)此融合方法進(jìn)行改進(jìn),通過KLT跟蹤法對(duì)第2幅圖像上的跟蹤點(diǎn)繼續(xù)跟蹤,從而獲得3幅圖像上的匹配點(diǎn),通過這些匹配點(diǎn)可以獲得圖像間的比例系數(shù),通過比例變換以及坐標(biāo)變換,最終完成目標(biāo)物體三維重建。
通過相機(jī)可以獲取物體的多幅圖像,每幅圖像上含有物體的大量信息,這些信息是以圖像點(diǎn)的形式存在,這些圖像點(diǎn)是物體在每幅圖像的投影點(diǎn)。本文首先通過張正友標(biāo)定法[16]獲取相機(jī)內(nèi)參,并對(duì)圖像校正,減少投影點(diǎn)因相機(jī)畸變而造成的誤差,通過Shi-Tomasi角點(diǎn)提取的方式得到第1幅圖像的特征點(diǎn),然后使用KLT跟蹤器對(duì)這些特征點(diǎn)在第2幅圖像上進(jìn)行跟蹤,從而得到在第2幅圖像上的跟蹤點(diǎn),由第1幅特征點(diǎn)與第2幅上的跟蹤點(diǎn)組成的點(diǎn)對(duì)就是匹配點(diǎn)對(duì),將其擴(kuò)展到整個(gè)圖像序列上,就可以獲得整個(gè)圖像序列上任意相鄰2幀圖像的匹配點(diǎn)對(duì),再對(duì)第2幅圖像上的跟蹤點(diǎn)進(jìn)行KLT跟蹤,得到在第3幅圖像上的跟蹤點(diǎn),由第1幅圖像上的匹配點(diǎn)與第2幅圖像以及第3幅圖像上的跟蹤點(diǎn)組成的點(diǎn)對(duì)就是空間點(diǎn)在3幅圖像上的投影點(diǎn)。
需要注意的是,任意相鄰圖像都需要經(jīng)過2步獲取匹配點(diǎn):第1步,通過Shi-Tomasi角點(diǎn)提取+KLT跟蹤獲取匹配點(diǎn);第2步,通過上幅圖像的跟蹤點(diǎn)+KLT跟蹤獲取匹配點(diǎn)。第1步是為了提供新的匹配點(diǎn)獲取新的三維點(diǎn)云,第2步是為了得到同一點(diǎn)在3幅圖像上的投影。
通過相鄰圖像上的投影點(diǎn)計(jì)算三維點(diǎn)云,由于是同一點(diǎn),在經(jīng)過坐標(biāo)變換后,就會(huì)相差一個(gè)比例變換,最終需求解出比例變換系數(shù)。但在跟蹤的過程中不可避免地引入一些誤匹配的點(diǎn),需要通過隨機(jī)抽樣一致(Random Sample Consensus,RANSAC)算法[17]來消除這些誤匹配的點(diǎn),最終得到每幅圖像間點(diǎn)的對(duì)應(yīng)關(guān)系。通過點(diǎn)的對(duì)應(yīng)關(guān)系可以獲得圖像空間映射關(guān)系,通過三角測(cè)量獲得物體深度信息,從而進(jìn)行圖像間的三維重建,并通過光束法平差(bundle adjustment,BA)算法[18]對(duì)重建結(jié)果優(yōu)化。
本文通過透視n點(diǎn)(Perspective-n-Point,PnP)算法得到圖像間三維重建模型的坐標(biāo)變換參數(shù),并通過3幅圖像公共點(diǎn)之間關(guān)系獲得比例變換參數(shù),最終通過坐標(biāo)變換與比例變換實(shí)現(xiàn)多幅圖像融合。多視圖三維重建流程圖如圖1所示。
圖1 多視圖三維重建流程圖
三維重建需要獲取空間點(diǎn)在不同圖像的投影點(diǎn)對(duì),但并非所有的投影點(diǎn)對(duì)都能夠被方便地提取出來。只有那些與周圍有明顯差異的點(diǎn),才能在2幅圖像中被尋找到,并組成投影點(diǎn)對(duì),這些有差異的點(diǎn)即特征點(diǎn)。圖像特征點(diǎn)能反映出圖像的本質(zhì)特征,可用于標(biāo)識(shí)圖像中的目標(biāo)物體,獲取到的特征點(diǎn)數(shù)目越多,越容易重構(gòu)出物體表面的輪廓。本文需要對(duì)多幀圖像進(jìn)行三維重構(gòu),因此需綜合考慮單幅圖片特征點(diǎn)提取算法的運(yùn)行時(shí)間。目前關(guān)于特征點(diǎn)獲取的方法有很多種,且有各自的優(yōu)缺點(diǎn),常用的算法有SIFT特征提取算法(簡(jiǎn)稱“SIFT算法”)、Surf特征點(diǎn)提取算法(簡(jiǎn)稱“Surf算法”)、Harris角點(diǎn)提取算法(簡(jiǎn)稱“Harris算法”)、Fast角點(diǎn)檢測(cè)算法(簡(jiǎn)稱“Fast算法”)。本文綜合考慮角點(diǎn)提取的數(shù)目以及單幅圖像提取的時(shí)間,最終選取Shi-Tomasi角點(diǎn)提取算法(Harris算法的改進(jìn)算法,簡(jiǎn)稱“Shi-Tomasi算法”)作為獲取特征點(diǎn)的算法,并在實(shí)驗(yàn)部分對(duì)這幾種算法進(jìn)行比較。
(1)
其中,I(e)、J(e)分別為圖像I、J上的像素值;w(e)為窗口W的函數(shù)。為了ε取得最小值,將(1)式按照偏移量d的方向求偏導(dǎo),使其偏導(dǎo)數(shù)為0,即
(2)
其中
將(2)式展開,其等式可以簡(jiǎn)化為:
Zd=f,
Z=?WggTw(e)de,
f=?W[J(e)-I(e)]gw(e)de。
解得偏移量d=Z-1f。
對(duì)得到的第2幅圖像J的跟蹤點(diǎn)通過上述方法繼續(xù)跟蹤,就獲得空間點(diǎn)在第3幅圖像上的跟蹤點(diǎn),從而獲取空間點(diǎn)在3幅圖像上的投影點(diǎn)。
基本矩陣F是一個(gè)3×3的矩陣,表述了空間點(diǎn)與投影點(diǎn)對(duì)之間的關(guān)系?;揪仃嚩x為:
x′TFx=0
(3)
本質(zhì)矩陣E是歸一化圖像坐標(biāo)下F的特殊形式。本文采用的多幅圖片是從同一個(gè)相機(jī)獲得的,因此2幅圖像相機(jī)內(nèi)參相同,則E與F之間關(guān)系為:
E=KTFK
(4)
其中,K為相機(jī)內(nèi)參。
將E進(jìn)行奇異值分解(singular value decomposition,SVD)可得:
E=UΣVT=Udiag(1,1,0)VT
(5)
其中,U、V為單位正交陣;Σ為奇異值矩陣。由文獻(xiàn)[19],可得空間映射關(guān)系有如下4種可能解:
P1=[UMVT|u3],P2=[UMVT|-u3],
P3=[UMTVT|u3],P4=[UMTVT|-u3]
(6)
其中,u3為U的第3列向量;
這4種解中只有1種解是合理的,由E作標(biāo)定重構(gòu)4種可能的解,如圖2所示。
圖2 由E作標(biāo)定重構(gòu)4種可能的解
4種解分別對(duì)應(yīng)于圖2中某一種情況,但具體對(duì)應(yīng)關(guān)系未知。從圖2可以看出,圖2a滿足重構(gòu)出來的空間點(diǎn)在2幅圖片前方這一條件,因此當(dāng)空間映射關(guān)系處于圖2a的情況下,空間映射關(guān)系的解為正確解。
僅通過單幅圖片無法獲得像素的深度信息,需要通過三角測(cè)量的方式估計(jì)像素點(diǎn)的深度信息。
(7)
其中,λ1、λ2分別為投影點(diǎn)x、x′的深度。令
x1=K-1x,x2=K-1x′
(8)
其中,x1、x2分別為投影點(diǎn)x、x′在歸一化平面的坐標(biāo)。將(8)式代入(7)式,得到x1、x2的關(guān)系為:
λ1x1=λ2Rx2+t
(9)
將(9)式左、右兩側(cè)分別叉乘x1,得
λ1x1×x1=0=λ2x1×Rx2+x1×t
(10)
圖像序列上每2幅圖像可以得到1組空間點(diǎn),但由于空間點(diǎn)參考的世界坐標(biāo)系不同,需要獲得不同坐標(biāo)系下空間坐標(biāo)點(diǎn)的坐標(biāo)關(guān)系。在計(jì)算平移向量t的過程中,在相差一個(gè)比例的意義下求解得到的結(jié)果,在獲得物體三維空間坐標(biāo)時(shí)也相應(yīng)地相差一個(gè)尺度因子,因此,獲得不同坐標(biāo)系下重建三維點(diǎn)的坐標(biāo)關(guān)系與比例關(guān)系顯得尤為重要。
PnP算法通過求解3D點(diǎn)與2D點(diǎn)之間的關(guān)系求解相機(jī)坐標(biāo)系與世界坐標(biāo)系的關(guān)系,由于1.4節(jié)中空間點(diǎn)的坐標(biāo)系與前一幀圖像拍攝位置的相機(jī)坐標(biāo)系重合,通過求解空間點(diǎn)與其在下一幀圖像的投影點(diǎn)的關(guān)系,即可求得不同坐標(biāo)系下重建三維點(diǎn)的坐標(biāo)關(guān)系。高效透視n點(diǎn)(Efficient PnP,EPnP)[20]算法是PnP問題的一種求解方法,對(duì)于N個(gè)特征點(diǎn),只要N>3就能夠求解坐標(biāo)變換Rreal和treal。
(11)
即可求解比例關(guān)系k。
(12)
其中,Rn、tn分別為第n幀融合點(diǎn)與第n+1幀圖像之間的旋轉(zhuǎn)矩陣與平移向量。
本文通過機(jī)器視覺實(shí)驗(yàn)臺(tái)獲取物體旋轉(zhuǎn)時(shí)的視頻,從中選取圖像序列進(jìn)行實(shí)驗(yàn)。本次實(shí)驗(yàn)的機(jī)器視覺實(shí)驗(yàn)平臺(tái)如圖3所示,型號(hào)是XCY-SL-02。實(shí)驗(yàn)臺(tái)由相機(jī)、光源及旋轉(zhuǎn)臺(tái)3部分組成,其中相機(jī)的型號(hào)為MV-CA020-20GC。
圖3 機(jī)器視覺實(shí)驗(yàn)臺(tái)
使用的軟件平臺(tái)為Matlab 2018a。相機(jī)的固定位置距離實(shí)驗(yàn)平臺(tái)的高度為12 cm,而在實(shí)驗(yàn)時(shí)物體擺放的最高高度為2 cm,因此相機(jī)應(yīng)傾斜擺放,使得物體在相機(jī)的中心。通過張正友標(biāo)定法對(duì)相機(jī)內(nèi)參與畸變參數(shù)進(jìn)行標(biāo)定,相機(jī)內(nèi)參為:
本文通過SIFT算法、Surf算法、Fast算法、Harris算法及Shi-Tomasi算法對(duì)圖像進(jìn)行特征點(diǎn)提取,通過手動(dòng)調(diào)節(jié)閾值使得提取角點(diǎn)結(jié)果更佳。第1幀圖像5種方法提取的效果圖如圖4所示。從圖4可以看出,Fast算法和Harris算法相比于其他算法來說,角點(diǎn)分布不均勻。為了使得最終三維重建的形貌均勻,本文將不采用這2種算法。
圖4 不同特征點(diǎn)提取方法效果圖
5種算法的特征點(diǎn)數(shù)量、運(yùn)行時(shí)間見表1所列。從表1可以看出,使用SIFT算法需要花費(fèi)211 s,而其余算法不超過1 s。雖然Surf算法相比于Shi-Tomasi算法花費(fèi)時(shí)間更少,而且滿足角點(diǎn)均勻分布這一條件,但是Shi-Tomasi算法犧牲了一定時(shí)間獲取更多角點(diǎn),綜合考慮特征點(diǎn)數(shù)目與運(yùn)行時(shí)間2個(gè)方面,本文選取Shi-Tomasi算法進(jìn)行角點(diǎn)檢測(cè)。
表1 5種算法特征點(diǎn)提取結(jié)果對(duì)比
獲取2幅圖像匹配點(diǎn)對(duì)有匹配與跟蹤2種方法,現(xiàn)在大多數(shù)三維重建算法是在SIFT+匹配的基礎(chǔ)上進(jìn)行的,本文分別對(duì)第1幀與第2幀通過SIFT+匹配、SIFT+KLT跟蹤、Shi-Tomasi+KLT跟蹤3種方法獲取匹配點(diǎn)。3種方法特征點(diǎn)匹配與跟蹤結(jié)果對(duì)比見表2所列。由表2可知,傳統(tǒng)的SIFT+匹配的方法獲取匹配點(diǎn)數(shù)目少,而改進(jìn)后的Shi-Tomasi+KLT跟蹤的匹配點(diǎn)數(shù)目多,因此本文采取Shi-Tomasi+KLT跟蹤方法獲取匹配點(diǎn),通過該改進(jìn)方法能夠有效增加匹配點(diǎn)數(shù)目。
表2 3種方法特征點(diǎn)匹配與跟蹤結(jié)果對(duì)比
對(duì)第1幀圖像使用KLT跟蹤得到2幀圖像匹配效果圖,如圖5所示。這2幀圖像上有2 572對(duì)特征點(diǎn),通過x′TFx可以獲取每個(gè)點(diǎn)重投影誤差的平均值為0.014。從圖5可以清晰看到物體的運(yùn)動(dòng)軌跡,這與真實(shí)的運(yùn)動(dòng)相符。將第2幀圖像通過跟蹤得到的2 572個(gè)特征點(diǎn)繼續(xù)在第3幀圖像上進(jìn)行二次跟蹤,得到3幅的公共點(diǎn)有2 491個(gè)。
圖5 第1幀和第2幀特征點(diǎn)匹配效果
獲取2幅圖像匹配點(diǎn)后,就可以初步獲得各幀之間三維點(diǎn)云圖,并通過BA算法校正三維點(diǎn)。部分圖像間三維重建效果圖以及正視圖,如圖6所示。圖片間三維重建可以展示物體的形貌,達(dá)到三維重建的預(yù)期效果。
圖6 部分圖像間三維重建效果圖(左)與正視圖(右)
最終將50幀的視頻序列進(jìn)行融合,不同角度的最終融合效果如圖7所示。
圖7 不同角度的融合效果圖
因?yàn)槲矬w與旋轉(zhuǎn)臺(tái)接觸,所以在與旋轉(zhuǎn)臺(tái)交接處三維重建的效果不好。
本文通過Shi-Tomasi角點(diǎn)提取算法得到特征點(diǎn),通過KLT跟蹤獲取圖像間點(diǎn)的對(duì)應(yīng)關(guān)系,通過本質(zhì)矩陣分解以及三角化初步完成圖像間三維點(diǎn)云重建,獲取不同坐標(biāo)系之間關(guān)系,完成了多視圖三維重建。
本文采用Shi-Tomasi+KLT跟蹤的方法獲取的2幅圖像匹配點(diǎn)對(duì)數(shù)量為2 572對(duì),傳統(tǒng)SIFT+匹配的方法獲取的2幅圖像匹配點(diǎn)對(duì)數(shù)量為1 322對(duì),本文方法特征點(diǎn)匹配的數(shù)目更多。
在獲取3幅圖像公共點(diǎn)方法上,本文通過第1幀圖像對(duì)第2幀采用KLT跟蹤,然后通過第2幀圖像上的跟蹤點(diǎn)對(duì)第3幀圖像進(jìn)行KLT跟蹤。使用KLT跟蹤獲取匹配點(diǎn),與三焦點(diǎn)張量方法相比更簡(jiǎn)單。
本文沒有對(duì)得到的點(diǎn)云進(jìn)行曲面重建。