黃 ,
(中國民航大學(xué) 中歐航空工程師學(xué)院,天津 300300)
作為計(jì)算機(jī)視覺研究領(lǐng)域的熱點(diǎn)問題,立體匹配在匹配精度方面和算法運(yùn)行時間的表現(xiàn)引起了國內(nèi)外專家學(xué)者的廣泛關(guān)注[1-3]。根據(jù)采用的最優(yōu)化理論算法不同,現(xiàn)有的立體匹配算法可分為全局算法和局部算法[4]。一般來說,局部算法比全局算法的匹配精度低,但算法運(yùn)行時間相對較短,適合于工程和工業(yè)應(yīng)用[5]。2005年,Yoon等人提出的自適應(yīng)支持權(quán)重(Adaptive Support Weight,ASM)算法[6]將局部算法的視差精度提升到了一個新的高度,但由于其能量代價函數(shù)的計(jì)算過于復(fù)雜,該算法的運(yùn)行時間比較長[7],因此近年來許多學(xué)者都對ASW算法進(jìn)行優(yōu)化,例如使用稀疏匹配方法[8]、優(yōu)化能量代價函數(shù)[9]和引入隨機(jī)游走的樹結(jié)構(gòu)[10]等,在不降低原ASW算法精確度的同時減少程序的運(yùn)行時間。但這些算法在兼顧匹配精度和運(yùn)行時間方面存在著一定的缺陷。因此,本文提出一種新的優(yōu)化算法,在降低算法復(fù)雜度的同時引入多項(xiàng)后續(xù)處理。
ASW算法依據(jù)格式塔理論[11],在計(jì)算一點(diǎn)像素的支持權(quán)重時,自適應(yīng)地根據(jù)該點(diǎn)與待匹配點(diǎn)的顏色相似度和空間距離相似度為該點(diǎn)分配一個支持權(quán)值。
以生成一張左右視差圖為例,左圖中一待匹配像素點(diǎn)p對其支持窗口中一像素點(diǎn)的支持權(quán)值為:
w(p,q)=f(Δcpq)·f(Δgpq)
(1)
其中,f(Δcpq)代表由顏色相似性確定的q點(diǎn)對p點(diǎn)的支持權(quán)值,f(Δgpq)代表由空間相似性確定的q點(diǎn)對p點(diǎn)的支持權(quán)值,其表達(dá)式分別為:
其中,Δcpq代表p點(diǎn)和q點(diǎn)的顏色相似度,是兩像素點(diǎn)的RGB顏色在CIELab顏色空間的投影c(p)=[Lp,ap,bp]和c(q)=[Lq,aq,bq]的幾何距離,γc是用于調(diào)整顏色相似度對支持權(quán)重影響大小的用戶指定參數(shù),一般設(shè)為7,代表p點(diǎn)和q點(diǎn)的空間位置相近度,是兩像素點(diǎn)的歐氏距離,γp是用于調(diào)整空間位置相近度對支持權(quán)值影響大小的用戶指定參數(shù),一般設(shè)為36。
計(jì)算初始匹配代價后,通過贏者通吃策略(Winner-Takes-All,WTA)選取每個像素點(diǎn)的視差,計(jì)算公式如下:
其中,Sd={dmin,…,dmax}是所有可能選取的視差值組成的集合。
2.1.1 顏色相似度函數(shù)
由于ASW算法在計(jì)算顏色支持權(quán)重時涉及到3個顏色通道的運(yùn)算,計(jì)算量比較大[12],考慮到計(jì)算顏色支持權(quán)重將三維計(jì)算問題簡化為一維計(jì)算問題,這一步通過將左視圖和右視圖由彩色圖片轉(zhuǎn)化為灰度圖實(shí)現(xiàn),同時對于像素點(diǎn)q和待匹配像素點(diǎn)p,其顏色相似度計(jì)算公式為:
2.1.2 左右一致性檢測和遮擋填充
由于遮擋和光照等原因,拍攝到的左右視圖中同一場景的場景信息存在差別,這就導(dǎo)致一些相同像素點(diǎn)在經(jīng)過立體匹配后生成的左右視差圖和右左視差圖中的視差并不相同。為了充分利用兩張視差圖的視差信息,對那些在兩張視差圖中視差不一致的像素點(diǎn)的視差進(jìn)行視差修正,就可以提高視差圖的精度[13]。
因此,以最后得到一張左右視差圖為例,考慮對改進(jìn)算法生成的初始左右視差圖和初始右左視差圖進(jìn)行左右一致性檢測(left-right-continuity check)和遮擋填充(occluded filling),其中左右連續(xù)性檢測用于檢測出在左右視差圖和右左視差圖中視差不一致的像素點(diǎn),其檢測過程如下:
對于左右視差圖的一像素點(diǎn)p,求得的視差值是d1,p在左右視差中的對應(yīng)像素點(diǎn)(p-d1),其視差值記作d2,若|d1-d2|>threshold,則標(biāo)記為遮擋點(diǎn)。其中threshold代表判斷是否為遮擋點(diǎn)的用戶設(shè)定閾值,一般設(shè)為1。
經(jīng)過左右一致性檢測后,可以得到一張由遮擋點(diǎn)組成的圖像,通過將該圖像與初始左右視差圖進(jìn)行對比,就可以針對遮擋點(diǎn)進(jìn)行視差填充,填充過程如下:
對于遮擋點(diǎn)p,分別水平向左和向右找到第1個非遮擋點(diǎn),記作pl和pr,點(diǎn)p的視差值取這2個視差值中較小的那個,即d(p)=min(d(pl),d(pr))。其中,d(p)代表為遮擋點(diǎn)p重新定義的視差值,d(pl)為點(diǎn)pl的視差值,d(pr)為點(diǎn)pr的視差值。
2.1.3 中值濾波
初始視差圖經(jīng)過左右一致性檢測和遮擋填充后,視差圖精度將會得到進(jìn)一步提升,但由于遮擋區(qū)域多存在與視差不連續(xù)區(qū)域和無法檢測區(qū)域,因此在進(jìn)行遮擋填充后會產(chǎn)生水平條紋。為了消除這些水平條紋,這里引入中值濾波[14]對經(jīng)過遮擋填充處理后的視差圖進(jìn)行最終處理,其原理如下:
對視差圖中一像素點(diǎn)p,以p為中心建立一個邊長為(2N+1)的正方形窗口,將窗口內(nèi)所有像素點(diǎn)的灰度值進(jìn)行降序或升序排列,取這些灰度值的中值作為點(diǎn)p的灰度值。
由于窗口太大會影響算法運(yùn)行時間,并且降低視差圖的精度,窗口太小又會無法實(shí)現(xiàn)中值濾波的意義,因此這里取N=3。
經(jīng)過對原ASW算法的分析,改進(jìn)了原ASW算法的顏色相似度函數(shù),通過將三維問題轉(zhuǎn)化為一維問題,大大減少了算法的計(jì)算量,節(jié)約了算法的運(yùn)行時間。接下來引入后續(xù)處理來進(jìn)一步高視差圖精度,通過左右一致性檢測篩選出在左右視差圖和右左視差圖中視差不一致的像素點(diǎn),利用遮擋填充為這些遮擋點(diǎn)重新賦予視差值,最后通過中值濾波消除遮擋填充可能產(chǎn)生的水平條紋。以生成一張左右視差圖為例,完整的改進(jìn)算法流程如圖1所示。
圖1 改進(jìn)算法流程
本文使用了C++語言,基于OpenCV實(shí)現(xiàn)該算法,并在CPU Inter Core i5 1.6 GHz,內(nèi)存4 GB,操作系統(tǒng)macOS Sierra 10.12.6的環(huán)境下對Middlebury網(wǎng)站提供的立體數(shù)據(jù)集Cones、Teddy、Tsukuba和Venus進(jìn)行測試,并驗(yàn)證了不同光照條件下算法的魯棒性。
為了方便測試優(yōu)化算法的性能,本文只考慮算法的時間復(fù)雜度。表1為改進(jìn)算法和原ASW在支持窗口大小為11×11時,處理4個標(biāo)準(zhǔn)圖像測試對的運(yùn)行時間對比,可以看到改進(jìn)算法的運(yùn)行時間平均比原ASW算法減少了20%左右。說明改進(jìn)原算法顏色相似度函數(shù)后,算法計(jì)算量得到有效的減少,進(jìn)而算法的運(yùn)行時間得到了有效節(jié)約。同時考慮到改進(jìn)算法計(jì)算了生成兩張視差圖的運(yùn)行時間,而原算法只計(jì)算了生成一張視差圖的運(yùn)行時間,因此,若使2個算法都生成兩張視差圖,改進(jìn)算法運(yùn)行時間預(yù)計(jì)比原算法運(yùn)行時間減少40%~60%。
表1 算法運(yùn)行時間 s
表2為改進(jìn)算法和原算法在支持窗口大小為11×11時,處理4個數(shù)據(jù)集生成左右視差圖的誤匹配率對比,其中IMP代表改進(jìn)算法。
表2 算法誤匹配率 %
從平均誤匹配率看,改進(jìn)算法針對4幅標(biāo)準(zhǔn)圖像測試對的平均誤匹配率比原ASW算法的平均誤匹配率低2.76%,說明改進(jìn)算法在視差圖精度平均表現(xiàn)優(yōu)于原ASW算法。
從單個數(shù)據(jù)集測試結(jié)果看,針對Cones數(shù)據(jù)集,改進(jìn)算法在非遮擋區(qū)域和所有區(qū)域的匹配精度不如原ASW算法,比原ASW算法的誤匹配率高1.5%,但改進(jìn)算法在不連續(xù)區(qū)域的匹配精度比原算法高出2.98%;針對Teddy數(shù)據(jù)集,改進(jìn)算法在非遮擋區(qū)域的誤匹配率高達(dá)23.63%,比原算法高出7.15%,在所有區(qū)域和不連續(xù)區(qū)域,改進(jìn)算法誤匹配率和原ASW算法相差不到1%;針對Tsukuba數(shù)據(jù)集,改進(jìn)算法在遮擋區(qū)域的誤匹配率為11.71%,比原ASW算法的誤匹配率低了14.39%,在所有區(qū)域和不連續(xù)區(qū)域,改進(jìn)算法的誤匹配率均低于原ASW算法,分別比原算法誤匹配率減少了1.84%和2.14%;針對Venus數(shù)據(jù)集,改進(jìn)算法在3個區(qū)域的匹配精度均優(yōu)于原ASW算法,在遮擋區(qū)域,改進(jìn)算法比原ASW算法的誤匹配率減少了7.72%,在所有區(qū)域,改進(jìn)算法比原ASW算法的誤匹配率減少了7.85%,在不連續(xù)區(qū)域,改進(jìn)算法比原ASW算法的誤匹配率減少了7.31%。同時改進(jìn)算法在3個區(qū)域的匹配精度也高于如SAD[15]、SSD和NCC[16]等常見算法。
圖2~圖5為立體圖像數(shù)據(jù)集的測試結(jié)果,對比改進(jìn)算法前后生成的視差圖可以看出,改進(jìn)算法提高了生成視差圖的精度,特別是Tsukuba和Venus圖像對生成的視差圖精度提高明顯,這與表2提供的數(shù)據(jù)吻合。
圖2 Cones圖像實(shí)驗(yàn)結(jié)果
圖3 Teddy圖像實(shí)驗(yàn)結(jié)果
圖4 Tsukuba圖像實(shí)驗(yàn)結(jié)果
圖5 Venus圖像實(shí)驗(yàn)結(jié)果
圖6為改進(jìn)算法在同一場景3種不同光照下生成的視差圖,可以看出,在光照不足、光照一般和光照充足的情況下,改進(jìn)算法生成的3張視差圖差別不大。這說明在一定的光照范圍內(nèi),改進(jìn)算法生成的視差圖穩(wěn)定性良好,進(jìn)一步說明改進(jìn)算法在一定光照范圍內(nèi)具有良好的魯棒性。
圖6 不同光照下同一場景及對應(yīng)改進(jìn)算法生成的視差圖
針對ASW算法運(yùn)行時間長、算法復(fù)雜度高的問題,本文基于OpenCV平臺提出一種自適應(yīng)匹配優(yōu)化方法。該方法通過優(yōu)化ASW算法中的顏色相似度度量函數(shù),以降低算法的復(fù)雜度;引入左右連續(xù)性檢測、遮擋填充和中值濾波等后續(xù)處理實(shí)現(xiàn)對初始生成視差圖的后續(xù)優(yōu)化,提高算法的視差精度。實(shí)驗(yàn)結(jié)果表明,該優(yōu)化方法將ASW算法的平均運(yùn)行時間降低到原來的80%,并將生成視差圖的誤匹配率降低了2.67%,且優(yōu)化算法具有良好的魯棒性。下一步將簡化ASW算法的能量函數(shù),并嘗試尋找不依賴于生成兩張視差圖的后續(xù)處理辦法,以提高匹配精度,同時減少匹配時間。