孫延坤, 李彩林, 王佳文, 蘇本婭, 崔志婷
(山東理工大學(xué)建筑工程學(xué)院, 淄博 255000)
計算機技術(shù)經(jīng)過數(shù)十年的不斷發(fā)展,雙目立體視覺作為一種非接觸性的測量技術(shù),被廣泛運用于航天航空、三維重建、機器人導(dǎo)航、安防監(jiān)控等領(lǐng)域[1-2]。雙目立體視覺關(guān)鍵技術(shù)之一即為立體匹配,由于影像中通常存在光照和紋理結(jié)構(gòu)變化的問題,利用傳統(tǒng)的立體匹配算法極易出現(xiàn)大量的誤匹配等問題,制約著后續(xù)應(yīng)用的范圍及精度。因此,對弱紋理區(qū)域和視差不連續(xù)區(qū)域匹配精度的研究受到廣大學(xué)者的青睞。雙目立體視覺獲取空間物體三維信息的流程主要包括圖像獲取、攝像機標(biāo)定、圖像矯正、立體校正、立體匹配、生成深度圖像[3],如圖1所示。
圖1 雙目立體視覺流程Fig.1 Binocular stereo vision process
Zahih等[4]為了提高算法精度,提出基于非參數(shù)變換的方法,同時克服了光照不同與幾何變化對灰度值的影響。Birchfield等[5]采用灰度絕對差(absolute difference,AD)作為匹配代價,可以較好地反映像素點之間的灰度變化,不足之處在于該算法對光照變化產(chǎn)生的噪點十分敏感,魯棒性較差。李志等[6]提出一種彩色Census變換匹配算法,提高對不同光照變化的魯棒性,但是存在視差邊緣匹配不準(zhǔn)確的缺陷。Hirschmüller[7]提出一種介于局部算法與全局算法之間的半全局立體匹配(semi-global matching,SGM)算法。雙目立體像對采用基于互信息的匹配成本計算策略來提升匹配效率,通過優(yōu)化最小能量函數(shù)并且進行多個方向代價聚合來提高計算精度,但復(fù)雜度較高。
綜合考慮上述算法的優(yōu)缺點,針對弱紋理區(qū)域和視差不連續(xù)區(qū)域較難處理以及受噪聲和光照變化等復(fù)雜干擾因素的影響下極易產(chǎn)生誤匹配等問題,提出了利用局部匹配絕對誤差和(sum of absolute differences, SAD)算法在灰度信息及紋理豐富區(qū)域匹配速度快、計算效率高和Census變換對圖像輻射差異具有魯棒性的優(yōu)勢,將SAD和Census算法融合替代單一匹配代價來改進傳統(tǒng)的立體匹配算法,同時采用簡單十字交叉方法進行代價聚合,通過后處理優(yōu)化初始視差圖,進而得到最終效果良好的視差圖。
以獲得的二維數(shù)字圖像為出發(fā)點,獲取空間物體三維幾何信息的過程之中,相機標(biāo)定是十分重要的環(huán)節(jié)。采用簡單靈活得到廣泛使用的張正友平面攝像機標(biāo)定方法[8-9]。相機與標(biāo)準(zhǔn)的標(biāo)定板都允許在任意方向移動,利用不少于3個不同的視角圖像就可以獲取相機的內(nèi)外參數(shù),便于實現(xiàn)又可以得到相對較好的定標(biāo)精度。由于相機移動以及外界環(huán)境的影響,相機無法避免獲取帶有畸變的影像,而對畸變的糾正主要是針對徑向畸變。雙目立體匹配利用Bouguet立體校正[10],在左右視圖中通過極線約束將尋找匹配點的搜索范圍從二維平面縮小到一維直線搜索,并且獲得嚴格水平行對準(zhǔn)的左右視圖。立體像對利用一定的相似性測度算法,一旦確定了匹配點,即可獲得三角測量原理中的視差值,從而恢復(fù)真實客觀世界中該點的深度信息?,F(xiàn)采用Scharstein等[11]的算法思想,如圖2所示,將立體校正后的立體像對通過匹配代價計算、代價聚合、視差選擇和視差優(yōu)化4個階段,即可以獲取匹配效果良好、錯誤匹配少的高精度視差圖。
圖2 立體匹配流程Fig.2 Stereo matching process
SAD算法具有計算速度快和實時性能好的優(yōu)點,其核心思想是把左右圖像中匹配點每個像素對應(yīng)數(shù)值之差的絕對值求和,并評估左右圖像塊之間的相似度。SAD算法計算公式為
(1)
式(1)中:IL(x,y)、IR(x,y)表示左右視圖中像點(x,y)位置的像素灰度值;d為視差值。用i、j遍歷匹配窗口中的每個像素,每進行一次運算d的數(shù)值會發(fā)生變化。匹配窗口的構(gòu)建如圖3所示,其中,PL為左目參考圖像,PR為右目待匹配圖像,并且左右視圖Y軸相等,在X軸存在水平位移。左視圖像PL和右視圖像PR分別以中心像素點(x0,y0)、(x0+d,y0)構(gòu)建尺寸大小為M×N的匹配窗口WL和待匹配窗口WR。然后,統(tǒng)計兩匹配窗口內(nèi)像素灰度,并求取WL與WR中所有像素差的絕對值。根據(jù)相似性度量函數(shù)在預(yù)先設(shè)置的視差范圍內(nèi),從若干可能選取的匹配窗口中尋找最佳的匹配窗口。若兩個子窗口計算所得SAD最小時,即為最佳匹配窗口,則對應(yīng)的點為最佳匹配點,此時當(dāng)前的d即為視差值[12]。
圖3 SAD匹配原理Fig.3 SAD matching principle
Census變換的核心思想是使用像素鄰域內(nèi)的局部灰度差異,用比特串來表示編碼后像素灰度變換信息。由于Census變換能夠更好地檢測出圖像中的紋理空間分布信息,因而具有更好的魯棒性和適用性。Census變換公式為
(2)
(3)
式中:C(p)為窗口中心像素p為基準(zhǔn)經(jīng)過變換后的一個比特串;I(p)、I(q)為像素p、q的灰度值;W(p)為窗口中心像素p為基準(zhǔn)的像素鄰域,若窗口中的某個像素q的灰度大于中心像素p,則將比特串的相應(yīng)位置標(biāo)記為1,否則將其設(shè)置為0[13];?為比特位的逐位連接運算。對視差搜索范圍內(nèi)的每一個像素(x,y)的視差值,需要根據(jù)下式來計算相似性測度值。
(4)
式(4)中:CL(x,y)、CR(x,y-d)為經(jīng)過Census變換后得到的比特串;d為當(dāng)前搜索視差值,Hamming[CL(x,y),CR(x,y-d)]為兩比特串的漢明距離,漢明距越小,兩點之間相似度越高;n×n為匹配窗口大小。
設(shè)計了SAD和Census的融合策略,SAD與Census變換產(chǎn)生的初始匹配代價存在差異,為避免初始代價不一致導(dǎo)致視差圖準(zhǔn)確度不夠的問題的產(chǎn)生,所以須經(jīng)過處理后將兩者的初始代價進行歸一化以生成視差空間。因此,定義式(6)的歸一化公式將兩者的數(shù)據(jù)統(tǒng)一歸一化到[0,1]區(qū)間上,然后,將歸一化后的數(shù)據(jù)進行求和來生成新的匹配代價[14]。
C(p,d)=ρ[CCen(p,d),λCen]+
ρ[CSad(p,d),λSad]
(5)
(6)
式中:CCen(p,d)為經(jīng)過Census變換后的得到匹配代價值;CSad(p,d)為經(jīng)過SAD算法計算得到的匹配代價值;λCen、λSad分別為Census變換、SAD算法的影響參數(shù);ρ(c,λ)通過預(yù)先設(shè)置λCen和λSad可以將兩種類型的代價值控制在[0,1],因此代價不會由于某一項而引起較大的突變。與單一基于SAD或Census變換的算法相比,融合算法生成的視差圖更為準(zhǔn)確,因為Census變換利用鄰域像素與中心像素對比的信息來代替原有的灰度,對于光照等因素引起的亮度偏差有較好的魯棒性,并且SAD算法針對窗口內(nèi)像素灰度值的匹配更加精確。結(jié)合兩者優(yōu)勢,融合匹配算法比單獨使用兩者時正確率得到提高,產(chǎn)生的誤匹配率更小,具有更好的魯棒性和抗噪性。
采用簡單的十字交叉區(qū)域[15]獲得中心像素的方法進行代價聚合,十字交叉區(qū)域的結(jié)果不僅考慮中心像素與周圍像素的距離關(guān)系,而且可以用于視差圖像的后處理并且能夠提高代價聚合的效率。
算法將中心像素延伸到圖像邊緣的距離稱為臂長。如圖4所示,對中心像素進行4個臂拓展延伸的下一點p1應(yīng)該滿足:
圖4 十字交叉原理Fig.4 Principle of cross
DC(p1,p)<τ1,DC[p1,p1+(1,0)]<τ1
(7)
DS(p1,p) (8) DC(p1,p)<τ2, 如果L2 (9) 式中:DC(p1,p)為p1和p像素點間的顏色差異,DS(p1,p)為p1和p像素點間的幾何距離。式(7)表明p1點與中心像素點p的顏色差異應(yīng)該小于給定閾值,且p1與p的下一個點之間的顏色差異也要小于閾值τ1,這確保了自適應(yīng)區(qū)域包含的點不會跨越圖像的邊緣。式(8)表明臂長要小于最大臂長,使其在給定的閾值范圍L1內(nèi)擴張。式(9)則選擇較小的閾值τ2進行限制,當(dāng)距中心像素的距離大于L2時,可確保在無紋理和弱紋理區(qū)域中有足夠的信息,并且不會在強紋理區(qū)域中引入不同的顏色的其他像素。當(dāng)p1點違反上述任一條件時,相應(yīng)的臂的擴張結(jié)束。在中心像素的4個臂擴展完成之后,每個像素q的水平臂在其垂直臂上形成一個自適應(yīng)區(qū)域。 計算初始匹配代價后,通過勝者為王策略[16](winner-takes-all,WTA)尋找最優(yōu)視差,從所有可能選擇的匹配代價中確定最小匹配代價的位置后而對應(yīng)的視差值即為最優(yōu)視差。由于立體匹配的左右視圖從不同的視角進行拍攝,因而存在遮擋區(qū)域,即在一個圖像中存在而在另一圖像中不存在的區(qū)域。通過左右一致性檢測[17]后,對遮擋點進行視差填充。由于圖片本身存在噪聲以及填充后的視差仍然存在很多獨立的噪聲,為了提高結(jié)果的準(zhǔn)確性,進行中值濾波[18]濾除噪聲。經(jīng)過3種細化方法不但去除錯誤的孤立點減少錯誤匹配,同時還可以相對較好地保留圖像的邊緣信息。 設(shè)計了兩個實驗,利用標(biāo)定實驗得到的標(biāo)定參數(shù)后,進行立體校正可以獲取嚴格水平的左右視圖。利用不同算法對左右視圖進行立體匹配對比實驗,同時也選取不同場景的數(shù)據(jù)集驗證了所提算法的可行性和適用性。 選取普通雙目攝像頭進行標(biāo)定實驗,左右攝像機間距約4.15 cm,圖像最大分辨率是640×480。在同一場景下利用固定攝像機移動標(biāo)定板的方法采集8組圖像(圖5)進行雙目攝像機標(biāo)定測試,相機標(biāo)定結(jié)果保存在計算機中,具體結(jié)果如表1所示。 表1 相機標(biāo)定結(jié)果Table 1 Camera calibration results 圖5 相機標(biāo)定圖片F(xiàn)ig.5 The image of camera calibration 根據(jù)相機標(biāo)定結(jié)果對拍攝的一個立體影像對進行校正,取得了良好的效果。如圖6所示,圖6(a)是校正前的左右實拍圖,水杯的瓶蓋存在上下偏移的現(xiàn)象。圖6(b)是校正后的左右實拍圖,水杯的瓶蓋上下偏移現(xiàn)象消失,左右視圖只存在水平偏移現(xiàn)象。實驗結(jié)果表明,經(jīng)過立體校正后,左右視圖的所有極線都相互平行,并且方向與圖像坐標(biāo)系的X軸相同,同時對應(yīng)點的縱坐標(biāo)也相同。 圖6 立體校正前后Fig.6 Before stereo correction 采用C++語言在Visual Studio 2013集成環(huán)境下編程實現(xiàn)SAD、Census、融合SAD和Census的立體匹配算法(簡稱SAD-CEN),采用操作系統(tǒng)為Win10 64位,處理器為AMD Ryzen 5 2600 Six-Core 3.4 GHz,運行內(nèi)存8 GB的計算機進行實驗。實驗數(shù)據(jù)采用Middlebury[19]平臺提供的4組測試圖像Cones、Teddy、Tsukuba、Venus以及對應(yīng)真實的視差圖。分別采用SAD(匹配窗口大小為5×5)、Census以及本文提出的SAD-CEN算法(匹配窗口大小均為9×9)對4組測試圖像進行實驗。實驗結(jié)果如圖7所示。 由圖7可以看出,與SAD和Census算法相比,采用SAD-CEN算法計算的視差圖具有明顯優(yōu)勢:①Cones視差圖的圓錐影像更接近真實視差圖,圓錐的邊緣表達更清晰,并且面具模型的輪廓更加圓潤;②Teddy視差圖中間橫放的木頭更符合原來的形狀,并且玩偶熊的右手上方和頭部區(qū)域能夠很好地分離,且相對于SAD算法,弱紋理區(qū)域更加平滑;③Tsukuba視差圖燈罩形狀以及燈桿與燈罩的連接處更符合真實視差圖,不但燈桿兩個長柄之間的縫隙清晰可見,而且桌子下面的匹配更準(zhǔn)確;④Venus視差圖的拐角邊緣準(zhǔn)確,并且獨立噪聲點比較少,更符合真實視差圖。綜上所述,融合SAD與Census的SAD-CEN考慮紋理空間分布信息,克服了SAD算法在大面積紋理缺乏區(qū)域的錯誤匹配多的問題,融合算法平滑性較好,物體邊緣輪廓較清晰,匹配精度得到提高。 圖7 實驗結(jié)果Fig.7 Experimental results 為了更好地評估3種算法生成視差圖的效果,將3種算法生成的效果圖分別與Middlebury平臺提供的真實視差圖進行對比,兩者的視差閾值設(shè)置為1,如果兩者之間的差大于1,則認為該點是匹配錯誤點。通過不同的算法對4組圖像進行測試,所有區(qū)域平均誤匹配率數(shù)據(jù)如圖8所示。 圖8 視差圖誤匹配率折線圖Fig.8 Line chart of disparity map mismatch rate 由圖8可知,SAD算法誤匹配率最高,Census算法次之,SAD-CEN算法誤匹配率最低。在Teddy與Tsukuba視差圖像中的表現(xiàn)尤為明顯:Teddy視差圖像中SAD-CEN算法的誤匹配率比SAD算法降低約10%;而Tsukuba視差圖像中SAD-CEN算法的誤匹配率比Census算法降低約8%。表明SAD-CEN生成的視差圖誤匹配率比單獨使用SAD和Census的生成視差圖誤匹配率有一定程度降低,匹配精度得到提高,匹配效果得到改善。 為了測試算法在復(fù)雜情況下生成視差圖的效果以及適用性,另外選取兩組影像數(shù)據(jù)進行實驗。第1組數(shù)據(jù)為室外汽車行駛圖片,圖像分辨率為655×540,第2組數(shù)據(jù)為相機實際拍攝的影像,影像分辨率為290×230。采用SAD、Census和SAD-CEN算法進行測試,實驗結(jié)果如圖9所示。由圖9中第1組數(shù)據(jù)的實驗結(jié)果可知,相比Census和SAD算法,采用SAD-CEN算法進行立體匹配后的圖片,汽車輪廓更符合現(xiàn)實,同時信號燈的末尾也可以在視差圖上清晰反映。由圖9中第2組數(shù)據(jù)的實驗結(jié)果可知,SAD-CEN算法生成的視差圖在飲料瓶的邊緣及瓶子之間的間隔更加清晰。實驗結(jié)果表明SAD-CEN算法生成的視差圖錯誤匹配較少,驗證了該算法在復(fù)雜情況下仍具有較好的適用性。 圖9 不同場景的實驗結(jié)果Fig.9 Experimental results of different scenes 在求得攝像機內(nèi)外參數(shù),進行立體校正的基礎(chǔ)上,針對立體匹配中弱紋理區(qū)域和深度不連續(xù)區(qū)域誤匹配率較高的問題,提出一種融合SAD和Census計算匹配代價的算法,同時采用簡單十字交叉的代價聚合方法不僅改善了視差圖生成效果而且提高了算法的準(zhǔn)確度。針對不同實驗場景的測試仍可以生成效果較好的視差圖,進一步驗證了算法的適用性。立體匹配是計算機視覺中的關(guān)鍵技術(shù),對立體匹配算法的準(zhǔn)確性以及實時性改進是未來研究工作的重點。2.4 視差計算與后處理
3 實驗結(jié)果與分析
3.1 相機標(biāo)定實驗
3.2 立體匹配實驗
4 結(jié)論