田婷婷,高瑞貞,張京軍
河北工程大學(xué)機(jī)械與裝備工程學(xué)院,河北 邯鄲 056038
三維重建在移動機(jī)器人自主導(dǎo)航系統(tǒng)、航空及遙感測量、工業(yè)自動化系統(tǒng)、虛擬現(xiàn)實以及醫(yī)療診斷等各個領(lǐng)域有著廣闊的應(yīng)用前景[1]。目前,三維重建方法主要有三種。(1)利用建模軟件進(jìn)行手工重建。通過三維CAD、3DMax 等軟件進(jìn)行三維重建,需要預(yù)先確定建模對象在重建場景中的位置姿態(tài)、尺寸大小和紋理特征等信息[2]。(2)利用深度掃描儀、激光器、雷達(dá)等設(shè)備來進(jìn)行三維重建。這種方法自動獲取對象建模信息,數(shù)據(jù)比較精確,但相關(guān)設(shè)備昂貴,不易攜帶。(3)利用圖像進(jìn)行三維重建。通過對單張圖像(單目立體視覺)或多張圖像(雙目立體視覺或者多目立體視覺)進(jìn)行特征檢測與匹配,獲得深度信息進(jìn)行三維重建。單目立體視覺需要提取特征數(shù)據(jù),因而過程繁瑣。雙目立體視覺通過立體匹配獲得視差圖,根據(jù)視差圖計算出物體的三維坐標(biāo),進(jìn)而實現(xiàn)三維重建[3,4]。
立體匹配是雙目立體視覺的關(guān)鍵步驟,易受遮擋、視差間斷等因素影響,導(dǎo)致在視差圖中存在較多的誤匹配區(qū)域[5]。改善視差圖的方法主要有兩種:一種是優(yōu)化立體匹配算法,能獲得較好的視差圖[6]。Hoc DK,et al.[7]通過修改SAD(Sum of Absolute Differences)算法,利用感興趣像素的邊緣像素估計視差值的差異,計算深度圖信息,具有減少像素的搜索數(shù)量、節(jié)省匹配時間和提高匹配效率等優(yōu)點。Hamzah RA,et al.[8]提出了高精度三維表面重建立體匹配算法,獲得了較高的匹配效率,同時有效抵抗了輻射度差異和邊緣失真。另一種方法是對視差圖進(jìn)行后處理,直觀反映立體匹配效果。Chao Z,et al.[9]利用灰度直方圖對左右視圖處理,使左右視圖灰度值近似,提高立體匹配的準(zhǔn)確性,獲得比較連續(xù)的視差圖。Nieradka G,et al.[10]首先對視差圖進(jìn)行邊緣檢測獲得邊緣圖像,其次進(jìn)行均勻性計算確定均勻性圖像,再次根據(jù)邊緣圖像和均勻性圖像采用形態(tài)學(xué)操作確定誤匹配區(qū)域,然后使用模糊中值算法去除誤匹配區(qū)域,最后利用拉普拉斯插值算法對視差圖增強。為了有效地進(jìn)行誤匹配區(qū)域的判別和消除,李從利等[11]結(jié)合序列圖像拼接的匹配算法,給出了基于同名區(qū)域面積差、區(qū)域重心同位、區(qū)域重心距離比及配準(zhǔn)參數(shù)復(fù)用四種誤匹配區(qū)域的消除方法。趙春暉等[12]利用基于特征點主方向的尺度信息的統(tǒng)計優(yōu)化方法來消除誤匹配,該算法對圖像的旋轉(zhuǎn)和縮放變換具有良好的魯棒性,對于具有重復(fù)結(jié)構(gòu)的圖像匹配效果也較好。
綜上所述,視差圖中的誤匹配區(qū)域直接影響三維重建效果,本文提出一種視差圖后處理優(yōu)化算法,用于消除誤匹配區(qū)域獲得平滑的視差圖,進(jìn)而實現(xiàn)良好的三維重建。文中首先采用標(biāo)準(zhǔn)數(shù)據(jù)集中的圖像對進(jìn)行立體匹配得到視差圖;其次采用基于區(qū)域的插值算法去除誤匹配;然后采用三角網(wǎng)格線性插值算法對視差圖進(jìn)行填補;最后根據(jù)三角測量原理進(jìn)行三維重建,實驗結(jié)果表明本文所提算法能夠較好地實現(xiàn)三維重建。
根據(jù)視差圖中匹配點對的數(shù)量劃分,主要分為稠密匹配和稀疏匹配[13]。稀疏匹配是特征匹配的自然延伸,針對一些特征點恢復(fù)其三維空間坐標(biāo),獲得的視差圖比較稀疏,有效信息較少,不利于重建三維結(jié)構(gòu)。而稠密匹配則恢復(fù)圖像中每一個像素點的空間坐標(biāo),與稀疏匹配方法相比可獲得較好的視差圖[14]。
立體匹配過程如圖1 所示。在左側(cè)圖像中,(Lu,Lv)處的像素對應(yīng)于右側(cè)圖像中(Lu-d,Lv)處的像素,其中d∈[dmin,dmax]表示匹配像素的搜索范圍,為了可靠獲得左側(cè)圖像中選定像素在右側(cè)圖像中的對應(yīng)點,需要創(chuàng)建一個關(guān)于選定像素的模板匹配區(qū)域T,其大小設(shè)置為W×W。水平移動模板匹配區(qū)域T穿過右側(cè)圖像。與模板匹配區(qū)域T最為相似的那個位置就是對應(yīng)點,從而計算出視差值。由于圖像對之間的尺度和姿態(tài)固定不變,采用此方法可以減小搜索范圍,提高匹配效率。
圖1 立體匹配Fig.1 Stereo matching
在模板匹配過程中,常用零均值歸一化互相關(guān)算法(Zero-mean normalized cross-correlation,ZNCC),進(jìn)行相似性判斷。ZNCC 計算式如下:
其中,I1[u,v]和I2[u,v]分別為左右圖像對應(yīng)匹配區(qū)域的中心點像素,I-1和I-2分別是左右圖像對應(yīng)匹配區(qū)域的像素平均值。
ZNCC 取值在[-1,1]之間,1 表示左右圖像匹配區(qū)域完全相同,-1 表示左右圖像匹配區(qū)域完全不同,通常認(rèn)為,ZNCC 值大于0.8 的區(qū)域匹配是良好匹配[15]。以標(biāo)準(zhǔn)數(shù)據(jù)集Middlebury[16]中的Bowling1圖像對和Rocks1 圖像對如圖2 所示為例,進(jìn)行立體匹配,剔除ZNCC 值小于0.8 的不良匹配區(qū)域,獲得視差圖如圖3 所示。
圖3 視差圖顯示,物體的連接處有明顯的不連續(xù)現(xiàn)象,并且伴有較多明亮點。這些亮點一般是誤匹配區(qū)域,導(dǎo)致三維重建效果較差。
圖2 標(biāo)準(zhǔn)圖像對Fig.2 Standard image pair
圖3 視差圖Fig.3 Disparity map
插值方法能夠?qū)σ暡顖D像素值進(jìn)行插補[17],預(yù)估視差圖特定區(qū)域的像素值,平滑視差圖,消除誤匹配區(qū)域。本節(jié)采用基于區(qū)域的插值算法和三角網(wǎng)格線性插值算法對視差圖進(jìn)行后處理。
在圖像處理中,插值算法主要有雙線性插值和雙三次插值[18]。雙線性插值對待插值點周圍相鄰的4 個像素點進(jìn)行插值計算,得出待插值點的像素值,插值公式如下:
其中,i、j均為非負(fù)整數(shù);f(i+u,j+v)表示待插值點像素;f(i,j)表示在原圖像中(i,j)位置像素點的像素值;u、v均為[0,1)區(qū)間的浮點數(shù),分別表示待插值點與最鄰近像素點在水平和豎直方向的距離。雙三次插值又稱立方卷積插值,插值函數(shù)計算公式為:
其中,I(X,Y)表示待插值點像素;aij(i,j=0,1,2,3)表示距離I 最近的16 個像素位置;W(i),W(j)分別表示橫縱坐標(biāo)的權(quán)重。
與雙線性插值相比,雙三次插值利用采樣點周圍16 個點的灰度值做三次插值,不僅考慮到4 個直接相鄰點的灰度影響,而且還考慮到各個鄰點間的灰度值變化率的影響。
由于雙三次插值要對周圍16 個相鄰的插值點做插值,如果要對整幅圖像的像素均采用同樣的算法,計算量會很大。為了減少計算量,考慮到圖像在比較平坦的區(qū)域像素值變化較小,在這部分區(qū)域可以采用雙線性插值算法,在像素變化明顯的區(qū)域采用雙三次插值算法,這樣可以在減小計算量的同時得到較好的視差圖。鑒于此,本節(jié)采用基于區(qū)域的插值算法,即定義一個閾值T,利用閾值T對圖像進(jìn)行區(qū)域劃分。首先計算待插值點周圍4 個領(lǐng)域點的方差D,方差D的計算公式為:
其中,d11、d12、d21、d22分別為待插值點在原圖像中對應(yīng)點的領(lǐng)域4 點的視差值;E表示該4 個點視差值的均值。
如果計算所得方差D小于設(shè)定的閾值T(本文選取T=20),則采用雙線性插值算法,反之則用雙三次插值計算。
經(jīng)過ZNCC 算法和基于區(qū)域的插值算法處理后,視差圖中產(chǎn)生空值(NaN)區(qū)域,即視差圖中的黑色區(qū)域。三角網(wǎng)格線性插值算法能夠根據(jù)空值區(qū)域周圍的視差值估計空值區(qū)域的視差值。三角網(wǎng)格線性插值算法主要根據(jù)數(shù)據(jù)點來產(chǎn)生三角網(wǎng)格,然后再使用“Linear”、“Cubic”、“Nearst”等方法來進(jìn)行插值,只要NaN 點附近有數(shù)據(jù),那么就可以利用附近的數(shù)據(jù)插值計算得到NaN 點的值。
雙目立體視覺[19]是由攝像機(jī)從不同角度同時獲得被測物體的兩幅圖像,采用視差原理和三角測量原理,根據(jù)相機(jī)的內(nèi)外參數(shù)以及圖像各個特征點的對應(yīng)關(guān)系恢復(fù)其三維空間坐標(biāo)值(圖4)。
圖4 雙目立體視覺成像原理Fig.4 Binocular stereo vision imaging principle
在該成像原理中,X,Y,Z為相機(jī)坐標(biāo)系,通常將左相機(jī)坐標(biāo)系當(dāng)作世界坐標(biāo)系,x-y為圖像坐標(biāo)系,u-v為像素坐標(biāo)系。設(shè)空間點P=(X,Y,Z)在左右兩個成像平面上形成的投影點分別為P′和P?,其在像素坐標(biāo)系下的坐標(biāo)分別為P′=(u1,v1),P?=(u2,v2);在圖像坐標(biāo)系下的坐標(biāo)分別為P′=(x1,y1),P?=(x2,y2);兩點在平面X-Z的投影點分別為P′1和P?1。左、右相機(jī)中心OL和OR之間的距離為基線B,在圖像平面的投影點分別為O1和O2。圖像平面與相機(jī)中心的距離為f,因此OLO1=ORO2=f。經(jīng)過立體校正后,P′與P?的縱坐標(biāo)相同,即v1=v2,y1=y2。
根據(jù)相機(jī)投影成像模型[20]有
圖中P1為空間點P 在OLXZ平面的投影,因為三角形P1P′1P?1與三角形P1OLOR相似,根據(jù)相似三角形原理[21],可得:
上式u1-u2=d,為對應(yīng)點的視差值,其值即為上部分所求的視差圖上每點的像素值。
點O1的像素坐標(biāo)為O1=(u0,v0),可得x1=u1-u0,y1=v1-v0。根據(jù)式(5)(6)可得空間點P的三維坐標(biāo):
根據(jù)雙目立體視覺的成像原理,再結(jié)合攝像機(jī)的內(nèi)外參數(shù)[22]以及視差圖可以得到物體的三維坐標(biāo),恢復(fù)物體的三維結(jié)構(gòu)。
分別用雙線性插值和雙三次插值以及基于區(qū)域的插值算法對原視差圖進(jìn)行處理,處理后的視差圖如表1 所示,算法的運行時間如表2 所示。
表1 各種算法處理后的視差圖Table 1 Disparity diagram after processing by various algorithms
表2 各個算法運行時間對比Table 2 Comparison of running time of each algorithm
對比表1 中的橢圓區(qū)域發(fā)現(xiàn),雙三次插值算法處理后的視差圖明亮區(qū)域明顯減少。根據(jù)表2,對比基于區(qū)域的插值算法與雙三次插值處理后的視差圖發(fā)現(xiàn),基于區(qū)域的插值算法在不影響視差圖質(zhì)量的情況下,運算時間還少于雙三次插值運行時間,這樣降低了對這個視差圖插值處理的計算量。
對基于區(qū)域的插值算法處理后的視差圖施加三角網(wǎng)格線性插值算法獲得視差圖如圖5 所示。圖5 中視差圖的黑色區(qū)域明顯比基于區(qū)域的插值算法處理后的視差圖中黑色區(qū)域減少,得到的視差圖比較稠密并且比原來平滑。
表3 為視差圖中NaN 值像素點所占比例,由表中數(shù)據(jù)可以得出經(jīng)過本文算法處理后的NaN 值數(shù)量減少,因此得到的視差圖比原來稠密且平滑。
圖5 三角網(wǎng)格線性插值算法處理后的視差圖Fig.5 Parallax diagram after processing by triangular mesh linear interpolation algorithm
表3 NaN 值所占比例Table 3 Proportion of NaN values
重建效果如圖6 所示,對比圖6 中的重建效果發(fā)現(xiàn),經(jīng)過視差圖平滑處理后,三維重建模型片狀點云現(xiàn)象減少,點云之間不再孤立,重建模型整體拼接更加自然,從而驗證了本文算法的有效性。
圖6 三維重建效果Fig.6 3D reconstruction effect
利用雙目立體視覺進(jìn)行三維重建具有廣闊的應(yīng)用前景。立體匹配是雙目立體視覺的關(guān)鍵步驟,易受遮擋、視差間斷等因素影響,導(dǎo)致在視差圖中存在較多的誤匹配區(qū)域,直接影響三維重建效果。為了消除誤匹配區(qū)域、獲得平滑的視差圖,進(jìn)而實現(xiàn)良好的三維重建,本文主要從四個方面展開了研究:(1)分析立體匹配原理和過程,以標(biāo)準(zhǔn)數(shù)據(jù)集中的Bowling1 和Rocks1 圖像對為示例,立體匹配獲得視差圖,并指出誤匹配區(qū)域;(2)為了保證視差圖質(zhì)量,同時提高算法的處理效率,采用基于區(qū)域的插值算法,引入閾值:在像素變化較小的平坦區(qū)域,采用雙線性插值算法;在像素變化明顯的區(qū)域,采用雙三次插值算法;(3)經(jīng)過ZNCC 匹配算法和基于區(qū)域的插值算法處理后,視差圖中產(chǎn)生空值(NaN)區(qū)域,采用三角網(wǎng)格線性插值算法由空值區(qū)域周圍的視差值估計空值區(qū)域,實現(xiàn)視差圖填補;(4)利用視差圖和三角測量原理進(jìn)行三維重建。通過實驗驗證本文算法,實驗結(jié)果表明本文所提算法能夠很好的實現(xiàn)三維重建。
本文所提方法能夠較好地恢復(fù)物體的三維結(jié)構(gòu),同時減少了計算量、提高了處理效率。